Skip to content

Commit 918c402

Browse files
authored
Use spread operator for Command endpoint params when necessary (#1396)
1 parent fc056f7 commit 918c402

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -270,28 +270,38 @@ private void generateEndpointParameterInstructionProvider() {
270270
if (!service.hasTrait(EndpointRuleSetTrait.class)) {
271271
return;
272272
}
273+
274+
writer.addImport(
275+
"commonParams", null,
276+
Paths.get(".", CodegenUtils.SOURCE_FOLDER, "endpoint/EndpointParameters").toString()
277+
);
278+
279+
RuleSetParameterFinder parameterFinder = new RuleSetParameterFinder(service);
280+
Map<String, String> staticContextParamValues = parameterFinder.getStaticContextParamValues(operation);
281+
Map<String, String> contextParams = parameterFinder.getContextParams(
282+
model.getShape(operation.getInputShape()).get()
283+
);
284+
Map<String, String> operationContextParamValues = parameterFinder.getOperationContextParamValues(operation);
285+
286+
if (staticContextParamValues.isEmpty() && contextParams.isEmpty() && operationContextParamValues.isEmpty()) {
287+
writer.write(".ep(commonParams)");
288+
return;
289+
}
290+
273291
writer.write(".ep({")
274292
.indent();
275293
{
276-
writer.addImport(
277-
"commonParams", null,
278-
Paths.get(".", CodegenUtils.SOURCE_FOLDER, "endpoint/EndpointParameters").toString()
279-
);
280-
281294
writer.write("...commonParams,");
282-
283-
RuleSetParameterFinder parameterFinder = new RuleSetParameterFinder(service);
284295
Set<String> paramNames = new HashSet<>();
285296

286-
parameterFinder.getStaticContextParamValues(operation).forEach((name, value) -> {
297+
staticContextParamValues.forEach((name, value) -> {
287298
paramNames.add(name);
288299
writer.write(
289300
"$L: { type: \"staticContextParams\", value: $L },",
290301
name, value);
291302
});
292303

293-
Shape operationInput = model.getShape(operation.getInputShape()).get();
294-
parameterFinder.getContextParams(operationInput).forEach((name, memberName) -> {
304+
contextParams.forEach((name, memberName) -> {
295305
if (!paramNames.contains(name)) {
296306
writer.write(
297307
"$L: { type: \"contextParams\", name: \"$L\" },",
@@ -300,7 +310,7 @@ private void generateEndpointParameterInstructionProvider() {
300310
paramNames.add(name);
301311
});
302312

303-
parameterFinder.getOperationContextParamValues(operation).forEach((name, jmesPathForInputInJs) -> {
313+
operationContextParamValues.forEach((name, jmesPathForInputInJs) -> {
304314
writer.write(
305315
"""
306316
$L: { type: \"operationContextParams\", name: $L },

0 commit comments

Comments
 (0)