Skip to content

Commit 42a5c21

Browse files
committed
Fix codegen for eventstream boolean headers
1 parent 351813e commit 42a5c21

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/CppViewHelper.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.ShapeMember;
1111
import com.amazonaws.util.awsclientgenerator.transform.CoreErrors;
1212
import com.google.common.base.CaseFormat;
13+
import com.google.common.collect.ImmutableMap;
1314
import com.google.common.collect.ImmutableSet;
1415

1516
import java.lang.RuntimeException;
@@ -123,6 +124,11 @@ public class CppViewHelper {
123124
C2J_TIMESTAMP_FORMAT_TO_CPP_DATE_TIME_FORMAT.put("iso8601", "ISO_8601");
124125
}
125126

127+
private static final ImmutableMap<String, String> EVENT_STREAM_HEADER_ACCESSORS = ImmutableMap.of(
128+
"string", "GetEventHeaderValueAsString()",
129+
"boolean", "GetEventHeaderValueAsBoolean()"
130+
);
131+
126132
public static String computeExportValue(String classNamePrefix) {
127133
return String.format("AWS_%s_API", classNamePrefix.toUpperCase());
128134
}
@@ -587,4 +593,11 @@ public static boolean hasListMemberUsedForHeader(final Shape shape) {
587593
return shape.getMembers().values().stream()
588594
.anyMatch(shapeMember -> shapeMember.getShape().isList() && shapeMember.isUsedForHeader());
589595
}
596+
597+
public static String getEventStreamHeaderAccessorName(final Shape shape) {
598+
if (!EVENT_STREAM_HEADER_ACCESSORS.containsKey(shape.getType())) {
599+
throw new RuntimeException("No event stream header accessor found for shape type: " + shape.getType());
600+
}
601+
return EVENT_STREAM_HEADER_ACCESSORS.get(shape.getType());
602+
}
590603
}

tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/EventHeader.vm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,12 @@ namespace Model
5555
#set($eventHeaderMemberNameWithFirstLetterCapitalized = $CppViewHelper.capitalizeFirstChar($eventHeader.getName()))
5656
#set($eventHeaderMemberHaseBeenSetName = $CppViewHelper.computeVariableHasBeenSetName($eventHeader.getName()))
5757
#set($eventHeaderMemberType = $CppViewHelper.computeCppType($eventHeader))
58-
inline const $eventHeaderMemberType Get${eventHeaderMemberNameWithFirstLetterCapitalized}() const { return $eventHeaderMemberName; }
58+
#if($eventHeader.boolean)
59+
#set($constQualifer = "")
60+
#else
61+
#set($constQualifer = "const ")
62+
#end
63+
inline $constQualifer$eventHeaderMemberType Get${eventHeaderMemberNameWithFirstLetterCapitalized}() const { return $eventHeaderMemberName; }
5964
inline bool ${eventHeaderMemberNameWithFirstLetterCapitalized}HasBeenSet() const { return $eventHeaderMemberHaseBeenSetName; }
6065
template<typename T = $eventHeaderMemberType>
6166
void Set${eventHeaderMemberNameWithFirstLetterCapitalized}(T&& value) { $eventHeaderMemberHaseBeenSetName = true; $eventHeaderMemberName = std::forward<T>(value); }

tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/json/JsonEventStreamHandlerSource.vm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ namespace Model
142142
#set($headerVarName = $CppViewHelper.lowercasesFirstChar("${eventStreamHeader.getName()}Header"))
143143
const auto $headerVarName = headers.find("${eventStreamHeaderMapping.getKey()}");
144144
if ($headerVarName != headers.end()) {
145-
event.Set$eventHeaderMemberNameWithFirstLetterCapitalized($headerVarName->second.GetEventHeaderValueAsString());
145+
event.Set$eventHeaderMemberNameWithFirstLetterCapitalized($headerVarName->second.$CppViewHelper.getEventStreamHeaderAccessorName($eventStreamHeader));
146146
}
147147
#end
148148
m_on${eventShape.name}(event);

0 commit comments

Comments
 (0)