Update Product.type to Support Both String and Enum Values with Enhanced Deserialization #463
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.
Update Product.type to Support Both String and Enum Values with Enhanced Deserialization
Description:
This PR extends the previous implementation of
Product.type
by refining the deserialization logic to dynamically map JSON keys to object fields while supporting bothProductType
enum and custom string values fortype
. Additional validation, error handling, and test cases are added to ensure robustness.Key Changes:
Code Enhancements:
Product
Class:type
property to retain flexibility for bothProductType
enum and custom string values.getTypeAsEnum()
: Returns thetype
asProductType
if applicable.getTypeAsString()
: Returns thetype
as a string if applicable.GsonSerializer
:Product
fields using reflection.yyyy-MM-dd
yyyyMMdd
.Unit Tests:
Product
fields.type
values.Product
types (ProductType
enum and custom string) within payment items.New Test Cases:
GsonSerializerTest
:Product
with:ProductType
) values.type
values.type
.GetPaymentsTestIT
:Product
items using both enum and stringtype
.Product
fields.Impact:
ProductType
enum.ProductType
remain unaffected.Additional Notes:
Product.type
handling.GsonSerializer
improvements align with best practices for extensible and maintainable SDK development.