You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Mauricio (JIRA)" <ji...@apache.org> on 2016/03/25 21:46:25 UTC
[jira] [Updated] (BEANUTILS-485) BeanUtils.setProperty set wrong
newValue for a DynaBean with a Map Property
[ https://issues.apache.org/jira/browse/BEANUTILS-485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mauricio updated BEANUTILS-485:
-------------------------------
Description:
After 1.8.3 this stop to work and my legacy Struts 1.x application starting to have bugs... :(
Before was String.... now is String array ? Why ?
public class BeanUtilsTest {
@Test
public void testSetPropertyBeanUtils183_ok_butFailOn192() throws Exception {
String[] value = { "odd" };
DynaBean dynaForm = createForm();
String propertyName = "mapProperty(one)";
BeanUtils.setProperty(dynaForm, propertyName, value);
@SuppressWarnings("unchecked")
Map<String, Object> retrived = (Map<String, Object>) dynaForm
.get("mapProperty");
// on bean utils 1.7.0, 1.8.0 ... 1.8.3 is OK
assertThat(retrived.get("one"), instanceOf(String.class));
assertThat(retrived.get("one"), equalTo((Object) "odd"));
// after 1.9.0 ... 1.9.2 is the problem...
// assertThat(retrived.get("one"), instanceOf(String[].class));
}
private static DynaBean createForm() {
DynaClass dynaClass = new BasicDynaClass("MyForm", null,
new DynaProperty[] { new DynaProperty("mapProperty",
java.util.HashMap.class) });
try {
DynaBean p = dynaClass.newInstance();
// initialize
p.set("mapProperty", new HashMap<>());
return p;
} catch (IllegalAccessException | InstantiationException ex) {
throw new RuntimeException(ex);
}
}
was:
After 1.8.3 this stop to work and my legacy Struts 1.x application starting to have bugs... :(
Before was String.... now is String array ? Why ?
{code:title= BeanUtilsTest.java|borderStyle=solid}
@Test
public void testSetPropertyBeanUtils183_ok_butFailOn192() throws Exception {
String[] value = { "odd" };
DynaBean dynaForm = createForm();
String propertyName = "mapProperty(one)";
BeanUtils.setProperty(dynaForm, propertyName, value);
@SuppressWarnings("unchecked")
Map<String, Object> retrived = (Map<String, Object>) dynaForm
.get("mapProperty");
// on bean utils 1.7.0, 1.8.0 ... 1.8.3 is OK
assertThat(retrived.get("one"), instanceOf(String.class));
assertThat(retrived.get("one"), equalTo((Object) "odd"));
// after 1.9.0 ... 1.9.2 is the problem...
// assertThat(retrived.get("one"), instanceOf(String[].class));
}
private static DynaBean createForm() {
DynaClass dynaClass = new BasicDynaClass("MyForm", null,
new DynaProperty[] { new DynaProperty("mapProperty",
java.util.HashMap.class) });
try {
DynaBean p = dynaClass.newInstance();
// initialize
p.set("mapProperty", new HashMap<>());
return p;
} catch (IllegalAccessException | InstantiationException ex) {
throw new RuntimeException(ex);
}
}
{code}
> BeanUtils.setProperty set wrong newValue for a DynaBean with a Map Property
> ---------------------------------------------------------------------------
>
> Key: BEANUTILS-485
> URL: https://issues.apache.org/jira/browse/BEANUTILS-485
> Project: Commons BeanUtils
> Issue Type: Bug
> Components: Bean / Property Utils
> Affects Versions: 1.9.0, 1.9.1, 1.9.2
> Reporter: Mauricio
>
> After 1.8.3 this stop to work and my legacy Struts 1.x application starting to have bugs... :(
> Before was String.... now is String array ? Why ?
> public class BeanUtilsTest {
> @Test
> public void testSetPropertyBeanUtils183_ok_butFailOn192() throws Exception {
> String[] value = { "odd" };
> DynaBean dynaForm = createForm();
> String propertyName = "mapProperty(one)";
> BeanUtils.setProperty(dynaForm, propertyName, value);
> @SuppressWarnings("unchecked")
> Map<String, Object> retrived = (Map<String, Object>) dynaForm
> .get("mapProperty");
> // on bean utils 1.7.0, 1.8.0 ... 1.8.3 is OK
> assertThat(retrived.get("one"), instanceOf(String.class));
> assertThat(retrived.get("one"), equalTo((Object) "odd"));
> // after 1.9.0 ... 1.9.2 is the problem...
> // assertThat(retrived.get("one"), instanceOf(String[].class));
> }
> private static DynaBean createForm() {
> DynaClass dynaClass = new BasicDynaClass("MyForm", null,
> new DynaProperty[] { new DynaProperty("mapProperty",
> java.util.HashMap.class) });
> try {
> DynaBean p = dynaClass.newInstance();
> // initialize
> p.set("mapProperty", new HashMap<>());
> return p;
> } catch (IllegalAccessException | InstantiationException ex) {
> throw new RuntimeException(ex);
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)