You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2008/01/03 00:10:25 UTC

svn commit: r608280 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/

Author: aadamchik
Date: Wed Jan  2 15:10:25 2008
New Revision: 608280

URL: http://svn.apache.org/viewvc?rev=608280&view=rev
Log:
CAY-950 Look up callback methods on listener superclasses

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=608280&r1=608279&r2=608280&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Wed Jan  2 15:10:25 2008
@@ -34,6 +34,7 @@
 CAY-946 JPA: property-based access to persistent objects
 CAY-948 Implement flattened attributes in Cayenne
 CAY-949 Factory for lifecycle listeners
+CAY-950 Look up callback methods on listener superclasses
 
 Bug fixes since M2:
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java?rev=608280&r1=608279&r2=608280&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java Wed Jan  2 15:10:25 2008
@@ -235,7 +235,6 @@
                     for (int i = 0; i < callbacks.length; i++) {
 
                         for (String method : callbacks[i].getCallbackMethods()) {
-                            // note that callbacks[i].getCallbackType() == i
                             callbackRegistry.addListener(
                                     callbacks[i].getCallbackType(),
                                     entityClass,
@@ -248,7 +247,6 @@
                 CallbackDescriptor[] callbacks = entity.getCallbackMap().getCallbacks();
                 for (int i = 0; i < callbacks.length; i++) {
                     for (String method : callbacks[i].getCallbackMethods()) {
-                        // note that callbacks[i].getCallbackType() == i
                         callbackRegistry.addListener(
                                 callbacks[i].getCallbackType(),
                                 entityClass,

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java?rev=608280&r1=608279&r2=608280&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java Wed Jan  2 15:10:25 2008
@@ -92,10 +92,17 @@
             }
         }
 
-        throw new IllegalArgumentException("Class "
-                + objectClass.getName()
-                + " has no valid listener callback method '"
-                + methodName
-                + "'");
+        Class<?> superclass = objectClass.getSuperclass();
+        if (superclass == null || "java.lang.Object".equals(superclass.getName())) {
+
+            throw new IllegalArgumentException("Class "
+                    + objectClass.getName()
+                    + " has no valid listener callback method '"
+                    + methodName
+                    + "'");
+        }
+        else {
+            return findMethod(superclass, methodName, entityType);
+        }
     }
 }