001    package railo.commons.io.res.util;
002    
003    import java.io.IOException;
004    
005    import railo.commons.io.IOUtil;
006    import railo.commons.io.res.Resource;
007    
008    public class ResourceClassLoaderFactory {
009    
010            private ClassLoader parent;
011            private ResourceClassLoader rcl;
012            
013            
014            public ResourceClassLoaderFactory(ClassLoader parent) {
015                    this.parent=parent;
016            }
017    
018            /*public static ResourceClassLoader getResourceClassLoader(Resource[] resources) throws IOException{
019                    return new ResourceClassLoader(resources);, ClassLoader parent
020            }*/
021            
022    
023            public void addResources(Resource[] resources) throws IOException {
024                    if(rcl==null){
025                            rcl = new ResourceClassLoader(resources,parent);
026                            Thread.currentThread().setContextClassLoader(rcl);
027                    }
028                    else {
029                            rcl.addResources(resources);
030                    }
031            }
032            
033            public ResourceClassLoader getResourceClassLoader(Resource[] resources) throws IOException{
034                    addResources(resources);
035                    return rcl;
036            }
037            
038            public ResourceClassLoader getResourceClassLoader() {
039                    if(rcl==null){
040                            rcl = new ResourceClassLoader(parent);
041                            Thread.currentThread().setContextClassLoader(rcl);
042                    }
043                    return rcl;
044            }
045    
046            public void reset() {
047                    IOUtil.closeEL(rcl);
048            }
049    
050    }