001 /******************************************************************************* 002 * Copyright (C) PicoContainer Organization. All rights reserved. 003 * ---------------------------------------------------------------------------- 004 * The software in this package is published under the terms of the BSD style 005 * license a copy of which has been included with this distribution in the 006 * LICENSE.txt file. 007 ******************************************************************************/ 008 package org.picocontainer.script; 009 010 import org.picocontainer.PicoContainer; 011 012 /** 013 * The responsibility of a ContainerBuilder is to build containers. Composition 014 * of containers is generally a separate reponsibility, although the some 015 * builders may make use of the assembly scope. 016 * 017 * @author Joe Walnes 018 * @author Mauro Talevi 019 */ 020 public interface ContainerBuilder { 021 022 /** 023 * Builds a new container 024 * 025 * @param parentContainer the parent PicoContainer (may be <code>null</code>). 026 * @param assemblyScope a hint about the assembly scope (may be 027 * <code>null</code>) 028 * @param addChildToParent boolean flag, <code>true</code> if the child is 029 * to be added to the parent 030 * @return A PicoContainer 031 */ 032 PicoContainer buildContainer(PicoContainer parentContainer, Object assemblyScope, boolean addChildToParent); 033 034 /** 035 * Destroys a container. 036 * 037 * @param container the PicoContainer to be killed 038 */ 039 void killContainer(PicoContainer container); 040 041 }