[ 
https://issues.apache.org/jira/browse/BEANUTILS-408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13585352#comment-13585352
 ] 

Benedikt Ritter commented on BEANUTILS-408:
-------------------------------------------

This also applies for the invokeStaticMethod() methods.
                
> MethodUtils.invokeMethod() throws NullPointerException when args==null
> ----------------------------------------------------------------------
>
>                 Key: BEANUTILS-408
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-408
>             Project: Commons BeanUtils
>          Issue Type: Bug
>          Components: Bean / Property Utils
>    Affects Versions: 1.8.3
>         Environment: Using Beanutils 1.8.3
>            Reporter: Federico Carbonetti
>             Fix For: 1.8.4
>
>
> 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 }

--
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

Reply via email to