fixed accidental test failures

This commit is contained in:
Juergen Hoeller 2009-08-25 13:49:10 +00:00
parent 9a48f3f3a8
commit 04cd95ff50
4 changed files with 29 additions and 29 deletions

View File

@ -437,6 +437,16 @@ class TypeConverterDelegate {
protected Collection convertToTypedCollection( protected Collection convertToTypedCollection(
Collection original, String propertyName, Class requiredType, MethodParameter methodParam) { Collection original, String propertyName, Class requiredType, MethodParameter methodParam) {
boolean originalAllowed = requiredType.isInstance(original);
Class elementType = null;
if (methodParam != null) {
elementType = GenericCollectionTypeResolver.getCollectionParameterType(methodParam);
}
if (elementType == null && originalAllowed &&
!this.propertyEditorRegistry.hasCustomEditorForElement(null, propertyName)) {
return original;
}
Iterator it; Iterator it;
try { try {
it = original.iterator(); it = original.iterator();
@ -473,16 +483,6 @@ class TypeConverterDelegate {
return original; return original;
} }
boolean originalAllowed = requiredType.isInstance(original);
Class elementType = null;
if (methodParam != null) {
elementType = GenericCollectionTypeResolver.getCollectionParameterType(methodParam);
}
if (elementType == null && originalAllowed &&
!this.propertyEditorRegistry.hasCustomEditorForElement(null, propertyName)) {
return original;
}
int i = 0; int i = 0;
for (; it.hasNext(); i++) { for (; it.hasNext(); i++) {
Object element = it.next(); Object element = it.next();
@ -503,6 +503,18 @@ class TypeConverterDelegate {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected Map convertToTypedMap(Map original, String propertyName, Class requiredType, MethodParameter methodParam) { protected Map convertToTypedMap(Map original, String propertyName, Class requiredType, MethodParameter methodParam) {
boolean originalAllowed = requiredType.isInstance(original);
Class keyType = null;
Class valueType = null;
if (methodParam != null) {
keyType = GenericCollectionTypeResolver.getMapKeyParameterType(methodParam);
valueType = GenericCollectionTypeResolver.getMapValueParameterType(methodParam);
}
if (keyType == null && valueType == null && originalAllowed &&
!this.propertyEditorRegistry.hasCustomEditorForElement(null, propertyName)) {
return original;
}
Iterator it; Iterator it;
try { try {
it = original.entrySet().iterator(); it = original.entrySet().iterator();
@ -539,18 +551,6 @@ class TypeConverterDelegate {
return original; return original;
} }
boolean originalAllowed = requiredType.isInstance(original);
Class keyType = null;
Class valueType = null;
if (methodParam != null) {
keyType = GenericCollectionTypeResolver.getMapKeyParameterType(methodParam);
valueType = GenericCollectionTypeResolver.getMapValueParameterType(methodParam);
}
if (keyType == null && valueType == null && originalAllowed &&
!this.propertyEditorRegistry.hasCustomEditorForElement(null, propertyName)) {
return original;
}
while (it.hasNext()) { while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next(); Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey(); Object key = entry.getKey();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2007 the original author or authors. * Copyright 2002-2009 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -60,6 +60,10 @@ public class DerivedTestBean extends TestBean implements Serializable, BeanNameA
return beanName; return beanName;
} }
public void setActualSpouse(TestBean spouse) {
setSpouse(spouse);
}
public void setSpouseRef(String name) { public void setSpouseRef(String name) {
setSpouse(new TestBean(name)); setSpouse(new TestBean(name));
} }

View File

@ -200,10 +200,6 @@ public class TestBean implements BeanNameAware, BeanFactoryAware, ITestBean, IOt
this.spouses = new ITestBean[] {spouse}; this.spouses = new ITestBean[] {spouse};
} }
public void setActualSpouse(TestBean spouse) {
this.spouses = new ITestBean[] {spouse};
}
public ITestBean getSpouse() { public ITestBean getSpouse() {
return (spouses != null ? spouses[0] : null); return (spouses != null ? spouses[0] : null);
} }

View File

@ -44,7 +44,7 @@
</property> </property>
</bean> </bean>
<bean id="pDavid" class="test.beans.TestBean" scope="prototype"> <bean id="pDavid" class="test.beans.DerivedTestBean" scope="prototype">
<property name="name"><value>David</value></property> <property name="name"><value>David</value></property>
<property name="age"><value>27</value></property> <property name="age"><value>27</value></property>
<property name="actualSpouse" value="Jen"/> <property name="actualSpouse" value="Jen"/>