Skip to content

Fix DDB Enhanced Client immutable class introspection fails for "is" prefix fields #6349

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

Merged
merged 2 commits into from
Aug 15, 2025

Conversation

S-Saranya1
Copy link
Contributor

@S-Saranya1 S-Saranya1 commented Aug 14, 2025

Fix DDB Enhanced Client immutable class introspection fails for "is" prefix fields. Fixes #4446.

Motivation and Context

TableSchema.fromImmutableClass() fails with IllegalArgumentException when processing immutable classes that have boolean fields using "is" prefix in both getters and setters (e.g., isRusty() getter and isRusty(boolean) setter).

Root Cause
The ImmutableIntrospector had getter, setter name normalization logic where getter normalization removes "is" prefix (isRusty() - "rusty") but setter normalization keeps "is" prefix (isRusty(boolean) - "isRusty"). This caused property matching to fail and cause this exception - java.lang.IllegalArgumentException: A method was found on the immutable class that does not appear to have a matching setter on the builder class.

Modifications

Modified normalizeSetterName() method in ImmutableIntrospector to add logic for handling "is" prefix for boolean parameters with the same logic as in normalizeGetterName(). This ensures both getter and setter methods now normalize to the same property name, enabling proper matching during introspection.

Testing

  • Added Unit test to test this case.

Screenshots (if appropriate)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read the CONTRIBUTING document
  • Local run of mvn install succeeds
  • My code follows the code style of this project
  • My change requires a change to the Javadoc documentation
  • I have updated the Javadoc documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed
  • I have added a changelog entry. Adding a new entry must be accomplished by running the scripts/new-change script and following the instructions. Commit the new file created by the script in .changes/next-release with your changes.
  • My change is to implement 1.11 parity feature and I have updated LaunchChangelog

License

  • I confirm that this pull request can be released under the Apache 2 license

@S-Saranya1 S-Saranya1 requested a review from a team as a code owner August 14, 2025 21:36
@S-Saranya1 S-Saranya1 changed the title Fix DynamoDB Enhanced Client immutable class introspection fails for … Fix DDB Enhanced Client immutable class introspection fails for is prefix fields Aug 14, 2025
@S-Saranya1 S-Saranya1 changed the title Fix DDB Enhanced Client immutable class introspection fails for is prefix fields Fix DDB Enhanced Client immutable class introspection fails for "is" prefix fields Aug 14, 2025
@S-Saranya1 S-Saranya1 added the no-api-surface-area-change Indicate there is no API surface area change and thus API surface area review is not required label Aug 14, 2025
Copy link

@S-Saranya1 S-Saranya1 added this pull request to the merge queue Aug 15, 2025
Merged via the queue into master with commit 708216e Aug 15, 2025
36 of 38 checks passed
Copy link

This pull request has been closed and the conversation has been locked. Comments on closed PRs are hard for our team to see. If you need more assistance, please open a new issue that references this one.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 15, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
no-api-surface-area-change Indicate there is no API surface area change and thus API surface area review is not required
Projects
None yet
Development

Successfully merging this pull request may close these issues.

TableSchema.fromImmutableClass() introspection fails when the item class has fields starting with "is"
2 participants