[LANG-814] ConstructorUtils.invoke*(*, Object... args) variants cannot handle null values
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1369116 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
49b63810c0
commit
c63041d06c
|
@ -81,10 +81,7 @@ public static <T> T invokeConstructor(Class<T> cls, Object... args)
|
||||||
if (args == null) {
|
if (args == null) {
|
||||||
args = ArrayUtils.EMPTY_OBJECT_ARRAY;
|
args = ArrayUtils.EMPTY_OBJECT_ARRAY;
|
||||||
}
|
}
|
||||||
Class<?> parameterTypes[] = new Class[args.length];
|
Class<?> parameterTypes[] = ClassUtils.toClass(args);
|
||||||
for (int i = 0; i < args.length; i++) {
|
|
||||||
parameterTypes[i] = args[i].getClass();
|
|
||||||
}
|
|
||||||
return invokeConstructor(cls, args, parameterTypes);
|
return invokeConstructor(cls, args, parameterTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,11 +145,7 @@ public static <T> T invokeExactConstructor(Class<T> cls, Object... args)
|
||||||
if (args == null) {
|
if (args == null) {
|
||||||
args = ArrayUtils.EMPTY_OBJECT_ARRAY;
|
args = ArrayUtils.EMPTY_OBJECT_ARRAY;
|
||||||
}
|
}
|
||||||
int arguments = args.length;
|
Class<?> parameterTypes[] = ClassUtils.toClass(args);
|
||||||
Class<?> parameterTypes[] = new Class[arguments];
|
|
||||||
for (int i = 0; i < arguments; i++) {
|
|
||||||
parameterTypes[i] = args[i].getClass();
|
|
||||||
}
|
|
||||||
return invokeExactConstructor(cls, args, parameterTypes);
|
return invokeExactConstructor(cls, args, parameterTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.apache.commons.lang3.math.NumberUtils;
|
import org.apache.commons.lang3.math.NumberUtils;
|
||||||
|
import org.apache.commons.lang3.mutable.MutableObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests ConstructorUtils
|
* Unit tests ConstructorUtils
|
||||||
|
@ -199,6 +200,11 @@ public void testGetMatchingAccessibleMethod() throws Exception {
|
||||||
singletonArray(Double.TYPE), singletonArray(Double.TYPE));
|
singletonArray(Double.TYPE), singletonArray(Double.TYPE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testNullArgument() {
|
||||||
|
expectMatchingAccessibleConstructorParameterTypes(MutableObject.class,
|
||||||
|
singletonArray(null), singletonArray(Object.class));
|
||||||
|
}
|
||||||
|
|
||||||
private void expectMatchingAccessibleConstructorParameterTypes(Class<?> cls,
|
private void expectMatchingAccessibleConstructorParameterTypes(Class<?> cls,
|
||||||
Class<?>[] requestTypes, Class<?>[] actualTypes) {
|
Class<?>[] requestTypes, Class<?>[] actualTypes) {
|
||||||
Constructor<?> c = ConstructorUtils.getMatchingAccessibleConstructor(cls,
|
Constructor<?> c = ConstructorUtils.getMatchingAccessibleConstructor(cls,
|
||||||
|
|
Loading…
Reference in New Issue