[
https://issues.apache.org/jira/browse/BEANUTILS-339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675546#action_12675546
]
Alan Escreet commented on BEANUTILS-339:
----------------------------------------
That's precisely the line with the problem:
{noformat}
if ((value instanceof String) || (value == null))
{noformat}
This test only tests if the {{value}} is a String or is {{null}} before it
tries to use a converter on a String value. It does not, as the API doc states,
treat it as a null String if it is expecting a primitive value. There is no
check here for expecting a primitive value. It just assumes that any {{null}}
is a String, which is a very strange assumption to make.
If I pass in a Comparator type value, I expect it to continue to be treated as
a Comparator type within BeanUtilsBean.
Why would I need to register a converter to convert a {{null}} String value
back in to a {{null}} Comparator value, which is actually what I passed in to
the method in the first place? It should remain as a {{null}} Comparator until
I register a converter to convert it in to something different.
> BeanUtilsBean.setProperty throws IllegalArgumentException if value is null
> --------------------------------------------------------------------------
>
> Key: BEANUTILS-339
> URL: https://issues.apache.org/jira/browse/BEANUTILS-339
> Project: Commons BeanUtils
> Issue Type: Bug
> Components: Bean / Property Utils
> Affects Versions: 1.8.0-BETA
> Reporter: Alan Escreet
> Priority: Blocker
> Fix For: 1.8.0-BETA
>
>
> Line 1003-1004 conflicts with API doc: "If null is passed into a property
> expecting a primitive value, then this will be converted as if it were a null
> string."
> Line 1003 only tests if the value is null and 1004 explicitly casts to a
> String. If a bean has a field of any other type, i.e. java.util.Comparator,
> then this fails with:
> {{java.lang.IllegalArgumentException: Cannot invoke <myBean>.setComparator on
> bean class 'class <myBean>' - argument type mismatch - had objects of type
> "java.lang.String" but expected signature "java.util.Comparator"}}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.