View Javadoc

1   package org.ocltf.utils;
2   
3   import java.io.BufferedReader;
4   import java.io.InputStreamReader;
5   import java.net.URL;
6   
7   import org.apache.commons.logging.Log;
8   import org.apache.commons.logging.LogFactory;
9   
10  
11  /***
12   * Provides utilities for loading resources using ClassLoaders.
13   * 
14   * @author Chad Brandon
15   */
16  public class FileResourceUtils {
17  	
18  	private static final Log logger = LogFactory.getLog(FileResourceUtils.class);
19  	
20  	/***
21  	 * Retrieves aresource from the class package
22  	 * @param resourceName - the name of the resource
23  	 * @return java.net.URL
24  	 */
25  	public static URL getResource(String resourceName) {
26  		String methodName = "getResource";
27  		if (logger.isDebugEnabled()) {
28  			logger.debug("performing " + methodName 
29  				+ " with resourceName (" + resourceName + ")");	
30  		}
31  		ExceptionUtils.checkEmpty(methodName, "resourceName", resourceName);
32  		ClassLoader loader = Thread.currentThread().getContextClassLoader();
33  		
34  		URL resource = loader.getResource(resourceName);
35  		return resource;
36  	}	
37  	
38  	/***
39  	 * Takes a package as an argument and returns the URL for the 
40  	 * package.  
41  	 * @param clazz - the Class to load as a resource
42  	 * @return java.net.URL
43  	 */
44  	public static URL getPackageResource(Class clazz) {
45  		String methodName = "getPackageResource";
46  		ExceptionUtils.checkNull(methodName, "clazz", clazz);
47  		return FileResourceUtils.getResource(
48  			ClassUtils.getPackageName(clazz).replace('.', '/'));
49  	}	
50  	
51  	/***
52  	 * Takes a Class as an argument and returns the URL for the 
53  	 * class.  
54  	 * @param clazz - the Class to load as a resource
55  	 * @return java.net.URL
56  	 */
57  	public static URL getClassResource(Class clazz) {
58  		String methodName = "getClassResource";
59  		ExceptionUtils.checkNull(methodName, "clazz", clazz);
60  		return getResource(
61  			getClassNameAsResource(
62  				clazz.getName()));
63  	}	
64  	
65  	/***
66  	 * Takes a className as an argument and returns the URL for the 
67  	 * class.  
68  	 * @param className
69  	 * @return java.net.URL
70  	 */
71  	public static URL getClassResource(String className) {
72  		String methodName = "getClassResource";
73  		ExceptionUtils.checkEmpty(methodName, "className", className);
74  		return getResource(getClassNameAsResource(className));
75  	}
76  	
77  	/***
78  	 * Takes a <code>packageName<code> as an argument and returns the URL for the 
79  	 * class.  
80  	 * @param packageName
81  	 * @return java.net.URL
82  	 */
83  	public> static URL getPackageResource(String packageName) {
84  		String methodName = "getPackageResource";
85  		ExceptionUtils.checkEmpty(methodName, "packageName", packageName);
86  		returng> getResource(packageName.replace('.', '/'));
87  	}
88  	
89  	/***
90  	 * Private helper method.
91  	 * @param className
92  	 * @return String
93  	 */
94  	private static String getClassNameAsResource(String className) {
95  		return className.replace('.', '/') + ".class";
96  	}
97  
98  	/***
99  	 * Loads the file resource and returns the contents
100 	 * as a String.
101      * @param resourceName the name of the resource.
102 	 * @return String
103 	 */
104 	public static String getResourceContentsAsString(String resourceName) {
105 		String methodName = "getResourceContentsAsString";
106 		if (logger.isDebugEnabled()) {
107 			logger.debug("performing " + methodName
108 				+ " with resourceName (" + resourceName + ")");
109 		}
110 		StringBuffer contents = new StringBuffer();
111 		try {
112 			URL resource = getResource(resourceName);		
113             if (resource != null) {
114     			BufferedReader in = 
115     				new BufferedReader(
116     					new InputStreamReader(resource.openStream()));
117     			String line;
118     			while ((line = in.readLine()) != null){
119     				contents.append(line + "\n");
120     			}
121     			in.close();
122             }
123 		} catch (Exception ex) {
124 			String errMsg = "Error performing " + methodName;
125 			logger.error(errMsg, ex);
126 			throw new RuntimeException(errMsg, ex);
127 		}
128 		return contents.toString();
129 	}
130 
131 }