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)