Clover coverage report - JFox Service-Oriented Application Framework - 1.0-M2 Coverage timestamp: 星期四 十一月 25 2004 17:14:11 PST FRAMES NO FRAMES |
file stats: | LOC: | 346 |  | Methods: | 20
| NCLOC: | 130 |  | Classes: | 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
Source file | Conditionals | Statements | Methods | TOTAL
ResourceHelper.java | 31.2% | 26.7% | 30% | 28.1% |

1 |  |
     /**
2 |  |
      * JFoxSOAF, Service-Oriented Application Framework
3 |  |
      *
4 |  |
      * Copyright (C) www.huihoo.org
5 |  |
      *
6 |  |
      * Distributable under GNU LGPL
7 |  |
      *
8 |  |
      * For more information, please visit: http://www.huihoo.org/jfox/jfoxsoaf
9 |  |
      */
10 |  |
11 |  |
     package org.huihoo.jfox.soaf.util.resource;
12 |  |
13 |  |
     import java.io.File;
14 |  |
     import java.io.IOException;
15 |  |
     import java.io.InputStream;
16 |  |
     import java.io.InputStreamReader;
17 |  |
     import java.io.Reader;
18 |  |
     import java.net.URL;
19 |  |
     import java.net.URLConnection;
20 |  |
     import java.util.Properties;
21 |  |
22 |  |
     /**
23 |  |
      * A class to simplify access to resources through the classloader.
24 |  |
      *
25 |  |
      * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
26 |  |
      * @author <a href="mailto:clinton.begin@ibatis.com">Clinton Begin </a>
27 |  |
      * @version $Revision: 1.1 $ $Date: 2004/10/28 05:12:31 $
28 |  |
      * @version Revision: 1.0
29 |  |
      */
30 |  |
31 |  |
     public class ResourceHelper {
32 |  |
33 |  |
         private static ClassLoader defaultClassLoader;
34 |  |
35 | 0 |
         private ResourceHelper() {
36 |  |
         }
37 |  |
38 |  |
         /**
39 |  |
          * Returns the default classloader (may be null).
40 |  |
          *
41 |  |
          * @return The default classloader
42 |  |
          */
43 | 0 |
         public static ClassLoader getDefaultClassLoader() {
44 | 0 |
             return defaultClassLoader;
45 |  |
         }
46 |  |
47 |  |
         /**
48 |  |
          * Sets the default classloader
49 |  |
          *
50 |  |
          * @param defaultClassLoader -
51 |  |
          *            the new default ClassLoader
52 |  |
          */
53 | 0 |
         public static void setDefaultClassLoader(ClassLoader defaultClassLoader) {
54 | 0 |
             ResourceHelper.defaultClassLoader = defaultClassLoader;
55 |  |
         }
56 |  |
57 |  |
         /**
58 |  |
          * Returns the URL of the resource on the classpath
59 |  |
          *
60 |  |
          * @param resource
61 |  |
          *            The resource to find
62 |  |
          * @return The resource
63 |  |
          * @throws IOException
64 |  |
          *             If the resource cannot be found or read
65 |  |
          */
66 | 0 |
         public static URL getResourceURL(String resource) throws IOException {
67 | 0 |
             return getResourceURL(getClassLoader(), resource);
68 |  |
         }
69 |  |
70 |  |
         /**
71 |  |
          * Returns the URL of the resource on the classpath
72 |  |
          *
73 |  |
          * @param loader
74 |  |
          *            The classloader used to load the resource
75 |  |
          * @param resource
76 |  |
          *            The resource to find
77 |  |
          * @return The resource
78 |  |
          * @throws IOException
79 |  |
          *             If the resource cannot be found or read
80 |  |
          */
81 | 0 |
         public static URL getResourceURL(ClassLoader loader, String resource)
82 |  |
                 throws IOException {
83 | 0 |
             URL url = null;
84 | 0 |
             if (loader != null)
85 | 0 |
                 url = loader.getResource(resource);
86 | 0 |
             if (url == null)
87 | 0 |
                 url = ClassLoader.getSystemResource(resource);
88 | 0 |
             if (url == null)
89 | 0 |
                 throw new IOException("Could not find resource " + resource);
90 | 0 |
             return url;
91 |  |
         }
92 |  |
93 |  |
         /**
94 |  |
          * Returns a resource on the classpath as a Stream object
95 |  |
          *
96 |  |
          * @param resource
97 |  |
          *            The resource to find
98 |  |
          * @return The resource
99 |  |
          * @throws IOException
100 |  |
          *             If the resource cannot be found or read
101 |  |
          */
102 | 13 |
         public static InputStream getResourceAsStream(String resource)
103 |  |
                 throws IOException {
104 | 13 |
             return getResourceAsStream(getClassLoader(), resource);
105 |  |
         }
106 |  |
107 |  |
         /**
108 |  |
          * Returns a resource on the classpath as a Stream object
109 |  |
          *
110 |  |
          * @param loader
111 |  |
          *            The classloader used to load the resource
112 |  |
          * @param resource
113 |  |
          *            The resource to find
114 |  |
          * @return The resource
115 |  |
          * @throws IOException
116 |  |
          *             If the resource cannot be found or read
117 |  |
          */
118 | 13 |
         public static InputStream getResourceAsStream(ClassLoader loader,
119 |  |
                 String resource) throws IOException {
120 | 13 |
             InputStream in = null;
121 | 13 |
             if (loader != null)
122 | 13 |
                 in = loader.getResourceAsStream(resource);
123 | 13 |
             if (in == null)
124 | 0 |
                 in = ClassLoader.getSystemResourceAsStream(resource);
125 | 13 |
             if (in == null)
126 | 0 |
                 throw new IOException("Could not find resource " + resource);
127 | 13 |
             return in;
128 |  |
         }
129 |  |
130 |  |
         /**
131 |  |
          * Returns a resource on the classpath as a Properties object
132 |  |
          *
133 |  |
          * @param resource
134 |  |
          *            The resource to find
135 |  |
          * @return The resource
136 |  |
          * @throws IOException
137 |  |
          *             If the resource cannot be found or read
138 |  |
          */
139 | 0 |
         public static Properties getResourceAsProperties(String resource)
140 |  |
                 throws IOException {
141 | 0 |
             Properties props = new Properties();
142 | 0 |
             InputStream in = null;
143 | 0 |
             String propfile = resource;
144 | 0 |
             in = getResourceAsStream(propfile);
145 | 0 |
             props.load(in);
146 | 0 |
             in.close();
147 | 0 |
             return props;
148 |  |
         }
149 |  |
150 |  |
         /**
151 |  |
          * Returns a resource on the classpath as a Properties object
152 |  |
          *
153 |  |
          * @param loader
154 |  |
          *            The classloader used to load the resource
155 |  |
          * @param resource
156 |  |
          *            The resource to find
157 |  |
          * @return The resource
158 |  |
          * @throws IOException
159 |  |
          *             If the resource cannot be found or read
160 |  |
          */
161 | 0 |
         public static Properties getResourceAsProperties(ClassLoader loader,
162 |  |
                 String resource) throws IOException {
163 | 0 |
             Properties props = new Properties();
164 | 0 |
             InputStream in = null;
165 | 0 |
             String propfile = resource;
166 | 0 |
             in = getResourceAsStream(loader, propfile);
167 | 0 |
             props.load(in);
168 | 0 |
             in.close();
169 | 0 |
             return props;
170 |  |
         }
171 |  |
172 |  |
         /**
173 |  |
          * Returns a resource on the classpath as a Reader object
174 |  |
          *
175 |  |
          * @param resource
176 |  |
          *            The resource to find
177 |  |
          * @return The resource
178 |  |
          * @throws IOException
179 |  |
          *             If the resource cannot be found or read
180 |  |
          */
181 | 0 |
         public static Reader getResourceAsReader(String resource)
182 |  |
                 throws IOException {
183 | 0 |
             return new InputStreamReader(getResourceAsStream(resource));
184 |  |
         }
185 |  |
186 |  |
         /**
187 |  |
          * Returns a resource on the classpath as a Reader object
188 |  |
          *
189 |  |
          * @param loader
190 |  |
          *            The classloader used to load the resource
191 |  |
          * @param resource
192 |  |
          *            The resource to find
193 |  |
          * @return The resource
194 |  |
          * @throws IOException
195 |  |
          *             If the resource cannot be found or read
196 |  |
          */
197 | 0 |
         public static Reader getResourceAsReader(ClassLoader loader, String resource)
198 |  |
                 throws IOException {
199 | 0 |
             return new InputStreamReader(getResourceAsStream(loader, resource));
200 |  |
         }
201 |  |
202 |  |
         /**
203 |  |
          * Returns a resource on the classpath as a File object
204 |  |
          *
205 |  |
          * @param resource
206 |  |
          *            The resource to find
207 |  |
          * @return The resource
208 |  |
          * @throws IOException
209 |  |
          *             If the resource cannot be found or read
210 |  |
          */
211 | 0 |
         public static File getResourceAsFile(String resource) throws IOException {
212 | 0 |
             return new File(getResourceURL(resource).getFile());
213 |  |
         }
214 |  |
215 |  |
         /**
216 |  |
          * Returns a resource on the classpath as a File object
217 |  |
          *
218 |  |
          * @param loader -
219 |  |
          *            the classloader used to load the resource
220 |  |
          * @param resource -
221 |  |
          *            the resource to find
222 |  |
          * @return The resource
223 |  |
          * @throws IOException
224 |  |
          *             If the resource cannot be found or read
225 |  |
          */
226 | 0 |
         public static File getResourceAsFile(ClassLoader loader, String resource)
227 |  |
                 throws IOException {
228 | 0 |
             return new File(getResourceURL(loader, resource).getFile());
229 |  |
         }
230 |  |
231 |  |
         /**
232 |  |
          * Gets a URL as an input stream
233 |  |
          *
234 |  |
          * @param urlString -
235 |  |
          *            the URL to get
236 |  |
          * @return An input stream with the data from the URL
237 |  |
          * @throws IOException
238 |  |
          *             If the resource cannot be found or read
239 |  |
          */
240 | 0 |
         public static InputStream getUrlAsStream(String urlString)
241 |  |
                 throws IOException {
242 | 0 |
             URL url = new URL(urlString);
243 | 0 |
             URLConnection conn = url.openConnection();
244 | 0 |
             return conn.getInputStream();
245 |  |
         }
246 |  |
247 |  |
         /**
248 |  |
          * Gets a URL as a Reader
249 |  |
          *
250 |  |
          * @param urlString -
251 |  |
          *            the URL to get
252 |  |
          * @return A Reader with the data from the URL
253 |  |
          * @throws IOException
254 |  |
          *             If the resource cannot be found or read
255 |  |
          */
256 | 0 |
         public static Reader getUrlAsReader(String urlString) throws IOException {
257 | 0 |
             return new InputStreamReader(getUrlAsStream(urlString));
258 |  |
         }
259 |  |
260 |  |
         /**
261 |  |
          * Gets a URL as a Properties object
262 |  |
          *
263 |  |
          * @param urlString -
264 |  |
          *            the URL to get
265 |  |
          * @return A Properties object with the data from the URL
266 |  |
          * @throws IOException
267 |  |
          *             If the resource cannot be found or read
268 |  |
          */
269 | 0 |
         public static Properties getUrlAsProperties(String urlString)
270 |  |
                 throws IOException {
271 | 0 |
             Properties props = new Properties();
272 | 0 |
             InputStream in = null;
273 | 0 |
             String propfile = urlString;
274 | 0 |
             in = getUrlAsStream(propfile);
275 | 0 |
             props.load(in);
276 | 0 |
             in.close();
277 | 0 |
             return props;
278 |  |
         }
279 |  |
280 |  |
         /**
281 |  |
          * Loads a class
282 |  |
          *
283 |  |
          * @param className -
284 |  |
          *            the class to load
285 |  |
          * @return The loaded class
286 |  |
          * @throws ClassNotFoundException
287 |  |
          *             If the class cannot be found (duh!)
288 |  |
          */
289 | 21 |
         public static Class classForName(String className)
290 |  |
                 throws ClassNotFoundException {
291 | 21 |
             Class clazz = null;
292 | 21 |
             try {
293 | 21 |
                 clazz = getClassLoader().loadClass(className);
294 |  |
             } catch (Exception e) {
295 |  |
                 // Ignore. Failsafe below.
296 |  |
             }
297 | 21 |
             if (clazz == null) {
298 | 0 |
                 clazz = Class.forName(className);
299 |  |
             }
300 | 21 |
             return clazz;
301 |  |
         }
302 |  |
303 |  |
         /**
304 |  |
          * Creates an instance of a class
305 |  |
          *
306 |  |
          * @param className -
307 |  |
          *            the class to create
308 |  |
          * @return An instance of the class
309 |  |
          * @throws ClassNotFoundException
310 |  |
          *             If the class cannot be found (duh!)
311 |  |
          * @throws InstantiationException
312 |  |
          *             If the class cannot be instantiaed
313 |  |
          * @throws IllegalAccessException
314 |  |
          *             If the class is not public, or other access problems arise
315 |  |
          */
316 | 5 |
         public static Object instantiate(String className)
317 |  |
                 throws ClassNotFoundException, InstantiationException,
318 |  |
                 IllegalAccessException {
319 | 5 |
             return instantiate(classForName(className));
320 |  |
         }
321 |  |
322 |  |
         /**
323 |  |
          * Creates an instance of a class
324 |  |
          *
325 |  |
          * @param clazz -
326 |  |
          *            the class to create
327 |  |
          * @return An instance of the class
328 |  |
          * @throws InstantiationException
329 |  |
          *             If the class cannot be instantiaed
330 |  |
          * @throws IllegalAccessException
331 |  |
          *             If the class is not public, or other access problems arise
332 |  |
          */
333 | 5 |
         public static Object instantiate(Class clazz)
334 |  |
                 throws InstantiationException, IllegalAccessException {
335 | 5 |
             return clazz.newInstance();
336 |  |
         }
337 |  |
338 | 34 |
         private static ClassLoader getClassLoader() {
339 | 34 |
             if (defaultClassLoader != null) {
340 | 0 |
                 return defaultClassLoader;
341 |  |
             } else {
342 | 34 |
                 return Thread.currentThread().getContextClassLoader();
343 |  |
             }
344 |  |
         }
345 |  |
346 |  |
     }