Note: This class is a copy of the xbean-finder ResourceFinder class. Any changes should
be make to the xbean-finder source first and then copied to this class. Also, this class
should be kept in sync with the xbean-finder code.
author: David Blevins
findAllImplementations(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.
findAllProperties(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.
findAvailableImplementations(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.
findAvailableProperties(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.
findImplementation(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.
mapAllImplementations(Class 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.
mapAllProperties(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.
mapAllStrings(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.
mapAvailableImplementations(Class 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.
mapAvailableProperties(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.
mapAvailableStrings(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.
Executes findAllStrings assuming the strings are
the names of a classes that should be loaded and returned.
Any URL or class that cannot be loaded will cause an exception to be thrown.
Parameters: uri - throws: IOException - throws: ClassNotFoundException -
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.
Any class that cannot be loaded or assigned to the specified interface will be cause
an exception to be thrown.
Example classpath:
META-INF/java.io.InputStream # contains the classname org.acme.AcmeInputStream
META-INF/java.io.InputStream # contains the classname org.widget.NeatoInputStream
META-INF/java.io.InputStream # contains the classname com.foo.BarInputStream
ResourceFinder finder = new ResourceFinder("META-INF/");
List classes = finder.findAllImplementations(java.io.InputStream.class);
classes.contains("org.acme.AcmeInputStream"); // true
classes.contains("org.widget.NeatoInputStream"); // true
classes.contains("com.foo.BarInputStream"); // true
Parameters: interfase - a superclass or interface throws: IOException - if the URL cannot be read throws: ClassNotFoundException - if the class found is not loadable throws: ClassCastException - if the class found is not assignable to the specified superclass or interface
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.
Example classpath:
META-INF/app.properties
META-INF/app.properties
META-INF/app.properties
ResourceFinder finder = new ResourceFinder("META-INF/");
List appProps = finder.findAllProperties("app.properties");
Parameters: uri - throws: IOException - if the URL cannot be read or is not in properties file format
Reads the contents of the found URLs as a list of
String 's and returns them.
Parameters: uri - a list of the content of each resource URL found throws: IOException - if any of the found URLs are unable to be read.
Executes findAvailableStrings assuming the strings are
the names of a classes that should be loaded and returned.
Any class that cannot be loaded will be skipped and placed in the
'resourcesNotLoaded' collection.
Parameters: uri - throws: IOException - if classLoader.getResources throws an exception
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.
Any class that cannot be loaded or are not assignable to the specified class will be
skipped and placed in the 'resourcesNotLoaded' collection.
Example classpath:
META-INF/java.io.InputStream # contains the classname org.acme.AcmeInputStream
META-INF/java.io.InputStream # contains the classname org.widget.NeatoInputStream
META-INF/java.io.InputStream # contains the classname com.foo.BarInputStream
ResourceFinder finder = new ResourceFinder("META-INF/");
List classes = finder.findAllImplementations(java.io.InputStream.class);
classes.contains("org.acme.AcmeInputStream"); // true
classes.contains("org.widget.NeatoInputStream"); // true
classes.contains("com.foo.BarInputStream"); // true
Parameters: interfase - a superclass or interface throws: IOException - if classLoader.getResources throws an exception
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.
Example classpath:
META-INF/app.properties
META-INF/app.properties
META-INF/app.properties
ResourceFinder finder = new ResourceFinder("META-INF/");
List appProps = finder.findAvailableProperties("app.properties");
Parameters: uri - throws: IOException - if classLoader.getResources throws an exception
Reads the contents of the found URLs as a Strings and returns them.
Individual URLs that cannot be read are skipped and added to the
list of 'resourcesNotLoaded'
Parameters: uri - a list of the content of each resource URL found throws: IOException - if classLoader.getResources throws an exception
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.
Any class that cannot be loaded will be cause an exception to be thrown.
Example classpath:
META-INF/java.io.InputStream # contains the classname org.acme.AcmeInputStream
META-INF/java.io.OutputStream
ResourceFinder finder = new ResourceFinder("META-INF/");
Class clazz = finder.findImplementation(java.io.InputStream.class);
clazz.getName(); // returns "org.acme.AcmeInputStream"
Parameters: interfase - a superclass or interface throws: IOException - if the URL cannot be read throws: ClassNotFoundException - if the class found is not loadable throws: ClassCastException - if the class found is not assignable to the specified superclass or interface
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");
Parameters: uri - throws: IOException - if the URL cannot be read or is not in properties file format
Reads the contents of the URL as a
String 's and returns it.
Parameters: uri - a stringified content of a resource throws: IOException - if a resource pointed out by the uri param could not be find See Also:ClassLoader.getResource(String)
Returns a list of resources that could not be loaded in the last invoked findAvailable* or
mapAvailable* methods.
The list will only contain entries of resources that match the requirements
of the last invoked findAvailable* or mapAvailable* methods, but were unable to be
loaded and included in their results.
The list returned is unmodifiable and the results of this method will change
after each invocation of a findAvailable* or mapAvailable* methods.
This method is not thread safe.
Executes mapAllStrings assuming the value of each entry in the
map is the name of a class that should be loaded.
Any class that cannot be loaded will be cause an exception to be thrown.
Example classpath:
META-INF/xmlparsers/xerces
META-INF/xmlparsers/crimson
ResourceFinder finder = new ResourceFinder("META-INF/");
Map map = finder.mapAvailableStrings("xmlparsers");
map.contains("xerces"); // true
map.contains("crimson"); // true
Class xercesClass = map.get("xerces");
Class crimsonClass = map.get("crimson");
Parameters: uri - throws: IOException - throws: ClassNotFoundException -
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.
Any class that cannot be loaded or assigned to the specified interface will be cause
an exception to be thrown.
Example classpath:
META-INF/java.net.URLStreamHandler/jar
META-INF/java.net.URLStreamHandler/file
META-INF/java.net.URLStreamHandler/http
ResourceFinder finder = new ResourceFinder("META-INF/");
Map map = finder.mapAllImplementations(java.net.URLStreamHandler.class);
Class jarUrlHandler = map.get("jar");
Class fileUrlHandler = map.get("file");
Class httpUrlHandler = map.get("http");
Parameters: interfase - a superclass or interface throws: IOException - if the URL cannot be read throws: ClassNotFoundException - if the class found is not loadable throws: ClassCastException - if the class found is not assignable to the specified superclass or interface
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.
Example classpath:
META-INF/jdbcDrivers/oracle.properties
META-INF/jdbcDrivers/mysql.props
META-INF/jdbcDrivers/derby
ResourceFinder finder = new ResourceFinder("META-INF/");
List driversList = finder.findAvailableProperties("jdbcDrivers");
Properties oracleProps = driversList.get("oracle.properties");
Properties mysqlProps = driversList.get("mysql.props");
Properties derbyProps = driversList.get("derby");
Parameters: uri - throws: IOException - if the URL cannot be read or is not in properties file format
Reads the contents of all non-directory URLs immediately under the specified
location and returns them in a map keyed by the file name.
Any URLs that cannot be read will cause an exception to be thrown.
Example classpath:
META-INF/serializables/one
META-INF/serializables/two
META-INF/serializables/three
META-INF/serializables/four/foo.txt
ResourceFinder finder = new ResourceFinder("META-INF/");
Map map = finder.mapAvailableStrings("serializables");
map.contains("one"); // true
map.contains("two"); // true
map.contains("three"); // true
map.contains("four"); // false
Parameters: uri - a list of the content of each resource URL found throws: IOException - if any of the urls cannot be read
Executes mapAvailableStrings assuming the value of each entry in the
map is the name of a class that should be loaded.
Any class that cannot be loaded will be skipped and placed in the
'resourcesNotLoaded' collection.
Example classpath:
META-INF/xmlparsers/xerces
META-INF/xmlparsers/crimson
ResourceFinder finder = new ResourceFinder("META-INF/");
Map map = finder.mapAvailableStrings("xmlparsers");
map.contains("xerces"); // true
map.contains("crimson"); // true
Class xercesClass = map.get("xerces");
Class crimsonClass = map.get("crimson");
Parameters: uri - throws: IOException - if classLoader.getResources throws an exception
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.
Any class that cannot be loaded or are not assignable to the specified class will be
skipped and placed in the 'resourcesNotLoaded' collection.
Example classpath:
META-INF/java.net.URLStreamHandler/jar
META-INF/java.net.URLStreamHandler/file
META-INF/java.net.URLStreamHandler/http
ResourceFinder finder = new ResourceFinder("META-INF/");
Map map = finder.mapAllImplementations(java.net.URLStreamHandler.class);
Class jarUrlHandler = map.get("jar");
Class fileUrlHandler = map.get("file");
Class httpUrlHandler = map.get("http");
Parameters: interfase - a superclass or interface throws: IOException - if classLoader.getResources throws an exception
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.
Example classpath:
META-INF/jdbcDrivers/oracle.properties
META-INF/jdbcDrivers/mysql.props
META-INF/jdbcDrivers/derby
ResourceFinder finder = new ResourceFinder("META-INF/");
List driversList = finder.findAvailableProperties("jdbcDrivers");
Properties oracleProps = driversList.get("oracle.properties");
Properties mysqlProps = driversList.get("mysql.props");
Properties derbyProps = driversList.get("derby");
Parameters: uri - throws: IOException - if classLoader.getResources throws an exception
Reads the contents of all non-directory URLs immediately under the specified
location and returns them in a map keyed by the file name.
Individual URLs that cannot be read are skipped and added to the
list of 'resourcesNotLoaded'
Example classpath:
META-INF/serializables/one
META-INF/serializables/two # not readable
META-INF/serializables/three
META-INF/serializables/four/foo.txt
ResourceFinder finder = new ResourceFinder("META-INF/");
Map map = finder.mapAvailableStrings("serializables");
map.contains("one"); // true
map.contains("two"); // false
map.contains("three"); // true
map.contains("four"); // false
Parameters: uri - a list of the content of each resource URL found throws: IOException - if classLoader.getResources throws an exception