craigmcc 00/11/02 16:21:17
Modified: catalina/src/share/org/apache/catalina/core
ApplicationContext.java ContainerBase.java
StandardContext.java
catalina/src/share/org/apache/catalina/session
StandardSession.java
Log:
Extend the set of container events to include notification before and
after instances of application event listeners are invoked. In each case,
the listener instance is passed as the data object associated with this
event.
Revision Changes Path
1.8 +33 -12
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
Index: ApplicationContext.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ApplicationContext.java 2000/10/21 13:39:52 1.7
+++ ApplicationContext.java 2000/11/03 00:21:15 1.8
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
1.7 2000/10/21 13:39:52 craigmcc Exp $
- * $Revision: 1.7 $
- * $Date: 2000/10/21 13:39:52 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
1.8 2000/11/03 00:21:15 craigmcc Exp $
+ * $Revision: 1.8 $
+ * $Date: 2000/11/03 00:21:15 $
*
* ====================================================================
*
@@ -100,7 +100,7 @@
* associated with each instance of <code>StandardContext</code>.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.7 $ $Date: 2000/10/21 13:39:52 $
+ * @version $Revision: 1.8 $ $Date: 2000/11/03 00:21:15 $
*/
public final class ApplicationContext
@@ -582,7 +582,7 @@
// Notify interested application event listeners
// FIXME - Assumes we notify even if the attribute was not there?
Object listeners[] = context.getApplicationListeners();
- if (listeners == null)
+ if ((listeners == null) || (listeners.length == 0))
return;
ServletContextAttributeEvent event =
new ServletContextAttributeEvent(context.getServletContext(),
@@ -590,11 +590,17 @@
for (int i = 0; i < listeners.length; i++) {
if (!(listeners[i] instanceof ServletContextAttributesListener))
continue;
+ ServletContextAttributesListener listener =
+ (ServletContextAttributesListener) listeners[i];
try {
- ServletContextAttributesListener listener =
- (ServletContextAttributesListener) listeners[i];
+ context.fireContainerEvent("beforeContextAttributeRemoved",
+ listener);
listener.attributeRemoved(event);
+ context.fireContainerEvent("afterContextAttributeRemoved",
+ listener);
} catch (Throwable t) {
+ context.fireContainerEvent("afterContextAttributeRemoved",
+ listener);
// FIXME - should we do anything besides log these?
log(sm.getString("applicationContext.attributeEvent"), t);
}
@@ -623,7 +629,7 @@
// Notify interested application event listeners
Object listeners[] = context.getApplicationListeners();
- if (listeners == null)
+ if ((listeners == null) || (listeners.length == 0))
return;
ServletContextAttributeEvent event =
new ServletContextAttributeEvent(context.getServletContext(),
@@ -631,14 +637,29 @@
for (int i = 0; i < listeners.length; i++) {
if (!(listeners[i] instanceof ServletContextAttributesListener))
continue;
+ ServletContextAttributesListener listener =
+ (ServletContextAttributesListener) listeners[i];
try {
- ServletContextAttributesListener listener =
- (ServletContextAttributesListener) listeners[i];
- if (replaced)
+ if (replaced) {
+ context.fireContainerEvent("beforeContextAttributeReplaced",
+ listener);
listener.attributeReplaced(event);
- else
+ context.fireContainerEvent("afterContextAttributeReplaced",
+ listener);
+ } else {
+ context.fireContainerEvent("beforeContextAttributeAdded",
+ listener);
listener.attributeAdded(event);
+ context.fireContainerEvent("afterContextAttributeAdded",
+ listener);
+ }
} catch (Throwable t) {
+ if (replaced)
+ context.fireContainerEvent("afterContextAttributeReplaced",
+ listener);
+ else
+ context.fireContainerEvent("afterContextAttributeAdded",
+ listener);
// FIXME - should we do anything besides log these?
log(sm.getString("applicationContext.attributeEvent"), t);
}
1.5 +7 -5
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java
Index: ContainerBase.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ContainerBase.java 2000/09/30 19:15:45 1.4
+++ ContainerBase.java 2000/11/03 00:21:15 1.5
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
1.4 2000/09/30 19:15:45 craigmcc Exp $
- * $Revision: 1.4 $
- * $Date: 2000/09/30 19:15:45 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
1.5 2000/11/03 00:21:15 craigmcc Exp $
+ * $Revision: 1.5 $
+ * $Date: 2000/11/03 00:21:15 $
*
* ====================================================================
*
@@ -150,7 +150,7 @@
* class comments of the implementation class.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.4 $ $Date: 2000/09/30 19:15:45 $
+ * @version $Revision: 1.5 $ $Date: 2000/11/03 00:21:15 $
*/
public abstract class ContainerBase
@@ -1385,8 +1385,10 @@
* @param type Event type
* @param data Event data
*/
- protected void fireContainerEvent(String type, Object data) {
+ public void fireContainerEvent(String type, Object data) {
+ if (listeners.size() < 1)
+ return;
ContainerEvent event = new ContainerEvent(this, type, data);
ContainerListener list[] = new ContainerListener[0];
synchronized (listeners) {
1.26 +14 -8
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java
Index: StandardContext.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- StandardContext.java 2000/11/02 06:14:09 1.25
+++ StandardContext.java 2000/11/03 00:21:15 1.26
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
1.25 2000/11/02 06:14:09 remm Exp $
- * $Revision: 1.25 $
- * $Date: 2000/11/02 06:14:09 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
1.26 2000/11/03 00:21:15 craigmcc Exp $
+ * $Revision: 1.26 $
+ * $Date: 2000/11/03 00:21:15 $
*
* ====================================================================
*
@@ -127,7 +127,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.25 $ $Date: 2000/11/02 06:14:09 $
+ * @version $Revision: 1.26 $ $Date: 2000/11/03 00:21:15 $
*/
public final class StandardContext
@@ -2686,11 +2686,14 @@
continue;
if (!(instances[i] instanceof ServletContextListener))
continue;
+ ServletContextListener listener =
+ (ServletContextListener) instances[i];
try {
- ServletContextListener listener =
- (ServletContextListener) instances[i];
+ fireContainerEvent("beforeContextInitialized", listener);
listener.contextInitialized(event);
+ fireContainerEvent("afterContextInitialized", listener);
} catch (Throwable t) {
+ fireContainerEvent("afterContextInitialized", listener);
log(sm.getString("standardContext.listenerStart",
instances[i].getClass().getName()), t);
ok = false;
@@ -2723,11 +2726,14 @@
continue;
if (!(listeners[j] instanceof ServletContextListener))
continue;
+ ServletContextListener listener =
+ (ServletContextListener) listeners[j];
try {
- ServletContextListener listener =
- (ServletContextListener) listeners[j];
+ fireContainerEvent("beforeContextDestroyed", listener);
listener.contextDestroyed(event);
+ fireContainerEvent("beforeContextDestroyed", listener);
} catch (Throwable t) {
+ fireContainerEvent("beforeContextDestroyed", listener);
log(sm.getString("standardContext.listenerStop",
listeners[j].getClass().getName()), t);
ok = false;
1.8 +52 -18
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java
Index: StandardSession.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- StandardSession.java 2000/10/18 18:15:54 1.7
+++ StandardSession.java 2000/11/03 00:21:17 1.8
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
1.7 2000/10/18 18:15:54 craigmcc Exp $
- * $Revision: 1.7 $
- * $Date: 2000/10/18 18:15:54 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
1.8 2000/11/03 00:21:17 craigmcc Exp $
+ * $Revision: 1.8 $
+ * $Date: 2000/11/03 00:21:17 $
*
* ====================================================================
*
@@ -86,6 +86,7 @@
import org.apache.catalina.Context;
import org.apache.catalina.Manager;
import org.apache.catalina.Session;
+import org.apache.catalina.core.StandardContext;
import org.apache.catalina.util.Enumerator;
import org.apache.catalina.util.StringManager;
@@ -108,7 +109,7 @@
* @author Craig R. McClanahan
* @author Sean Legassick
* @author <a href="mailto:[EMAIL PROTECTED]">Jon S. Stevens</a>
- * @version $Revision: 1.7 $ $Date: 2000/10/18 18:15:54 $
+ * @version $Revision: 1.8 $ $Date: 2000/11/03 00:21:17 $
*/
final class StandardSession
@@ -311,7 +312,7 @@
((ManagerBase) manager).add(this);
// Notify interested application event listeners
- Context context = (Context) manager.getContainer();
+ StandardContext context = (StandardContext) manager.getContainer();
Object listeners[] = context.getApplicationListeners();
if (listeners != null) {
HttpSessionEvent event =
@@ -319,11 +320,17 @@
for (int i = 0; i < listeners.length; i++) {
if (!(listeners[i] instanceof HttpSessionListener))
continue;
+ HttpSessionListener listener =
+ (HttpSessionListener) listeners[i];
try {
- HttpSessionListener listener =
- (HttpSessionListener) listeners[i];
+ context.fireContainerEvent("beforeSessionCreated",
+ listener);
listener.sessionCreated(event);
+ context.fireContainerEvent("afterSessionCreated",
+ listener);
} catch (Throwable t) {
+ context.fireContainerEvent("afterSessionCreated",
+ listener);
// FIXME - should we do anything besides log these?
log(sm.getString("standardSession.sessionEvent"), t);
}
@@ -494,7 +501,7 @@
// Notify interested application event listeners
// FIXME - Assumes we call listeners in reverse order
- Context context = (Context) manager.getContainer();
+ StandardContext context = (StandardContext) manager.getContainer();
Object listeners[] = context.getApplicationListeners();
if (listeners != null) {
HttpSessionEvent event =
@@ -503,11 +510,17 @@
int j = (listeners.length - 1) - i;
if (!(listeners[j] instanceof HttpSessionListener))
continue;
+ HttpSessionListener listener =
+ (HttpSessionListener) listeners[j];
try {
- HttpSessionListener listener =
- (HttpSessionListener) listeners[j];
+ context.fireContainerEvent("beforeSessionDestroyed",
+ listener);
listener.sessionDestroyed(event);
+ context.fireContainerEvent("afterSessionDestroyed",
+ listener);
} catch (Throwable t) {
+ context.fireContainerEvent("afterSessionDestroyed",
+ listener);
// FIXME - should we do anything besides log these?
log(sm.getString("standardSession.sessionEvent"), t);
}
@@ -854,18 +867,24 @@
// Notify interested application event listeners
// FIXME - Assumes we notify even if the attribute was not there?
- Context context = (Context) manager.getContainer();
+ StandardContext context = (StandardContext) manager.getContainer();
Object listeners[] = context.getApplicationListeners();
if (listeners == null)
return;
for (int i = 0; i < listeners.length; i++) {
if (!(listeners[i] instanceof HttpSessionAttributesListener))
continue;
+ HttpSessionAttributesListener listener =
+ (HttpSessionAttributesListener) listeners[i];
try {
- HttpSessionAttributesListener listener =
- (HttpSessionAttributesListener) listeners[i];
+ context.fireContainerEvent("beforeSessionAttributeRemoved",
+ listener);
listener.attributeRemoved(event);
+ context.fireContainerEvent("afterSessionAttributeRemoved",
+ listener);
} catch (Throwable t) {
+ context.fireContainerEvent("afterSessionAttributeRemoved",
+ listener);
// FIXME - should we do anything besides log these?
log(sm.getString("standardSession.attributeEvent"), t);
}
@@ -947,21 +966,36 @@
((HttpSessionBindingListener) value).valueBound(event);
// Notify interested application event listeners
- Context context = (Context) manager.getContainer();
+ StandardContext context = (StandardContext) manager.getContainer();
Object listeners[] = context.getApplicationListeners();
if (listeners == null)
return;
for (int i = 0; i < listeners.length; i++) {
if (!(listeners[i] instanceof HttpSessionAttributesListener))
continue;
+ HttpSessionAttributesListener listener =
+ (HttpSessionAttributesListener) listeners[i];
try {
- HttpSessionAttributesListener listener =
- (HttpSessionAttributesListener) listeners[i];
- if (unbound != null)
+ if (unbound != null) {
+ context.fireContainerEvent("beforeSessionAttributeReplaced",
+ listener);
listener.attributeReplaced(event);
- else
+ context.fireContainerEvent("afterSessionAttributeReplaced",
+ listener);
+ } else {
+ context.fireContainerEvent("beforeSessionAttributeAdded",
+ listener);
listener.attributeAdded(event);
+ context.fireContainerEvent("afterSessionAttributeAdded",
+ listener);
+ }
} catch (Throwable t) {
+ if (unbound != null)
+ context.fireContainerEvent("afterSessionAttributeReplaced",
+ listener);
+ else
+ context.fireContainerEvent("afterSessionAttributeAdded",
+ listener);
// FIXME - should we do anything besides log these?
log(sm.getString("standardSession.attributeEvent"), t);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]