SpEL support for static finals on interfaces

Update ReflectivePropertyAccessor to search for fields on super classes
and implemented interfaces.

Although the javadoc Class.getFields() implies that all public fields
of class should be returned SpelReproTests demonstrates that this is
not always the case.

Issue: SPR-10125
This commit is contained in:
Phillip Webb
2013-01-14 15:49:38 -08:00
parent bff36fb145
commit ad91fa63fa
2 changed files with 35 additions and 0 deletions

View File

@@ -383,6 +383,18 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
return field;
}
}
if(clazz.getSuperclass() != null) {
Field field = findField(name, clazz.getSuperclass(), mustBeStatic);
if(field != null) {
return field;
}
}
for (Class<?> implementedInterface : clazz.getInterfaces()) {
Field field = findField(name, implementedInterface, mustBeStatic);
if(field != null) {
return field;
}
}
return null;
}