Author: ppoddar
Date: Thu Oct 8 18:52:08 2009
New Revision: 823267
URL: http://svn.apache.org/viewvc?rev=823267&view=rev
Log:
OPENJPA-1050: Use generics for LifeCycleEventManager
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java?rev=823267&r1=823266&r2=823267&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleEventManager.java
Thu Oct 8 18:52:08 2009
@@ -29,7 +29,6 @@
import org.apache.openjpa.meta.ClassMetaData;
import org.apache.openjpa.meta.MetaDataDefaults;
-import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.InvalidStateException;
@@ -47,6 +46,7 @@
* @since 0.3.3
* @nojavadoc
*/
+...@suppresswarnings("serial")
public class LifecycleEventManager
implements CallbackModes, Serializable {
@@ -55,11 +55,12 @@
private static final Localizer _loc = Localizer.forPackage(
LifecycleEventManager.class);
- private Map _classListeners = null; // class -> listener list
+ private Map<Class<?>, ListenerList> _classListeners = null;
private ListenerList _listeners = null;
- private List _addListeners = new LinkedList();
- private List _remListeners = new LinkedList();
- private List _exceps = new LinkedList();
+ // odd-element: Listener even-element: Class[]
+ private List<Object> _addListeners = new LinkedList<Object>();
+ private List<Object> _remListeners = new LinkedList<Object>();
+ private List<Exception> _exceps = new LinkedList<Exception>();
private boolean _firing = false;
private boolean _fail = false;
private boolean _failFast = false;
@@ -82,7 +83,7 @@
* Register a lifecycle listener for the given classes. If the classes
* array is null, register for all classes.
*/
- public synchronized void addListener(Object listener, Class[] classes) {
+ public synchronized void addListener(Object listener, Class<?>[] classes) {
if (listener == null)
return;
if (classes != null && classes.length == 0)
@@ -101,7 +102,7 @@
}
if (_classListeners == null)
- _classListeners = new HashMap();
+ _classListeners = new HashMap<Class<?>, ListenerList>();
ListenerList listeners;
for (int i = 0; i < classes.length; i++) {
listeners = (ListenerList) _classListeners.get(classes[i]);
@@ -126,7 +127,7 @@
return;
if (_classListeners != null) {
ListenerList listeners;
- for (Iterator itr = _classListeners.values().iterator();
+ for (Iterator<ListenerList> itr =
_classListeners.values().iterator();
itr.hasNext();) {
listeners = (ListenerList) itr.next();
listeners.remove(listener);
@@ -236,16 +237,14 @@
ClassMetaData meta, int type) {
if (meta.getLifecycleMetaData().getIgnoreSystemListeners())
return false;
- if (fireEvent(null, source, null, type, _listeners, true, null)
- == Boolean.TRUE)
+ if (fireEvent(null, source, null, type, _listeners, true, null) ==
Boolean.TRUE)
return true;
ListenerList system = meta.getRepository().getSystemListeners();
if (!system.isEmpty() && fireEvent(null, source, null, type, system,
true, null) == Boolean.TRUE)
return true;
if (_classListeners != null) {
- Class c = source == null ? meta.getDescribedType() :
- source.getClass();
+ Class<?> c = source == null ? meta.getDescribedType() :
source.getClass();
do {
if (fireEvent(null, source, null, type, (ListenerList)
_classListeners.get(c), true, null) == Boolean.TRUE)
@@ -271,7 +270,7 @@
ClassMetaData meta, int type) {
boolean reentrant = _firing;
_firing = true;
- List exceptions = (reentrant) ? new LinkedList() : _exceps;
+ List<Exception> exceptions = (reentrant) ? new LinkedList<Exception>()
: _exceps;
MetaDataDefaults def = meta.getRepository().getMetaDataFactory().
getDefaults();
@@ -283,8 +282,7 @@
type, _listeners, false, exceptions);
if (_classListeners != null) {
- Class c = source == null ? meta.getDescribedType() :
- source.getClass();
+ Class<?> c = source == null ? meta.getDescribedType() :
source.getClass();
do {
ev = (LifecycleEvent) fireEvent(ev, source, related, type,
(ListenerList) _classListeners.get(c), false, exceptions);
@@ -315,10 +313,10 @@
_firing = false;
_fail = false;
if (!_addListeners.isEmpty())
- for (Iterator itr = _addListeners.iterator(); itr.hasNext();)
+ for (Iterator<Object> itr = _addListeners.iterator();
itr.hasNext();)
addListener(itr.next(), (Class[]) itr.next());
if (!_remListeners.isEmpty())
- for (Iterator itr = _remListeners.iterator(); itr.hasNext();)
+ for (Iterator<Object> itr = _remListeners.iterator();
itr.hasNext();)
removeListener(itr.next());
_addListeners.clear();
_remListeners.clear();
@@ -331,7 +329,7 @@
* Make callbacks, recording any exceptions in the given collection.
*/
private void makeCallbacks(Object source, Object related,
- ClassMetaData meta, int type, Collection exceptions) {
+ ClassMetaData meta, int type, Collection<Exception> exceptions) {
// make lifecycle callbacks
LifecycleCallbacks[] callbacks = meta.getLifecycleMetaData().
getCallbacks(type);
@@ -351,7 +349,7 @@
* listeners. The event may have already been constructed.
*/
private Object fireEvent(LifecycleEvent ev, Object source, Object rel,
- int type, ListenerList listeners, boolean mock, List exceptions) {
+ int type, ListenerList listeners, boolean mock, List<Exception>
exceptions) {
if (listeners == null || !listeners.hasListeners(type))
return null;
@@ -365,9 +363,9 @@
responds = ((ListenerAdapter) listener).respondsTo(type);
if (!responds)
continue;
- } else
+ } else {
responds = false;
-
+ }
try {
switch (type) {
case LifecycleEvent.BEFORE_CLEAR:
@@ -490,14 +488,12 @@
break;
case LifecycleEvent.AFTER_PERSIST_PERFORMED:
- if (responds || listener instanceof
PostPersistListener)
- {
+ if (responds || listener instanceof
PostPersistListener) {
if (mock)
return Boolean.TRUE;
if (ev == null)
ev = new LifecycleEvent(source, rel, type);
- ((PostPersistListener) listener)
- .afterPersistPerformed(ev);
+ ((PostPersistListener)
listener).afterPersistPerformed(ev);
}
break;
case LifecycleEvent.BEFORE_UPDATE:
@@ -510,8 +506,7 @@
if (type == LifecycleEvent.BEFORE_UPDATE)
((UpdateListener) listener).beforeUpdate(ev);
else
- ((UpdateListener) listener)
- .afterUpdatePerformed(ev);
+ ((UpdateListener)
listener).afterUpdatePerformed(ev);
}
break;
case LifecycleEvent.AFTER_DELETE_PERFORMED:
@@ -520,14 +515,11 @@
return Boolean.TRUE;
if (ev == null)
ev = new LifecycleEvent(source, rel, type);
- ((PostDeleteListener) listener)
- .afterDeletePerformed(ev);
+ ((PostDeleteListener)
listener).afterDeletePerformed(ev);
}
break;
default:
- throw new InvalidStateException(
- _loc.get("unknown-lifecycle-event",
- Integer.toString(type)));
+ throw new
InvalidStateException(_loc.get("unknown-lifecycle-event",
Integer.toString(type)));
}
}
catch (Exception e) {
@@ -558,8 +550,7 @@
* Extended list that tracks what event types its elements care about.
* Maintains set semantics as well.
*/
- public static class ListenerList
- extends ArrayList {
+ public static class ListenerList extends ArrayList<Object> {
private int _types = 0;