Skip to content

Commit bd104ef

Browse files
committed
feat: remove variables from xml serializedMap
1 parent df08dbf commit bd104ef

File tree

1 file changed

+10
-14
lines changed
  • codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen

1 file changed

+10
-14
lines changed

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/XmlShapeSerVisitor.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,8 @@ protected void serializeMap(GenerationContext context, MapShape shape) {
107107
Model model = context.getModel();
108108
writer.addImport("XmlNode", "__XmlNode", "@aws-sdk/xml-builder");
109109

110-
// Set up a location to store all of the child node(s).
111-
writer.write("const collectedNodes: any = [];");
112110
// Use the keys as an iteration point to dispatch to the input value providers.
113-
writer.openBlock("Object.keys(input).forEach(key => {", "});", () -> {
111+
writer.openBlock("return Object.keys(input).map(key => {", "});", () -> {
114112
// Prepare a containing node for each entry's k/v pair.
115113
writer.write("const entryNode = new __XmlNode(\"entry\");");
116114

@@ -137,25 +135,23 @@ protected void serializeMap(GenerationContext context, MapShape shape) {
137135
writer.write("const node = $L;", valueTarget.accept(getMemberVisitor("input[key]")));
138136
// Handle proper unwrapping of target nodes.
139137
if (serializationReturnsArray(valueTarget)) {
140-
writer.write("const container = new __XmlNode($S);", valueName);
141-
writer.openBlock("for (let index in node) {", "}", () -> {
142-
writer.write("const workingNode = node[index];");
143-
// Add @xmlNamespace value of the value member.
144-
AwsProtocolUtils.writeXmlNamespace(context, valueMember, "workingNode");
145-
writer.write("container.addChildNode(workingNode);");
138+
writer.openBlock("entryNode.addChildNode(", ");", () -> {
139+
writer.openBlock("node.reduce((acc: __XmlNode, workingNode: any) => {", "}", () -> {
140+
// Add @xmlNamespace value of the value member.
141+
AwsProtocolUtils.writeXmlNamespace(context, valueMember, "workingNode");
142+
writer.write("acc.addChildNode(workingNode);");
143+
writer.write("return acc;");
144+
});
145+
writer.write(", new __XmlNode($S));", valueName);
146146
});
147-
writer.write("entryNode.addChildNode(container);");
148147
} else {
149148
// Add @xmlNamespace value of the target member.
150149
AwsProtocolUtils.writeXmlNamespace(context, valueMember, "node");
151150
writer.write("entryNode.addChildNode(node.withName($S));", valueName);
152151
}
153152

154-
// Add the entry to the collection.
155-
writer.write("collectedNodes.push(entryNode);");
153+
writer.write("return entryNode;");
156154
});
157-
158-
writer.write("return collectedNodes;");
159155
}
160156

161157
@Override

0 commit comments

Comments
 (0)