This commit is contained in:
@@ -777,25 +777,27 @@ public final class ResourceFactory {
|
|||||||
this.listener = tn.startsWith("java.") || tn.startsWith("javax.") ? null : findListener(t, field.getType());
|
this.listener = tn.startsWith("java.") || tn.startsWith("javax.") ? null : findListener(t, field.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static synchronized Method findListener(Class clazz, Class fieldType) {
|
private static Method findListener(Class clazz, Class fieldType) {
|
||||||
Class loop = clazz;
|
synchronized (listenerMethods) {
|
||||||
Method m = listenerMethods.get(clazz.getName() + "-" + fieldType.getName());
|
Class loop = clazz;
|
||||||
if (m != null) return m;
|
Method m = listenerMethods.get(clazz.getName() + "-" + fieldType.getName());
|
||||||
do {
|
if (m != null) return m;
|
||||||
for (Method method : loop.getDeclaredMethods()) {
|
do {
|
||||||
if (method.getAnnotation(ResourceListener.class) != null
|
for (Method method : loop.getDeclaredMethods()) {
|
||||||
&& method.getParameterCount() == 3
|
if (method.getAnnotation(ResourceListener.class) != null
|
||||||
&& String.class.isAssignableFrom(method.getParameterTypes()[0])
|
&& method.getParameterCount() == 3
|
||||||
&& method.getParameterTypes()[1] == method.getParameterTypes()[2]
|
&& String.class.isAssignableFrom(method.getParameterTypes()[0])
|
||||||
&& method.getParameterTypes()[1].isAssignableFrom(fieldType)) {
|
&& method.getParameterTypes()[1] == method.getParameterTypes()[2]
|
||||||
m = method;
|
&& method.getParameterTypes()[1].isAssignableFrom(fieldType)) {
|
||||||
m.setAccessible(true);
|
m = method;
|
||||||
break;
|
m.setAccessible(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
} while ((loop = loop.getSuperclass()) != Object.class);
|
||||||
} while ((loop = loop.getSuperclass()) != Object.class);
|
listenerMethods.put(clazz.getName() + "-" + fieldType.getName(), m);
|
||||||
listenerMethods.put(clazz.getName() + "-" + fieldType.getName(), m);
|
return m;
|
||||||
return m;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user