String[ ] to scalar undesired behavior at BeanUtilsBean causes limitations on
designing custom Converters
---------------------------------------------------------------------------------------------------------
Key: BEANUTILS-328
URL: https://issues.apache.org/jira/browse/BEANUTILS-328
Project: Commons BeanUtils
Issue Type: Bug
Environment: Java 1.6, BeanUtils 1.8.
Reporter: Fábio Miranda
Priority: Minor
Say you have an array entry that must be converted to a scalar property. A very
very simple example could be:
String[] dateparams = new String[] { "10/10/2000", "10:00" };
map.put("date", dateparams);
BeanUtils.populate(object, map);
So, you have a custom converter that should receive that array and perform the
appropriate conversions.
Everything would be ok, except the fact BeanUtilsBean, when populating scalar
values, ignores all array values except first, as demonstrated by the following
BeanUtilsBean's code:
// Value into scalar
if ((value instanceof String) || (value == null)) {
newValue = getConvertUtils().convert((String) value, type);
} else if (value instanceof String[]) {
// HERE
newValue = getConvertUtils().convert(((String[]) value)[0],
type);
} else {
newValue = convert(value, type);
}
It limitates ConvertUtils power on some complex conversion designs. In think
the code should be corrected to
newValue = getConvertUtils().convert(((String[]) value), type);
and array logic should be delegated to the converters.
Thanks in advance,
Fábio.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.