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 }