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  /* ------------------------------------------------------------ */
    20  /**
    21   * The lifecycle interface for generic components.
    22   * <br />
    23   * Classes implementing this interface have a defined life cycle
    24   * defined by the methods of this interface.
    25   *
    26   * @author Greg Wilkins (gregw)
    27   */
    28  public interface LifeCycle
    29  {
    30      /* ------------------------------------------------------------ */
    31      /**
    32       * Starts the component.
    33       * @throws Exception If the component fails to start
    34       * @see #isStarted()
    35       * @see #stop()
    36       * @see #isFailed()
    37       */
    38      public void start()
    39          throws Exception;
    40
    41      /* ------------------------------------------------------------ */
    42      /**
    43       * Stops the component.
    44       * The component may wait for current activities to complete
    45       * normally, but it can be interrupted.
    46       * @exception Exception If the component fails to stop
    47       * @see #isStopped()
    48       * @see #start()
    49       * @see #isFailed()
    50       */
    51      public void stop()
    52          throws Exception;
    53
    54      /* ------------------------------------------------------------ */
    55      /**
    56       * @return true if the component is starting or has been started.
    57       */
    58      public boolean isRunning();
    59
    60      /* ------------------------------------------------------------ */
    61      /**
    62       * @return true if the component has been started.
    63       * @see #start()
    64       * @see #isStarting()
    65       */
    66      public boolean isStarted();
    67
    68      /* ------------------------------------------------------------ */
    69      /**
    70       * @return true if the component is starting.
    71       * @see #isStarted()
    72       */
    73      public boolean isStarting();
    74
    75      /* ------------------------------------------------------------ */
    76      /**
    77       * @return true if the component is stopping.
    78       * @see #isStopped()
    79       */
    80      public boolean isStopping();
    81
    82      /* ------------------------------------------------------------ */
    83      /**
    84       * @return true if the component has been stopped.
    85       * @see #stop()
    86       * @see #isStopping()
    87       */
    88      public boolean isStopped();
    89
    90      /* ------------------------------------------------------------ */
    91      /**
    92       * @return true if the component has failed to start or has failed to stop.
    93       */
    94      public boolean isFailed();
    95
    96      /* ------------------------------------------------------------ */
    97      public void addLifeCycleListener(LifeCycle.Listener listener);
    98
    99      /* ------------------------------------------------------------ */
    100     public void removeLifeCycleListener(LifeCycle.Listener listener);
    101
    102
    103     /* ------------------------------------------------------------ */
    104     /** Listener.
    105      * A listener for Lifecycle events.
    106      */
    107     public interface Listener extends EventListener
    108     {
    109         public void lifeCycleStarting(LifeCycle event);
    110         public void lifeCycleStarted(LifeCycle event);
    111         public void lifeCycleFailure(LifeCycle event,Throwable cause);
    112         public void lifeCycleStopping(LifeCycle event);
    113         public void lifeCycleStopped(LifeCycle event);
    114     }
    115 }