    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;
    009
    010    /**
    011     * An interface which specifies the lifecycle strategy on the component instance.
    012     * Lifecycle strategies are used by component adapters to delegate the lifecycle
    013     * operations on the component instances.
    014     *
    015     * @author Paul Hammant
    016     * @author Peter Royal
    017     * @author J&ouml;rg Schaible
    018     * @author Mauro Talevi
    019     * @see org.picocontainer.Startable
    020     * @see org.picocontainer.Disposable
    021     */
    022    public interface LifecycleStrategy {
    023
    024        /**
    025         * Invoke the "start" method on the component instance if this is startable.
    026         * It is up to the implementation of the strategy what "start" and "startable" means.
    027         *
    028         * @param component the instance of the component to start
    029         */
    030        void start(Object component);
    031
    032        /**
    033         * Invoke the "stop" method on the component instance if this is stoppable.
    034         * It is up to the implementation of the strategy what "stop" and "stoppable" means.
    035         *
    036         * @param component the instance of the component to stop
    037         */
    038        void stop(Object component);
    039
    040        /**
    041         * Invoke the "dispose" method on the component instance if this is disposable.
    042         * It is up to the implementation of the strategy what "dispose" and "disposable" means.
    043         *
    044         * @param component the instance of the component to dispose
    045         */
    046        void dispose(Object component);
    047
    048        /**
    049         * Test if a component instance has a lifecycle.
    050         * @param type the component's type
    051         *
    052         * @return <code>true</code> if the component has a lifecycle
    053         */
    054        boolean hasLifecycle(Class<?> type);
    055
    056    }