From 0fcbb35889a05b4e1b2b76d7663363808c7aa792 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Sun, 5 Jun 2011 17:52:26 +0000 Subject: [PATCH] null type descriptor handling git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4459 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../beans/TypeConverterDelegate.java | 2 +- .../beans/BeanWrapperTests.java | 25 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 5ffbad61b21..8d888edc6fe 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -132,7 +132,7 @@ class TypeConverterDelegate { // No custom editor but custom ConversionService specified? ConversionService conversionService = this.propertyEditorRegistry.getConversionService(); - if (editor == null && conversionService != null && convertedValue != null) { + if (editor == null && conversionService != null && convertedValue != null && typeDescriptor != null) { TypeDescriptor sourceTypeDesc = TypeDescriptor.forObject(newValue); TypeDescriptor targetTypeDesc = typeDescriptor; if (conversionService.canConvert(sourceTypeDesc, targetTypeDesc)) { diff --git a/org.springframework.beans/src/test/java/org/springframework/beans/BeanWrapperTests.java b/org.springframework.beans/src/test/java/org/springframework/beans/BeanWrapperTests.java index 69fbafdf7d3..49c301284a5 100644 --- a/org.springframework.beans/src/test/java/org/springframework/beans/BeanWrapperTests.java +++ b/org.springframework.beans/src/test/java/org/springframework/beans/BeanWrapperTests.java @@ -70,20 +70,41 @@ import test.beans.TestBean; public final class BeanWrapperTests { @Test - @Ignore public void testNullNestedTypeDescriptor() { Foo foo = new Foo(); BeanWrapperImpl wrapper = new BeanWrapperImpl(foo); wrapper.setConversionService(new DefaultConversionService()); wrapper.setAutoGrowNestedPaths(true); wrapper.setPropertyValue("listOfMaps[0]['luckyNumber']", "9"); - assertEquals(9, foo.listOfMaps.get(0).get("luckyNumber")); + assertEquals("9", foo.listOfMaps.get(0).get("luckyNumber")); + } + + @Test + public void testNullNestedTypeDescriptor2() { + Foo foo = new Foo(); + BeanWrapperImpl wrapper = new BeanWrapperImpl(foo); + wrapper.setConversionService(new DefaultConversionService()); + wrapper.setAutoGrowNestedPaths(true); + Map map = new HashMap(); + map.put("favoriteNumber", "9"); + wrapper.setPropertyValue("list[0]", map); + assertEquals(map, foo.list.get(0)); } static class Foo { + private List list; + private List listOfMaps; + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + public List getListOfMaps() { return listOfMaps; }