public class ResourceFinder
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private java.lang.ClassLoader |
classLoader |
private java.lang.String |
path |
private java.util.List<java.lang.String> |
resourcesNotLoaded |
private java.net.URL[] |
urls |
Constructor and Description |
---|
ResourceFinder(java.lang.String path) |
ResourceFinder(java.lang.String path,
java.lang.ClassLoader classLoader) |
ResourceFinder(java.lang.String path,
java.lang.ClassLoader classLoader,
java.net.URL... urls) |
ResourceFinder(java.lang.String path,
java.net.URL... urls) |
ResourceFinder(java.net.URL... urls) |
Modifier and Type | Method and Description |
---|---|
static java.lang.String |
decode(java.lang.String fileName) |
java.net.URL |
find(java.lang.String uri) |
java.util.List<java.net.URL> |
findAll(java.lang.String uri) |
java.util.List<java.lang.Class<?>> |
findAllClasses(java.lang.String uri)
Executes findAllStrings assuming the strings are
the names of a classes that should be loaded and returned.
|
<T> java.util.List<java.lang.Class<? extends T>> |
findAllImplementations(java.lang.Class<T> interfase)
Assumes the class specified points to a file in the classpath that contains
the name of a class that implements or is a subclass of the specfied class.
|
java.util.List<java.util.Properties> |
findAllProperties(java.lang.String uri)
Finds the corresponding resources and reads them in as a properties files
Any URL that cannot be read in as a properties file will cause an exception to be thrown.
|
java.util.List<java.lang.String> |
findAllStrings(java.lang.String uri)
Reads the contents of the found URLs as a list of
String 's and returns them. |
java.util.List<java.lang.Class<?>> |
findAvailableClasses(java.lang.String uri)
Executes findAvailableStrings assuming the strings are
the names of a classes that should be loaded and returned.
|
<T> java.util.List<java.lang.Class<? extends T>> |
findAvailableImplementations(java.lang.Class<T> interfase)
Assumes the class specified points to a file in the classpath that contains
the name of a class that implements or is a subclass of the specfied class.
|
java.util.List<java.util.Properties> |
findAvailableProperties(java.lang.String uri)
Finds the corresponding resources and reads them in as a properties files
Any URL that cannot be read in as a properties file will be added to the
'resourcesNotLoaded' collection.
|
java.util.List<java.lang.String> |
findAvailableStrings(java.lang.String uri)
Reads the contents of the found URLs as a Strings and returns them.
|
java.lang.Class<?> |
findClass(java.lang.String uri)
Executes
findString(String) assuming the contents URL found is the name of
a class that should be loaded and returned. |
java.lang.Class<?> |
findImplementation(java.lang.Class<?> interfase)
Assumes the class specified points to a file in the classpath that contains
the name of a class that implements or is a subclass of the specfied class.
|
java.util.Properties |
findProperties(java.lang.String uri)
Finds the corresponding resource and reads it in as a properties file
Example classpath:
META-INF/widget.properties
ResourceFinder finder = new ResourceFinder("META-INF/");
Properties widgetProps = finder.findProperties("widget.properties");
|
private java.net.URL |
findResource(java.lang.String resourceName,
java.net.URL... search) |
java.lang.String |
findString(java.lang.String uri)
Reads the contents of the URL as a
String 's and returns it. |
java.net.URL |
getResource(java.lang.String fullUri) |
private java.util.Enumeration<java.net.URL> |
getResources(java.lang.String fulluri) |
java.util.Map<java.lang.String,java.net.URL> |
getResourcesMap(java.lang.String uri) |
java.util.List<java.lang.String> |
getResourcesNotLoaded()
Returns a list of resources that could not be loaded in the last invoked findAvailable* or
mapAvailable* methods.
|
private static boolean |
isDirectory(java.net.URL url) |
private java.util.Properties |
loadProperties(java.net.URL resource) |
java.util.Map<java.lang.String,java.lang.Class<?>> |
mapAllClasses(java.lang.String uri)
Executes mapAllStrings assuming the value of each entry in the
map is the name of a class that should be loaded.
|
<T> java.util.Map<java.lang.String,java.lang.Class<? extends T>> |
mapAllImplementations(java.lang.Class<T> interfase)
Assumes the class specified points to a directory in the classpath that holds files
containing the name of a class that implements or is a subclass of the specfied class.
|
java.util.Map<java.lang.String,java.util.Properties> |
mapAllProperties(java.lang.String uri)
Finds the corresponding resources and reads them in as a properties files
Any URL that cannot be read in as a properties file will cause an exception to be thrown.
|
java.util.Map<java.lang.String,java.lang.String> |
mapAllStrings(java.lang.String uri)
Reads the contents of all non-directory URLs immediately under the specified
location and returns them in a map keyed by the file name.
|
java.util.Map<java.lang.String,java.lang.Class<?>> |
mapAvailableClasses(java.lang.String uri)
Executes mapAvailableStrings assuming the value of each entry in the
map is the name of a class that should be loaded.
|
<T> java.util.Map<java.lang.String,java.lang.Class<? extends T>> |
mapAvailableImplementations(java.lang.Class<T> interfase)
Assumes the class specified points to a directory in the classpath that holds files
containing the name of a class that implements or is a subclass of the specfied class.
|
java.util.Map<java.lang.String,java.util.Properties> |
mapAvailableProperties(java.lang.String uri)
Finds the corresponding resources and reads them in as a properties files
Any URL that cannot be read in as a properties file will be added to the
'resourcesNotLoaded' collection.
|
java.util.Map<java.lang.String,java.lang.String> |
mapAvailableStrings(java.lang.String uri)
Reads the contents of all non-directory URLs immediately under the specified
location and returns them in a map keyed by the file name.
|
private java.lang.String |
readContents(java.net.URL resource) |
private static void |
readDirectoryEntries(java.net.URL location,
java.util.Map<java.lang.String,java.net.URL> resources) |
private static void |
readJarEntries(java.net.URL location,
java.lang.String basePath,
java.util.Map<java.lang.String,java.net.URL> resources) |
private java.net.URL |
targetURL(java.net.URL base,
java.lang.String name) |
private final java.net.URL[] urls
private final java.lang.String path
private final java.lang.ClassLoader classLoader
private final java.util.List<java.lang.String> resourcesNotLoaded
public ResourceFinder(java.net.URL... urls)
public ResourceFinder(java.lang.String path)
public ResourceFinder(java.lang.String path, java.net.URL... urls)
public ResourceFinder(java.lang.String path, java.lang.ClassLoader classLoader)
public ResourceFinder(java.lang.String path, java.lang.ClassLoader classLoader, java.net.URL... urls)
private static boolean isDirectory(java.net.URL url)
public java.util.List<java.lang.String> getResourcesNotLoaded()
public java.net.URL find(java.lang.String uri) throws java.io.IOException
java.io.IOException
public java.util.List<java.net.URL> findAll(java.lang.String uri) throws java.io.IOException
java.io.IOException
public java.lang.String findString(java.lang.String uri) throws java.io.IOException
String
's and returns it.uri
- java.io.IOException
- if a resource pointed out by the uri param could not be findClassLoader.getResource(String)
public java.util.List<java.lang.String> findAllStrings(java.lang.String uri) throws java.io.IOException
String
's and returns them.uri
- java.io.IOException
- if any of the found URLs are unable to be read.public java.util.List<java.lang.String> findAvailableStrings(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if classLoader.getResources throws an exceptionpublic java.util.Map<java.lang.String,java.lang.String> mapAllStrings(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if any of the urls cannot be readpublic java.util.Map<java.lang.String,java.lang.String> mapAvailableStrings(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if classLoader.getResources throws an exceptionpublic java.lang.Class<?> findClass(java.lang.String uri) throws java.io.IOException, java.lang.ClassNotFoundException
findString(String)
assuming the contents URL found is the name of
a class that should be loaded and returned.uri
- java.io.IOException
java.lang.ClassNotFoundException
public java.util.List<java.lang.Class<?>> findAllClasses(java.lang.String uri) throws java.io.IOException, java.lang.ClassNotFoundException
uri
- java.io.IOException
java.lang.ClassNotFoundException
public java.util.List<java.lang.Class<?>> findAvailableClasses(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if classLoader.getResources throws an exceptionpublic java.util.Map<java.lang.String,java.lang.Class<?>> mapAllClasses(java.lang.String uri) throws java.io.IOException, java.lang.ClassNotFoundException
uri
- java.io.IOException
java.lang.ClassNotFoundException
public java.util.Map<java.lang.String,java.lang.Class<?>> mapAvailableClasses(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if classLoader.getResources throws an exceptionpublic java.lang.Class<?> findImplementation(java.lang.Class<?> interfase) throws java.io.IOException, java.lang.ClassNotFoundException
interfase
- a superclass or interfacejava.io.IOException
- if the URL cannot be readjava.lang.ClassNotFoundException
- if the class found is not loadablejava.lang.ClassCastException
- if the class found is not assignable to the specified superclass or interfacepublic <T> java.util.List<java.lang.Class<? extends T>> findAllImplementations(java.lang.Class<T> interfase) throws java.io.IOException, java.lang.ClassNotFoundException
interfase
- a superclass or interfacejava.io.IOException
- if the URL cannot be readjava.lang.ClassNotFoundException
- if the class found is not loadablejava.lang.ClassCastException
- if the class found is not assignable to the specified superclass or interfacepublic <T> java.util.List<java.lang.Class<? extends T>> findAvailableImplementations(java.lang.Class<T> interfase) throws java.io.IOException
interfase
- a superclass or interfacejava.io.IOException
- if classLoader.getResources throws an exceptionpublic <T> java.util.Map<java.lang.String,java.lang.Class<? extends T>> mapAllImplementations(java.lang.Class<T> interfase) throws java.io.IOException, java.lang.ClassNotFoundException
interfase
- a superclass or interfacejava.io.IOException
- if the URL cannot be readjava.lang.ClassNotFoundException
- if the class found is not loadablejava.lang.ClassCastException
- if the class found is not assignable to the specified superclass or interfacepublic <T> java.util.Map<java.lang.String,java.lang.Class<? extends T>> mapAvailableImplementations(java.lang.Class<T> interfase) throws java.io.IOException
interfase
- a superclass or interfacejava.io.IOException
- if classLoader.getResources throws an exceptionpublic java.util.Properties findProperties(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if the URL cannot be read or is not in properties file formatpublic java.util.List<java.util.Properties> findAllProperties(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if the URL cannot be read or is not in properties file formatpublic java.util.List<java.util.Properties> findAvailableProperties(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if classLoader.getResources throws an exceptionpublic java.util.Map<java.lang.String,java.util.Properties> mapAllProperties(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if the URL cannot be read or is not in properties file formatpublic java.util.Map<java.lang.String,java.util.Properties> mapAvailableProperties(java.lang.String uri) throws java.io.IOException
uri
- java.io.IOException
- if classLoader.getResources throws an exceptionpublic java.util.Map<java.lang.String,java.net.URL> getResourcesMap(java.lang.String uri) throws java.io.IOException
java.io.IOException
private static void readDirectoryEntries(java.net.URL location, java.util.Map<java.lang.String,java.net.URL> resources) throws java.net.MalformedURLException
java.net.MalformedURLException
private static void readJarEntries(java.net.URL location, java.lang.String basePath, java.util.Map<java.lang.String,java.net.URL> resources) throws java.io.IOException
java.io.IOException
private java.util.Properties loadProperties(java.net.URL resource) throws java.io.IOException
java.io.IOException
private java.lang.String readContents(java.net.URL resource) throws java.io.IOException
java.io.IOException
public java.net.URL getResource(java.lang.String fullUri)
private java.util.Enumeration<java.net.URL> getResources(java.lang.String fulluri) throws java.io.IOException
java.io.IOException
private java.net.URL findResource(java.lang.String resourceName, java.net.URL... search)
private java.net.URL targetURL(java.net.URL base, java.lang.String name) throws java.net.MalformedURLException
java.net.MalformedURLException
public static java.lang.String decode(java.lang.String fileName)