You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2012/08/03 19:43:34 UTC
svn commit: r1369116 - in /commons/proper/lang/trunk/src:
main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java
test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java
Author: mbenson
Date: Fri Aug 3 17:43:33 2012
New Revision: 1369116
URL: http://svn.apache.org/viewvc?rev=1369116&view=rev
Log:
[LANG-814] ConstructorUtils.invoke*(*, Object... args) variants cannot handle null values
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java
Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java?rev=1369116&r1=1369115&r2=1369116&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/ConstructorUtils.java Fri Aug 3 17:43:33 2012
@@ -81,10 +81,7 @@ public class ConstructorUtils {
if (args == null) {
args = ArrayUtils.EMPTY_OBJECT_ARRAY;
}
- Class<?> parameterTypes[] = new Class[args.length];
- for (int i = 0; i < args.length; i++) {
- parameterTypes[i] = args[i].getClass();
- }
+ Class<?> parameterTypes[] = ClassUtils.toClass(args);
return invokeConstructor(cls, args, parameterTypes);
}
@@ -148,11 +145,7 @@ public class ConstructorUtils {
if (args == null) {
args = ArrayUtils.EMPTY_OBJECT_ARRAY;
}
- int arguments = args.length;
- Class<?> parameterTypes[] = new Class[arguments];
- for (int i = 0; i < arguments; i++) {
- parameterTypes[i] = args[i].getClass();
- }
+ Class<?> parameterTypes[] = ClassUtils.toClass(args);
return invokeExactConstructor(cls, args, parameterTypes);
}
Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java?rev=1369116&r1=1369115&r2=1369116&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java (original)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/reflect/ConstructorUtilsTest.java Fri Aug 3 17:43:33 2012
@@ -25,6 +25,7 @@ import junit.framework.TestCase;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.commons.lang3.mutable.MutableObject;
/**
* Unit tests ConstructorUtils
@@ -199,6 +200,11 @@ public class ConstructorUtilsTest extend
singletonArray(Double.TYPE), singletonArray(Double.TYPE));
}
+ public void testNullArgument() {
+ expectMatchingAccessibleConstructorParameterTypes(MutableObject.class,
+ singletonArray(null), singletonArray(Object.class));
+ }
+
private void expectMatchingAccessibleConstructorParameterTypes(Class<?> cls,
Class<?>[] requestTypes, Class<?>[] actualTypes) {
Constructor<?> c = ConstructorUtils.getMatchingAccessibleConstructor(cls,