@@ -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