src/main/java/ognl/enhance/ExpressionCompiler.java
public boolean containsMethod(Method m, Class clazz)
    {
        Method[] methods = clazz.getMethods();

        if (methods == null)
            return false;

        for (int i = 0; i < methods.length; i++)
        {
            if (methods[i].getName().equals(m.getName())
                && methods[i].getReturnType() == m.getReturnType())
            {
                Class[] parms = m.getParameterTypes();
                if (parms == null)
                    continue;

                Class[] mparms = methods[i].getParameterTypes();
                if (mparms == null || mparms.length != parms.length)
                    continue;

                boolean parmsMatch = true;
                for (int p = 0; p < parms.length; p++)
                {
                    if (parms[p] != mparms[p])
                    {
                        parmsMatch = false;
                        break;
                    }
                }

                if (!parmsMatch)
                    continue;

                Class[] exceptions = m.getExceptionTypes();
                if (exceptions == null)
                    continue;

                Class[] mexceptions = methods[i].getExceptionTypes();
                if (mexceptions == null || mexceptions.length != exceptions.length)
                    continue;

                boolean exceptionsMatch = true;
                for (int e = 0; e < exceptions.length; e++)
                {
                    if (exceptions[e] != mexceptions[e])
                    {
                        exceptionsMatch = false;
                        break;
                    }
                }

                if (!exceptionsMatch)
                    continue;

                return true;
            }
        }

        return false;
    }
public boolean containsMethod(Method m, Class clazz)
    {
        Method[] methods = clazz.getMethods();

        if (methods == null)
            return false;

        for (int i = 0; i < methods.length; i++)
        {
            if (methods[i].getName().equals(m.getName())
                && methods[i].getReturnType() == m.getReturnType())
            {
                Class[] parms = m.getParameterTypes();
                if (parms == null)
                    continue;

                Class[] mparms = methods[i].getParameterTypes();
                if (mparms == null || mparms.length != parms.length)
                    continue;

                boolean parmsMatch = true;
                for (int p = 0; p < parms.length; p++)
                {
                    if (parms[p] != mparms[p])
                    {
                        parmsMatch = false;
                        break;
                    }
                }

                if (!parmsMatch)
                    continue;

                Class[] exceptions = m.getExceptionTypes();
                if (exceptions == null)
                    continue;

                Class[] mexceptions = methods[i].getExceptionTypes();
                if (mexceptions == null || mexceptions.length != exceptions.length)
                    continue;

                boolean exceptionsMatch = true;
                for (int e = 0; e < exceptions.length; e++)
                {
                    if (exceptions[e] != mexceptions[e])
                    {
                        exceptionsMatch = false;
                        break;
                    }
                }

                if (!exceptionsMatch)
                    continue;

                return true;
            }
        }

        return false;
    }
public boolean containsMethod ( Method m , Class clazz ) { Method [ ] methods = clazz . getMethods ( ) ; if ( methods == null ) return false ; for ( int i = 0 ; i < methods . length ; i ++ ) { if ( methods [ i ] . getName ( ) . equals ( m . getName ( ) ) && methods [ i ] . getReturnType ( ) == m . getReturnType ( ) ) { Class [ ] parms = m . getParameterTypes ( ) ; if ( parms == null ) continue ; Class [ ] mparms = methods [ i ] . getParameterTypes ( ) ; if ( mparms == null || mparms . length != parms . length ) continue ; boolean parmsMatch = true ; for ( int p = 0 ; p < parms . length ; p ++ ) { if ( parms [ p ] != mparms [ p ] ) { parmsMatch = false ; break ; } } if ( ! parmsMatch ) continue ; Class [ ] exceptions = m . getExceptionTypes ( ) ; if ( exceptions == null ) continue ; Class [ ] mexceptions = methods [ i ] . getExceptionTypes ( ) ; if ( mexceptions == null || mexceptions . length != exceptions . length ) continue ; boolean exceptionsMatch = true ; for ( int e = 0 ; e < exceptions . length ; e ++ ) { if ( exceptions [ e ] != mexceptions [ e ] ) { exceptionsMatch = false ; break ; } } if ( ! exceptionsMatch ) continue ; return true ; } } return false ; }
Helper utility method used by compiler to help resolve class->method mappings
during method calls to {@link OgnlExpressionCompiler#getSuperOrInterfaceClass(java.lang.reflect.Method, Class)}.

@param m
The method to check for existance of.
@param clazz
The class to check for the existance of a matching method definition to the method passed in.
@return True if the class contains the specified method, false otherwise.
Helper utility method used by compiler to help resolve class - > method mappings during method calls to { @link OgnlExpressionCompiler#getSuperOrInterfaceClass ( java . lang . reflect . Method Class ) } .