SpEL support for static finals on interfaces
Issue: SPR-10125 Backport-Issue: SPR-10174
This commit is contained in:
@@ -287,7 +287,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
|
|||||||
|
|
||||||
private Method findGetterForProperty(String propertyName, Class<?> clazz, Object target) {
|
private Method findGetterForProperty(String propertyName, Class<?> clazz, Object target) {
|
||||||
Method method = findGetterForProperty(propertyName, clazz, target instanceof Class);
|
Method method = findGetterForProperty(propertyName, clazz, target instanceof Class);
|
||||||
if(method == null && target instanceof Class) {
|
if (method == null && target instanceof Class) {
|
||||||
method = findGetterForProperty(propertyName, target.getClass(), false);
|
method = findGetterForProperty(propertyName, target.getClass(), false);
|
||||||
}
|
}
|
||||||
return method;
|
return method;
|
||||||
@@ -295,7 +295,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
|
|||||||
|
|
||||||
private Method findSetterForProperty(String propertyName, Class<?> clazz, Object target) {
|
private Method findSetterForProperty(String propertyName, Class<?> clazz, Object target) {
|
||||||
Method method = findSetterForProperty(propertyName, clazz, target instanceof Class);
|
Method method = findSetterForProperty(propertyName, clazz, target instanceof Class);
|
||||||
if(method == null && target instanceof Class) {
|
if (method == null && target instanceof Class) {
|
||||||
method = findSetterForProperty(propertyName, target.getClass(), false);
|
method = findSetterForProperty(propertyName, target.getClass(), false);
|
||||||
}
|
}
|
||||||
return method;
|
return method;
|
||||||
@@ -303,7 +303,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
|
|||||||
|
|
||||||
private Field findField(String name, Class<?> clazz, Object target) {
|
private Field findField(String name, Class<?> clazz, Object target) {
|
||||||
Field field = findField(name, clazz, target instanceof Class);
|
Field field = findField(name, clazz, target instanceof Class);
|
||||||
if(field == null && target instanceof Class) {
|
if (field == null && target instanceof Class) {
|
||||||
field = findField(name, target.getClass(), false);
|
field = findField(name, target.getClass(), false);
|
||||||
}
|
}
|
||||||
return field;
|
return field;
|
||||||
@@ -374,6 +374,20 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
|
|||||||
return field;
|
return field;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// We'll search superclasses and implemented interfaces explicitly,
|
||||||
|
// although it shouldn't be necessary - however, see SPR-10125.
|
||||||
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user