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
}
/**