diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java index 97aac632b5e..952645f59ee 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java @@ -194,19 +194,21 @@ private void generateEndpointParameterInstructionProvider() { RuleSetParameterFinder parameterFinder = new RuleSetParameterFinder(service); Set paramNames = new HashSet<>(); - Shape operationInput = model.getShape(operation.getInputShape()).get(); - parameterFinder.getStaticContextParamValues(operationInput).forEach((name, value) -> { + parameterFinder.getStaticContextParamValues(operation).forEach((name, value) -> { writer.write( "$L: { type: \"staticContextParams\", value: $L },", name, value ); }); + + Shape operationInput = model.getShape(operation.getInputShape()).get(); parameterFinder.getContextParams(operationInput).forEach((name, type) -> { writer.write( "$L: { type: \"contextParams\", name: \"$L\" },", name, name ); }); + parameterFinder.getClientContextParams().forEach((name, type) -> { if (!paramNames.contains(name)) { writer.write( @@ -216,6 +218,7 @@ private void generateEndpointParameterInstructionProvider() { } paramNames.add(name); }); + parameterFinder.getBuiltInParams().forEach((name, type) -> { if (!paramNames.contains(name)) { writer.write( diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParameterFinder.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParameterFinder.java index 3da1217bc5d..eb133c53a07 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParameterFinder.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParameterFinder.java @@ -23,6 +23,7 @@ import software.amazon.smithy.model.node.ObjectNode; import software.amazon.smithy.model.node.StringNode; import software.amazon.smithy.model.shapes.MemberShape; +import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ServiceShape; import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.rulesengine.traits.ClientContextParamsTrait; @@ -30,7 +31,6 @@ import software.amazon.smithy.rulesengine.traits.EndpointRuleSetTrait; import software.amazon.smithy.rulesengine.traits.StaticContextParamsTrait; - public class RuleSetParameterFinder { private final ServiceShape service; private final EndpointRuleSetTrait ruleset; @@ -101,31 +101,27 @@ public Map getStaticContextParams(Shape operationInput) { /** * Get map of params to actual values instead of the value type. */ - public Map getStaticContextParamValues(Shape operationInput) { + public Map getStaticContextParamValues(OperationShape operation) { Map map = new HashMap<>(); - if (operationInput.isStructureShape()) { - operationInput.getAllMembers().forEach((String memberName, MemberShape member) -> { - Optional trait = member.getTrait(StaticContextParamsTrait.class); - if (trait.isPresent()) { - StaticContextParamsTrait staticContextParamsTrait = trait.get(); - staticContextParamsTrait.getParameters().forEach((name, definition) -> { - String value; - if (definition.getValue().isStringNode()) { - value = "`" + definition.getValue().expectStringNode().toString() + "`"; - } else if (definition.getValue().isBooleanNode()) { - value = definition.getValue().expectBooleanNode().toString(); - } else { - throw new RuntimeException("unexpected type " - + definition.getValue().getType().toString() - + " received as staticContextParam."); - } - map.put( - name, - value - ); - }); + Optional trait = operation.getTrait(StaticContextParamsTrait.class); + if (trait.isPresent()) { + StaticContextParamsTrait staticContextParamsTrait = trait.get(); + staticContextParamsTrait.getParameters().forEach((name, definition) -> { + String value; + if (definition.getValue().isStringNode()) { + value = "`" + definition.getValue().expectStringNode().toString() + "`"; + } else if (definition.getValue().isBooleanNode()) { + value = definition.getValue().expectBooleanNode().toString(); + } else { + throw new RuntimeException("unexpected type " + + definition.getValue().getType().toString() + + " received as staticContextParam."); } + map.put( + name, + value + ); }); }