org.apache.cayenne.util
Class ResourceLocator

java.lang.Object
  extended by org.apache.cayenne.util.ResourceLocator
Direct Known Subclasses:
WebApplicationResourceLocator

public class ResourceLocator
extends java.lang.Object

Utility class to find resources (files, etc.), using a preconfigured strategy.

Author:
Andrei Adamchik

Nested Class Summary
protected static class ResourceLocator.PredicateLogger
          Custom logger that can be dynamically turned on/off by evaluating a Predicate.
 
Field Summary
protected  java.util.List additionalClassPaths
           
protected  java.util.List additionalFilesystemPaths
           
protected  java.lang.ClassLoader classLoader
           
protected  boolean skipAbsolutePath
           
protected  boolean skipClasspath
           
protected  boolean skipCurrentDirectory
           
protected  boolean skipHomeDirectory
           
 
Constructor Summary
ResourceLocator()
          Creates new ResourceLocator with default lookup policy including user home directory, current directory and CLASSPATH.
 
Method Summary
 void addClassPath(java.lang.String customPath)
          Adds a custom path for class path lookups.
 void addFilesystemPath(java.io.File path)
          Adds the given directory as a path for filesystem lookups.
 void addFilesystemPath(java.lang.String path)
          Adds the given String as a custom path for filesystem lookups.
static java.lang.String classBaseUrl(java.lang.Class aClass)
          Returns a base URL as a String from which this class was loaded.
 java.net.URL findDirectoryResource(java.lang.String name)
          Returns a directory resource URL using the lookup strategy configured for this ResourceLocator or null if no readable resource can be found for the given name.
static java.io.File findFileInCurrentDirectory(java.lang.String name)
          Looks up a file in the current directory.
static java.io.File findFileInFileSystem(java.lang.String name)
          Looks up a file in the filesystem.
static java.io.File findFileInHomeDirectory(java.lang.String name)
          Looks up a file in the user home directory.
 java.net.URL findResource(java.lang.String name)
          Returns a resource URL using the lookup strategy configured for this Resourcelocator or null if no readable resource can be found for the given name.
static java.io.InputStream findResourceInClasspath(java.lang.String name)
          Returns a resource as InputStream if it is found in CLASSPATH or null otherwise.
static java.io.InputStream findResourceInFileSystem(java.lang.String name)
          Returns a resource as InputStream if it is found in the filesystem or null otherwise.
 java.io.InputStream findResourceStream(java.lang.String name)
          Returns an InputStream on the found resource using the lookup strategy configured for this ResourceLocator or null if no readable resource can be found for the given name.
static java.net.URL findURLInClassLoader(java.lang.String name, java.lang.ClassLoader loader)
          Looks up the URL for the named resource using the specified ClassLoader.
static java.net.URL findURLInClasspath(java.lang.String name)
          Looks up the URL for the named resource using this class' ClassLoader.
 java.lang.ClassLoader getClassLoader()
          Returns the ClassLoader associated with this ResourceLocator.
 void setClassLoader(java.lang.ClassLoader classLoader)
          Sets ClassLoader used to locate resources.
 void setSkipAbsolutePath(boolean skipAbsPath)
          Sets "skipAbsolutePath" property.
 void setSkipClasspath(boolean skipClasspath)
          Sets "skipClasspath" property.
 void setSkipCurrentDirectory(boolean skipCurDir)
          Sets "skipCurrentDirectory" property.
 void setSkipHomeDirectory(boolean skipHomeDir)
          Sets "skipHomeDirectory" property.
 boolean willSkipAbsolutePath()
          Returns true if no lookups are performed using path as absolute path.
 boolean willSkipClasspath()
          Returns true if no lookups are performed in the classpath.
 boolean willSkipCurrentDirectory()
          Returns true if no lookups are performed in the current directory.
 boolean willSkipHomeDirectory()
          Returns true if no lookups are performed in the user home directory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

skipAbsolutePath

protected boolean skipAbsolutePath

skipClasspath

protected boolean skipClasspath

skipCurrentDirectory

protected boolean skipCurrentDirectory

skipHomeDirectory

protected boolean skipHomeDirectory

additionalClassPaths

protected java.util.List additionalClassPaths

additionalFilesystemPaths

protected java.util.List additionalFilesystemPaths

classLoader

protected java.lang.ClassLoader classLoader
Constructor Detail

ResourceLocator

public ResourceLocator()
Creates new ResourceLocator with default lookup policy including user home directory, current directory and CLASSPATH.

Method Detail

findResourceInClasspath

public static java.io.InputStream findResourceInClasspath(java.lang.String name)
Returns a resource as InputStream if it is found in CLASSPATH or null otherwise. Lookup is normally performed in all JAR and ZIP files and directories available to the ClassLoader.


findResourceInFileSystem

public static java.io.InputStream findResourceInFileSystem(java.lang.String name)
Returns a resource as InputStream if it is found in the filesystem or null otherwise. Lookup is first performed relative to the user's home directory (as defined by "user.home" system property), and then relative to the current directory.


findFileInFileSystem

public static java.io.File findFileInFileSystem(java.lang.String name)
Looks up a file in the filesystem. First looks in the user home directory, then in the current directory.

Returns:
file object matching the name, or null if file can not be found or if it is not readable.
See Also:
findFileInHomeDirectory(String), findFileInCurrentDirectory(String)

findFileInHomeDirectory

public static java.io.File findFileInHomeDirectory(java.lang.String name)
Looks up a file in the user home directory.

Returns:
file object matching the name, or null if file cannot be found or is not readable.

findFileInCurrentDirectory

public static java.io.File findFileInCurrentDirectory(java.lang.String name)
Looks up a file in the current directory.

Returns:
file object matching the name, or null if file can not be found is not readable.

findURLInClasspath

public static java.net.URL findURLInClasspath(java.lang.String name)
Looks up the URL for the named resource using this class' ClassLoader.


findURLInClassLoader

public static java.net.URL findURLInClassLoader(java.lang.String name,
                                                java.lang.ClassLoader loader)
Looks up the URL for the named resource using the specified ClassLoader.


classBaseUrl

public static java.lang.String classBaseUrl(java.lang.Class aClass)
Returns a base URL as a String from which this class was loaded. This is normally a JAR or a file URL, but it is ClassLoader dependent.


findResourceStream

public java.io.InputStream findResourceStream(java.lang.String name)
Returns an InputStream on the found resource using the lookup strategy configured for this ResourceLocator or null if no readable resource can be found for the given name.


findResource

public java.net.URL findResource(java.lang.String name)
Returns a resource URL using the lookup strategy configured for this Resourcelocator or null if no readable resource can be found for the given name.


findDirectoryResource

public java.net.URL findDirectoryResource(java.lang.String name)
Returns a directory resource URL using the lookup strategy configured for this ResourceLocator or null if no readable resource can be found for the given name. The returned resource is assumed to be a directory, so the returned URL will be in a directory format (with "/" at the end).


willSkipHomeDirectory

public boolean willSkipHomeDirectory()
Returns true if no lookups are performed in the user home directory.


setSkipHomeDirectory

public void setSkipHomeDirectory(boolean skipHomeDir)
Sets "skipHomeDirectory" property.


willSkipCurrentDirectory

public boolean willSkipCurrentDirectory()
Returns true if no lookups are performed in the current directory.


setSkipCurrentDirectory

public void setSkipCurrentDirectory(boolean skipCurDir)
Sets "skipCurrentDirectory" property.


willSkipClasspath

public boolean willSkipClasspath()
Returns true if no lookups are performed in the classpath.


setSkipClasspath

public void setSkipClasspath(boolean skipClasspath)
Sets "skipClasspath" property.


getClassLoader

public java.lang.ClassLoader getClassLoader()
Returns the ClassLoader associated with this ResourceLocator.


setClassLoader

public void setClassLoader(java.lang.ClassLoader classLoader)
Sets ClassLoader used to locate resources. If null is passed, the ClassLoader of the ResourceLocator class will be used.


willSkipAbsolutePath

public boolean willSkipAbsolutePath()
Returns true if no lookups are performed using path as absolute path.


setSkipAbsolutePath

public void setSkipAbsolutePath(boolean skipAbsPath)
Sets "skipAbsolutePath" property.


addClassPath

public void addClassPath(java.lang.String customPath)
Adds a custom path for class path lookups. Format should be "my/package/name" without leading "/".


addFilesystemPath

public void addFilesystemPath(java.lang.String path)
Adds the given String as a custom path for filesystem lookups. The path can be relative or absolute and is not checked for existence.

Throws:
java.lang.IllegalArgumentException - if path is null.

addFilesystemPath

public void addFilesystemPath(java.io.File path)
Adds the given directory as a path for filesystem lookups. The directory is checked for existence.

Throws:
java.lang.IllegalArgumentException - if path is null, not a directory or not readable.


Copyright © 2001-2006 Apache.org All Rights Reserved.