Add new MapELResolver with type coercion to support accessing enum keys #688
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.
related to #271
This PR adds the new
TypeConvertingMapELResolver
in order to allow accessing map entries when their key does not have equality with its string representation.This is most often seen with enums. For instance, imagine a Java map with key type
MyEnum
:Outputting the map via
{{ map }}
could produce the following:However,
{{ map.FOO }}
would not resolve to anything as the string"FOO"
does not have equality withMyEnum.FOO
.To fix this, I've used the
CollectionMembershipOperator
andTruthyTypeConverter
to determine if a key is valid and convert it to the correct class. This means that this should work for all types that have this issue, not just enums (for instance, numeric types).After this PR,
{{ map.FOO }}
will outputvalue1
, which is the expected result.