001    package org.nanocontainer.script;
002    
003    import org.picocontainer.alternatives.AbstractDelegatingMutablePicoContainer;
004    import org.picocontainer.MutablePicoContainer;
005    import org.picocontainer.ComponentAdapter;
006    import org.picocontainer.PicoRegistrationException;
007    import org.picocontainer.Parameter;
008    
009    import java.util.HashMap;
010    import java.util.ArrayList;
011    
012    import junit.framework.Assert;
013    
014    public class FooDecoratingPicoContainer extends AbstractDelegatingMutablePicoContainer {
015        public FooDecoratingPicoContainer(MutablePicoContainer delegate) {
016            super(delegate);
017        }
018        public MutablePicoContainer makeChildContainer() {
019            return null;
020        }
021    
022        public ComponentAdapter registerComponentImplementation(Object componentKey, Class componentImplementation, Parameter[] parameters) throws PicoRegistrationException {
023            Assert.assertEquals(HashMap.class, componentImplementation);
024            return super.registerComponentImplementation(ArrayList.class, ArrayList.class, parameters);
025        }
026        public ComponentAdapter registerComponentImplementation(Object componentKey, Class componentImplementation) throws PicoRegistrationException {
027            Assert.assertEquals(HashMap.class, componentImplementation);
028            return super.registerComponentImplementation(ArrayList.class, ArrayList.class);
029        }
030    
031    }