package org.jboss.seam.deployment; import java.net.URL; import javax.servlet.ServletContext; import org.jboss.seam.contexts.ServletLifecycle; import org.jboss.seam.util.Resources; public class FileDescriptor { private String name; private URL url; public FileDescriptor(String name, URL url) { this.name = name; this.url = url; } public FileDescriptor(String name, ClassLoader classLoader,ServletContext servletContext) { ServletContext ctx = servletContext; if(ctx == null) { //this should not happen but it could if people have created custom scanners ctx = ServletLifecycle.getCurrentServletContext(); } this.name = name; if (name == null) { throw new NullPointerException("Name cannot be null, loading from " + classLoader); } this.url = Resources.getResource(name, ctx); if (url == null) { this.url = classLoader.getResource(name); } if (this.url == null) { throw new NullPointerException("Cannot find URL from classLoader for " + name + ", loading from " + classLoader); } } public String getName() { return name; } public URL getUrl() { return url; } @Override public String toString() { return url.getPath(); } @Override public boolean equals(Object other) { if (other instanceof FileDescriptor) { FileDescriptor that = (FileDescriptor) other; return this.getUrl().equals(that.getUrl()); } else { return false; } } @Override public int hashCode() { return getUrl().hashCode(); } }