in src/main/java/org/apache/commons/ognl/enhance/ExpressionCompiler.java [284:323]
public Class<?> getSuperOrInterfaceClass( Method m, Class<?> clazz )
{
if ( clazz.getInterfaces() != null && clazz.getInterfaces().length > 0 )
{
Class<?>[] intfs = clazz.getInterfaces();
Class<?> intClass;
for ( Class<?> intf : intfs )
{
intClass = getSuperOrInterfaceClass( m, intf );
if ( intClass != null )
{
return intClass;
}
if ( Modifier.isPublic( intf.getModifiers() ) && containsMethod( m, intf ) )
{
return intf;
}
}
}
if ( clazz.getSuperclass() != null )
{
Class<?> superClass = getSuperOrInterfaceClass( m, clazz.getSuperclass() );
if ( superClass != null )
{
return superClass;
}
}
if ( Modifier.isPublic( clazz.getModifiers() ) && containsMethod( m, clazz ) )
{
return clazz;
}
return null;
}