From 90d8dade254b4f34fd28d498ce529efd2177c606 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Fri, 7 Jan 2011 17:54:17 +0000 Subject: [PATCH] fixed bug related to array autogrow --- .../java/org/springframework/beans/BeanWrapperImpl.java | 7 ++----- .../web/servlet/mvc/annotation/Spr7839Tests.java | 3 --- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java b/org.springframework.beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java index 46424861a78..8a4cf937be0 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java @@ -848,8 +848,9 @@ public class BeanWrapperImpl extends AbstractPropertyAccessor implements BeanWra for (int i = length; i < Array.getLength(newArray); i++) { Array.set(newArray, i, newValue(componentType, name)); } + // TODO this is not efficient because conversion may create a copy ... set directly because we know its assignable. setPropertyValue(name, newArray); - return newArray; + return getPropertyValue(name); } else { return array; @@ -953,10 +954,6 @@ public class BeanWrapperImpl extends AbstractPropertyAccessor implements BeanWra // TODO reduce this grow algorithm along side the null gap algorithm for setting lists below ... the two are inconsistent propValue = growArrayIfNecessary(propValue, arrayIndex, actualName); Array.set(propValue, arrayIndex, convertedValue); - PropertyValue newValue = new PropertyValue(actualName, propValue); - newValue.resolvedDescriptor = pd; - newValue.conversionNecessary = false; - setPropertyValue(newValue); } catch (IndexOutOfBoundsException ex) { throw new InvalidPropertyException(getRootClass(), this.nestedPath + propertyName, diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7839Tests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7839Tests.java index 7f04d7b5a6b..299c99194ad 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7839Tests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7839Tests.java @@ -8,7 +8,6 @@ import java.util.List; import java.util.Map; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.support.ConversionServiceFactory; @@ -92,7 +91,6 @@ public class Spr7839Tests { } @Test - @Ignore public void arrayOfLists() throws Exception { // TODO TypeDescriptor not capable of accessing nested element type for arrays request.setRequestURI("/nested/arrayOfLists"); @@ -101,7 +99,6 @@ public class Spr7839Tests { } @Test - @Ignore public void map() throws Exception { request.setRequestURI("/nested/map"); request.addParameter("nested.map['apple'].foo", "bar");