polishing

This commit is contained in:
Keith Donald
2011-06-05 05:46:27 +00:00
parent c84cccf06d
commit c306afed63
8 changed files with 86 additions and 29 deletions

View File

@@ -30,6 +30,7 @@ import org.springframework.core.CollectionFactory;
import org.springframework.core.MethodParameter;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.TypeDescriptor;
import org.springframework.core.type.filter.TypeFilter;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
@@ -131,7 +132,7 @@ class TypeConverterDelegate {
// No custom editor but custom ConversionService specified?
ConversionService conversionService = this.propertyEditorRegistry.getConversionService();
if (editor == null && conversionService != null && convertedValue != null) {
TypeDescriptor sourceTypeDesc = TypeDescriptor.forObject(convertedValue);
TypeDescriptor sourceTypeDesc = TypeDescriptor.forObject(newValue);
TypeDescriptor targetTypeDesc = typeDescriptor;
if (conversionService.canConvert(sourceTypeDesc, targetTypeDesc)) {
return (T) conversionService.convert(convertedValue, sourceTypeDesc, targetTypeDesc);
@@ -458,7 +459,7 @@ class TypeConverterDelegate {
if (!originalAllowed && !Collection.class.isAssignableFrom(requiredType)) {
return original;
}
typeDescriptor = typeDescriptor.narrow(original);
TypeDescriptor elementType = typeDescriptor.getElementType();
if (elementType == null && originalAllowed &&
!this.propertyEditorRegistry.hasCustomEditorForElement(null, propertyName)) {
@@ -530,7 +531,7 @@ class TypeConverterDelegate {
if (!originalAllowed && !Map.class.isAssignableFrom(requiredType)) {
return original;
}
typeDescriptor = typeDescriptor.narrow(original);
TypeDescriptor keyType = typeDescriptor.getMapKeyType();
TypeDescriptor valueType = typeDescriptor.getMapValueType();
if (keyType == null && valueType == null && originalAllowed &&

View File

@@ -96,12 +96,21 @@ public class CallbacksSecurityTests {
public void setProperty(Object value) {
checkCurrentContext();
}
public Object getProperty() {
checkCurrentContext();
return null;
}
public void setListProperty(Object value) {
checkCurrentContext();
}
public Object getListProperty() {
checkCurrentContext();
return null;
}
private void checkCurrentContext() {
assertEquals(expectedName, getCurrentSubjectName());
}

View File

@@ -82,6 +82,12 @@
<entry key-ref="trusted-property-injection" value-ref="trusted-factory-method"/>
</map>
</property>
<property name="listProperty">
<list>
<value>foo</value>
<value>bar</value>
</list>
</property>
</bean>
</beans>