1 21 package com.jaspersoft.jasperserver.api.engine.jasperreports.util; 22 23 import java.net.URL ; 24 import java.util.Enumeration ; 25 import java.util.Map ; 26 27 import com.jaspersoft.jasperserver.api.engine.jasperreports.util.repo.RepositoryURLHandlerFactory; 28 29 30 34 public class RepositoryResourceClassLoader extends ClassLoader { 35 36 private final Map resourceKeys; 37 private final boolean localURLs; 38 39 public RepositoryResourceClassLoader(ClassLoader parent, Map resourceKeys, boolean localURLs) { 40 super(parent); 41 42 this.resourceKeys = resourceKeys; 43 this.localURLs = localURLs; 44 } 45 46 protected URL findResource(String name) { 47 return getRepositoryURL(name); 48 } 49 50 protected URL getRepositoryURL(String name) { 51 URL url = null; 52 RepositoryResourceKey resourceKey = (RepositoryResourceKey) resourceKeys.get(name); 53 if (resourceKey != null) { 54 if (localURLs) { 55 url = RepositoryURLHandlerFactory.createRepoURL(name); 56 } else { 57 url = RepositoryURLHandlerFactory.createRepoURL(resourceKey.getUri()); 58 } 59 } 60 return url; 61 } 62 63 protected Enumeration findResources(String name) { 64 final URL url = getRepositoryURL(name); 65 return new Enumeration () { 66 private Object obj = url; 67 68 public boolean hasMoreElements() { 69 return obj != null; 70 } 71 72 public Object nextElement() { 73 Object next = obj; 74 obj = null; 75 return next; 76 } 77 }; 78 } 79 } 80 | Popular Tags |