Handle edge cases with NaN/Infinity #1624
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When using a Query Parameter of type Double that has a Range constraint,
NaN
values will cause an exception to be thrown that would lead to a 500 error being returned by the service. The reason for this is that the RangeRefinementProvider
usesBigDecimal
under the hood andBigDecimal
does not allowNaN
.This PR updates the Range
RefinementProvider
to return an error that will map to a4xx
response. Additionally, theMetadataDecoder
has been updated to allow configuring whether or notNaN
should be allowed. AWS protocols allowNaN
, whereasalloy#simpleRestJson
does not.Tests have been added to show that
NaN
is not currently supported by thejson
module or theDocument
type.PR Checklist (not all items are relevant to all PRs)
Added build-plugins integration tests (when reflection loading is required at codegen-time)Added alloy compliance tests (when simpleRestJson protocol behaviour is expanded/updated)Updated dynamic module to match generated-code behaviourWill add relevant docs and update changelog once we know this is the direction we want to go.