View Javadoc

1   package org.ocltf.common;
2   
3   import java.net.URL;
4   import java.util.ArrayList;
5   import java.util.Collection;
6   import java.util.Enumeration;
7   
8   import org.apache.commons.logging.Log;
9   import org.apache.commons.logging.LogFactory;
10  import org.ocltf.utils.ExceptionUtils;
11  
12  /***
13   * Finds and loads file resources from the current classpath.
14   * 
15   * @author Chad Brandon
16   */
17  public class ResourceFinder {
18  
19  	private static Log logger = LogFactory.getLog(ResourceFinder.class);
20  
21  	private ResourceFinder() {}
22  
23  	/***
24  	 * Returns a Map containing the URL of each
25  	 * resource and the File which represents the library
26  	 * the resource was found in.
27  	 *
28  	 * @param resource the resource to find
29  	 * 
30  	 * @return a <code>array of resource URLs<code>
31  	 */
32  	public static URL[] findResources(String resource) {
33  		String methodName = "findResource";
34  		if (logger.isDebugEnabled()) {
35  			logger.debug("performing " + methodName);
36  		}
37  		ExceptionUtils.checkEmpty(methodName, "resource", resource);
38  
39  		URL[] resourceUrls;
40  		
41  		try {
42  		
43  			Collection resources = new ArrayList();
44  		
45  			Enumeration resourceEnum = Thread.currentThread().getContextClassLoader().getResources(resource);
46  			while (resourceEnum.hasMoreElements()) {
47  				resources.add(resourceEnum.nextElement());
48  			}
49  			
50  			resourceUrls = (URL[])resources.toArray(new URL[0]);
51  		} catch (Exception ex) {
52  			String errMsg = "Error performing " + methodName;
53  			logger.error(errMsg, ex);
54  			throw new ResourceFinderException(errMsg, ex);
55  		}
56  
57  		return resourceUrls;
58  	}
59  
60  }