Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changes/next-release/bugfix-AWSSDKforJavav2-52218bd.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"type": "bugfix",
"category": "AWS SDK for Java v2",
"contributor": "",
"description": "Update codegen to allow errors as event stream output members"
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import software.amazon.awssdk.codegen.model.intermediate.OperationModel;
import software.amazon.awssdk.codegen.model.intermediate.ReturnTypeModel;
import software.amazon.awssdk.codegen.model.intermediate.ShapeModel;
import software.amazon.awssdk.codegen.model.intermediate.ShapeType;
import software.amazon.awssdk.codegen.model.intermediate.VariableModel;

/**
Expand Down Expand Up @@ -94,7 +95,7 @@ private static void addShapeAndMembers(String shapeName,

if (members != null) {
for (MemberModel member : members) {
List<String> memberShapes = resolveMemberShapes(member);
List<String> memberShapes = resolveMemberShapes(member, in);
if (memberShapes == null) {
continue;
}
Expand All @@ -111,24 +112,31 @@ private static void addShapeAndMembers(String shapeName,
* both the key shape and the value shape of the map will be resolved, so that the
* returning list could have more than one elements.
*/
private static List<String> resolveMemberShapes(MemberModel member) {
private static List<String> resolveMemberShapes(MemberModel member, Map<String, ShapeModel> modelShapes) {

if (member == null) {
return new LinkedList<>();
}
if (member.getEnumType() != null) {
return Collections.singletonList(member.getEnumType());
} else if (member.isList()) {
return resolveMemberShapes(member.getListModel().getListMemberModel());
return resolveMemberShapes(member.getListModel().getListMemberModel(), modelShapes);
} else if (member.isMap()) {
List<String> memberShapes = new LinkedList<>();
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getKeyModel()));
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getValueModel()));
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getKeyModel(), modelShapes));
memberShapes.addAll(resolveMemberShapes(member.getMapModel().getValueModel(), modelShapes));
return memberShapes;
} else if (member.isSimple()) {
// member is scalar, do nothing
return new LinkedList<>();
} else {
// Exceptions have suffix appended, find shape by C2J name
for (ShapeModel shape : modelShapes.values()) {
if (shape.getShapeType().equals(ShapeType.Exception) && member.getC2jShape().equals(shape.getC2jName())) {
return Collections.singletonList(shape.getShapeName());
}
}

// member is a structure.
return Collections.singletonList(member.getVariable().getSimpleType());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@
"members": {
"EventStream": {
"shape": "EventStream"
},
"EventStreamError": {
"shape": "EventStreamError"
}
}
},
Expand Down Expand Up @@ -127,6 +130,16 @@
},
"event": true
},
"EventStreamError": {
"type": "structure",
"members": {
"message": {
"shape": "String"
}
},
"exception": true,
"fault": true
},
"EventStreamOperationWithOnlyInputRequest": {
"type": "structure",
"required": [
Expand Down
Loading