Allow the transition from NEW to DESTROYED for objects that are never started.
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 10 May 2010 15:41:58 +0000 (15:41 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 10 May 2010 15:41:58 +0000 (15:41 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@942794 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/Lifecycle.java
java/org/apache/catalina/util/LifecycleBase.java

index 70ef9e8..6bd2681 100644 (file)
@@ -31,25 +31,29 @@ package org.apache.catalina;
  *                                  |                                          |
  *    init()           start()      |        auto          auto         stop() |
  * NEW ->-- INITIALIZED -->-- STARTING_PREP -->- STARTING -->- STARTED -->---  |
- * | |                              ^                             |         |  |
- * | |        start()               |                             |         |  |
- * | ----------->--------------------                             |         |  |
- * |                                                              |         |  |
- * |                   auto                    auto               |         |  |
- * |stop()       ---------<----- MUST_STOP ---------------------<--         |  |
- * |             |                                                          |  |
- * |             ---------------------------<--------------------------------  ^
- * |             |                                                             |
- * |             |             auto                 auto              start()  |
- * |        STOPPING_PREP ------>----- STOPPING ------>----- STOPPED ---->------
- * |             ^                                           |  |  ^
- * |             |                                  auto     |  |  |
- * |             |stop()            MUST_DESTROY------<-------  |  |
- * |             |                    |                         |  |
- * |             |                    |auto                     |  |
- * |             |    destroy()      \|/              destroy() |  |
- * |          FAILED ---->------ DESTROYED ----<-----------------  |
+ * |||                              ^                             |         |  |
+ * |||        start()               |                             |         |  |
+ * ||----------->--------------------                             |         |  |
+ * ||                                                             |         |  |
+ * |---                auto                    auto               |         |  |
+ * |  |          ---------<----- MUST_STOP ---------------------<--         |  |
+ * |  |          |                                                          |  |
+ * |  |          ---------------------------<--------------------------------  ^
+ * |  |          |                                                             |
+ * |  |          |             auto                 auto              start()  |
+ * |  |     STOPPING_PREP ------>----- STOPPING ------>----- STOPPED ---->------
+ * |  |          ^                                           |  |  ^
+ * |  |          |                                  auto     |  |  |
+ * |  |          |stop()            MUST_DESTROY------<-------  |  |
+ * |  |          |                    |                         |  |
+ * |  |          |                    |auto                     |  |
+ * |  |          |    destroy()      \|/              destroy() |  |
+ * |  |       FAILED ---->------ DESTROYED ----<-----------------  |
+ * |  |                             ^                              |
+ * |  |        destroy()            |                              |
+ * |  -------------------------------                              |
  * |                                                               |
+ * |                            stop()                             |
  * --->------------------------------>------------------------------
  *   
  * Any state can transition to FAILED.
index 670cf02..c0cef3b 100644 (file)
@@ -255,7 +255,8 @@ public abstract class LifecycleBase implements Lifecycle {
         }
         
         if (!state.equals(LifecycleState.STOPPED) &&
-                !state.equals(LifecycleState.FAILED)) {
+                !state.equals(LifecycleState.FAILED) &&
+                !state.equals(LifecycleState.NEW)) {
             invalidTransition(Lifecycle.DESTROY_EVENT);
         }