From 8f8757cfc015f2bc5ae5a720b400bc7cb5eb0308 Mon Sep 17 00:00:00 2001 From: pulimsr Date: Mon, 23 Mar 2026 16:17:16 -0400 Subject: [PATCH 1/2] Revert "Fix sparse trait codegen for nested collections in JSON and CBOR deserializers (#3756)" This reverts commit cd93e74f17585063197af7443543cb5f4eaa2258. --- .../velocity/cpp/cbor/CborDecodeListValue.vm | 8 -------- .../velocity/cpp/cbor/CborDecodeMapValue.vm | 8 -------- .../cpp/json/ModelInternalMapOrListJsonDeserializer.vm | 8 -------- 3 files changed, 24 deletions(-) diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm index 73129f37e65..6474947eaa8 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm @@ -166,11 +166,7 @@ if(peekType_${recursionDepth}.has_value()){ #end #elseif($shapeMember.list) #set($template.nestedShapeMember = $shapeMember.listMember.shape) -#if($shapeMember.sparse) - auto nestedList_${recursionDepth} = Vector>(); -#else auto nestedList_${recursionDepth} = Vector<$CppViewHelper.computeCppType($template.nestedShapeMember)>(); -#end auto peekType_${recursionDepth} = decoder->PeekType(); if (peekType_${recursionDepth}.has_value() && (peekType_${recursionDepth}.value() == CborType::ArrayStart || peekType_${recursionDepth}.value() == CborType::IndefArrayStart)) { @@ -217,11 +213,7 @@ if(peekType_${recursionDepth}.has_value()){ } #elseif($shapeMember.map) #set($template.nestedShapeMember = $shapeMember.mapValue.shape) -#if($shapeMember.sparse) - auto nestedMap_${recursionDepth} = Map>(); -#else auto nestedMap_${recursionDepth} = Map(); -#end auto peekType_${recursionDepth} = decoder->PeekType(); if (peekType_${recursionDepth}.has_value() && (peekType_${recursionDepth}.value() == CborType::MapStart || peekType_${recursionDepth}.value() == CborType::IndefMapStart)) { diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm index 05688770430..c48255d584c 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm @@ -169,11 +169,7 @@ if(peekType_${recursionDepth}){ #end #elseif($shapeMember.map) #set($template.nestedShapeMember = $shapeMember.mapValue.shape) -#if($shapeMember.sparse) - auto nestedMap_${recursionDepth} = Map>(); -#else auto nestedMap_${recursionDepth} = Map(); -#end auto peekType_${recursionDepth} = decoder->PeekType(); if (peekType_${recursionDepth}.has_value() && (peekType_${recursionDepth}.value() == CborType::MapStart || peekType_${recursionDepth}.value() == CborType::IndefMapStart)) { @@ -218,11 +214,7 @@ if(peekType_${recursionDepth}){ } #elseif($shapeMember.list) #set($template.nestedShapeMember = $shapeMember.listMember.shape) -#if($shapeMember.sparse) - auto nestedList_${recursionDepth} = Vector>(); -#else auto nestedList_${recursionDepth} = Vector<$CppViewHelper.computeCppType($template.nestedShapeMember)>(); -#end auto peekType_${recursionDepth} = decoder->PeekType(); if (peekType_${recursionDepth}.has_value() && (peekType_${recursionDepth}.value() == CborType::ArrayStart || peekType_${recursionDepth}.value() == CborType::IndefArrayStart)) { diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm index 9ca68def917..65d7afff006 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm @@ -18,11 +18,7 @@ #end #if($template.recursionDepth > 1) #set($template.containerVar = ${template.lowerCaseVarName} + "Map") -#if($template.currentShape.sparse) - ${template.currentSpaces}Aws::Map<${CppViewHelper.computeCppType($template.currentShape.mapKey.shape)}, Aws::Crt::Optional<${CppViewHelper.computeCppType($template.currentShape.mapValue.shape)}>> ${template.lowerCaseVarName}Map; -#else ${template.currentSpaces}Aws::Map<${CppViewHelper.computeCppType($template.currentShape.mapKey.shape)}, ${CppViewHelper.computeCppType($template.currentShape.mapValue.shape)}> ${template.lowerCaseVarName}Map; -#end #end ${template.currentSpaces}for(auto& ${template.lowerCaseVarName}Item : ${template.lowerCaseVarName}JsonMap) ${template.currentSpaces}{ @@ -88,11 +84,7 @@ #end #if($template.recursionDepth > 1) #set($template.containerVar = ${template.lowerCaseVarName} + "List") -#if($template.currentShape.sparse) - ${template.currentSpaces}Aws::Vector> ${template.lowerCaseVarName}List; -#else ${template.currentSpaces}Aws::Vector<${CppViewHelper.computeCppType($template.currentShape.listMember.shape)}> ${template.lowerCaseVarName}List; -#end ${template.currentSpaces}${template.lowerCaseVarName}List.reserve((size_t)${template.lowerCaseVarName}JsonList.GetLength()); #end ${template.currentSpaces}for(unsigned ${template.lowerCaseVarName}Index = 0; ${template.lowerCaseVarName}Index < ${template.lowerCaseVarName}JsonList.GetLength(); ++${template.lowerCaseVarName}Index) From 33897e428f62fb80b048f22cdafea1907c824743 Mon Sep 17 00:00:00 2001 From: pulimsr Date: Mon, 23 Mar 2026 16:17:34 -0400 Subject: [PATCH 2/2] Revert "Add sparse trait support for codegen (#3740)" This reverts commit 5369472c2f9d331123ba642ccdcec5009222c48d. --- .../aws/core/utils/json/JsonSerializer.h | 6 - .../source/utils/json/JsonSerializer.cpp | 17 --- .../utils/json/JsonSerializerTest.cpp | 33 ------ .../domainmodels/c2j/C2jShape.java | 1 - .../domainmodels/codegeneration/Shape.java | 1 - .../codegeneration/cpp/CppCborViewHelper.java | 49 ++++++++ .../codegeneration/cpp/CppViewHelper.java | 48 +------- .../cpp/CborCppClientGenerator.java | 9 +- .../cpp/CppProtocolTestGenerator.java | 7 +- .../C2jModelToGeneratorModelTransformer.java | 5 - .../cpp/ModelClassHeaderMembersSource.vm | 4 - .../cpp/ModelClassMembersAndInlines.vm | 41 +------ .../velocity/cpp/cbor/CborDecodeListValue.vm | 107 +++-------------- .../velocity/cpp/cbor/CborDecodeMapValue.vm | 109 +++--------------- .../velocity/cpp/cbor/CborEncodeValue.vm | 24 +--- .../velocity/cpp/cbor/CborResultHeader.vm | 1 - .../velocity/cpp/cbor/CborSubObjectHeader.vm | 1 - ...rviceClientModelHeaderMemberDeclaration.vm | 4 - .../ModelInternalMapOrListJsonDeserializer.vm | 30 ----- .../cpp/json/ModelInternalMapOrListJsonize.vm | 43 ------- .../cpp/protocoltests/request/SetListMacro.vm | 13 --- .../cpp/protocoltests/request/SetMapMacro.vm | 13 --- .../protocoltests/result/ValidateListMacro.vm | 37 +----- .../protocoltests/result/ValidateMapMacro.vm | 41 +------ .../result/ValidateSingleParameterMacro.vm | 5 +- .../serializeRequestQueryListElement.vm | 13 --- .../serializeRequestQueryMapElement.vm | 13 --- .../serializeSubObjQueryMapElement.vm | 12 -- .../deserializeXmlListPayloadElement.vm | 12 -- .../deserializeXmlMapPayloadElement.vm | 6 - .../deserializeXmlNestedListElement.vm | 8 -- .../deserializeXmlNestedMapElement.vm | 9 -- .../serializeXmlListPayloadElement.vm | 9 -- .../serializeXmlMapPayloadElement.vm | 9 -- tools/scripts/run_code_generation.py | 5 +- 35 files changed, 116 insertions(+), 629 deletions(-) create mode 100644 tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppCborViewHelper.java diff --git a/src/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h b/src/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h index ae98f6c18ff..8b2ccc139bb 100644 --- a/src/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h +++ b/src/aws-cpp-sdk-core/include/aws/core/utils/json/JsonSerializer.h @@ -94,12 +94,6 @@ namespace Aws JsonValue& WithString(const Aws::String& key, const Aws::String& value); JsonValue& WithString(const char* key, const Aws::String& value); - /** - * Adds a null value to the top level of this node with key. - */ - JsonValue& WithNull(const Aws::String& key); - JsonValue& WithNull(const char* key); - /** * Converts the current JSON node to a string. */ diff --git a/src/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp b/src/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp index bbf44e5b57d..3cdcac1a812 100644 --- a/src/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp +++ b/src/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp @@ -153,23 +153,6 @@ JsonValue& JsonValue::WithString(const Aws::String& key, const Aws::String& valu return WithString(key.c_str(), value); } -JsonValue& JsonValue::WithNull(const char* key) -{ - if (!m_value) - { - m_value = cJSON_AS4CPP_CreateObject(); - } - - const auto val = cJSON_AS4CPP_CreateNull(); - AddOrReplace(m_value, key, val); - return *this; -} - -JsonValue& JsonValue::WithNull(const Aws::String& key) -{ - return WithNull(key.c_str()); -} - JsonValue& JsonValue::AsString(const Aws::String& value) { Destroy(); diff --git a/tests/aws-cpp-sdk-core-tests/utils/json/JsonSerializerTest.cpp b/tests/aws-cpp-sdk-core-tests/utils/json/JsonSerializerTest.cpp index 00f313f9752..12234707833 100644 --- a/tests/aws-cpp-sdk-core-tests/utils/json/JsonSerializerTest.cpp +++ b/tests/aws-cpp-sdk-core-tests/utils/json/JsonSerializerTest.cpp @@ -434,39 +434,6 @@ TEST_F(JsonSerializerTest, TestGetAllObjects) ASSERT_EQ(42, all["Key2"].AsInteger()); } -TEST_F(JsonSerializerTest, TestWithNull) -{ - JsonValue value; - value.WithString("Key1", "value1"); - value.WithNull("Key2"); - value.WithNull(Aws::String("Key3")); - value.WithInteger("Key4", 42); - - auto view = value.View(); - - ASSERT_TRUE(view.KeyExists("Key2")); - ASSERT_FALSE(view.ValueExists("Key2")); - ASSERT_TRUE(view.GetObject("Key2").IsNull()); - - ASSERT_TRUE(view.KeyExists("Key3")); - ASSERT_FALSE(view.ValueExists("Key3")); - ASSERT_TRUE(view.GetObject("Key3").IsNull()); - - ASSERT_STREQ("value1", view.GetString("Key1").c_str()); - ASSERT_EQ(42, view.GetInteger("Key4")); - - Aws::String serialized = view.WriteCompact(); - JsonValue reparsed(serialized); - ASSERT_TRUE(reparsed.WasParseSuccessful()); - auto reparsedView = reparsed.View(); - ASSERT_TRUE(reparsedView.KeyExists("Key2")); - ASSERT_FALSE(reparsedView.ValueExists("Key2")); - ASSERT_TRUE(reparsedView.GetObject("Key2").IsNull()); - ASSERT_TRUE(reparsedView.KeyExists("Key3")); - ASSERT_FALSE(reparsedView.ValueExists("Key3")); - ASSERT_TRUE(reparsedView.GetObject("Key3").IsNull()); -} - TEST_F(JsonSerializerTest, TestEquality) { auto input = R"({"AWS" : { diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/c2j/C2jShape.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/c2j/C2jShape.java index af13deb827b..fdcde478014 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/c2j/C2jShape.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/c2j/C2jShape.java @@ -36,5 +36,4 @@ public class C2jShape { private boolean sensitive; private boolean document; private Map retryable; - private boolean sparse; } diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/Shape.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/Shape.java index 47805614129..fe953ce7a6b 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/Shape.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/Shape.java @@ -63,7 +63,6 @@ public class Shape { private boolean overrideStreaming = false; private boolean requestCompressionRequired=false; private boolean requestCompressionRequiredGzip=false; - private boolean sparse=false; public boolean isMap() { return "map".equals(type.toLowerCase()); diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppCborViewHelper.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppCborViewHelper.java new file mode 100644 index 00000000000..f25de52358f --- /dev/null +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppCborViewHelper.java @@ -0,0 +1,49 @@ +package com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.cpp; + +import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.Shape; +import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.ShapeMember; + +import java.util.HashMap; +import java.util.Map; + +public class CppCborViewHelper extends CppViewHelper { + private static final Map CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING = new HashMap<>(); + + static { + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("long", "long long"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("integer", "int64_t"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("string", "Aws::String"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("timestamp", "Aws::Utils::DateTime"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("boolean", "bool"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_boolean", "bool"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("double", "double"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("float", "double"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("blob", "Aws::Utils::ByteBuffer"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_blob", "Aws::Utils::CryptoBuffer"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_long", "long long"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_integer", "int64_t"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_float", "double"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_double", "double"); + CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_timestamp", "Aws::Utils::DateTime"); + } + + public static String computeCppType(Shape shape) { + return computeCppTypeInternal(shape, CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING); + } + + public static String computeCppType(Shape parent, String member) { + if (!parent.getMembers().containsKey(member)) { + throw new RuntimeException("Parent shape " + parent.getName() + + " does not contain member key " + member); + } + ShapeMember shapeMember = parent.getMembers().get(member); + Shape childShape = shapeMember.getShape(); + + if (parent.getPayload() != null && parent.getPayload().equals(member) && parent.isResult()) { + if (shapeMember.isStreaming() || childShape.isBlob() || childShape.isString()) { + return "Aws::Utils::Stream::ResponseStream"; + } + } + return computeCppType(childShape); + } +} diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppViewHelper.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppViewHelper.java index a7cec4a38e5..9c215a955ca 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppViewHelper.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppViewHelper.java @@ -15,7 +15,6 @@ import java.lang.RuntimeException; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.LinkedList; @@ -27,7 +26,6 @@ public class CppViewHelper { private static final Map CORAL_TYPE_TO_CPP_TYPE_MAPPING = new HashMap<>(); - private static final Map CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING = new HashMap<>(); private static final Map CORAL_TYPE_TO_JSON_CPP_TYPE_MAPPING = new HashMap<>(); private static final Map CORAL_TYPE_TO_XML_CONVERSION_MAPPING = new HashMap<>(); private static final Map CORAL_TYPE_TO_DEFAULT_VALUES = new HashMap<>(); @@ -58,9 +56,6 @@ public class CppViewHelper { CORAL_TYPE_TO_CPP_TYPE_MAPPING.put("sensitive_double", "double"); CORAL_TYPE_TO_CPP_TYPE_MAPPING.put("sensitive_timestamp", "Aws::Utils::DateTime"); - CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("integer", "int64_t"); - CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING.put("sensitive_integer", "int64_t"); - CORAL_TYPE_TO_JSON_CPP_TYPE_MAPPING.put("long", "Int64"); CORAL_TYPE_TO_JSON_CPP_TYPE_MAPPING.put("integer", "Integer"); CORAL_TYPE_TO_JSON_CPP_TYPE_MAPPING.put("string", "String"); @@ -210,12 +205,8 @@ public static String computeJsonizeString(Shape shape) { } static String computeCppTypeInternal(Shape shape, Map typeMapping) { - return computeCppTypeInternal(shape, typeMapping, Collections.emptyMap()); - } - - static String computeCppTypeInternal(Shape shape, Map typeMapping, Map overrideMapping) { String sensitivePrefix = shape.isSensitive() ? "sensitive_" : ""; - String cppType = overrideMapping.getOrDefault(sensitivePrefix + shape.getType(), typeMapping.get(sensitivePrefix + shape.getType())); + String cppType = typeMapping.get(sensitivePrefix + shape.getType()); //enum types show up as string if(cppType != null && !shape.isEnum()) { @@ -233,15 +224,13 @@ else if(shape.isStructure() || shape.isEnum()) } else if(shape.isList()) { - String type = computeCppTypeInternal(shape.getListMember().getShape(), typeMapping, overrideMapping); - type = shape.isSparse() ? String.format("Aws::Crt::Optional<%s>", type) : type; + String type = computeCppTypeInternal(shape.getListMember().getShape(), typeMapping); return String.format("Aws::Vector<%s>", type); } else if(shape.isMap()) { - String key = computeCppTypeInternal(shape.getMapKey().getShape(), typeMapping, overrideMapping); - String value = computeCppTypeInternal(shape.getMapValue().getShape(), typeMapping, overrideMapping); - value = shape.isSparse() ? String.format("Aws::Crt::Optional<%s>", value) : value; + String key = computeCppTypeInternal(shape.getMapKey().getShape(), typeMapping); + String value = computeCppTypeInternal(shape.getMapValue().getShape(), typeMapping); return String.format("Aws::Map<%s, %s>", key, value); } @@ -254,16 +243,6 @@ public static String computeCppType(Shape shape) { return computeCppTypeInternal(shape, CORAL_TYPE_TO_CPP_TYPE_MAPPING); } - public static String computeCborCppType(Shape shape) { - return computeCppTypeInternal(shape, CORAL_TYPE_TO_CPP_TYPE_MAPPING, CORAL_TYPE_TO_CBOR_CPP_TYPE_MAPPING); - } - - public static String computeResultCppType(Shape shape, String protocol) { - return "smithy-rpc-v2-cbor".equals(protocol) - ? computeCborCppType(shape) - : computeCppType(shape); - } - public static boolean isStreamingPayloadMember(Shape parent, String member) { if (!parent.getMembers().containsKey(member)) { throw new RuntimeException("Parent shape " + parent.getName() + @@ -296,22 +275,6 @@ public static String computeCppType(Shape parent, String member) { return computeCppType(childShape); } - public static String computeCborCppType(Shape parent, String member) { - if (!parent.getMembers().containsKey(member)) { - throw new RuntimeException("Parent shape " + parent.getName() + - " does not contain member key " + member); - } - ShapeMember shapeMember = parent.getMembers().get(member); - Shape childShape = shapeMember.getShape(); - - if (parent.getPayload() != null && parent.getPayload().equals(member) && parent.isResult()) { - if (shapeMember.isStreaming() || childShape.isBlob() || childShape.isString()) { - return "Aws::Utils::Stream::ResponseStream"; - } - } - return computeCborCppType(childShape); - } - public static String computeJsonCppType(Shape shape) { if(shape.isTimeStamp() && shape.getTimestampFormat() != null) { return CORAL_TYPE_TO_JSON_CPP_TYPE_MAPPING.get(shape.getTimestampFormat().toLowerCase()); @@ -424,9 +387,6 @@ public static Set computeHeaderIncludes(String projectName, Shape shape) headers.add(formatModelIncludeName(projectName, shapeInList)); } } - if (next.isSparse()) { - headers.add(""); - } if(!next.isPrimitive()) { if (next.isException() && !next.isModeledException()) { // C++ SDK code generator skips generating exceptions that can be expressed using diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CborCppClientGenerator.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CborCppClientGenerator.java index 5cbda5cc955..305f532e80c 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CborCppClientGenerator.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CborCppClientGenerator.java @@ -10,6 +10,7 @@ import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.ServiceModel; import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.Shape; import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.ShapeMember; +import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.cpp.CppCborViewHelper; import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.cpp.CppShapeInformation; import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.cpp.CppViewHelper; import org.apache.velocity.Template; @@ -34,7 +35,7 @@ protected SdkFileEntry generateErrorMarshallerHeaderFile(ServiceModel serviceMod Template template = velocityEngine.getTemplate("/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborErrorMarshallerHeader.vm", StandardCharsets.UTF_8.name()); VelocityContext context = createContext(serviceModel); - context.put("CppViewHelper", CppViewHelper.class); + context.put("CppViewHelper", CppCborViewHelper.class); String fileName = String.format("include/aws/%s/%sErrorMarshaller.h", serviceModel.getMetadata().getProjectName(), serviceModel.getMetadata().getClassNamePrefix()); @@ -78,7 +79,7 @@ protected SdkFileEntry generateModelHeaderFile(ServiceModel serviceModel, Map.En context.put("shape", shape); context.put("typeInfo", new CppShapeInformation(shape, serviceModel)); - context.put("CppViewHelper", CppViewHelper.class); + context.put("CppViewHelper", CppCborViewHelper.class); String fileName = String.format("include/aws/%s/model/%s.h", serviceModel.getMetadata().getProjectName(), shapeEntry.getKey()); @@ -146,7 +147,7 @@ else if (shape.isResult()) { context.put("shape", shape); context.put("typeInfo", new CppShapeInformation(shape, serviceModel)); - context.put("CppViewHelper", CppViewHelper.class); + context.put("CppViewHelper", CppCborViewHelper.class); String fileName = String.format("source/model/%s.cpp", shapeEntry.getKey()); @@ -165,7 +166,7 @@ protected SdkFileEntry generateClientHeaderFile(final ServiceModel serviceModel) Template template = velocityEngine.getTemplate("/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborServiceClientHeader.vm", StandardCharsets.UTF_8.name()); VelocityContext context = createContext(serviceModel); - context.put("CppViewHelper", CppViewHelper.class); + context.put("CppViewHelper", CppCborViewHelper.class); context.put("RequestlessOperations", requestlessOperations); String fileName = String.format("include/aws/%s/%sClient.h", serviceModel.getMetadata().getProjectName(), diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CppProtocolTestGenerator.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CppProtocolTestGenerator.java index 82c1746c891..43154aa5ad3 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CppProtocolTestGenerator.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/CppProtocolTestGenerator.java @@ -11,6 +11,7 @@ import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.Shape; import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.ShapeMember; +import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.cpp.CppCborViewHelper; import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.cpp.CppViewHelper; import com.amazonaws.util.awsclientgenerator.domainmodels.protocol_test.ProtocolTestModel; import com.amazonaws.util.awsclientgenerator.domainmodels.protocol_test.ProtocolTestSuite; @@ -114,7 +115,11 @@ protected final VelocityContext createContext() { context.put("testModel", testModel); context.put("input.encoding", StandardCharsets.UTF_8.name()); context.put("output.encoding", StandardCharsets.UTF_8.name()); - context.put("CppViewHelper", CppViewHelper.class); + if(serviceModel.getMetadata().getProtocol().equals("smithy-rpc-v2-cbor")){ + context.put("CppViewHelper", CppCborViewHelper.class); + } else { + context.put("CppViewHelper", CppViewHelper.class); + } return context; } diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/transform/C2jModelToGeneratorModelTransformer.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/transform/C2jModelToGeneratorModelTransformer.java index 89ed4e05ab9..1838d2c7b59 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/transform/C2jModelToGeneratorModelTransformer.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/transform/C2jModelToGeneratorModelTransformer.java @@ -439,10 +439,6 @@ Shape convertShapeBasics(C2jShape c2jShape, String shapeName) { shape.setEvent(c2jShape.isEvent()); shape.setException(c2jShape.isException()); shape.setDocument(c2jShape.isDocument()); - shape.setSparse(c2jShape.isSparse()); - if (shape.isSparse() && !shape.isList() && !shape.isMap()) { - throw new SourceGenerationFailedException("The sparse trait is only applicable to list and map shapes, but was found on shape: " + shape.getName()); - } if (c2jShape.getXmlNamespace() != null) { XmlNamespace xmlns = new XmlNamespace(); @@ -854,7 +850,6 @@ Shape cloneShape(Shape shape) { cloned.setException(shape.isException()); cloned.setXmlNamespace(shape.getXmlNamespace()); cloned.setDocument(shape.isDocument()); - cloned.setSparse(shape.isSparse()); return cloned; } diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassHeaderMembersSource.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassHeaderMembersSource.vm index de43e1bd99a..ba5ccc5bed0 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassHeaderMembersSource.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassHeaderMembersSource.vm @@ -42,11 +42,7 @@ ${spaces}for(const auto& item : $memberVarName) ${spaces}{ ${spaces} ss << "${locationName}" << item.first; -#if($member.shape.sparse) - ${spaces} if(item.second.has_value()) { headers.emplace(ss.str(), item.second.value()); } -#else ${spaces} headers.emplace(ss.str(), item.second); -#end ${spaces} ss.str(""); ${spaces}} #elseif($member.shape.list) diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersAndInlines.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersAndInlines.vm index 483a35ca0a6..19804fce8c4 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersAndInlines.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersAndInlines.vm @@ -18,7 +18,7 @@ #set($cppType = "${metadata.classNamePrefix}Error") #set($isStream = false) #else -#set($cppType = $CppViewHelper.computeResultCppType($member.value.shape, $protocol)) +#set($cppType = $CppViewHelper.computeCppType($member.value.shape)) #set($isStream = false) #end #set($subShape = $member.value.shape) @@ -52,7 +52,7 @@ #elseif($member.value.shape.isMutuallyReferencedWith($shape) || $member.value.shape.getName() == $shape.getName()) #set($getterBody = "{$nl return *${memberVariableName};$nl }") #set($setterWithCopy = ";") -#set($setterWithMove = " {$nl ${setHasBeenSet}$nl ${memberVariableName} = Aws::MakeShared<$CppViewHelper.computeResultCppType($member.value.shape, $protocol)>(" + '"' + "${typeInfo.className}" + '"' + ", std::forward<${memberKeyWithFirstLetterCapitalized}T>(value));$nl }") +#set($setterWithMove = " {$nl ${setHasBeenSet}$nl ${memberVariableName} = Aws::MakeShared<$CppViewHelper.computeCppType($member.value.shape)>(" + '"' + "${typeInfo.className}" + '"' + ", std::forward<${memberKeyWithFirstLetterCapitalized}T>(value));$nl }") #elseif($member.value.isChecksumMember()) #set($getterBody = " { return ${memberVariableName}; }") #set($setterWithCopy = " { ${setHasBeenSet}${memberVariableName} = value; SetChecksumAlgorithm(ChecksumAlgorithm::${member.value.getChecksumEnumMember()}); }") @@ -109,26 +109,8 @@ #end #if($member.value.shape.map) #set($mapMember = $member.value.shape) -#set($keyType = $CppViewHelper.computeResultCppType($mapMember.mapKey.shape, $protocol)) -#set($valueType = $CppViewHelper.computeResultCppType($mapMember.mapValue.shape, $protocol)) -#if($mapMember.sparse) -#set($optionalValueType = "Aws::Crt::Optional<${valueType}>") -#if(!$mapMember.mapKey.shape.primitive && !$mapMember.mapKey.shape.enum && !$mapMember.mapValue.shape.primitive && !$mapMember.mapValue.shape.enum) -#set($keyTemplType = "${memberKeyWithFirstLetterCapitalized}KeyT") -#set($valueTemplType = "${memberKeyWithFirstLetterCapitalized}ValueT") - template - ${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${keyTemplType}&& key, ${valueTemplType}&& value) { - ${setHasBeenSet}${memberVariableName}.emplace(std::forward<${keyTemplType}>(key), std::forward<${valueTemplType}>(value)); return *this; - } -#else - ${inline}${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${keyType} key, ${valueType} value) { - ${setHasBeenSet}${memberVariableName}.emplace(key, value); return *this; - } -#end - ${inline}${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${keyType} key, ${optionalValueType} value) { - ${setHasBeenSet}${memberVariableName}.emplace(key, value); return *this; - } -#else +#set($keyType = $CppViewHelper.computeCppType($mapMember.mapKey.shape)) +#set($valueType = $CppViewHelper.computeCppType($mapMember.mapValue.shape)) #if(!$mapMember.mapKey.shape.primitive && !$mapMember.mapKey.shape.enum && !$mapMember.mapValue.shape.primitive && !$mapMember.mapValue.shape.enum) #set($keyTemplType = "${memberKeyWithFirstLetterCapitalized}KeyT") #set($valueTemplType = "${memberKeyWithFirstLetterCapitalized}ValueT") @@ -142,21 +124,9 @@ } #end #end -#end #if($member.value.shape.list) #set($listMember = $member.value.shape) -#set($valueType = $CppViewHelper.computeResultCppType($listMember.listMember.shape, $protocol)) -#if($listMember.sparse) -#set($optionalValueType = "Aws::Crt::Optional<${valueType}>") -#if(!$listMember.listMember.shape.primitive && !$listMember.listMember.shape.enum) -#set($valueTemplType = "${memberKeyWithFirstLetterCapitalized}T") - template - ${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${valueTemplType}&& value) { ${setHasBeenSet}${memberVariableName}.emplace_back(std::forward<${valueTemplType}>(value)); return *this; } -#else - ${inline}${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${valueType} value)$adderWithCopy -#end - ${inline}${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${optionalValueType} value)$adderWithCopy -#else +#set($valueType = $CppViewHelper.computeCppType($listMember.listMember.shape)) #if(!$listMember.listMember.shape.primitive && !$listMember.listMember.shape.enum) #set($valueTemplType = "${memberKeyWithFirstLetterCapitalized}T") template @@ -164,7 +134,6 @@ #else ${inline}${classNameRef} Add${memberKeyWithFirstLetterCapitalized}(${valueType} value)$adderWithCopy #end -#end #end ///@} #end##if(!($CppViewHelper.isStreamingPayloadMember($shape, $member.key) && $shape.request)) diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm index 6474947eaa8..9a47a159e28 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeListValue.vm @@ -1,24 +1,7 @@ -#set($parentListDepth = $recursionDepth - 1) -#if($member.shape.sparse) -{ - auto nullPeek_${recursionDepth} = decoder->PeekType(); - if (nullPeek_${recursionDepth}.has_value() && nullPeek_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::Null) { - decoder->ConsumeNextSingleElement(); -#if($parentListDepth == 0) - ${memberVarName}.emplace_back(); -#else - nestedList_${parentListDepth}.emplace_back(); -#end - } else { -#end #if($shapeMember.enum) auto ${containerVar} = decoder->PopNextTextVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(${shapeMember.name}Mapper::Get${shapeMember.name}ForName(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len))); -#else - nestedList_${parentListDepth}.push_back(${shapeMember.name}Mapper::Get${shapeMember.name}ForName(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len))); -#end + ${value}.push_back(${shapeMember.name}Mapper::Get${shapeMember.name}ForName(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len))); } #elseif($shapeMember.string) auto peekType_${recursionDepth} = decoder->PeekType(); @@ -26,11 +9,7 @@ if(peekType_${recursionDepth}.has_value()){ if (peekType_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::Text) { auto ${containerVar} = decoder->PopNextTextVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len)); -#else - nestedList_${parentListDepth}.push_back(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len)); -#end + ${value}.push_back(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len)); } } else { decoder->ConsumeNextSingleElement(); @@ -48,40 +27,24 @@ if(peekType_${recursionDepth}.has_value()){ ss_${recursionDepth} << Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); } } -#if($parentListDepth == 0) - ${memberVarName}.push_back(ss_${recursionDepth}.str()); -#else - nestedList_${parentListDepth}.push_back(ss_${recursionDepth}.str()); -#end + ${value}.push_back(ss_${recursionDepth}.str()); ss_${recursionDepth}.clear(); } } #elseif($shapeMember.boolean) auto ${containerVar} = decoder->PopNextBooleanVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(${containerVar}.value()); -#else - nestedList_${parentListDepth}.push_back(${containerVar}.value()); -#end + ${value}.push_back(${containerVar}.value()); } #elseif($shapeMember.double) auto ${containerVar} = decoder->PopNextFloatVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(${containerVar}.value()); -#else - nestedList_${parentListDepth}.push_back(${containerVar}.value()); -#end + ${value}.push_back(${containerVar}.value()); } #elseif($shapeMember.float) auto ${containerVar} = decoder->PopNextFloatVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(${containerVar}.value()); -#else - nestedList_${parentListDepth}.push_back(${containerVar}.value()); -#end + ${value}.push_back(${containerVar}.value()); } #elseif($shapeMember.blob) auto peekType_${recursionDepth} = decoder->PeekType(); @@ -89,11 +52,7 @@ if(peekType_${recursionDepth}.has_value()){ if (peekType_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::Bytes) { auto ${containerVar} = decoder->PopNextBytesVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(Aws::Utils::ByteBuffer(${containerVar}.value().ptr, ${containerVar}.value().len)); -#else - nestedList_${parentListDepth}.push_back(Aws::Utils::ByteBuffer(${containerVar}.value().ptr, ${containerVar}.value().len)); -#end + ${value}.push_back(Aws::Utils::ByteBuffer(${containerVar}.value().ptr, ${containerVar}.value().len)); } } else { decoder->ConsumeNextSingleElement(); @@ -111,11 +70,7 @@ if(peekType_${recursionDepth}.has_value()){ ss_${recursionDepth} << Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); } } -#if($parentListDepth == 0) - ${memberVarName}.push_back(Aws::Utils::ByteBuffer(ss_${recursionDepth}.str())); -#else - nestedList_${parentListDepth}.push_back(Aws::Utils::ByteBuffer(ss_${recursionDepth}.str())); -#end + ${value}.push_back(Aws::Utils::ByteBuffer(ss_${recursionDepth}.str())); ss_${recursionDepth}.clear(); } } @@ -130,39 +85,23 @@ if(peekType_${recursionDepth}.has_value()){ { auto ${containerVar} = decoder->PopNextFloatVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(Aws::Utils::DateTime(${containerVar}.value())); -#else - nestedList_${parentListDepth}.push_back(Aws::Utils::DateTime(${containerVar}.value())); -#end + ${value}.push_back(Aws::Utils::DateTime(${containerVar}.value())); } } else { auto ${containerVar} = decoder->PopNextUnsignedIntVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(Aws::Utils::DateTime(${containerVar}.value())); -#else - nestedList_${parentListDepth}.push_back(Aws::Utils::DateTime(${containerVar}.value())); -#end + ${value}.push_back(Aws::Utils::DateTime(${containerVar}.value())); } } } } #elseif($shapeMember.structure) #if($member.shape.isMutuallyReferencedWith($shape) || $member.shape.getName() == $shape.getName()) -#if($parentListDepth == 0) - ${memberVarName}.push_back(Aws::MakeShared<${shapeMember.name}>("${typeInfo.className}", ${shapeMember.name}(decoder))); -#else - nestedList_${parentListDepth}.push_back(Aws::MakeShared<${shapeMember.name}>("${typeInfo.className}", ${shapeMember.name}(decoder))); -#end + ${value}.push_back(Aws::MakeShared<${shapeMember.name}>("${typeInfo.className}", ${shapeMember.name}(decoder))); #else -#if($parentListDepth == 0) - ${memberVarName}.push_back(${shapeMember.name}(decoder)); -#else - nestedList_${parentListDepth}.push_back(${shapeMember.name}(decoder)); -#end + ${value}.push_back(${shapeMember.name}(decoder)); #end #elseif($shapeMember.list) #set($template.nestedShapeMember = $shapeMember.listMember.shape) @@ -206,7 +145,7 @@ if(peekType_${recursionDepth}.has_value()){ } #if($recursionDepth > 1) #set($parentDepth = $recursionDepth - 1) - nestedList_${parentDepth}.push_back(nestedList_${recursionDepth}); + nestedList_${parentDepth}.push_back(${value}); #else ${memberVarName}.push_back(nestedList_${recursionDepth}); #end @@ -252,7 +191,7 @@ if(peekType_${recursionDepth}.has_value()){ } #if($recursionDepth > 1) #set($parentDepth = $recursionDepth - 1) - nestedList_${parentDepth}.push_back(nestedMap_${recursionDepth}); + nestedList_${parentDepth}.push_back(${value}); #else ${memberVarName}.push_back(nestedMap_${recursionDepth}); #end @@ -263,25 +202,13 @@ if(peekType_${recursionDepth}.has_value()){ if(peekType_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::UInt){ auto ${containerVar} = decoder->PopNextUnsignedIntVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(static_cast(${containerVar}.value())); -#else - nestedList_${parentListDepth}.push_back(static_cast(${containerVar}.value())); -#end + ${value}.push_back(static_cast(${containerVar}.value())); } } else { auto ${containerVar} = decoder->PopNextNegativeIntVal(); if (${containerVar}.has_value()) { -#if($parentListDepth == 0) - ${memberVarName}.push_back(static_cast(1 - ${containerVar}.value())); -#else - nestedList_${parentListDepth}.push_back(static_cast(1 - ${containerVar}.value())); -#end + ${value}.push_back(static_cast(1 - ${containerVar}.value())); } } } -#end -#if($member.shape.sparse) - } // end else (non-null sparse element) -} -#end +#end \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm index c48255d584c..29bd1683e13 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborDecodeMapValue.vm @@ -1,27 +1,10 @@ -#set($parentMapDepth = $recursionDepth - 1) auto key_${recursionDepth} = decoder->PopNextTextVal(); if (key_${recursionDepth}.has_value()) { Aws::String keyStr_${recursionDepth} = Aws::String(reinterpret_cast(key_${recursionDepth}.value().ptr), key_${recursionDepth}.value().len); -#if($member.shape.sparse) - { - auto nullPeek_${recursionDepth} = decoder->PeekType(); - if (nullPeek_${recursionDepth}.has_value() && nullPeek_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::Null) { - decoder->ConsumeNextSingleElement(); -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}]; -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}]; -#end - } else { -#end #if($shapeMember.enum) auto ${containerVar} = decoder->PopNextTextVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = ${shapeMember.name}Mapper::Get${shapeMember.name}ForName(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len)); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = ${shapeMember.name}Mapper::Get${shapeMember.name}ForName(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len)); -#end + ${value}[keyStr_${recursionDepth}] = ${shapeMember.name}Mapper::Get${shapeMember.name}ForName(Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len)); } #elseif($shapeMember.string) auto peekType_${recursionDepth} = decoder->PeekType(); @@ -29,11 +12,7 @@ if(peekType_${recursionDepth}){ if (peekType_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::Text) { auto ${containerVar} = decoder->PopNextTextVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); -#end + ${value}[keyStr_${recursionDepth}] = Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); } } else { decoder->ConsumeNextSingleElement(); @@ -51,40 +30,24 @@ if(peekType_${recursionDepth}){ ss_${recursionDepth} << Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); } } -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = ss_${recursionDepth}.str(); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = ss_${recursionDepth}.str(); -#end + ${value}[keyStr_${recursionDepth}] = ss_${recursionDepth}.str(); ss_${recursionDepth}.clear(); } } #elseif($shapeMember.boolean) auto ${containerVar} = decoder->PopNextBooleanVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = ${containerVar}.value(); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = ${containerVar}.value(); -#end + ${value}[keyStr_${recursionDepth}] = ${containerVar}.value(); } #elseif($shapeMember.double) auto ${containerVar} = decoder->PopNextFloatVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = ${containerVar}.value(); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = ${containerVar}.value(); -#end + ${value}[keyStr_${recursionDepth}] = ${containerVar}.value(); } #elseif($shapeMember.float) auto ${containerVar} = decoder->PopNextFloatVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = ${containerVar}.value(); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = ${containerVar}.value(); -#end + ${value}[keyStr_${recursionDepth}] = ${containerVar}.value(); } #elseif($shapeMember.blob) auto peekType_${recursionDepth} = decoder->PeekType(); @@ -92,11 +55,7 @@ if(peekType_${recursionDepth}){ if (peekType_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::Bytes) { auto ${containerVar} = decoder->PopNextBytesVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = Aws::Utils::ByteBuffer(${containerVar}.value().ptr, ${containerVar}.value().len); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = Aws::Utils::ByteBuffer(${containerVar}.value().ptr, ${containerVar}.value().len); -#end + ${value}[keyStr_${recursionDepth}] = Aws::Utils::ByteBuffer(${containerVar}.value().ptr, ${containerVar}.value().len); } } else { decoder->ConsumeNextSingleElement(); @@ -114,11 +73,7 @@ if(peekType_${recursionDepth}){ ss_${recursionDepth} << Aws::String(reinterpret_cast(${containerVar}.value().ptr), ${containerVar}.value().len); } } -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = Aws::Utils::ByteBuffer(ss_${recursionDepth}.str()); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = Aws::Utils::ByteBuffer(ss_${recursionDepth}.str()); -#end + ${value}[keyStr_${recursionDepth}] = Aws::Utils::ByteBuffer(ss_${recursionDepth}.str()); ss_${recursionDepth}.clear(); } } @@ -133,39 +88,23 @@ if(peekType_${recursionDepth}){ { auto ${containerVar} = decoder->PopNextFloatVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = Aws::Utils::DateTime(${containerVar}.value()); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = Aws::Utils::DateTime(${containerVar}.value()); -#end + ${value}[keyStr_${recursionDepth}] = Aws::Utils::DateTime(${containerVar}.value()); } } else { auto ${containerVar} = decoder->PopNextUnsignedIntVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = Aws::Utils::DateTime(${containerVar}.value()); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = Aws::Utils::DateTime(${containerVar}.value()); -#end + ${value}[keyStr_${recursionDepth}] = Aws::Utils::DateTime(${containerVar}.value()); } } } } #elseif($shapeMember.structure) #if($member.shape.isMutuallyReferencedWith($shape) || $member.shape.getName() == $shape.getName()) -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = Aws::MakeShared<${shapeMember.name}>("${typeInfo.className}", ${shapeMember.name}(decoder)); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = Aws::MakeShared<${shapeMember.name}>("${typeInfo.className}", ${shapeMember.name}(decoder)); -#end + ${value}[keyStr_${recursionDepth}] = Aws::MakeShared<${shapeMember.name}>("${typeInfo.className}", ${shapeMember.name}(decoder)); #else -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = ${shapeMember.name}(decoder); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = ${shapeMember.name}(decoder); -#end + ${value}[keyStr_${recursionDepth}] = ${shapeMember.name}(decoder); #end #elseif($shapeMember.map) #set($template.nestedShapeMember = $shapeMember.mapValue.shape) @@ -205,9 +144,9 @@ if(peekType_${recursionDepth}){ #set($recursionDepth = $recursionDepth - 1) } } - #if($recursionDepth > 1) + #if($recursionDepth > 0) #set($parentDepth = $recursionDepth - 1) - nestedMap_${parentDepth}[keyStr_${recursionDepth}] = nestedMap_${recursionDepth}; + nestedMap_${parentDepth}[keyStr_${recursionDepth}] = ${value}; #else ${memberVarName}[keyStr_${recursionDepth}] = nestedMap_${recursionDepth}; #end @@ -254,7 +193,7 @@ if(peekType_${recursionDepth}){ } #if($recursionDepth > 1) #set($parentDepth = $recursionDepth - 1) - nestedMap_${parentDepth}[keyStr_${recursionDepth}] = nestedList_${recursionDepth}; + nestedMap_${parentDepth}[keyStr_${recursionDepth}] = ${value}; #else ${memberVarName}[keyStr_${recursionDepth}] = nestedList_${recursionDepth}; #end @@ -265,26 +204,14 @@ if(peekType_${recursionDepth}){ if(peekType_${recursionDepth}.value() == Aws::Crt::Cbor::CborType::UInt){ auto ${containerVar} = decoder->PopNextUnsignedIntVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = static_cast(${containerVar}.value()); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = static_cast(${containerVar}.value()); -#end + ${value}[keyStr_${recursionDepth}] = static_cast(${containerVar}.value()); } } else { auto ${containerVar} = decoder->PopNextNegativeIntVal(); if (${containerVar}.has_value()) { -#if($parentMapDepth == 0) - ${memberVarName}[keyStr_${recursionDepth}] = static_cast(1 - ${containerVar}.value()); -#else - nestedMap_${parentMapDepth}[keyStr_${recursionDepth}] = static_cast(1 - ${containerVar}.value()); -#end + ${value}[keyStr_${recursionDepth}] = static_cast(1 - ${containerVar}.value()); } } } #end -#if($member.shape.sparse) - } // end else (non-null sparse value) - } -#end -} +} \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm index fd089e19d3d..279d4d3dc78 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm @@ -3,43 +3,21 @@ encoder.WriteText(Aws::Crt::ByteCursorFromCString(${shapeMember.name}Mapper::Get #elseif($shapeMember.list) encoder.WriteArrayStart(${value}.size()); for(const auto& item_${recursionDepth} : ${value}) { -#if($shapeMember.sparse) - if (!item_${recursionDepth}.has_value()) { encoder.WriteNull(); } else { - const auto& sparseItem_${recursionDepth} = *item_${recursionDepth}; -#set($value = "sparseItem_${recursionDepth}") #set($shapeMember = $shapeMember.listMember.shape) -#set($recursionDepth = $recursionDepth + 1) -#parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm") -#set($recursionDepth = $recursionDepth - 1) - } -#else #set($value = "item_${recursionDepth}") -#set($shapeMember = $shapeMember.listMember.shape) #set($recursionDepth = $recursionDepth + 1) #parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm") #set($recursionDepth = $recursionDepth - 1) -#end } #elseif($shapeMember.map) encoder.WriteMapStart(${value}.size()); for(const auto& item_${recursionDepth} : ${value}) { encoder.WriteText(Aws::Crt::ByteCursorFromCString(item_${recursionDepth}.first.c_str())); -#if($shapeMember.sparse) - if (!item_${recursionDepth}.second.has_value()) { encoder.WriteNull(); } else { - const auto& sparseVal_${recursionDepth} = *item_${recursionDepth}.second; -#set($value = "sparseVal_${recursionDepth}") #set($shapeMember = $shapeMember.mapValue.shape) -#set($recursionDepth = $recursionDepth + 1) -#parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm") -#set($recursionDepth = $recursionDepth - 1) - } -#else #set($value = "item_${recursionDepth}.second") -#set($shapeMember = $shapeMember.mapValue.shape) #set($recursionDepth = $recursionDepth + 1) #parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborEncodeValue.vm") #set($recursionDepth = $recursionDepth - 1) -#end } #elseif($shapeMember.blob) encoder.WriteBytes(Aws::Crt::ByteCursorFromCString(reinterpret_cast(${value}.GetUnderlyingData()))); @@ -62,4 +40,4 @@ encoder.WriteTag(1); //1 represents Epoch-based date/time. See https://www.rfc-e encoder.WriteUInt(${value}.Seconds()); #else (${value} >= 0) ? encoder.WriteUInt(${value}) : encoder.WriteNegInt(${value}); -#end +#end \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborResultHeader.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborResultHeader.vm index 13f69a08bd7..b3f867df5a3 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborResultHeader.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborResultHeader.vm @@ -46,7 +46,6 @@ template ${exportMacro} ${classNameRef} operator=(const Aws::AmazonWebServiceResult<${CborRef}>& result); #set($useRequiredField = false) - #set($protocol = "smithy-rpc-v2-cbor") #parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersAndInlines.vm") }; diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborSubObjectHeader.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborSubObjectHeader.vm index 0a533ddc04a..096ccba4def 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborSubObjectHeader.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/cbor/CborSubObjectHeader.vm @@ -51,7 +51,6 @@ ${exportMacro} ${classNameRef} operator=(const ${typeInfo.cborDecoder}& decoder) ${exportMacro} void CborEncode(Aws::Crt::Cbor::CborEncoder& encoder) const; #set($useRequiredField = true) -#set($protocol = "smithy-rpc-v2-cbor") #parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersAndInlines.vm") }; diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/common/model/ServiceClientModelHeaderMemberDeclaration.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/common/model/ServiceClientModelHeaderMemberDeclaration.vm index 1fd29e072f8..3c8d8684cb4 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/common/model/ServiceClientModelHeaderMemberDeclaration.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/common/model/ServiceClientModelHeaderMemberDeclaration.vm @@ -7,11 +7,7 @@ #else #set($isEventStreamInput = false) #end -#if($protocol == "smithy-rpc-v2-cbor") -#set($cppType = $CppViewHelper.computeCborCppType($shape, $member.key)) -#else #set($cppType = $CppViewHelper.computeCppType($shape, $member.key)) -#end #if($member.value.shape.isException() && !$member.value.shape.isModeledException()) #set($cppType = "${metadata.classNamePrefix}Error") #end diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm index 65d7afff006..492de94d73b 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonDeserializer.vm @@ -22,13 +22,6 @@ #end ${template.currentSpaces}for(auto& ${template.lowerCaseVarName}Item : ${template.lowerCaseVarName}JsonMap) ${template.currentSpaces}{ -#if($template.currentShape.sparse) - ${template.currentSpaces} if(${template.lowerCaseVarName}Item.second.IsNull()) - ${template.currentSpaces} { - ${template.currentSpaces} ${template.containerVar}[${template.lowerCaseVarName}Item.first]; - ${template.currentSpaces} continue; - ${template.currentSpaces} } -#end #if(!$template.currentShape.mapValue.shape.map && !$template.currentShape.mapValue.shape.list) #set($lvalue = "${template.containerVar}[${template.lowerCaseVarName}Item.first]") #set($rvalue = "${template.lowerCaseVarName}Item.second.As${CppViewHelper.computeJsonCppType($template.currentShape.mapValue.shape)}()") @@ -89,41 +82,18 @@ #end ${template.currentSpaces}for(unsigned ${template.lowerCaseVarName}Index = 0; ${template.lowerCaseVarName}Index < ${template.lowerCaseVarName}JsonList.GetLength(); ++${template.lowerCaseVarName}Index) ${template.currentSpaces}{ -#if($template.currentShape.sparse) - ${template.currentSpaces} if(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].IsNull()) - ${template.currentSpaces} { - ${template.currentSpaces} ${template.containerVar}.emplace_back(); - ${template.currentSpaces} continue; - ${template.currentSpaces} } -#end #if(!$template.currentShape.listMember.shape.map && !$template.currentShape.listMember.shape.list) #set($template.atBottom = true) #if($template.currentShape.listMember.shape.enum) #set($enumName = $template.currentShape.listMember.shape.name) -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.containerVar}.emplace_back(${enumName}Mapper::Get${enumName}ForName(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].AsString())); -#else ${template.currentSpaces} ${template.containerVar}.push_back(${enumName}Mapper::Get${enumName}ForName(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].AsString())); -#end #elseif($template.currentShape.listMember.shape.blob) -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.containerVar}.emplace_back(HashingUtils::Base64Decode(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}())); -#else ${template.currentSpaces} ${template.containerVar}.push_back(HashingUtils::Base64Decode(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}())); -#end #elseif($template.currentShape.listMember.shape.timeStamp && $template.currentShape.listMember.shape.timestampFormat == "iso8601") -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.containerVar}.emplace_back(Aws::Utils::DateTime{${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}(), Aws::Utils::DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($template.currentShape.listMember.shape)}); -#else ${template.currentSpaces} ${template.containerVar}.push_back(Aws::Utils::DateTime{${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}(), Aws::Utils::DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($template.currentShape.listMember.shape)}); -#end -#else -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.containerVar}.emplace_back(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}()); #else ${template.currentSpaces} ${template.containerVar}.push_back(${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}()); #end -#end #else #set($currentSpaces = $template.currentSpaces + " ") #set($currentShape = $template.currentShape.listMember.shape) diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonize.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonize.vm index 6b102baaae5..56c69280c33 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonize.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/ModelInternalMapOrListJsonize.vm @@ -13,31 +13,8 @@ ${template.currentSpaces}JsonValue ${template.lowerCaseVarName}JsonMap; ${template.currentSpaces}for(auto& ${template.lowerCaseVarName}Item : ${template.containerVar}) ${template.currentSpaces}{ -#if($template.currentShape.sparse) - ${template.currentSpaces} if(!${template.lowerCaseVarName}Item.second.has_value()) - ${template.currentSpaces} { - ${template.currentSpaces} ${template.lowerCaseVarName}JsonMap.WithNull(${template.lowerCaseVarName}Item.first); - ${template.currentSpaces} continue; - ${template.currentSpaces} } -#end #if(!$template.currentShape.mapValue.shape.map && !$template.currentShape.mapValue.shape.list) #set($functionCall = "${template.lowerCaseVarName}JsonMap.With${CppViewHelper.computeJsonCppType($template.currentShape.mapValue.shape)}") -#if($template.currentShape.sparse) -#set($key = "${template.lowerCaseVarName}Item.first") -#set($value = "*${template.lowerCaseVarName}Item.second${CppViewHelper.computeJsonizeString($template.currentShape.mapValue.shape)}") -#if($template.currentShape.mapValue.shape.isBlob()) -#set($value = "HashingUtils::Base64Encode(*${template.lowerCaseVarName}Item.second${CppViewHelper.computeJsonizeString($template.currentShape.mapValue.shape)})") -#end -#if($template.currentShape.mapKey.shape.enum) -#set($enumName = $template.currentShape.mapKey.shape.name) -#set($key = "${enumName}Mapper::GetNameFor${enumName}(${template.lowerCaseVarName}Item.first)") -#end -#if($template.currentShape.mapValue.shape.enum) -#set($enumName = $template.currentShape.mapValue.shape.name) -#set($value = "${enumName}Mapper::GetNameFor${enumName}(*${template.lowerCaseVarName}Item.second)") -#set($functionCall = "${template.lowerCaseVarName}JsonMap.WithString") -#end -#else #set($key = "${template.lowerCaseVarName}Item.first") #set($value = "${template.lowerCaseVarName}Item.second${CppViewHelper.computeJsonizeString($template.currentShape.mapValue.shape)}") #if($template.currentShape.mapValue.shape.isBlob()) @@ -51,7 +28,6 @@ #set($enumName = $template.currentShape.mapValue.shape.name) #set($value = "${enumName}Mapper::GetNameFor${enumName}(${value})") #set($functionCall = "${template.lowerCaseVarName}JsonMap.WithString") -#end #end ${template.currentSpaces} ${functionCall}(${key}, ${value}); #set($template.atBottom = true) @@ -83,35 +59,16 @@ ${template.currentSpaces}${AwsArray} ${template.lowerCaseVarName}JsonList(${template.containerVar}.size()); ${template.currentSpaces}for(unsigned ${template.lowerCaseVarName}Index = 0; ${template.lowerCaseVarName}Index < ${template.lowerCaseVarName}JsonList.GetLength(); ++${template.lowerCaseVarName}Index) ${template.currentSpaces}{ -#if($template.currentShape.sparse) - ${template.currentSpaces} if(!${template.containerVar}[${template.lowerCaseVarName}Index].has_value()) - ${template.currentSpaces} { - ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].AsNull(); - ${template.currentSpaces} continue; - ${template.currentSpaces} } -#end #if(!$template.currentShape.listMember.shape.map && !$template.currentShape.listMember.shape.list) #set($template.atBottom = true) #if($template.currentShape.listMember.shape.enum) #set($enumName = $template.currentShape.listMember.shape.name) -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].AsString(${enumName}Mapper::GetNameFor${enumName}(*${template.containerVar}[${template.lowerCaseVarName}Index])); -#else ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].AsString(${enumName}Mapper::GetNameFor${enumName}(${template.containerVar}[${template.lowerCaseVarName}Index])); -#end #elseif($template.currentShape.listMember.shape.blob) -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}(HashingUtils::Base64Encode(*${template.containerVar}[${template.lowerCaseVarName}Index]${CppViewHelper.computeJsonizeString($template.currentShape.listMember.shape)})); -#else ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}(HashingUtils::Base64Encode(${template.containerVar}[${template.lowerCaseVarName}Index]${CppViewHelper.computeJsonizeString($template.currentShape.listMember.shape)})); -#end -#else -#if($template.currentShape.sparse) - ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}(*${template.containerVar}[${template.lowerCaseVarName}Index]${CppViewHelper.computeJsonizeString($template.currentShape.listMember.shape)}); #else ${template.currentSpaces} ${template.lowerCaseVarName}JsonList[${template.lowerCaseVarName}Index].As${CppViewHelper.computeJsonCppType($template.currentShape.listMember.shape)}(${template.containerVar}[${template.lowerCaseVarName}Index]${CppViewHelper.computeJsonizeString($template.currentShape.listMember.shape)}); #end -#end #else #set($currentSpaces = $template.currentSpaces + " ") #set($currentShape = $template.currentShape.listMember.shape) diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetListMacro.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetListMacro.vm index 8b612eb1493..98ee03ac132 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetListMacro.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetListMacro.vm @@ -31,18 +31,6 @@ ${macro.spaces}{ ${macro.spaces}} #end##foreach #else## not (list || map || structure) -#if($listShape.sparse) -#set($macro.fieldAdder = "Add${CppViewHelper.capitalizeFirstChar($testInputParam.key)}") -#foreach($arrayItem in $testInputParam.value) -#if($arrayItem == "null") -${macro.spaces}${dstObject}.${macro.fieldAdder}(Aws::Crt::Optional<$CppViewHelper.computeCppType($macro.listMemberShape)>{}); -#elseif($macro.listMemberShape.list || $macro.listMemberShape.map) -${macro.spaces}${dstObject}.${macro.fieldAdder}($CppViewHelper.computeCppType($macro.listMemberShape)#SerializeSingleParameterMacro($macro.listMemberShape, $arrayItem)); -#else -${macro.spaces}${dstObject}.${macro.fieldAdder}(#SerializeSingleParameterMacro($macro.listMemberShape, $arrayItem)); -#end -#end -#else #set($macro.fieldSetter = "Set${CppViewHelper.capitalizeFirstChar($testInputParam.key)}") #set($macro.listResult="{") #foreach($arrayItem in $testInputParam.value) @@ -51,6 +39,5 @@ ${macro.spaces}${dstObject}.${macro.fieldAdder}(#SerializeSingleParameterMacro($ #end #set($macro.listResult=$macro.listResult + "}") ${spaces}${dstObject}.${macro.fieldSetter}($macro.listResult); -#end #end##(list || map || structure) #end##macro SetListMacro \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetMapMacro.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetMapMacro.vm index 8b3d7287b5c..809e27ce237 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetMapMacro.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/request/SetMapMacro.vm @@ -29,18 +29,6 @@ ${macro.spaces}} #break #end ###----- the map value is not nested structure or document -#if($mapShape.sparse) -#set($macro.fieldAdder = "Add${CppViewHelper.capitalizeFirstChar($testInputParam.key)}") -#foreach($mapItem in $testInputParam.value.fields()) -#if($mapItem.value == "null") -${macro.spaces}${dstObject}.${macro.fieldAdder}("$mapItem.key", Aws::Crt::Optional<$CppViewHelper.computeCppType($mapShape.mapValue.shape)>{}); -#elseif($mapShape.mapValue.shape.list || $mapShape.mapValue.shape.map) -${macro.spaces}${dstObject}.${macro.fieldAdder}("$mapItem.key", $CppViewHelper.computeCppType($mapShape.mapValue.shape)#SerializeSingleParameterMacro($mapShape.mapValue.shape, $mapItem.value)); -#else -${macro.spaces}${dstObject}.${macro.fieldAdder}("$mapItem.key", #SerializeSingleParameterMacro($mapShape.mapValue.shape, $mapItem.value)); -#end -#end -#else #set($macro.mapResult="{") #foreach($mapItem in $testInputParam.value.fields()) #set($macro.mapItem="{" + '"' + "$mapItem.key" + '"' + ", ") @@ -50,5 +38,4 @@ ${macro.spaces}${dstObject}.${macro.fieldAdder}("$mapItem.key", #SerializeSingle #end #set($macro.mapResult=$macro.mapResult + "}") ${spaces}${dstObject}.${macro.fieldSetter}($macro.mapResult); -#end #end##macro SetMapMacro \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateListMacro.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateListMacro.vm index 7c9266760a4..7c9070a317b 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateListMacro.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateListMacro.vm @@ -23,34 +23,17 @@ #set($macro.listItemVarName = "${dstObject}${CppViewHelper.capitalizeFirstChar(${CppViewHelper.computeVariableName($testValidateParam.key)})}Item") #end #if($macro.listMemberShape.list || $macro.listMemberShape.map || $macro.listMemberShape.structure) -#if($listShape.sparse && $macro.listMemberShape.structure) -${macro.spaces}const Aws::Vector>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}; -${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.listItemVarName}.size()); -#foreach($arrayItem in $testValidateParamVal) -${macro.spaces}{ -#if($arrayItem.isNull()) - ${macro.spaces}EXPECT_FALSE(${macro.listItemVarName}.at(${foreach.index}).has_value()); -#else - ${macro.spaces}EXPECT_TRUE(${macro.listItemVarName}.at(${foreach.index}).has_value()); - ${macro.spaces}const ${macro.listMemberShape.name}& ${macro.listItemVarName}Ref = *${macro.listItemVarName}.at(${foreach.index}); -#foreach($innerParam in $arrayItem.fields()) -#ValidateParamsMacro("${macro.spaces} " "${macro.listItemVarName}Ref" $macro.listMemberShape $innerParam) -#end -#end -${macro.spaces}} -#end -#else ${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${dstObject}.${macro.fieldGetter}.size()); #foreach($arrayItem in $testValidateParamVal) ${macro.spaces}{ #if($macro.listMemberShape.list) - ${macro.spaces}const Aws::Vector<$CppViewHelper.computeResultCppType($macro.listMemberShape.listMember.shape, $serviceModel.metadata.protocol)>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}.at(${foreach.index}); + ${macro.spaces}const Aws::Vector<$CppViewHelper.computeCppType($macro.listMemberShape.listMember.shape)>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}.at(${foreach.index}); ${macro.spaces}EXPECT_EQ(${arrayItem.size()}U, ${macro.listItemVarName}.size()); #foreach($innerListEl in $arrayItem) ${macro.spaces}EXPECT_EQ(#ValidateSingleParameterMacro($macro.listMemberShape.listMember.shape, $innerListEl), ${macro.listItemVarName}.at(${foreach.index})); #end #elseif($macro.listMemberShape.map) - ${macro.spaces}const Aws::Map<$CppViewHelper.computeResultCppType($macro.listMemberShape.mapKey.shape, $serviceModel.metadata.protocol), $CppViewHelper.computeResultCppType($macro.listMemberShape.mapValue.shape, $serviceModel.metadata.protocol)>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}.at(${foreach.index}); + ${macro.spaces}const Aws::Map<$CppViewHelper.computeCppType($macro.listMemberShape.mapKey.shape), $CppViewHelper.computeCppType($macro.listMemberShape.mapValue.shape)>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}.at(${foreach.index}); ${macro.spaces}EXPECT_EQ(${arrayItem.size()}U, ${macro.listItemVarName}.size()); #foreach($innerMapEl in $arrayItem.fields()) ${macro.spaces}EXPECT_TRUE(${macro.listItemVarName}.find("$innerMapEl.key") != ${macro.listItemVarName}.end()); @@ -64,25 +47,11 @@ ${macro.spaces}{ #end##list ${macro.spaces}} #end##foreach -#end #else## not (list || map || structure) -#if($listShape.sparse) -${macro.spaces}const Aws::Vector>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}; -${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.listItemVarName}.size()); -#foreach($arrayItem in $testValidateParamVal) -#if($arrayItem.isNull()) -${macro.spaces}EXPECT_FALSE(${macro.listItemVarName}.at(${foreach.index}).has_value()); -#else -${macro.spaces}EXPECT_TRUE(${macro.listItemVarName}.at(${foreach.index}).has_value()); -${macro.spaces}EXPECT_EQ(#ValidateSingleParameterMacro($macro.listMemberShape, $arrayItem), *${macro.listItemVarName}.at(${foreach.index})); -#end -#end -#else -${macro.spaces}const Aws::Vector<$CppViewHelper.computeResultCppType($macro.listMemberShape, $serviceModel.metadata.protocol)>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}; +${macro.spaces}const Aws::Vector<$CppViewHelper.computeCppType($macro.listMemberShape)>& $macro.listItemVarName = ${dstObject}.${macro.fieldGetter}; ${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.listItemVarName}.size()); #foreach($arrayItem in $testValidateParamVal) ${macro.spaces}EXPECT_EQ(#ValidateSingleParameterMacro($macro.listMemberShape, $arrayItem), ${macro.listItemVarName}.at(${foreach.index})); #end -#end##sparse #end##(list || map || structure) #end##macro ValidateListMacro \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateMapMacro.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateMapMacro.vm index d2eb9830fb0..845748270b7 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateMapMacro.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateMapMacro.vm @@ -17,7 +17,7 @@ #end #set($macro.spaces = $spaces) #if($mapShape.mapValue.shape.document) -${macro.spaces}const Aws::Map<$CppViewHelper.computeResultCppType($mapShape.mapKey.shape, $serviceModel.metadata.protocol), $CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; +${macro.spaces}const Aws::Map<$CppViewHelper.computeCppType($mapShape.mapKey.shape), $CppViewHelper.computeCppType($mapShape.mapValue.shape)>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; ${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.mapVarName}.size()); #foreach($mapItem in $testValidateParamVal.fields()) ${macro.spaces}EXPECT_STREQ(R"j(${mapItem.value})j", ${macro.mapVarName}.at("$mapItem.key").View().WriteCompact().c_str()); @@ -25,53 +25,21 @@ ${macro.spaces}EXPECT_STREQ(R"j(${mapItem.value})j", ${macro.mapVarName}.at("$ma #break #end #if($mapShape.mapValue.shape.structure) -#if($mapShape.sparse) -${macro.spaces}const Aws::Map<$CppViewHelper.computeResultCppType($mapShape.mapKey.shape, $serviceModel.metadata.protocol), Aws::Crt::Optional<$CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)>>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; +${macro.spaces}const Aws::Map<$CppViewHelper.computeCppType($mapShape.mapKey.shape), $CppViewHelper.computeCppType($mapShape.mapValue.shape)>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; ${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.mapVarName}.size()); #foreach($mapItem in $testValidateParamVal.fields()) ${macro.spaces}{ ${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.find("$mapItem.key") != ${macro.mapVarName}.end()); -#if($mapItem.value.isNull()) - ${macro.spaces}EXPECT_FALSE(${macro.mapVarName}.at("$mapItem.key").has_value()); -#else - ${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.at("$mapItem.key").has_value()); - ${macro.spaces}const $CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)& $macro.mapItemVarName = *${macro.mapVarName}.at("$mapItem.key"); -#foreach($innerParam in $mapItem.value.fields()) -#ValidateParamsMacro("${macro.spaces} " $macro.mapItemVarName $mapShape.mapValue.shape $innerParam) -#end -#end -${macro.spaces}} -#end -#else -${macro.spaces}const Aws::Map<$CppViewHelper.computeResultCppType($mapShape.mapKey.shape, $serviceModel.metadata.protocol), $CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; -${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.mapVarName}.size()); -#foreach($mapItem in $testValidateParamVal.fields()) -${macro.spaces}{ - ${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.find("$mapItem.key") != ${macro.mapVarName}.end()); - ${macro.spaces}const $CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)& $macro.mapItemVarName = ${macro.mapVarName}.at("$mapItem.key"); + ${macro.spaces}const $CppViewHelper.computeCppType($mapShape.mapValue.shape)& $macro.mapItemVarName = ${macro.mapVarName}.at("$mapItem.key"); #foreach($innerParam in $mapItem.value.fields()) #ValidateParamsMacro("${macro.spaces} " $macro.mapItemVarName $mapShape.mapValue.shape $innerParam) #end ${macro.spaces}} #end -#end #break #end ###----- the map value is not nested structure or document -#if($mapShape.sparse) -${macro.spaces}const Aws::Map<$CppViewHelper.computeResultCppType($mapShape.mapKey.shape, $serviceModel.metadata.protocol), Aws::Crt::Optional<$CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)>>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; -${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.mapVarName}.size()); -#foreach($mapItem in $testValidateParamVal.fields()) -${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.find("$mapItem.key") != ${macro.mapVarName}.end()); -#if($mapItem.value.isNull()) -${macro.spaces}EXPECT_FALSE(${macro.mapVarName}.at("$mapItem.key").has_value()); -#else -${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.at("$mapItem.key").has_value()); -${macro.spaces}EXPECT_EQ(#ValidateSingleParameterMacro($mapShape.mapValue.shape, $mapItem.value), *${macro.mapVarName}.at("$mapItem.key")); -#end -#end -#else -${macro.spaces}const Aws::Map<$CppViewHelper.computeResultCppType($mapShape.mapKey.shape, $serviceModel.metadata.protocol), $CppViewHelper.computeResultCppType($mapShape.mapValue.shape, $serviceModel.metadata.protocol)>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; +${macro.spaces}const Aws::Map<$CppViewHelper.computeCppType($mapShape.mapKey.shape), $CppViewHelper.computeCppType($mapShape.mapValue.shape)>& $macro.mapVarName = ${dstObject}.${macro.fieldGetter}; ${macro.spaces}EXPECT_EQ(${testValidateParamVal.size()}U, ${macro.mapVarName}.size()); #foreach($mapItem in $testValidateParamVal.fields()) ${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.find("$mapItem.key") != ${macro.mapVarName}.end()); @@ -80,5 +48,4 @@ ${macro.spaces}EXPECT_TRUE(${macro.mapVarName}.find("$mapItem.key") != ${macro.m #set($macro.var = $macro.mapItemVarName) #ValidateSingleVariableMacro($macro.spaces, $mapShape.mapValue.shape, $mapItem.value, $macro.parentVarName, $macro.getter, $macro.var) #end -#end##sparse #end##macro ValidateMapMacro \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateSingleParameterMacro.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateSingleParameterMacro.vm index 7f3d0c0d6a5..1e5ee6442cd 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateSingleParameterMacro.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/protocoltests/result/ValidateSingleParameterMacro.vm @@ -38,14 +38,15 @@ Aws::Utils::DateTime(static_cast(${value}))## #elseif($shape.enum) ${shape.name}Mapper::Get${shape.name}ForName(R"e(${value.asText()})e")## #elseif($shape.list) -#set($macro.listResult="Aws::Vector<$CppViewHelper.computeResultCppType($shape.listMember.shape, $serviceModel.metadata.protocol)>({")#foreach($listItem in $value) +#set($macro.listResult="Aws::Vector<$CppViewHelper.computeCppType($shape)>({") +#foreach($listItem in $value) #set($macro.listResult=$macro.listResult + "#ValidateSingleParameterMacro($shape.listMember.shape, $listItem)") #if($foreach.hasNext)#set($macro.listResult=$macro.listResult + ", ")#end #end #set($macro.listResult=$macro.listResult + "})") $macro.listResult## #elseif($shape.map) -#set($macro.mapResult="Aws::Map<$CppViewHelper.computeResultCppType($shape.mapKey.shape, $serviceModel.metadata.protocol), $CppViewHelper.computeResultCppType($shape.mapValue.shape, $serviceModel.metadata.protocol)>({") +#set($macro.mapResult="Aws::Map<$CppViewHelper.computeCppType($shape.mapKey.shape), $CppViewHelper.computeCppType($shape.mapValue.shape)>({") #foreach($mapItem in $value.fields()) #set($macro.mapItem="{" + '"' + "$mapItem.key" + '"' + ", ") #set($macro.mapItem=$macro.mapItem + "#ValidateSingleParameterMacro($shape.mapValue.shape, $mapItem.value)" + "}") diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryListElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryListElement.vm index f4e68606550..03c8ca9e6ba 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryListElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryListElement.vm @@ -45,23 +45,10 @@ #end #end #if($member.shape.listMember.shape.structure) -#if($member.shape.sparse) - ${macro.spaces} if(item.has_value()) { - ${macro.spaces} item.value().OutputToStream(ss, "${macro.listLocation}.", ${varName}Count, ""); - ${macro.spaces} } -#else ${macro.spaces} item.OutputToStream(ss, "${macro.listLocation}.", ${varName}Count, ""); -#end -#else -#if($member.shape.sparse) - ${macro.spaces} if(item.has_value()) { - ${macro.spaces} ss << "${macro.listLocation}." << ${varName}Count << "=" - ${macro.spaces} << #serializeQuerySingleElementToText($macro.spaces, $member.shape.listMember, "item.value()") << "&"; - ${macro.spaces} } #else ${macro.spaces} ss << "${macro.listLocation}." << ${varName}Count << "=" ${macro.spaces} << #serializeQuerySingleElementToText($macro.spaces, $member.shape.listMember, "item") << "&"; -#end #end ${macro.spaces} ${varName}Count++; ${macro.spaces}} diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryMapElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryMapElement.vm index f797d4abb67..751eca7c55a 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryMapElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeRequestQueryMapElement.vm @@ -35,27 +35,14 @@ #end ## --- MAP VALUE --- #if($member.shape.mapValue.shape.structure) -#if($member.shape.sparse) - ${spaces} if(item.second.has_value()) { - ${spaces} item.second.value().OutputToStream(ss, "${macro.mapLocationName}.", ${macro.varName}Count, ".${macro.valueLocationName}"); - ${spaces} } -#else ${spaces} item.second.OutputToStream(ss, "${macro.mapLocationName}.", ${macro.varName}Count, ".${macro.valueLocationName}"); -#end #else #set($macro.equals='=') #if($member.shape.mapValue.shape.list || $member.shape.mapValue.shape.map) #set($macro.equals='') #end -#if($member.shape.sparse) - ${spaces} if(item.second.has_value()) { - ${spaces} ss << "${macro.mapLocationName}." << ${macro.varName}Count << ".${macro.valueLocationName}${macro.equals}" - ${spaces} << #serializeQuerySingleElementToText($spaces, $member.shape.mapValue, "item.second.value()") << "&"; - ${spaces} } -#else ${spaces} ss << "${macro.mapLocationName}." << ${macro.varName}Count << ".${macro.valueLocationName}${macro.equals}" ${spaces} << #serializeQuerySingleElementToText($spaces, $member.shape.mapValue, "item.second") << "&"; -#end #end ${spaces} ${macro.varName}Count++; ${spaces}} diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeSubObjQueryMapElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeSubObjQueryMapElement.vm index 4db390fc41b..633eddb064d 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeSubObjQueryMapElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/queryxml/QuerySerializeTemplateMacros/serializeSubObjQueryMapElement.vm @@ -32,26 +32,14 @@ #if($member.shape.mapValue.shape.structure) ${spaces} Aws::StringStream ${macro.lowerCaseVarName}Ss; ${spaces} ${macro.lowerCaseVarName}Ss << location << ${macro.locationIndexValue}".${macro.mapLocationName}." << ${macro.lowerCaseVarName}Idx << ".${macro.mapValueLocationName}"; -#if($member.shape.sparse) - ${spaces} if(item.second.has_value()) { - ${spaces} item.second.value().OutputToStream(oStream, ${macro.lowerCaseVarName}Ss.str().c_str()); - ${spaces} } -#else ${spaces} item.second.OutputToStream(oStream, ${macro.lowerCaseVarName}Ss.str().c_str()); -#end #else #set($macro.equals='="') #if($member.shape.mapValue.shape.list || $member.shape.mapValue.shape.map) #set($macro.equals='"') #end #set($mapValueLocation = '".' + "${macro.mapLocationName}." + '"' + " << ${macro.lowerCaseVarName}Idx << " + '".' + ${macro.mapValueLocationName} + $macro.equals + $nl + " ${spaces} ") -#if($member.shape.sparse) - ${spaces} if(item.second.has_value()) { - ${spaces} oStream << location << ${macro.locationIndexValue}#serializeSubObjQuerySingleElement($member.shape.mapValue, $mapValueLocation, "item.second.value()") << "&"; - ${spaces} } -#else ${spaces} oStream << location << ${macro.locationIndexValue}#serializeSubObjQuerySingleElement($member.shape.mapValue, $mapValueLocation, "item.second") << "&"; -#end #end ${spaces} ${macro.lowerCaseVarName}Idx++; ${spaces}} diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlListPayloadElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlListPayloadElement.vm index be8e43a22db..289c96de122 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlListPayloadElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlListPayloadElement.vm @@ -54,19 +54,7 @@ ${macro.spaces}while(!${macro.listVarName}.IsNull()) ${macro.spaces}{ #set($macro.memberVarName = $CppViewHelper.computeMemberVariableName($memberName)) -#if($member.shape.sparse) - ${macro.spaces} if(${macro.listVarName}.GetText().empty() || ${macro.listVarName}.GetAttributeValue("xsi:nil") == "true") { - ${macro.spaces} ${macro.memberVarName}.emplace_back(); - ${macro.spaces} } else { -#if($member.shape.listMember.shape.structure) - ${macro.spaces} ${macro.memberVarName}.emplace_back(#deserializeXmlSingleElement($member.shape.listMember, $macro.listVarName)); -#else - ${macro.spaces} ${macro.memberVarName}.push_back(#deserializeXmlSingleElement($member.shape.listMember, $macro.listVarName)); -#end - ${macro.spaces} } -#else ${macro.spaces} ${macro.memberVarName}.push_back(#deserializeXmlSingleElement($member.shape.listMember, $macro.listVarName)); -#end #if($member.shape.listMember.locationName) #set($listMemberName = $member.shape.listMember.locationName) #elseif(!($member.shape.flattened || $member.flattened)) diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlMapPayloadElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlMapPayloadElement.vm index 1c3ed3ccc63..c117ed91570 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlMapPayloadElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlMapPayloadElement.vm @@ -38,14 +38,8 @@ ${macro.spaces} XmlNode valueNode = ${macro.mapVarName}.FirstChild("value"); #end #set($macro.memberVarName = $CppViewHelper.computeMemberVariableName($memberName)) -#if($member.shape.sparse) - ${macro.spaces} if(valueNode.IsNull() || valueNode.GetAttributeValue("xsi:nil") == "true") { ${macro.memberVarName}[#deserializeXmlSingleElement($member.shape.mapKey, "keyNode")]; } else { - ${macro.spaces} ${macro.memberVarName}[#deserializeXmlSingleElement($member.shape.mapKey, "keyNode")] = - ${macro.spaces} #deserializeXmlSingleElement($member.shape.mapValue, "valueNode", $macro.spaces, false); } -#else ${macro.spaces} ${macro.memberVarName}[#deserializeXmlSingleElement($member.shape.mapKey, "keyNode")] = ${macro.spaces} #deserializeXmlSingleElement($member.shape.mapValue, "valueNode", $macro.spaces, false); -#end #if($member.locationName) ${macro.spaces} ${macro.mapVarName} = ${macro.mapVarName}.NextNode("${member.locationName}"); #else diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedListElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedListElement.vm index 015c9b215b2..f04e717dbbb 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedListElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedListElement.vm @@ -8,15 +8,7 @@ ${macro.spaces} if(${memberVarName}.IsNull()) { return ${macro.resultVarName}; } ${macro.spaces} XmlNode ${macro.resultVarName}MemberNode = ${memberVarName}.FirstChild("${CppViewHelper.ifNotNullOrEmpty($member.locationName, 'member')}"); ${macro.spaces} while(!${macro.resultVarName}MemberNode.IsNull()) { -#if($member.shape.sparse) - ${macro.spaces} if(${macro.resultVarName}MemberNode.IsNull() || ${macro.resultVarName}MemberNode.GetText().empty()) { - ${macro.spaces} ${macro.resultVarName}.push_back(Aws::Crt::Optional<$CppViewHelper.computeCppType($member.shape.listMember.shape)>{}); - ${macro.spaces} } else { - ${macro.spaces} ${macro.resultVarName}.push_back(#deserializeXmlSingleElement($member.shape.listMember, "${macro.resultVarName}MemberNode")); - ${macro.spaces} } -#else ${macro.spaces} ${macro.resultVarName}.push_back(#deserializeXmlSingleElement($member.shape.listMember, "${macro.resultVarName}MemberNode")); -#end ${macro.spaces} ${macro.resultVarName}MemberNode = ${macro.resultVarName}MemberNode.NextNode("${CppViewHelper.ifNotNullOrEmpty($member.locationName, 'member')}"); ${macro.spaces} } ${macro.spaces} return ${macro.resultVarName}; diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedMapElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedMapElement.vm index 52ee6eeb9c2..2eadbc20f8e 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedMapElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlDeserializeTemplateMacros/deserializeXmlNestedMapElement.vm @@ -23,17 +23,8 @@ ${macro.spaces} while(!${macro.resultVarName}EntryNode.IsNull()) { ${macro.spaces} XmlNode ${macro.resultVarName}KeyNode = ${macro.resultVarName}EntryNode.FirstChild("${CppViewHelper.ifNotNullOrEmpty($member.shape.mapKey.locationName, 'key')}"); ${macro.spaces} XmlNode ${macro.resultVarName}ValNode = ${macro.resultVarName}EntryNode.FirstChild("${CppViewHelper.ifNotNullOrEmpty($member.shape.mapValue.locationName, 'value')}"); -#if($member.shape.sparse) - ${macro.spaces} if(${macro.resultVarName}ValNode.IsNull() || ${macro.resultVarName}ValNode.GetText().empty()) { - ${macro.spaces} ${macro.resultVarName}[#deserializeXmlSingleElement($member.shape.mapKey, "${macro.resultVarName}KeyNode")] = Aws::Crt::Optional<$CppViewHelper.computeCppType($member.shape.mapValue.shape)>{}; - ${macro.spaces} } else { - ${macro.spaces} ${macro.resultVarName}[#deserializeXmlSingleElement($member.shape.mapKey, "${macro.resultVarName}KeyNode")] = - ${macro.spaces} #deserializeXmlSingleElement($member.shape.mapValue, "${macro.resultVarName}ValNode", $macro.spaces, false); - ${macro.spaces} } -#else ${macro.spaces} ${macro.resultVarName}[#deserializeXmlSingleElement($member.shape.mapKey, "${macro.resultVarName}KeyNode")] = ${macro.spaces} #deserializeXmlSingleElement($member.shape.mapValue, "${macro.resultVarName}ValNode", $macro.spaces, false); -#end ${macro.spaces} ${macro.resultVarName}EntryNode = ${macro.resultVarName}EntryNode.NextNode("${CppViewHelper.ifNotNullOrEmpty($member.locationName, 'entry')}"); ${macro.spaces} } ${macro.spaces} return ${macro.resultVarName}; diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlListPayloadElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlListPayloadElement.vm index a046ef95628..cacc0d8899a 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlListPayloadElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlListPayloadElement.vm @@ -29,15 +29,6 @@ ## if list is flattened than the name of repeated XML element is ShapeMember name in parent name OR explicitly set by parent's locationName #set($macro.listMemberSerializationName = ${CppViewHelper.ifNotNullOrEmpty($member.locationName, $serializationName)}) #end -#if($member.shape.sparse) - ${spaces} if(!${macro.listItemVarName}.has_value()) { - ${spaces} XmlNode ${lowerCaseVarName}NilNode = ${macro.listMemberParentNode}.CreateChildElement("${macro.listMemberSerializationName}"); - ${spaces} ${lowerCaseVarName}NilNode.SetAttributeValue("xsi:nil", "true"); - ${spaces} } else { -#serializeXmlSinglePayloadElement($macro.listSpaces, $macro.listMemberSerializationName, $lowerCaseVarName, $member.shape.listMember, "(*${macro.listItemVarName})", $macro.listMemberParentNode) - ${spaces} } -#else #serializeXmlSinglePayloadElement($macro.listSpaces, $macro.listMemberSerializationName, $lowerCaseVarName, $member.shape.listMember, $macro.listItemVarName, $macro.listMemberParentNode) -#end ${spaces}} #end##macro serializeXmlListPayloadElement \ No newline at end of file diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlMapPayloadElement.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlMapPayloadElement.vm index 23fa939fe36..abd754414e4 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlMapPayloadElement.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/XmlSerializeTemplateMacros/serializeXmlMapPayloadElement.vm @@ -25,15 +25,6 @@ #set($macro.mapKeySerializationName = "#if($member.shape.mapKey.locationName)$member.shape.mapKey.locationName#{else}key#end") #serializeXmlSinglePayloadElement($macro.mapSpaces, $macro.mapKeySerializationName, "${lowerCaseVarName}Key", $member.shape.mapKey, "${macro.mapItemVarName}.first", "${lowerCaseVarName}MapEntryNode") #set($macro.mapValueSerializationName = "#if($member.shape.mapValue.locationName)$member.shape.mapValue.locationName#{else}value#end") -#if($member.shape.sparse) - ${spaces} if(!${macro.mapItemVarName}.second.has_value()) { - ${spaces} XmlNode ${lowerCaseVarName}NilNode = ${lowerCaseVarName}MapEntryNode.CreateChildElement("${macro.mapValueSerializationName}"); - ${spaces} ${lowerCaseVarName}NilNode.SetAttributeValue("xsi:nil", "true"); - ${spaces} } else { -#serializeXmlSinglePayloadElement($macro.mapSpaces, $macro.mapValueSerializationName, "${lowerCaseVarName}Value", $member.shape.mapValue, "(*${macro.mapItemVarName}.second)", "${lowerCaseVarName}MapEntryNode") - ${spaces} } -#else #serializeXmlSinglePayloadElement($macro.mapSpaces, $macro.mapValueSerializationName, "${lowerCaseVarName}Value", $member.shape.mapValue, "${macro.mapItemVarName}.second", "${lowerCaseVarName}MapEntryNode") -#end ${spaces}} #end##macro serializeXmlMapPayloadElement \ No newline at end of file diff --git a/tools/scripts/run_code_generation.py b/tools/scripts/run_code_generation.py index 787c66a94ae..82a5a5acece 100644 --- a/tools/scripts/run_code_generation.py +++ b/tools/scripts/run_code_generation.py @@ -161,10 +161,7 @@ def main(): return -1 if args["generate_protocol_tests"]: - # Disable smithy generation for protocol tests - protocol_args = args.copy() - protocol_args["disable_smithy_generation"] = True - protocol_tests_generator = ProtocolTestsGen(protocol_args) + protocol_tests_generator = ProtocolTestsGen(args) if protocol_tests_generator.generate(executor, max_workers) != 0: print("ERROR: Failed to generate protocol test(s)!") return -1