From 54bf2164253065b66f469fa84ce2da0076347a9d Mon Sep 17 00:00:00 2001 From: Chris Beams Date: Fri, 2 Apr 2010 08:00:48 +0000 Subject: [PATCH] typed map and collection conversion routines now eagerly reject non-assignable required types and avoid spurious InvocationException stack traces in debug log (SPR-7058) git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3221 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../springframework/beans/TypeConverterDelegate.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 650a6bf2972..ab6781101b2 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 @@ -520,6 +520,10 @@ class TypeConverterDelegate { Collection original, String propertyName, Class requiredType, TypeDescriptor typeDescriptor) { boolean originalAllowed = requiredType.isInstance(original); + if (!originalAllowed && !Collection.class.isAssignableFrom(requiredType)) { + return original; + } + MethodParameter methodParam = typeDescriptor.getMethodParameter(); Class elementType = null; if (methodParam != null) { @@ -594,8 +598,14 @@ class TypeConverterDelegate { } @SuppressWarnings("unchecked") - protected Map convertToTypedMap(Map original, String propertyName, Class requiredType, TypeDescriptor typeDescriptor) { + protected Map convertToTypedMap( + Map original, String propertyName, Class requiredType, TypeDescriptor typeDescriptor) { + boolean originalAllowed = requiredType.isInstance(original); + if (!originalAllowed && !Map.class.isAssignableFrom(requiredType)) { + return original; + } + Class keyType = null; Class valueType = null; MethodParameter methodParam = typeDescriptor.getMethodParameter();