This reverts commit 2e1cdc4af7.
We decided that while this is a good short-term solution for teams that
include a stage or a kind of prefix in their API routes, it won't be a good
solution for really anyone in the long-term once Smithy clients and AWS
SDKs can all resolve endpoints that contain a base path for every
operation. Rather than add this option now and have to deprecate it
later or add competing guidance on how to properly do this, let's
revert. This feature was never released, and we can always add it back
later if we need to change our approach for any reason.
In attempting to test rejection of a named timezone in a path parameter,
[Europe/Paris], the slash was accidentally left unencoded, which turned
it into a test of the URI matcher, instead of the timestamp deserializer.
This add an index of all existing traits to the specifications page.
This makes it way easier to find the docs for a trait you know about
without having to figure out what class of trait it is, or whether
it lives in aws or somewhere else.
Sets up the trait and serialization/deserialization of all of its members. This
trait allows server implementations to generate tests that reject invalid
requests before those requests are bound to a Smithy-generated implementation
class, or before the deserialized request is handed off to application code.
This updates the lists of headers needed for sigv4 and for the
restJson1 protocol in the openapi conversion. It also ensures
that those headers are added to cors configurations for apig.
When calculating Smithy diffs, enum value insertions should be flagged
as errors because they can cause backwards incompatibility concerns when
enum ordinals are used for iterating, serialization, etc. Enum values
appended to the end of the existing set of values should not be errors.
* Update NodeMapper to handle Trait sourceLocation
This updates NodeMapper so that it can properly set source location
on traits that use the AbstractTraitBuilder. Unfortunately the fix
implemented here is a hack that looks for that specific case, and
the same root cause may bite us elsewhere.
The true root cause is that our default deserializer is unable to
resolve generics. AbstractTraitBuilder generically defines the
return value of the setter `sourceLocation` to `B extends
AbstractTraitBuilder`. When we use reflection to look at the return
type, all we see is `AbstractTraitBuilder`. We *can* also get the
type variable, but actually resolving it will take a decent amount
of effort as that functionality isn't built in.
* Make NodeMapper pass along source location
This updates the serializer for NodeMapper to pass along the
source location.
* Check if builder return type is self-assignable
This updates the builder detection in the node deserializer to check
to see if the builder type is assignable to a given method's return
type. This removes the need for a hack enabling source location, but
it's still not perfect. Ideally we should attempt to resolve any
generic return types.
On the server side, @httpQueryParams holds all of the query parameter values
in the request, so if any of the query parameters has a list value, then
@httpQueryParams must target a map with a list value, otherwise a 400 will be
thrown during deserialization, instead of discarding excess query param values.