001    package org.nanocontainer.webcontainer;
002    
003    import javax.servlet.Filter;
004    
005    import org.mortbay.jetty.servlet.FilterHolder;
006    import org.picocontainer.PicoContainer;
007    import org.picocontainer.defaults.DefaultPicoContainer;
008    
009    public class PicoFilterHolder extends FilterHolder {
010    
011        private final PicoContainer parentContainer;
012    
013        public PicoFilterHolder(PicoContainer parentContainer) {
014            this.parentContainer = parentContainer;
015        }
016    
017        public PicoFilterHolder(Class filterClass, PicoContainer parentContainer) {
018            super(filterClass);
019            this.parentContainer = parentContainer;
020        }
021    
022        public synchronized Object newInstance() throws InstantiationException, IllegalAccessException {
023            DefaultPicoContainer child = new DefaultPicoContainer(parentContainer);
024            child.registerComponentImplementation(Filter.class, _class);
025            return child.getComponentInstance(Filter.class);
026        }
027    
028    
029    }