Author: nfilotto
Date: 2010-09-01 06:23:32 -0400 (Wed, 01 Sep 2010)
New Revision: 3041
Modified:
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/listener/ListenerService.java
Log:
EXOJCR-934: Decouple event name from listener name in ListenerService.
Modified:
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/listener/ListenerService.java
===================================================================
---
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/listener/ListenerService.java 2010-09-01
10:20:09 UTC (rev 3040)
+++
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/listener/ListenerService.java 2010-09-01
10:23:32 UTC (rev 3041)
@@ -44,9 +44,9 @@
/**
* Listeners by name map.
*/
- private Map<String, List<Listener>> listeners_;
+ private final Map<String, List<Listener>> listeners_;
- private static Log log =
ExoLogger.getLogger("exo.kernel.component.common.ListenerService");
+ private static final Log log =
ExoLogger.getLogger("exo.kernel.component.common.ListenerService");
/**
* Construct a listener service.
@@ -77,15 +77,33 @@
}
/**
- * This method is used to register a listener with the service. The method
- * should: 1. Check to see if there is a list of listener with the listener
- * name, create one if the listener list doesn't exit 2. Add the new listener
- * to the listener list.
+ * This method is used to register a {@link Listener} to the events of the same
+ * name. It is similar to addListener(listener.getName(), listener)
*
- * @param listener
+ * @param listener the listener to notify any time an even of the same name is
+ * triggered
*/
public void addListener(Listener listener)
{
+ addListener(listener.getName(), listener);
+ }
+
+ /**
+ * This method is used to register a new {@link Listener}. Any time an
+ * event of the given event name has been triggered, the {@link Listener} will be
+ * notified.
+ * This method will:
+ * <ol>
+ * <li>Check if it exists a list of listeners that have been registered for the
+ * given event name, create a new list if no list exists</li>
+ * <li>Add the listener to the list</li>
+ * </ol>
+ * @param eventName The name of the event to listen to
+ * @param listener The Listener to notify any time the event with the given
+ * name is triggered
+ */
+ public void addListener(String eventName, Listener listener)
+ {
// Check is Listener or its superclass asynchronous, if so - wrap it in
AsynchronousListener.
Class listenerClass = listener.getClass();
@@ -103,28 +121,16 @@
}
while (listenerClass != null);
- String name = listener.getName();
- List<Listener> list = listeners_.get(name);
+ List<Listener> list = listeners_.get(eventName);
if (list == null)
{
list = new ArrayList<Listener>();
- listeners_.put(name, list);
+ listeners_.put(eventName, list);
}
list.add(listener);
}
/**
- * @deprecated use the Listener name as the event name
- * @param eventName
- * @param listener
- */
- public void addListener(String eventName, Listener listener)
- {
- listener.setName(eventName);
- addListener(listener);
- }
-
- /**
* This method is used to broadcast an event. This method should: 1. Check if
* there is a list of listener that listen to the event name. 2. If there is a
* list of listener, create the event object with the given name , source and
Show replies by date