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 }