fix(parameter-based): respect [EnumMember] attribute when serialising enum query parameters#945
Open
ProNotion wants to merge 2 commits into
Conversation
… enum query parameters ParameterBased.getParameters() was calling .ToString() on enum values, producing the C# identifier name (e.g. FINANCIALEVENTGROUPID) rather than the wire format declared in [EnumMember(Value = "...")] (e.g. FINANCIAL_EVENT_GROUP_ID). This caused every enum-typed query parameter to be silently rejected by Amazon APIs. Fix: use StringEnumConverter (Newtonsoft.Json) for both the scalar enum and the IEnumerable<TEnum> branches so [EnumMember] attribute values are honoured. Also: type relatedIdentifierName on ParameterListFinancialTransactions20240619 as RelatedIdentifierNameEnum? instead of string? now that the serialisation is correct.
…eEnum ParameterListFinancialTransactions20240619.relatedIdentifierName is now typed as RelatedIdentifierNameEnum? rather than string?, so the sample code must use the enum member instead of a raw string literal.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.



Summary
ParameterBased.getParameters()was calling.ToString()on enum values, producing the C# identifier name (e.g.FINANCIALEVENTGROUPID) instead of the wire format declared via[EnumMember(Value = "...")](e.g.FINANCIAL_EVENT_GROUP_ID). Amazon APIs silently reject the malformed values, making every enum-typed query parameter effectively broken when the C# member name differs from the API wire value.StringEnumConverter(Newtonsoft.Json) in both the scalar enum branch and theIEnumerable<TEnum>branch, consistent with the fallback path that was already doing this correctly for other types.relatedIdentifierNameonParameterListFinancialTransactions20240619is now typed asRelatedIdentifierNameEnum?instead ofstring?, taking advantage of the fixed serialisation.Root cause
Test plan
dotnet build)ParameterListFinancialTransactions20240619withrelatedIdentifierName = RelatedIdentifierNameEnum.FINANCIALEVENTGROUPIDproducesrelatedIdentifierName=FINANCIAL_EVENT_GROUP_IDin the query stringParameterBasedsubclasses produce their expected wire values