001 package org.picocontainer.doc.introduction;
002
003 import junit.framework.TestCase;
004 import org.picocontainer.MutablePicoContainer;
005 import org.picocontainer.defaults.DefaultPicoContainer;
006 import org.picocontainer.defaults.UnsatisfiableDependenciesException;
007
008 /**
009 * @author Aslak Hellesøy
010 * @version $Revision: 1297 $
011 */
012 public class HierarchyTestCase extends TestCase {
013 public void testHierarchy() {
014 try {
015 // START SNIPPET: wontwork
016 // Create x hierarchy of containers
017 MutablePicoContainer x = new DefaultPicoContainer();
018 MutablePicoContainer y = new DefaultPicoContainer( x );
019 MutablePicoContainer z = new DefaultPicoContainer( x );
020
021 // Assemble components
022 x.registerComponentImplementation(Apple.class);
023 y.registerComponentImplementation(Juicer.class);
024 z.registerComponentImplementation(Peeler.class);
025
026 // Instantiate components
027 Peeler peeler = (Peeler) z.getComponentInstance(Peeler.class);
028 // WON'T WORK! peeler will be null
029 peeler = (Peeler) x.getComponentInstance(Peeler.class);
030 // WON'T WORK! This will throw an exception
031 Juicer juicer = (Juicer) y.getComponentInstance(Juicer.class);
032 // END SNIPPET: wontwork
033 } catch (UnsatisfiableDependenciesException e) {
034 // expected
035 }
036 }
037
038 }