    001    /*****************************************************************************
    002     * Copyright (C) PicoContainer Organization. All rights reserved.            *
    003     * ------------------------------------------------------------------------- *
    004     * The software in this package is published under the terms of the BSD      *
    005     * style license a copy of which has been included with this distribution in *
    006     * the LICENSE.txt file.                                                     *
    007     *****************************************************************************/
    008    package org.picocontainer.lifecycle;
    009
    010    /**
    011     * Current lifecycle state of the container.
    012     * @author Michael Rimov
    013     * @author Paul Hammant
    014     */
    015    public interface LifecycleState {
    016
    017            /**
    018             * Lifecycle state for when a component is being removed.
    019             */
    020        void removingComponent();
    021
    022            /**
    023             * Start is normally allowed if the object is constructed or
    024             * already stopped.  It is not allowed if the system is already
    025             * started or disposed.
    026             * @return true if start lifecycle methods should be allowed.
    027             */
    028        void starting();
    029
    030        /**
    031         * Lifecycle state for when the container is being stopped.  (Ie, right after Picocontainer.stop()
    032         * has been called, but before any components are stopped.
    033         */
    034        void stopping();
    035
    036        /**
    037         * Lifecycle state for when stop has been completed.
    038         */
    039        void stopped();
    040
    041        /**
    042         * Checks if current lifecycle is started.
    043         * @return true if the current container state is STARTED.
    044         */
    045        boolean isStarted();
    046
    047        /**
    048         * Turns the lifecycle state to indicate that the dispose() process is being
    049         * executed on the container.
    050         */
    051        void disposing();
    052
    053        /**
    054         * Turns the lifecycle state to completely disposed.  Internally called after PicoContainer.dispose()
    055         * is finished.
    056         */
    057        void disposed();
    058
    059        /**
    060         * Checks if the current lifecycle is disposed.
    061         * @return true if the current state is DISPOSED.
    062         */
    063        boolean isDisposed();
    064
    065        /**
    066         * Checks if the current lifecyle is stopped.
    067         * @return true if the current state is STOPPED;
    068         * @return
    069         */
    070        boolean isStopped();
    071    }