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     * Original code by Paul Hammant                                             *
009     *****************************************************************************/
010    
011    package org.picocontainer;
012    
013    /**
014     * A manager for the lifecycle of a container's components.  
015     * The lifecycle manager is implemented by the component adapters
016     * which will resolve the dependencies of the component instance and 
017     * delegate the implementation of the lifecycle control to the 
018     * {@link org.picocontainer.defaults.LifecycleStrategy lifecycle strategy}.
019     * 
020     * @author Paul Hammant
021     * @author Jörg Schaible
022     * @author Mauro Talevi
023     * @version $Revision: 2631 $
024     * @see org.picocontainer.defaults.LifecycleStrategy 
025     * @since 1.2
026     */
027    public interface LifecycleManager {
028    
029        /**
030         * Invoke the "start" method on the container's components. 
031         * @param container the container to "start" its components' lifecycle
032         */
033        void start(PicoContainer container);
034    
035        /**
036         * Invoke the "stop" method on the container's components. 
037         * @param container the container to "stop" its components' lifecycle
038         */
039        void stop(PicoContainer container);
040    
041        /**
042         * Invoke the "dispose" method on the container's components. 
043         * @param container the container to "dispose" its components' lifecycle
044         */
045        void dispose(PicoContainer container);
046    
047        /**
048         * Test if a container's component has a lifecycle.
049         * @return <code>true</code> if the component has a lifecycle
050         */
051        boolean hasLifecycle();
052    }