Skip to content

Commit

Permalink
Read staticContextParams from operation (#658)
Browse files Browse the repository at this point in the history
  • Loading branch information
trivikr committed Dec 14, 2022
1 parent 2132bdd commit 517c85f
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 25 deletions.
Expand Up @@ -194,19 +194,21 @@ private void generateEndpointParameterInstructionProvider() {
RuleSetParameterFinder parameterFinder = new RuleSetParameterFinder(service);
Set<String> 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(
Expand All @@ -216,6 +218,7 @@ private void generateEndpointParameterInstructionProvider() {
}
paramNames.add(name);
});

parameterFinder.getBuiltInParams().forEach((name, type) -> {
if (!paramNames.contains(name)) {
writer.write(
Expand Down
Expand Up @@ -23,14 +23,14 @@
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;
import software.amazon.smithy.rulesengine.traits.ContextParamTrait;
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;
Expand Down Expand Up @@ -101,31 +101,27 @@ public Map<String, String> getStaticContextParams(Shape operationInput) {
/**
* Get map of params to actual values instead of the value type.
*/
public Map<String, String> getStaticContextParamValues(Shape operationInput) {
public Map<String, String> getStaticContextParamValues(OperationShape operation) {
Map<String, String> map = new HashMap<>();

if (operationInput.isStructureShape()) {
operationInput.getAllMembers().forEach((String memberName, MemberShape member) -> {
Optional<StaticContextParamsTrait> 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<StaticContextParamsTrait> 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
);
});
}

Expand Down

0 comments on commit 517c85f

Please sign in to comment.