This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new b510524  Move ADD_CHILD_EVENT to before the optional container start
b510524 is described below

commit b51052483ec3687c6b4db05288d7546d8431eaf0
Author: remm <r...@apache.org>
AuthorDate: Wed May 29 09:45:54 2019 +0200

    Move ADD_CHILD_EVENT to before the optional container start
    
    Since child start is optional and may be delayed, container listeners
    already had to handle this situation (and the mapper indeed does). As
    the (correct) sequence is now add to collection -> add_child_event ->
    start, on stop it is updated to stop -> remove_child_event -> remove
    from collection (for consistency, in practice it is unlikely to make any
    difference.
    Revert the addition of two container events.
    Thanks Mark for the review and the comment.
---
 java/org/apache/catalina/Container.java              | 14 --------------
 java/org/apache/catalina/core/ContainerBase.java     | 13 ++++++-------
 java/org/apache/catalina/core/FrameworkListener.java |  4 ++--
 webapps/docs/changelog.xml                           |  7 ++++---
 4 files changed, 12 insertions(+), 26 deletions(-)

diff --git a/java/org/apache/catalina/Container.java 
b/java/org/apache/catalina/Container.java
index 0b30247..177b2d2 100644
--- a/java/org/apache/catalina/Container.java
+++ b/java/org/apache/catalina/Container.java
@@ -84,13 +84,6 @@ public interface Container extends Lifecycle {
 
     /**
      * The ContainerEvent event type sent when a child container is added
-     * by <code>addChild()</code>, but before it is started.
-     */
-    public static final String ADD_CHILD_BEFORE_START_EVENT = 
"addChildBeforeStart";
-
-
-    /**
-     * The ContainerEvent event type sent when a child container is added
      * by <code>addChild()</code>.
      */
     public static final String ADD_CHILD_EVENT = "addChild";
@@ -105,13 +98,6 @@ public interface Container extends Lifecycle {
 
     /**
      * The ContainerEvent event type sent when a child container is removed
-     * by <code>removeChild()</code>, but before it is stopped.
-     */
-    public static final String REMOVE_CHILD_BEFORE_STOP_EVENT = 
"removeChildBeforeStop";
-
-
-    /**
-     * The ContainerEvent event type sent when a child container is removed
      * by <code>removeChild()</code>.
      */
     public static final String REMOVE_CHILD_EVENT = "removeChild";
diff --git a/java/org/apache/catalina/core/ContainerBase.java 
b/java/org/apache/catalina/core/ContainerBase.java
index f3a3011..8bbfaf8 100644
--- a/java/org/apache/catalina/core/ContainerBase.java
+++ b/java/org/apache/catalina/core/ContainerBase.java
@@ -693,8 +693,10 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase
 
     private void addChildInternal(Container child) {
 
-        if( log.isDebugEnabled() )
+        if (log.isDebugEnabled()) {
             log.debug("Add child " + child + " " + this);
+        }
+
         synchronized(children) {
             if (children.get(child.getName()) != null)
                 throw new IllegalArgumentException(
@@ -703,7 +705,7 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase
             children.put(child.getName(), child);
         }
 
-        fireContainerEvent(ADD_CHILD_BEFORE_START_EVENT, child);
+        fireContainerEvent(ADD_CHILD_EVENT, child);
 
         // Start child
         // Don't do this inside sync block - start can be a slow process and
@@ -716,8 +718,6 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase
             }
         } catch (LifecycleException e) {
             throw new 
IllegalStateException(sm.getString("containerBase.child.start"), e);
-        } finally {
-            fireContainerEvent(ADD_CHILD_EVENT, child);
         }
     }
 
@@ -800,8 +800,6 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase
             return;
         }
 
-        fireContainerEvent(REMOVE_CHILD_BEFORE_STOP_EVENT, child);
-
         try {
             if (child.getState().isAvailable()) {
                 child.stop();
@@ -821,13 +819,14 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase
             log.error(sm.getString("containerBase.child.destroy"), e);
         }
 
+        fireContainerEvent(REMOVE_CHILD_EVENT, child);
+
         synchronized(children) {
             if (children.get(child.getName()) == null)
                 return;
             children.remove(child.getName());
         }
 
-        fireContainerEvent(REMOVE_CHILD_EVENT, child);
     }
 
 
diff --git a/java/org/apache/catalina/core/FrameworkListener.java 
b/java/org/apache/catalina/core/FrameworkListener.java
index 4b8234b..6e1944d 100644
--- a/java/org/apache/catalina/core/FrameworkListener.java
+++ b/java/org/apache/catalina/core/FrameworkListener.java
@@ -56,9 +56,9 @@ public abstract class FrameworkListener implements 
LifecycleListener, ContainerL
     @Override
     public void containerEvent(ContainerEvent event) {
         String type = event.getType();
-        if (Container.ADD_CHILD_BEFORE_START_EVENT.equals(type)) {
+        if (Container.ADD_CHILD_EVENT.equals(type)) {
             processContainerAddChild((Container) event.getData());
-        } else if (Container.REMOVE_CHILD_BEFORE_STOP_EVENT.equals(type)) {
+        } else if (Container.REMOVE_CHILD_EVENT.equals(type)) {
             processContainerRemoveChild((Container) event.getData());
         }
     }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 0e40e52..fe4e7b4 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -86,9 +86,10 @@
         way. (remm)
       </scode>
       <scode>
-        Add <code>Container.ADD_CHILD_BEFORE_START_EVENT</code> and
-        <code>Container.REMOVE_CHILD_BEFORE_STOP_EVENT</code> to allow
-        configuration of containers before a possible lifecycle event. (remm)
+        Move <code>Container.ADD_CHILD_EVENT</code> to before the child
+        container start, and <code>Container.REMOVE_CHILD_EVENT</code> to
+        before removal of the child from the internal child collection.
+        (remm)
       </scode>
     </changelog>
   </subsection>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to