in codegen/src/main/java/software/amazon/awssdk/codegen/AddShapes.java [72:147]
protected final ShapeModel generateShapeModel(String javaClassName, String shapeName) {
ShapeModel shapeModel = new ShapeModel(shapeName);
shapeModel.setShapeName(javaClassName);
Shape shape = getServiceModel().getShapes().get(shapeName);
shapeModel.setDocumentation(shape.getDocumentation());
shapeModel.setVariable(new VariableModel(getNamingStrategy().getVariableName(javaClassName),
javaClassName));
// contains the list of c2j member names that are required for this shape.
shapeModel.setRequired(shape.getRequired());
shapeModel.setDeprecated(shape.isDeprecated());
shapeModel.setDeprecatedMessage(shape.getDeprecatedMessage());
shapeModel.setWrapper(shape.isWrapper());
shapeModel.withIsEventStream(shape.isEventstream());
shapeModel.withIsEvent(shape.isEvent());
shapeModel.withXmlNamespace(shape.getXmlNamespace());
shapeModel.withIsUnion(shape.isUnion());
shapeModel.withIsFault(shape.isFault());
shapeModel.withIsRetryable(shape.isRetryable());
shapeModel.withIsThrottling(shape.isThrottling());
boolean hasHeaderMember = false;
boolean hasStatusCodeMember = false;
boolean hasPayloadMember = false;
boolean hasStreamingMember = false;
boolean hasRequiresLength = false;
Map<String, Member> members = shape.getMembers();
if (members != null) {
for (Map.Entry<String, Member> memberEntry : members.entrySet()) {
String c2jMemberName = memberEntry.getKey();
Member c2jMemberDefinition = memberEntry.getValue();
Shape parentShape = shape;
MemberModel memberModel = generateMemberModel(c2jMemberName, c2jMemberDefinition,
getProtocol(), parentShape,
getServiceModel().getShapes());
if (memberModel.getHttp().getLocation() == Location.HEADER) {
hasHeaderMember = true;
} else if (memberModel.getHttp().getLocation() == Location.STATUS_CODE) {
hasStatusCodeMember = true;
} else if (memberModel.getHttp().getIsPayload()) {
hasPayloadMember = true;
if (memberModel.getHttp().getIsStreaming()) {
hasStreamingMember = true;
}
if (memberModel.getHttp().isRequiresLength()) {
hasRequiresLength = true;
}
}
shapeModel.addMember(memberModel);
}
shapeModel.withHasHeaderMember(hasHeaderMember)
.withHasStatusCodeMember(hasStatusCodeMember)
.withHasPayloadMember(hasPayloadMember)
.withHasStreamingMember(hasStreamingMember)
.withHasRequiresLengthMember(hasRequiresLength);
}
List<String> enumValues = shape.getEnumValues();
if (enumValues != null && !enumValues.isEmpty()) {
for (String enumValue : enumValues) {
shapeModel.addEnum(
new EnumModel(getNamingStrategy().getEnumValueName(enumValue), enumValue));
}
}
return shapeModel;
}