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 2013/07/23 21:22:41 UTC

svn commit: r1506227 - in /cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map: EntityListener.java EntityListenerFactory.java EntityResolver.java

Author: aadamchik
Date: Tue Jul 23 19:22:40 2013
New Revision: 1506227

URL: http://svn.apache.org/r1506227
Log:
CAY-1843  Stop saving listeners in DataMap, add upgrade handler

stop loading entity listeners into EntityResolver
deprecating a bunch of related stuff

Modified:
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListener.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListenerFactory.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java

Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListener.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListener.java?rev=1506227&r1=1506226&r2=1506227&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListener.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListener.java Tue Jul 23 19:22:40 2013
@@ -24,11 +24,14 @@ import org.apache.cayenne.util.XMLEncode
 import org.apache.cayenne.util.XMLSerializable;
 
 /**
- * A mapping descriptor of an entity listener class that declares one or more callback
- * methods to be notified of the entity events.
+ * A mapping descriptor of an entity listener class that declares one or more
+ * callback methods to be notified of the entity events.
  * 
  * @since 3.0
+ * @deprecated since 3.2, as EntityResolver no longer loads listeners from its
+ *             DataMaps.
  */
+@Deprecated
 public class EntityListener implements Serializable, XMLSerializable {
 
     protected String className;
@@ -53,6 +56,7 @@ public class EntityListener implements S
 
     /**
      * Returns an object that stores callback methods of this listener.
+     * 
      * @return callback map
      */
     public CallbackMap getCallbackMap() {

Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListenerFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListenerFactory.java?rev=1506227&r1=1506226&r2=1506227&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListenerFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityListenerFactory.java Tue Jul 23 19:22:40 2013
@@ -19,20 +19,23 @@
 package org.apache.cayenne.map;
 
 /**
- * A factory used to create entity listeners. By default listeners are created using a
- * noop constructor on the listener class, however if a user needs to customize listener
- * creation process (e.g. perform dependency injection, etc.), a custom factory can be
- * installed on the EntityResolver. EntityListenerFactory also supports defining listener
- * interfaces, not just classes).
+ * A factory used to create entity listeners. By default listeners are created
+ * using a noop constructor on the listener class, however if a user needs to
+ * customize listener creation process (e.g. perform dependency injection,
+ * etc.), a custom factory can be installed on the EntityResolver.
+ * EntityListenerFactory also supports defining listener interfaces, not just
+ * classes).
  * 
  * @since 3.0
+ * @deprecated since 3.2, as EntityResolver no longer loads listeners from its
+ *             DataMaps.
  */
 public interface EntityListenerFactory {
 
     /**
-     * Creates an instance of entity listener of a given class. "entity" parameter denotes
-     * ObjEntity for which the listener is installed. It is null if this is a default
-     * listener.
+     * Creates an instance of entity listener of a given class. "entity"
+     * parameter denotes ObjEntity for which the listener is installed. It is
+     * null if this is a default listener.
      * 
      * @return a listener of the given class. May return null to indicate that a
      *         configured listener should be suppressed.

Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java?rev=1506227&r1=1506226&r2=1506227&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/map/EntityResolver.java Tue Jul 23 19:22:40 2013
@@ -37,7 +37,6 @@ import org.apache.cayenne.reflect.Lifecy
 import org.apache.cayenne.reflect.SingletonFaultFactory;
 import org.apache.cayenne.reflect.generic.DataObjectDescriptorFactory;
 import org.apache.cayenne.reflect.valueholder.ValueHolderDescriptorFactory;
-import org.apache.cayenne.util.Util;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -69,8 +68,6 @@ public class EntityResolver implements M
     // callbacks are not serializable
     protected transient LifecycleCallbackRegistry callbackRegistry;
 
-    protected EntityListenerFactory entityListenerFactory;
-
     /**
      * Creates new empty EntityResolver.
      */
@@ -177,48 +174,10 @@ public class EntityResolver implements M
         if (callbackRegistry == null) {
             LifecycleCallbackRegistry callbackRegistry = new LifecycleCallbackRegistry(this);
 
-            // load default callbacks
-            for (DataMap map : maps) {
-
-                for (EntityListener listener : map.getDefaultEntityListeners()) {
-                    Object listenerInstance = createListener(listener, null);
-                    if (listenerInstance == null) {
-                        continue;
-                    }
-
-                    CallbackDescriptor[] callbacks = listener.getCallbackMap().getCallbacks();
-                    for (CallbackDescriptor callback : callbacks) {
-
-                        for (String method : callback.getCallbackMethods()) {
-
-                            // note that callbacks[i].getCallbackType() == i
-                            callbackRegistry.addDefaultListener(callback.getCallbackType(), listenerInstance, method);
-                        }
-                    }
-                }
-            }
-
             // load entity callbacks
             for (ObjEntity entity : getObjEntities()) {
                 Class<?> entityClass = entity.getJavaClass();
 
-                // external listeners go first, entity's own callbacks go next
-                for (EntityListener listener : entity.getEntityListeners()) {
-                    Object listenerInstance = createListener(listener, entity);
-                    if (listenerInstance == null) {
-                        continue;
-                    }
-
-                    CallbackDescriptor[] callbacks = listener.getCallbackMap().getCallbacks();
-                    for (CallbackDescriptor callback : callbacks) {
-
-                        for (String method : callback.getCallbackMethods()) {
-                            callbackRegistry.addListener(callback.getCallbackType(), entityClass, listenerInstance,
-                                    method);
-                        }
-                    }
-                }
-
                 CallbackDescriptor[] callbacks = entity.getCallbackMap().getCallbacks();
                 for (CallbackDescriptor callback : callbacks) {
                     for (String method : callback.getCallbackMethods()) {
@@ -232,31 +191,6 @@ public class EntityResolver implements M
     }
 
     /**
-     * Creates a listener instance.
-     */
-    private Object createListener(EntityListener listener, ObjEntity entity) {
-
-        if (entityListenerFactory != null) {
-            return entityListenerFactory.createListener(listener, entity);
-        }
-
-        Class<?> listenerClass;
-
-        try {
-            listenerClass = Util.getJavaClass(listener.getClassName());
-        } catch (ClassNotFoundException e) {
-            throw new CayenneRuntimeException("Invalid listener class: " + listener.getClassName(), e);
-        }
-
-        try {
-            return listenerClass.newInstance();
-        } catch (Exception e) {
-            throw new CayenneRuntimeException("Listener class " + listener.getClassName()
-                    + " default constructor call failed", e);
-        }
-    }
-
-    /**
      * Returns a {@link LifecycleCallbackRegistry} for handling callbacks.
      * Registry is lazily initialized on first call.
      * 
@@ -689,15 +623,13 @@ public class EntityResolver implements M
     }
 
     /**
-     * Sets an optional {@link EntityListenerFactory} that should be used to
-     * create entity listeners. Note that changing the factory does not affect
-     * already created listeners. So refresh the existing listners, call
-     * "setCallbackRegistry(null)" after setting the listener.
-     * 
      * @since 3.0
+     * @deprecated since 3.2 this method does nothing, as EntityResolver no
+     *             longer loads listeners from its DataMaps.
      */
+    @Deprecated
     public void setEntityListenerFactory(EntityListenerFactory entityListenerFactory) {
-        this.entityListenerFactory = entityListenerFactory;
+        // noop
     }
 
     /**