You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by kw...@apache.org on 2007/02/08 18:21:20 UTC
svn commit: r504970 -
/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
Author: kwsutter
Date: Thu Feb 8 09:21:19 2007
New Revision: 504970
URL: http://svn.apache.org/viewvc?view=rev&rev=504970
Log:
OPENJPA-133. Change the processing of the getMethod() method to properly recognize non-public callback methods, along with validating the parameter types.
Modified:
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java?view=diff&rev=504970&r1=504969&r2=504970
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java Thu Feb 8 09:21:19 2007
@@ -96,8 +96,9 @@
* the proper exception on error.
*/
protected static Method getMethod(Class cls, String method, Class[] args) {
- try {
- Method[] methods = cls.getMethods();
+ Class currentClass = cls;
+ do {
+ Method[] methods = currentClass.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
if (!method.equals(methods[i].getName()))
continue;
@@ -105,23 +106,11 @@
if (isAssignable(methods[i].getParameterTypes(), args))
return methods[i];
}
+ } while ((currentClass = currentClass.getSuperclass()) != null);
- return cls.getMethod(method, args);
-
- } catch (Throwable t) {
- try {
- // try again with the declared methods, which will
- // check private and protected methods
- Method m = cls.getDeclaredMethod(method, args);
- if (!m.isAccessible())
- m.setAccessible(true);
- return m;
- } catch (Throwable t2) {
- throw new UserException(_loc.get("method-notfound",
- cls.getName(), method,
- args == null ? null : Arrays.asList(args)), t);
- }
- }
+ // if we get here, no suitable method was found
+ throw new UserException(_loc.get("method-notfound", cls.getName(),
+ method, args == null ? null : Arrays.asList(args)));
}
/**