diff --git a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 24bc57e9e32..1c59360b6a8 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -187,6 +187,9 @@ class TypeConverterDelegate { // Try to apply some standard type conversion rules if appropriate. if (convertedValue != null) { + if (Object.class.equals(requiredType)) { + return (T) convertedValue; + } if (requiredType.isArray()) { // Array required -> apply appropriate conversion of elements. if (convertedValue instanceof String && Enum.class.isAssignableFrom(requiredType.getComponentType())) { diff --git a/spring-beans/src/test/java/org/springframework/beans/BeanWrapperTests.java b/spring-beans/src/test/java/org/springframework/beans/BeanWrapperTests.java index 9ec9af033b8..17dcfd65345 100644 --- a/spring-beans/src/test/java/org/springframework/beans/BeanWrapperTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/BeanWrapperTests.java @@ -63,6 +63,10 @@ import org.springframework.core.convert.support.GenericConversionService; import org.springframework.util.StopWatch; import org.springframework.util.StringUtils; +import static org.hamcrest.Matchers.*; + +import static org.junit.Assert.*; + /** * @author Rod Johnson @@ -1559,6 +1563,20 @@ public final class BeanWrapperTests { assertEquals("val1", Spr10115Bean.prop1); } + @Test + public void testArrayToObject() throws Exception { + ArrayToObject foo = new ArrayToObject(); + BeanWrapperImpl bwi = new BeanWrapperImpl(); + bwi.setWrappedInstance(foo); + + Object[] array = new Object[] {"1","2"}; + bwi.setPropertyValue("object", array ); + assertThat(foo.getObject(), equalTo((Object) array)); + + array = new Object[] {"1"}; + bwi.setPropertyValue("object", array ); + assertThat(foo.getObject(), equalTo((Object) array)); +} static class Spr10115Bean { private static String prop1; @@ -1944,4 +1962,19 @@ public final class BeanWrapperTests { TEST_VALUE } + + static class ArrayToObject { + + private Object object; + + + public void setObject(Object object) { + this.object = object; + } + + public Object getObject() { + return object; + } + + } }