[ https://issues.apache.org/jira/browse/BEANUTILS-426?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benedikt Ritter updated BEANUTILS-426: -------------------------------------- Description: ConstructorUtils.invokeConstructor(Class klass, Object arg) can not handle null passed as arg. It should check if arg is null and then simply pass null to ConstructorUtils.invokeConstructor(Class klass, Object[] args) which will result in calling the default constructor. (was: When you invoke MethodUtils.invokeExactMethod(object, methodName, args) with args==null you get a NullPointerException: java.lang.NullPointerException at org.apache.commons.beanutils.MethodUtils.invokeExactMethod(MethodUtils.java:352) at org.apache.commons.beanutils.MethodUtils.invokeExactMethod(MethodUtils.java:315) ... Reason is: public static Object invokeExactMethod(Object object, String methodName, Object arg) gets invoked (see r. 305 below) and the null wrapped into an array before invoking public static Object invokeExactMethod(Object object, String methodName, Object[] args); 286 /** 287 * <p>Invoke a method whose parameter type matches exactly the object 288 * type.</p> 289 * 290 * <p> This is a convenient wrapper for 291 * {@link #invokeExactMethod(Object object,String methodName,Object [] args)}. 292 * </p> 293 * 294 * @param object invoke method on this object 295 * @param methodName get method with this name 296 * @param arg use this argument 297 * @return The value returned by the invoked method 298 * 299 * @throws NoSuchMethodException if there is no such accessible method 300 * @throws InvocationTargetException wraps an exception thrown by the 301 * method invoked 302 * @throws IllegalAccessException if the requested method is not accessible 303 * via reflection 304 */ 305 public static Object invokeExactMethod( 306 Object object, 307 String methodName, 308 Object arg) 309 throws 310 NoSuchMethodException, 311 IllegalAccessException, 312 InvocationTargetException { 313 314 Object[] args = {arg}; 315 return invokeExactMethod(object, methodName, args); 316 317 } 318 319 320 /** 321 * <p>Invoke a method whose parameter types match exactly the object 322 * types.</p> 323 * 324 * <p> This uses reflection to invoke the method obtained from a call to 325 * <code>getAccessibleMethod()</code>.</p> 326 * 327 * @param object invoke method on this object 328 * @param methodName get method with this name 329 * @param args use these arguments - treat null as empty array 330 * @return The value returned by the invoked method 331 * 332 * @throws NoSuchMethodException if there is no such accessible method 333 * @throws InvocationTargetException wraps an exception thrown by the 334 * method invoked 335 * @throws IllegalAccessException if the requested method is not accessible 336 * via reflection 337 */ 338 public static Object invokeExactMethod( 339 Object object, 340 String methodName, 341 Object[] args) 342 throws 343 NoSuchMethodException, 344 IllegalAccessException, 345 InvocationTargetException { 346 if (args == null) { 347 args = EMPTY_OBJECT_ARRAY; 348 } 349 int arguments = args.length; 350 Class[] parameterTypes = new Class[arguments]; 351 for (int i = 0; i < arguments; i++) { 352 parameterTypes[i] = args[i].getClass(); 353 } 354 return invokeExactMethod(object, methodName, args, parameterTypes); 355 356 }) > ConstructorUtils.invokeConstructor(Class klass, Object arg) throws > NullPointerException when arg==null > ------------------------------------------------------------------------------------------------------ > > Key: BEANUTILS-426 > URL: https://issues.apache.org/jira/browse/BEANUTILS-426 > Project: Commons BeanUtils > Issue Type: Bug > Components: Bean / Property Utils > Affects Versions: 1.8.3 > Environment: Using Beanutils 1.8.3 > Reporter: Benedikt Ritter > Assignee: Benedikt Ritter > Fix For: 1.8.4 > > > ConstructorUtils.invokeConstructor(Class klass, Object arg) can not handle > null passed as arg. It should check if arg is null and then simply pass null > to ConstructorUtils.invokeConstructor(Class klass, Object[] args) which will > result in calling the default constructor. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira