Skip to content

Commit eed52f9

Browse files
committed
Add check for Exception type and add event error shape to test model
1 parent 73d015f commit eed52f9

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import software.amazon.awssdk.codegen.model.intermediate.OperationModel;
2727
import software.amazon.awssdk.codegen.model.intermediate.ReturnTypeModel;
2828
import software.amazon.awssdk.codegen.model.intermediate.ShapeModel;
29+
import software.amazon.awssdk.codegen.model.intermediate.ShapeType;
2930
import software.amazon.awssdk.codegen.model.intermediate.VariableModel;
3031

3132
/**
@@ -111,28 +112,27 @@ private static void addShapeAndMembers(String shapeName,
111112
* both the key shape and the value shape of the map will be resolved, so that the
112113
* returning list could have more than one elements.
113114
*/
114-
private static List<String> resolveMemberShapes(MemberModel member, Map<String, ShapeModel> in) {
115+
private static List<String> resolveMemberShapes(MemberModel member, Map<String, ShapeModel> modelShapes) {
115116

116117
if (member == null) {
117118
return new LinkedList<>();
118119
}
119120
if (member.getEnumType() != null) {
120121
return Collections.singletonList(member.getEnumType());
121122
} else if (member.isList()) {
122-
return resolveMemberShapes(member.getListModel().getListMemberModel(), in);
123+
return resolveMemberShapes(member.getListModel().getListMemberModel(), modelShapes);
123124
} else if (member.isMap()) {
124125
List<String> memberShapes = new LinkedList<>();
125-
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getKeyModel(), in));
126-
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getValueModel(), in));
126+
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getKeyModel(), modelShapes));
127+
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getValueModel(), modelShapes));
127128
return memberShapes;
128129
} else if (member.isSimple()) {
129130
// member is scalar, do nothing
130131
return new LinkedList<>();
131132
} 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())) {
133+
// Exceptions have suffix appended, find shape by C2J name
134+
for (ShapeModel shape : modelShapes.values()) {
135+
if (shape.getShapeType().equals(ShapeType.Exception) && member.getC2jShape().equals(shape.getC2jName())) {
136136
return Collections.singletonList(shape.getShapeName());
137137
}
138138
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/eventstream/service-2.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@
6868
"members": {
6969
"EventStream": {
7070
"shape": "EventStream"
71+
},
72+
"EventStreamError": {
73+
"shape": "EventStreamError"
7174
}
7275
}
7376
},
@@ -127,6 +130,16 @@
127130
},
128131
"event": true
129132
},
133+
"EventStreamError": {
134+
"type": "structure",
135+
"members": {
136+
"message": {
137+
"shape": "String"
138+
}
139+
},
140+
"exception": true,
141+
"fault": true
142+
},
130143
"EventStreamOperationWithOnlyInputRequest": {
131144
"type": "structure",
132145
"required": [

0 commit comments

Comments
 (0)