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.classname;
009
010 import org.picocontainer.MutablePicoContainer;
011 import org.picocontainer.PicoContainer;
012 import org.picocontainer.classname.ClassPathElement;
013
014 import java.net.URL;
015
016 /**
017 * A ClassLoadingPicoContainer extends PicoContainer with classloader juggling capability
018 *
019 * @author Paul Hammant
020 * @author Aslak Hellesøy
021 */
022 public interface ClassLoadingPicoContainer extends MutablePicoContainer {
023
024 /**
025 * Adds a new URL that will be used in classloading
026 *
027 * @param url url of the jar to find components in.
028 * @return ClassPathElement to add permissions to (subject to security
029 * policy)
030 */
031 ClassPathElement addClassLoaderURL(URL url);
032
033 /**
034 * Returns class loader that is the aggregate of the URLs added.
035 *
036 * @return A ClassLoader
037 */
038 ClassLoader getComponentClassLoader();
039
040 /**
041 * Make a child container with a given name
042 *
043 * @param name the container name
044 * @return The ScriptedPicoContainer
045 */
046 ClassLoadingPicoContainer makeChildContainer(String name);
047
048 /**
049 * Addes a child container with a given name
050 *
051 * @param name the container name
052 * @param child the child PicoContainer
053 */
054 ClassLoadingPicoContainer addChildContainer(String name, PicoContainer child);
055
056 }