[ 
https://issues.apache.org/jira/browse/BEANUTILS-426?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benedikt Ritter updated BEANUTILS-426:
--------------------------------------

    Reporter: Benedikt Ritter  (was: Federico Carbonetti)
    
> 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
>             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