View Javadoc

1   // ========================================================================
2   // Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
3   // ------------------------------------------------------------------------
4   // Licensed under the Apache License, Version 2.0 (the "License");
5   // you may not use this file except in compliance with the License.
6   // You may obtain a copy of the License at
7   // http://www.apache.org/licenses/LICENSE-2.0
8   // Unless required by applicable law or agreed to in writing, software
9   // distributed under the License is distributed on an "AS IS" BASIS,
10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11  // See the License for the specific language governing permissions and
12  // limitations under the License.
13  // ========================================================================
14  
15  package org.mortbay.component;
16  
17  import java.util.EventListener;
18  
19  import org.mortbay.util.LazyList;
20  
21  /* ------------------------------------------------------------ */
22  /**
23   * The lifecycle interface for generic components.
24   * <br />
25   * Classes implementing this interface have a defined life cycle
26   * defined by the methods of this interface.
27   *
28   * @author Greg Wilkins (gregw)
29   */
30  public interface LifeCycle
31  {
32      /* ------------------------------------------------------------ */
33      /**
34       * Starts the component.
35       * @throws Exception If the component fails to start
36       * @see #isStarted()
37       * @see #stop()
38       * @see #isFailed()
39       */
40      public void start()
41          throws Exception;
42  
43      /* ------------------------------------------------------------ */
44      /**
45       * Stops the component.
46       * The component may wait for current activities to complete
47       * normally, but it can be interrupted.
48       * @exception Exception If the component fails to stop
49       * @see #isStopped()
50       * @see #start()
51       * @see #isFailed()
52       */
53      public void stop()
54          throws Exception;
55  
56      /* ------------------------------------------------------------ */
57      /**
58       * @return true if the component is starting or has been started.
59       */
60      public boolean isRunning();
61  
62      /* ------------------------------------------------------------ */
63      /**
64       * @return true if the component has been started.
65       * @see #start()
66       * @see #isStarting()
67       */
68      public boolean isStarted();
69  
70      /* ------------------------------------------------------------ */
71      /**
72       * @return true if the component is starting.
73       * @see #isStarted()
74       */
75      public boolean isStarting();
76  
77      /* ------------------------------------------------------------ */
78      /**
79       * @return true if the component is stopping.
80       * @see #isStopped()
81       */
82      public boolean isStopping();
83  
84      /* ------------------------------------------------------------ */
85      /**
86       * @return true if the component has been stopped.
87       * @see #stop()
88       * @see #isStopping()
89       */
90      public boolean isStopped();
91  
92      /* ------------------------------------------------------------ */
93      /**
94       * @return true if the component has failed to start or has failed to stop.
95       */
96      public boolean isFailed();
97      
98      /* ------------------------------------------------------------ */
99      public void addLifeCycleListener(LifeCycle.Listener listener);
100 
101     /* ------------------------------------------------------------ */
102     public void removeLifeCycleListener(LifeCycle.Listener listener);
103     
104 
105     /* ------------------------------------------------------------ */
106     /** Listener.
107      * A listener for Lifecycle events.
108      */
109     public interface Listener extends EventListener
110     {
111         public void lifeCycleStarting(LifeCycle event);
112         public void lifeCycleStarted(LifeCycle event);
113         public void lifeCycleFailure(LifeCycle event,Throwable cause);
114         public void lifeCycleStopping(LifeCycle event);
115         public void lifeCycleStopped(LifeCycle event);
116     }
117 }