in src/main/java/org/apache/commons/ognl/enhance/ExpressionCompiler.java [410:454]
public Class<?> getInterfaceClass( Class<?> clazz )
{
if ( "java.util.AbstractList$Itr".equals( clazz.getName() ) )
{
return Iterator.class;
}
if ( Modifier.isPublic( clazz.getModifiers() ) && clazz.isInterface() || clazz.isPrimitive() )
{
return clazz;
}
Class<?>[] intf = clazz.getInterfaces();
for ( Class<?> anIntf : intf )
{
if ( List.class.isAssignableFrom( anIntf ) )
{
return List.class;
}
if ( Iterator.class.isAssignableFrom( anIntf ) )
{
return Iterator.class;
}
if ( Map.class.isAssignableFrom( anIntf ) )
{
return Map.class;
}
if ( Set.class.isAssignableFrom( anIntf ) )
{
return Set.class;
}
if ( Collection.class.isAssignableFrom( anIntf ) )
{
return Collection.class;
}
}
if ( clazz.getSuperclass() != null && clazz.getSuperclass().getInterfaces().length > 0 )
{
return getInterfaceClass( clazz.getSuperclass() );
}
return clazz;
}