|
|
|
@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|