-
Notifications
You must be signed in to change notification settings - Fork 803
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generates JmesPath expressions for operation context parameters #5172
Generates JmesPath expressions for operation context parameters #5172
Conversation
assertThat(new Value(singletonList("a")).length()).isEqualTo(new Value(1)); | ||
} | ||
|
||
// @Test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just saw this - will need it for next PR
import software.amazon.awssdk.services.restjsonwithwaiters.jmespath.internal.JmesPathRuntime.Value; | ||
import software.amazon.awssdk.utils.Pair; | ||
|
||
class JmesPathRuntimeValueTest { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably should not have renamed this class, but here we are. There is nothing removed.
case "stringarray": | ||
return CodeBlock.of(".stringValues()"); | ||
default: | ||
return CodeBlock.of(""); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we throw UnsupportedOperationException?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I think that's better. Good suggestion.
case BOOLEAN: | ||
return booleanValue.toString(); | ||
default: | ||
throw new IllegalStateException(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we add more information in the exception even though it's unlikely to happen?
f9724c3
into
feature/StringArrayEndpointParams
* feat(StringArrayEndpointParams) Codegen String Array Enpoint params and Auth schemes params based on end-point-rule-set.json. (#5122) * Support Customization string array endpoint params for S3 access grants, until all SDKs add support for string array. (#5137) * new(StringArrayEndpointParams) Codegeneration of OperationContextParams defined for a Operation. (#5146) * Extracting existing JMESPath runtime to a separate class (#5155) * new(StringArrayEndpointParams) Customization of Operation Context params and adding customizations for S3 (#5159) * Converts endpoint param list of string to list of value (#5169) * Generates JmesPath expressions for operation context parameters (#5172) * Supporting wildcard and keys fn in JmesPathRuntime (#5198) * Adds functional tests for list of string auth params (#5216) * Changelog --------- Co-authored-by: John Viegas <70235430+joviegas@users.noreply.github.com> Co-authored-by: John Viegas <joviegas@amazon.com>
* feat(StringArrayEndpointParams) Codegen String Array Enpoint params and Auth schemes params based on end-point-rule-set.json. (aws#5122) * Support Customization string array endpoint params for S3 access grants, until all SDKs add support for string array. (aws#5137) * new(StringArrayEndpointParams) Codegeneration of OperationContextParams defined for a Operation. (aws#5146) * Extracting existing JMESPath runtime to a separate class (aws#5155) * new(StringArrayEndpointParams) Customization of Operation Context params and adding customizations for S3 (aws#5159) * Converts endpoint param list of string to list of value (aws#5169) * Generates JmesPath expressions for operation context parameters (aws#5172) * Supporting wildcard and keys fn in JmesPathRuntime (aws#5198) * Adds functional tests for list of string auth params (aws#5216) * Changelog --------- Co-authored-by: John Viegas <70235430+joviegas@users.noreply.github.com> Co-authored-by: John Viegas <joviegas@amazon.com>
Motivation and Context
Endpoint parameters of type
stringarray
are supported for operation level traits only, normally via theOperationContextParam
trait, which uses a JmesPath expression to find and potentially transform a part of anSdkPojo
in order to create a corresponding endpoint parameterModifications
wildcard
and thekeys
function. This means that the codegen side supports it, but the capability is lacking at runtime (future PR).Testing
codegen-generated-classes-test
has a new test class that evaluates that the value of the OperationContextParams are set correctly. The test cases contain the minimal subset of JmesPath that is required for OperationContextParams and already exists in the codebase: