in tapestry-framework/src/org/apache/tapestry/enhance/javassist/OGNLExpressionCompiler.java [74:109]
public Class getInterfaceClass(Class clazz)
{
if (IRender.class.isAssignableFrom(clazz) || clazz.isInterface()
|| Modifier.isPublic(clazz.getModifiers()))
return clazz;
if (clazz.getName().equals("java.util.AbstractList$Itr"))
return Iterator.class;
if (Modifier.isPublic(clazz.getModifiers())
&& clazz.isInterface() || clazz.isPrimitive())
{
return clazz;
}
Class[] intf = clazz.getInterfaces();
for (int i = 0; i < intf.length; i++)
{
if (List.class.isAssignableFrom(intf[i]))
return List.class;
else if (Iterator.class.isAssignableFrom(intf[i]))
return Iterator.class;
else if (Map.class.isAssignableFrom(intf[i]))
return Map.class;
else if (Set.class.isAssignableFrom(intf[i]))
return Set.class;
else if (Collection.class.isAssignableFrom(intf[i]))
return Collection.class;
}
if (clazz.getSuperclass() != null && clazz.getSuperclass().getInterfaces().length > 0)
return getInterfaceClass(clazz.getSuperclass());
return clazz;
}