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