    001    /*****************************************************************************
    002     * Copyright (C) NanoContainer 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     *****************************************************************************/
    009    package org.nanocontainer.integrationkit;
    010
    011    import org.picocontainer.defaults.ObjectReference;
    012
    013    /**
    014     * The responsibility of a ContainerBuilder is to <em>instantiate</em> and <em>compose</em> containers.
    015     * (Composition means assembly (registration) and configuration (setting primitive parameters) of
    016     * components).
    017     *
    018     * @author <a href="mailto:joe@thoughtworks.net">Joe Walnes</a>
    019     */
    020    public interface ContainerBuilder {
    021
    022        /**
    023         * Create, assemble, init and start a new PicoContainer and store it
    024         * at a given reference.
    025         *
    026         * @param containerRef       Where to store the new container.
    027         * @param parentContainerRef reference to a container that may be used as a parent to the new container (may be null).
    028         * @param compositionScope   Hint about the scope for composition.
    029         */
    030        void buildContainer(ObjectReference containerRef, ObjectReference parentContainerRef, Object compositionScope, boolean addChildToParent);
    031
    032        /**
    033         * Locate a container at the given reference so it can be stopped,
    034         * destroyed and removed.
    035         *
    036         * @param containerRef Where the container is stored.
    037         */
    038        void killContainer(ObjectReference containerRef);
    039
    040    }
    041