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 }