You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/08/01 22:55:49 UTC
cvs commit: jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/util LifecycleSupport.java
craigmcc 00/08/01 13:55:48
Modified: proposals/catalina/src/share/org/apache/tomcat/util
LifecycleSupport.java
Log:
Tune behavior of lifecycle event support by eliminating the need for any
collection classes.
Revision Changes Path
1.2 +37 -13 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/util/LifecycleSupport.java
Index: LifecycleSupport.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/util/LifecycleSupport.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LifecycleSupport.java 2000/04/10 20:01:40 1.1
+++ LifecycleSupport.java 2000/08/01 20:55:46 1.2
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/util/LifecycleSupport.java,v 1.1 2000/04/10 20:01:40 craigmcc Exp $
- * $Revision: 1.1 $
- * $Date: 2000/04/10 20:01:40 $
+ * $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/util/LifecycleSupport.java,v 1.2 2000/08/01 20:55:46 craigmcc Exp $
+ * $Revision: 1.2 $
+ * $Date: 2000/08/01 20:55:46 $
*
* ====================================================================
*
@@ -65,7 +65,6 @@
package org.apache.tomcat.util;
-import java.util.Vector;
import org.apache.tomcat.Lifecycle;
import org.apache.tomcat.LifecycleEvent;
import org.apache.tomcat.LifecycleListener;
@@ -76,7 +75,7 @@
* registered LifecycleListeners.
*
* @author Craig R. McClanahan
- * @version $Id: LifecycleSupport.java,v 1.1 2000/04/10 20:01:40 craigmcc Exp $
+ * @version $Id: LifecycleSupport.java,v 1.2 2000/08/01 20:55:46 craigmcc Exp $
*/
public final class LifecycleSupport {
@@ -112,7 +111,7 @@
/**
* The set of registered LifecycleListeners for event notifications.
*/
- private Vector listeners = new Vector();
+ private LifecycleListener listeners[] = new LifecycleListener[0];
// --------------------------------------------------------- Public Methods
@@ -125,7 +124,14 @@
*/
public void addLifecycleListener(LifecycleListener listener) {
- listeners.addElement(listener);
+ synchronized (listeners) {
+ LifecycleListener results[] =
+ new LifecycleListener[listeners.length + 1];
+ for (int i = 0; i < listeners.length; i++)
+ results[i] = listeners[i];
+ results[listeners.length] = listener;
+ listeners = results;
+ }
}
@@ -141,12 +147,12 @@
public void fireLifecycleEvent(String type, Object data) {
LifecycleEvent event = new LifecycleEvent(lifecycle, type, data);
- Vector list = null;
- synchronized (this) {
- list = (Vector) listeners.clone();
+ LifecycleListener interested[] = null;
+ synchronized (listeners) {
+ interested = (LifecycleListener[]) listeners.clone();
}
- for (int i = 0; i < list.size(); i++)
- ((LifecycleListener) list.elementAt(i)).lifecycleEvent(event);
+ for (int i = 0; i < interested.length; i++)
+ interested[i].lifecycleEvent(event);
}
@@ -158,7 +164,25 @@
*/
public void removeLifecycleListener(LifecycleListener listener) {
- listeners.removeElement(listener);
+ synchronized (listeners) {
+ int n = -1;
+ for (int i = 0; i < listeners.length; i++) {
+ if (listeners[i] == listener) {
+ n = i;
+ break;
+ }
+ }
+ if (n < 0)
+ return;
+ LifecycleListener results[] =
+ new LifecycleListener[listeners.length - 1];
+ int j = 0;
+ for (int i = 0; i < listeners.length; i++) {
+ if (i != n)
+ results[j++] = listeners[i];
+ }
+ listeners = results;
+ }
}