com.opensymphony.xwork2.util.finder
Class ResourceFinder

java.lang.Object
  extended by com.opensymphony.xwork2.util.finder.ResourceFinder

public class ResourceFinder
extends java.lang.Object

Version:
$Rev: 894090 $ $Date: 2009-12-27 19:18:29 +0100 (Sun, 27 Dec 2009) $
Author:
David Blevins

Constructor Summary
ResourceFinder(java.lang.String path)
           
ResourceFinder(java.lang.String path, ClassLoaderInterface classLoaderInterface)
           
ResourceFinder(java.lang.String path, ClassLoaderInterface classLoaderInterface, java.net.URL... urls)
           
ResourceFinder(java.lang.String path, java.net.URL... urls)
           
ResourceFinder(java.net.URL... urls)
           
 
Method Summary
 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.
 java.util.List<java.lang.Class> findAllImplementations(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.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.
 java.util.List<java.lang.Class> findAvailableImplementations(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.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.Set<java.lang.String> findPackages(java.lang.String uri)
          Gets a list of subpckages from jars or dirs
 java.util.Map<java.net.URL,java.util.Set<java.lang.String>> findPackagesMap(java.lang.String uri)
          Gets a list of subpckages from jars or dirs
 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");

 java.lang.String findString(java.lang.String uri)
          Reads the contents of the URL as a String's and returns it.
 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.
 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.
 java.util.Map<java.lang.String,java.lang.Class> mapAllImplementations(java.lang.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.
 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.
 java.util.Map<java.lang.String,java.lang.Class> mapAvailableImplementations(java.lang.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.
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResourceFinder

public ResourceFinder(java.net.URL... urls)

ResourceFinder

public ResourceFinder(java.lang.String path)

ResourceFinder

public ResourceFinder(java.lang.String path,
                      java.net.URL... urls)

ResourceFinder

public ResourceFinder(java.lang.String path,
                      ClassLoaderInterface classLoaderInterface)

ResourceFinder

public ResourceFinder(java.lang.String path,
                      ClassLoaderInterface classLoaderInterface,
                      java.net.URL... urls)
Method Detail

getResourcesNotLoaded

public 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.

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 java.net.URL find(java.lang.String uri)
                  throws java.io.IOException
Throws:
java.io.IOException

findAll

public java.util.List<java.net.URL> findAll(java.lang.String uri)
                                     throws java.io.IOException
Throws:
java.io.IOException

findString

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

Parameters:
uri -
Returns:
a stringified content of a resource
Throws:
java.io.IOException - if a resource pointed out by the uri param could not be find
See Also:
ClassLoader.getResource(String)

findAllStrings

public java.util.List<java.lang.String> findAllStrings(java.lang.String uri)
                                                throws java.io.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:
java.io.IOException - if any of the found URLs are unable to be read.

findAvailableStrings

public java.util.List<java.lang.String> findAvailableStrings(java.lang.String uri)
                                                      throws java.io.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:
java.io.IOException - if classLoader.getResources throws an exception

mapAllStrings

public java.util.Map<java.lang.String,java.lang.String> mapAllStrings(java.lang.String uri)
                                                               throws java.io.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:
java.io.IOException - if any of the urls cannot be read

mapAvailableStrings

public java.util.Map<java.lang.String,java.lang.String> mapAvailableStrings(java.lang.String uri)
                                                                     throws java.io.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:
java.io.IOException - if classLoader.getResources throws an exception

findClass

public java.lang.Class findClass(java.lang.String uri)
                          throws java.io.IOException,
                                 java.lang.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:
java.io.IOException
java.lang.ClassNotFoundException

findAllClasses

public java.util.List<java.lang.Class> findAllClasses(java.lang.String uri)
                                               throws java.io.IOException,
                                                      java.lang.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:
java.io.IOException
java.lang.ClassNotFoundException

findAvailableClasses

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

mapAllClasses

public java.util.Map<java.lang.String,java.lang.Class> mapAllClasses(java.lang.String uri)
                                                              throws java.io.IOException,
                                                                     java.lang.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:
java.io.IOException
java.lang.ClassNotFoundException

mapAvailableClasses

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

findImplementation

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

findAllImplementations

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

findAvailableImplementations

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

mapAllImplementations

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

mapAvailableImplementations

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

findProperties

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

findAllProperties

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

findAvailableProperties

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

mapAllProperties

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

mapAvailableProperties

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

getResourcesMap

public java.util.Map<java.lang.String,java.net.URL> getResourcesMap(java.lang.String uri)
                                                             throws java.io.IOException
Throws:
java.io.IOException

findPackages

public java.util.Set<java.lang.String> findPackages(java.lang.String uri)
                                             throws java.io.IOException
Gets a list of subpckages from jars or dirs

Throws:
java.io.IOException

findPackagesMap

public java.util.Map<java.net.URL,java.util.Set<java.lang.String>> findPackagesMap(java.lang.String uri)
                                                                            throws java.io.IOException
Gets a list of subpckages from jars or dirs

Throws:
java.io.IOException


Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.