[ 
https://issues.apache.org/jira/browse/BEANUTILS-453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13829363#comment-13829363
 ] 

Oliver Heger commented on BEANUTILS-453:
----------------------------------------

Thanks for your contribution. However, I am reluctant for adding this feature.

First, the documentation clearly states that mapped properties use a String as 
key. From section 2.1 of the user guide:
{quote}
Mapped - As an extension to standard JavaBeans APIs, the BeanUtils package 
considers any property whose underlying value is a java.util.Map to be 
"mapped". You can set and retrieve individual values via a String-valued key.
{quote}

This is also in-line with the signature of the {{getMappedProperty()}} and 
{{setMappedProperty()}} methods which expect the key to be a string and not an 
arbitrary object.

You do not take the {{setMappedProperty()}} method into account. It would be 
possible to use it to write values into the enum-keyed map. But because the 
method does not know the actual type of the keys in the map it would simply 
insert String keys. This might later cause ClassCastExceptions. So the get and 
set methods for mapped properties are no longer symmetric.

What also worries me is that your proposed fix can have an impact on 
performance in certain constellations. You check whether the passed in key is 
found in the map. If not, you iterate over all keys contained in the map. This 
is now always done, no matter whether the map's keys are strings or anything 
else. It might be an expected case that a key cannot be resolved, but with the 
proposed change then the whole map has to be scanned. For large maps this may 
be an issue.

> there was no why, to get value from the map, which have the key type of enum
> ----------------------------------------------------------------------------
>
>                 Key: BEANUTILS-453
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-453
>             Project: Commons BeanUtils
>          Issue Type: Improvement
>          Components: Bean / Property Utils
>    Affects Versions: 1.8.3, 1.8.4, 1.9.0
>            Reporter: vakhtang koroghlishvili
>            Priority: Critical
>              Labels: features, patch, test
>         Attachments: MapWithEnumKey_withTestCase.patch
>
>
> There was no why, to get value from the map, which have key type of Enum. So 
> I solve the problem and I will upload my patch (with Junit test cases).



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to