You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2013/10/23 22:17:50 UTC
svn commit: r1535155 - in /commons/proper/beanutils/branches/java5/src:
main/java/org/apache/commons/beanutils/converters/ClassConverter.java
test/java/org/apache/commons/beanutils/converters/ClassConverterTestCase.java
Author: oheger
Date: Wed Oct 23 20:17:50 2013
New Revision: 1535155
URL: http://svn.apache.org/r1535155
Log:
Generified ClassConverter.
The converter now also checks whether it supports the passed in target type.
Modified:
commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/converters/ClassConverter.java
commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/converters/ClassConverterTestCase.java
Modified: commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/converters/ClassConverter.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/converters/ClassConverter.java?rev=1535155&r1=1535154&r2=1535155&view=diff
==============================================================================
--- commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/converters/ClassConverter.java (original)
+++ commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/converters/ClassConverter.java Wed Oct 23 20:17:50 2013
@@ -59,7 +59,7 @@ public final class ClassConverter extend
* @since 1.8.0
*/
@Override
- protected Class getDefaultType() {
+ protected Class<?> getDefaultType() {
return Class.class;
}
@@ -72,7 +72,7 @@ public final class ClassConverter extend
*/
@Override
protected String convertToString(Object value) {
- return (value instanceof Class) ? ((Class)value).getName() : value.toString();
+ return (value instanceof Class) ? ((Class<?>)value).getName() : value.toString();
}
/**
@@ -85,21 +85,25 @@ public final class ClassConverter extend
* @since 1.8.0
*/
@Override
- protected Object convertToType(Class type, Object value) throws Throwable {
- ClassLoader classLoader =
- Thread.currentThread().getContextClassLoader();
- if (classLoader != null) {
- try {
- return (classLoader.loadClass(value.toString()));
- } catch (ClassNotFoundException ex) {
- // Don't fail, carry on and try this class's class loader
- // (see issue# BEANUTILS-263)
+ protected <T> T convertToType(Class<T> type, Object value) throws Throwable {
+ if (Class.class.equals(type)) {
+ ClassLoader classLoader = Thread.currentThread()
+ .getContextClassLoader();
+ if (classLoader != null) {
+ try {
+ return type.cast(classLoader.loadClass(value.toString()));
+ } catch (ClassNotFoundException ex) {
+ // Don't fail, carry on and try this class's class loader
+ // (see issue# BEANUTILS-263)
+ }
}
+
+ // Try this class's class loader
+ classLoader = ClassConverter.class.getClassLoader();
+ return type.cast(classLoader.loadClass(value.toString()));
}
- // Try this class's class loader
- classLoader = ClassConverter.class.getClassLoader();
- return (classLoader.loadClass(value.toString()));
+ throw conversionException(type, value);
}
}
Modified: commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/converters/ClassConverterTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/converters/ClassConverterTestCase.java?rev=1535155&r1=1535154&r2=1535155&view=diff
==============================================================================
--- commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/converters/ClassConverterTestCase.java (original)
+++ commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/converters/ClassConverterTestCase.java Wed Oct 23 20:17:50 2013
@@ -150,4 +150,16 @@ public class ClassConverterTestCase exte
}
}
+ /**
+ * Tries a conversion to an unsupported target type.
+ */
+ public void testUnsupportedTargetType() {
+ Converter converter = new ClassConverter();
+ try {
+ converter.convert(Integer.class, getClass().getName());
+ fail("Invalid target class not detected!");
+ } catch (ConversionException cex) {
+ // expected result
+ }
+ }
}