Skip to content

Commit 73d015f

Browse files
committed
Fix codegen to allow event stream exception shapes
1 parent 34b4060 commit 73d015f

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/IntermediateModelBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ public IntermediateModel build() {
141141

142142
customization.postprocess(fullModel);
143143

144+
linkMembersToShapes(fullModel);
145+
144146
log.info("{} shapes remained after applying customizations.", fullModel.getShapes().size());
145147

146148
Map<String, ShapeModel> trimmedShapes = removeUnusedShapes(fullModel);

codegen/src/main/java/software/amazon/awssdk/codegen/RemoveUnusedShapes.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private static void addShapeAndMembers(String shapeName,
9494

9595
if (members != null) {
9696
for (MemberModel member : members) {
97-
List<String> memberShapes = resolveMemberShapes(member);
97+
List<String> memberShapes = resolveMemberShapes(member, in);
9898
if (memberShapes == null) {
9999
continue;
100100
}
@@ -111,24 +111,32 @@ private static void addShapeAndMembers(String shapeName,
111111
* both the key shape and the value shape of the map will be resolved, so that the
112112
* returning list could have more than one elements.
113113
*/
114-
private static List<String> resolveMemberShapes(MemberModel member) {
114+
private static List<String> resolveMemberShapes(MemberModel member, Map<String, ShapeModel> in) {
115115

116116
if (member == null) {
117117
return new LinkedList<>();
118118
}
119119
if (member.getEnumType() != null) {
120120
return Collections.singletonList(member.getEnumType());
121121
} else if (member.isList()) {
122-
return resolveMemberShapes(member.getListModel().getListMemberModel());
122+
return resolveMemberShapes(member.getListModel().getListMemberModel(), in);
123123
} else if (member.isMap()) {
124124
List<String> memberShapes = new LinkedList<>();
125-
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getKeyModel()));
126-
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getValueModel()));
125+
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getKeyModel(), in));
126+
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getValueModel(), in));
127127
return memberShapes;
128128
} else if (member.isSimple()) {
129129
// member is scalar, do nothing
130130
return new LinkedList<>();
131131
} else {
132+
// Find shape by C2J name, e.g., exceptions
133+
String c2jName = member.getC2jShape();
134+
for (ShapeModel shape : in.values()) {
135+
if (c2jName.equals(shape.getC2jName())) {
136+
return Collections.singletonList(shape.getShapeName());
137+
}
138+
}
139+
132140
// member is a structure.
133141
return Collections.singletonList(member.getVariable().getSimpleType());
134142
}

0 commit comments

Comments
 (0)