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