Missing metadata when using @Name with a constructor-bound property #46599
+30
−6
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.
Hello,
I'd like to suggest a fix for a bug that I've found while using
@Name
annotation with Type-safe Configuration Properties.Problem description
When
@Name
annotation is used, the metadata items extracted from executable elements (like description and deprecation data) are missing. The following example demonstrates it:Let's say we have record like this:
Then it's generated metadata is:
But if
@Name
annotation is added:the metadata misses several attributes:
Root cause and the fix descriptions
The root cause is the using
Name#value
for locating executable elements inorg.springframework.boot.configurationprocessor.PropertyDescriptorResolver#extracted
:For the example above it means searching record component with name
named.property
. I'd like to suggest using parameter name for locating the executable elements: