001 package org.picocontainer.defaults.issues; 002 import org.picocontainer.MutablePicoContainer; 003 import org.picocontainer.PicoInitializationException; 004 import org.picocontainer.defaults.DefaultPicoContainer; 005 006 import junit.framework.TestCase; 007 008 /** 009 * Test case for issue http://jira.codehaus.org/browse/PICO-280 010 */ 011 public class Issue0280TestCase extends TestCase 012 { 013 public void testShouldFailIfInstantiationInChildContainerFails() 014 { 015 MutablePicoContainer parent = new DefaultPicoContainer(); 016 MutablePicoContainer child = new DefaultPicoContainer(parent); 017 018 parent.registerComponentImplementation(CommonInterface.class, ParentImplementation.class); 019 child.registerComponentImplementation(CommonInterface.class, ChildImplementation.class); 020 021 parent.start(); 022 023 try 024 { 025 Object result = child.getComponentInstanceOfType(CommonInterface.class); 026 027 // should never get here 028 assertFalse(result.getClass() == ParentImplementation.class); 029 } 030 catch (Exception e) 031 { 032 assertTrue(e.getClass() == PicoInitializationException.class); 033 } 034 035 } 036 037 public interface CommonInterface 038 { 039 040 } 041 042 public static class ParentImplementation implements CommonInterface 043 { 044 } 045 046 public static class ChildImplementation implements CommonInterface 047 { 048 public ChildImplementation() 049 { 050 throw new PicoInitializationException("Problem during initialization"); 051 } 052 } 053 054 }