Index: . =================================================================== --- . (revision 476656) +++ . (working copy) @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -32,6 +33,7 @@ import java.util.Set; import java.util.jar.JarEntry; import java.util.jar.JarFile; + import javax.faces.FacesException; import javax.faces.FactoryFinder; import javax.faces.application.Application; @@ -50,6 +52,7 @@ import javax.servlet.ServletRequestEvent; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shale.tiger.config.FacesConfigConfig; @@ -1394,8 +1397,11 @@ default: break; } - // FIXME - should we look for inherited fields with @Property/@Value too? - for (Field field : clazz.getDeclaredFields()) { + + // lookup all inherited fields + Field[] fields = allFields(clazz); + + for (Field field : fields) { if (log().isTraceEnabled()) { log().trace(" Scanning field '" + field.getName() + "'"); } @@ -1433,6 +1439,23 @@ } } + + /** + *
Return all fields of a class including also the inherited ones
+ * @param clazz to be scanned for fields + * @return Field[] + */ + private Field[] allFields(Class clazz) { + Map