[ http://issues.apache.org/jira/browse/XMLBEANS-206?page=all ]
     
Rajiv Bala closed XMLBEANS-206:
-------------------------------

    Resolution: Fixed

Added test to verify fix (rev 328804)

> Wrong method finding in getMethod() of InterfaceExtensionImpl
> -------------------------------------------------------------
>
>          Key: XMLBEANS-206
>          URL: http://issues.apache.org/jira/browse/XMLBEANS-206
>      Project: XMLBeans
>         Type: Bug
>   Components: Binding
>     Versions: Version 2
>  Environment: Doesn't relate to platform.
>     Reporter: Denis Anisimov
>     Assignee: Rajiv Bala

>
> Wrong implementation of getMethod() in InterfaceExtensionImpl class could 
> lead to  ArrayIndexOutOfBoundsException.
> Old implementation :
>     static JMethod getMethod(JClass cls, String name, JClass[] paramTypes)
>     {
>         JMethod[] methods = cls.getMethods();
>         for (int i = 0; i < methods.length; i++)
>         {
>             JMethod method = methods[i];
>             if (!name.equals(method.getSimpleName()))
>                 continue;
>             JParameter[] mParams = method.getParameters();           
>             for (int j = 0; j < mParams.length; j++)
>             {
>                 JParameter mParam = mParams[j];
>                 if (!mParam.getType().equals(paramTypes[j]))
>                     continue;
>             }
>             return method;
>         }
>         return null;
>     }
> Correct impl-tion :
>     static JMethod getMethod(JClass cls, String name, JClass[] paramTypes)
>     {
>         JMethod[] methods = cls.getMethods();
>         for (int i = 0; i < methods.length; i++)
>         {
>             JMethod method = methods[i];
>             if (!name.equals(method.getSimpleName()))
>                 continue;
>             JParameter[] mParams = method.getParameters();
>             // here was bug in possibe ArrayIndexOutOfBoundsException.
>             // because methods could have same names but different
>             // number of parameters
>             if ( mParams.length != paramTypes.length ){
>               continue;
>             }
>             
>             for (int j = 0; j < mParams.length; j++)
>             {
>                 JParameter mParam = mParams[j];
>                 if (!mParam.getType().equals(paramTypes[j]))
>                     continue;
>             }
>             return method;
>         }
>         return null;
>     }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to