org.apache.xbean.finder
Class ResourceFinder

java.lang.Object
  extended by org.apache.xbean.finder.ResourceFinder

public class ResourceFinder
extends Object

Version:
$Rev: 634087 $ $Date: 2008-03-05 19:05:23 -0500 (Wed, 05 Mar 2008) $
Author:
David Blevins

Constructor Summary
ResourceFinder(String path)
           
ResourceFinder(String path, ClassLoader classLoader)
           
ResourceFinder(String path, ClassLoader classLoader, URL... urls)
           
ResourceFinder(String path, URL... urls)
           
ResourceFinder(URL... urls)
           
 
Method Summary
 URL find(String uri)
           
 List<URL> findAll(String uri)
           
 List<Class> findAllClasses(String uri)
          Executes findAllStrings assuming the strings are the names of a classes that should be loaded and returned.
 List<Class> 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.
 List<Properties> 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.

 List<String> findAllStrings(String uri)
          Reads the contents of the found URLs as a list of String's and returns them.
 List<Class> findAvailableClasses(String uri)
          Executes findAvailableStrings assuming the strings are the names of a classes that should be loaded and returned.
 List<Class> 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.
 List<Properties> 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.

 List<String> findAvailableStrings(String uri)
          Reads the contents of the found URLs as a Strings and returns them.
 Class findClass(String uri)
          Executes findString(String) assuming the contents URL found is the name of a class that should be loaded and returned.
 Class 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.
 Properties findProperties(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");

 String findString(String uri)
          Reads the contents of the URL as a String's and returns it.
 Map<String,URL> getResourcesMap(String uri)
           
 List<String> getResourcesNotLoaded()
          Returns a list of resources that could not be loaded in the last invoked findAvailable* or mapAvailable* methods.
 Map<String,Class> mapAllClasses(String uri)
          Executes mapAllStrings assuming the value of each entry in the map is the name of a class that should be loaded.
 Map<String,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.
 Map<String,Properties> 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.

 Map<String,String> 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.
 Map<String,Class> mapAvailableClasses(String uri)
          Executes mapAvailableStrings assuming the value of each entry in the map is the name of a class that should be loaded.
 Map<String,Class> 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.
 Map<String,Properties> 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.

 Map<String,String> 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResourceFinder

public ResourceFinder(URL... urls)

ResourceFinder

public ResourceFinder(String path)

ResourceFinder

public ResourceFinder(String path,
                      URL... urls)

ResourceFinder

public ResourceFinder(String path,
                      ClassLoader classLoader)

ResourceFinder

public ResourceFinder(String path,
                      ClassLoader classLoader,
                      URL... urls)
Method Detail

getResourcesNotLoaded

public List<String> getResourcesNotLoaded()
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.


find

public URL find(String uri)
         throws IOException
Throws:
IOException

findAll

public List<URL> findAll(String uri)
                  throws IOException
Throws:
IOException

findString

public String findString(String uri)
                  throws IOException
Reads the contents of the URL as a String's and returns it.

Parameters:
uri -
Returns:
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)

findAllStrings

public List<String> findAllStrings(String uri)
                            throws IOException
Reads the contents of the found URLs as a list of String's and returns them.

Parameters:
uri -
Returns:
a list of the content of each resource URL found
Throws:
IOException - if any of the found URLs are unable to be read.

findAvailableStrings

public List<String> findAvailableStrings(String uri)
                                  throws IOException
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 -
Returns:
a list of the content of each resource URL found
Throws:
IOException - if classLoader.getResources throws an exception

mapAllStrings

public Map<String,String> mapAllStrings(String uri)
                                 throws IOException
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 -
Returns:
a list of the content of each resource URL found
Throws:
IOException - if any of the urls cannot be read

mapAvailableStrings

public Map<String,String> mapAvailableStrings(String uri)
                                       throws IOException
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 -
Returns:
a list of the content of each resource URL found
Throws:
IOException - if classLoader.getResources throws an exception

findClass

public Class findClass(String uri)
                throws IOException,
                       ClassNotFoundException
Executes findString(String) assuming the contents URL found is the name of a class that should be loaded and returned.

Parameters:
uri -
Returns:
Throws:
IOException
ClassNotFoundException

findAllClasses

public List<Class> findAllClasses(String uri)
                           throws IOException,
                                  ClassNotFoundException
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 -
Returns:
Throws:
IOException
ClassNotFoundException

findAvailableClasses

public List<Class> findAvailableClasses(String uri)
                                 throws IOException
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 -
Returns:
Throws:
IOException - if classLoader.getResources throws an exception

mapAllClasses

public Map<String,Class> mapAllClasses(String uri)
                                throws IOException,
                                       ClassNotFoundException
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 -
Returns:
Throws:
IOException
ClassNotFoundException

mapAvailableClasses

public Map<String,Class> mapAvailableClasses(String uri)
                                      throws IOException
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 -
Returns:
Throws:
IOException - if classLoader.getResources throws an exception

findImplementation

public Class findImplementation(Class interfase)
                         throws IOException,
                                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 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
Returns:
Throws:
IOException - if the URL cannot be read
ClassNotFoundException - if the class found is not loadable
ClassCastException - if the class found is not assignable to the specified superclass or interface

findAllImplementations

public List<Class> findAllImplementations(Class interfase)
                                   throws IOException,
                                          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
Returns:
Throws:
IOException - if the URL cannot be read
ClassNotFoundException - if the class found is not loadable
ClassCastException - if the class found is not assignable to the specified superclass or interface

findAvailableImplementations

public List<Class> findAvailableImplementations(Class interfase)
                                         throws IOException
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
Returns:
Throws:
IOException - if classLoader.getResources throws an exception

mapAllImplementations

public Map<String,Class> mapAllImplementations(Class interfase)
                                        throws IOException,
                                               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
Returns:
Throws:
IOException - if the URL cannot be read
ClassNotFoundException - if the class found is not loadable
ClassCastException - if the class found is not assignable to the specified superclass or interface

mapAvailableImplementations

public Map<String,Class> mapAvailableImplementations(Class interfase)
                                              throws IOException
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
Returns:
Throws:
IOException - if classLoader.getResources throws an exception

findProperties

public Properties findProperties(String uri)
                          throws IOException
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 -
Returns:
Throws:
IOException - if the URL cannot be read or is not in properties file format

findAllProperties

public List<Properties> findAllProperties(String uri)
                                   throws IOException
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 -
Returns:
Throws:
IOException - if the URL cannot be read or is not in properties file format

findAvailableProperties

public List<Properties> findAvailableProperties(String uri)
                                         throws IOException
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 -
Returns:
Throws:
IOException - if classLoader.getResources throws an exception

mapAllProperties

public Map<String,Properties> mapAllProperties(String uri)
                                        throws IOException
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 -
Returns:
Throws:
IOException - if the URL cannot be read or is not in properties file format

mapAvailableProperties

public Map<String,Properties> mapAvailableProperties(String uri)
                                              throws IOException
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 -
Returns:
Throws:
IOException - if classLoader.getResources throws an exception

getResourcesMap

public Map<String,URL> getResourcesMap(String uri)
                                throws IOException
Throws:
IOException


Copyright © 2005-2009 The Apache Software Foundation. All Rights Reserved.