Wrong method finding in getMethod() of InterfaceExtensionImpl
-------------------------------------------------------------

         Key: XMLBEANS-206
         URL: http://issues.apache.org/jira/browse/XMLBEANS-206
     Project: XMLBeans
        Type: Bug
    Versions: Version 2    
 Environment: Doesn't relate to platform.
    Reporter: Denis Anisimov


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