001    package org.nanocontainer.script.xml.issues;
002    
003    import com.thoughtworks.proxy.toys.hotswap.Swappable;
004    
005    import java.io.Reader;
006    import java.io.StringReader;
007    import java.util.List;
008    
009    import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase;
010    import org.nanocontainer.script.xml.XMLContainerBuilder;
011    import org.picocontainer.PicoContainer;
012    
013    //http://jira.codehaus.org/browse/NANO-170
014    public class Issue0170TestCase extends AbstractScriptedContainerBuilderTestCase {
015    
016        public void testHotSwappingCAF() {
017            Reader script = new StringReader("" +
018                    "<container>" +
019                    "  <component-adapter-factory key='factory' class='org.picocontainer.gems.adapters.HotSwappingComponentAdapterFactory'>"+
020                    "    <component-adapter-factory class='org.picocontainer.defaults.CachingComponentAdapterFactory'>"+
021                    "      <component-adapter-factory class='org.picocontainer.defaults.ConstructorInjectionComponentAdapterFactory'/>"+
022                    "    </component-adapter-factory>"+
023                    "  </component-adapter-factory>"+
024                    "  <component-adapter class-name-key='java.util.List' class='java.util.ArrayList' factory='factory'/>"+
025                    "</container>");
026    
027            PicoContainer pico = buildContainer(script);
028            assertNotNull(pico);
029            List list = (List)pico.getComponentInstanceOfType(List.class);
030            assertNotNull(list);
031            assertTrue(list instanceof Swappable);
032        }
033    
034        private PicoContainer buildContainer(Reader script) {
035            return buildContainer(new XMLContainerBuilder(script, getClass().getClassLoader()), null, "SOME_SCOPE");
036        }
037    
038    }
039    
040