package org.jboss.seam.util; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import javax.servlet.ServletContext; import org.jboss.seam.Seam; import org.jboss.seam.log.LogProvider; import org.jboss.seam.log.Logging; public class Resources { private static final LogProvider log = Logging.getLogProvider(Resources.class); public static InputStream getResourceAsStream(String resource, ServletContext servletContext) { String stripped = resource.startsWith("/") ? resource.substring(1) : resource; InputStream stream = null; if (servletContext!=null) { try { stream = servletContext.getResourceAsStream(resource); if (stream!=null) { log.debug("Loaded resource from servlet context: " + resource); } } catch (Exception e) { // } } if (stream==null) { stream = getResourceAsStream(resource, stripped); } return stream; } public static URL getResource(String resource, ServletContext servletContext) { if (!resource.startsWith("/")) { resource = "/" + resource; } String stripped = resource.startsWith("/") ? resource.substring(1) : resource; URL url = null; if (servletContext!=null) { try { url = servletContext.getResource(resource); log.debug("Loaded resource from servlet context: " + url); } catch (Exception e) { // } } if (url==null) { url = getResource(resource, stripped); } return url; } static InputStream getResourceAsStream(String resource, String stripped) { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream stream = null; if (classLoader!=null) { stream = classLoader.getResourceAsStream(stripped); if (stream !=null) { log.debug("Loaded resource from context classloader: " + stripped); } } if (stream == null) { stream = Seam.class.getResourceAsStream(resource); if (stream !=null) { log.debug("Loaded resource from Seam classloader: " + resource); } } if (stream == null) { stream = Seam.class.getClassLoader().getResourceAsStream(stripped); if (stream!=null) { log.debug("Loaded resource from Seam classloader: " + stripped); } } return stream; } static URL getResource(String resource, String stripped) { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL url = null; if (classLoader!=null) { url = classLoader.getResource(stripped); if (url!=null) { log.debug("Loaded resource from context classloader: " + url); } } if (url == null) { url = Seam.class.getResource(resource); if (url!=null) { log.debug("Loaded resource from Seam classloader: " + url); } } if (url == null) { url = Seam.class.getClassLoader().getResource(stripped); if (url!=null) { log.debug("Loaded resource from Seam classloader: " + url); } } return url; } public static void closeStream(InputStream inputStream) { if (inputStream == null) { return; } try { inputStream.close(); } catch (IOException e) { // } } public static void closeReader(java.io.Reader reader) { if (reader == null) { return; } try { reader.close(); } catch (IOException e) { // } } public static File getRealFile(ServletContext servletContext, String path) { String realPath = servletContext.getRealPath(path); if (realPath==null) //WebLogic! { try { URL resourcePath = servletContext.getResource(path); if ((resourcePath != null) && (resourcePath.getProtocol().equals("file"))) { realPath = resourcePath.getPath(); } else { log.warn("Unable to determine real path from servlet context for \"" + path + "\" path does not exist."); } } catch (MalformedURLException e) { log.warn("Unable to determine real path from servlet context for : " + path); log.debug("Caused by MalformedURLException", e); } } if (realPath != null) { File file = new File(realPath); if (file.exists()) { return file; } } return null; } }