public class GrailsResourceUtils extends java.lang.Object
Utility methods for resource handling / figuring out class names.
Modifiers | Name | Description |
---|---|---|
static java.lang.String |
CLASSPATH_URL_PREFIX |
Pseudo URL prefix for loading from the class path: "classpath:" |
static java.lang.String |
CLASS_EXTENSION |
|
static java.util.regex.Pattern[] |
COMPILER_ROOT_PATTERNS |
|
private static java.lang.String |
CURRENT_PATH |
|
static java.lang.String |
DOMAIN_DIR_PATH |
|
static java.util.regex.Pattern |
DOMAIN_PATH_PATTERN |
|
static java.lang.String |
FILE_URL_PREFIX |
URL prefix for loading from the file system: "file:" |
private static java.lang.String |
FOLDER_SEPARATOR |
|
static java.lang.String |
GRAILS_APP_DIR |
The name of the Grails application directory |
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_EIGHTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_ELEVENTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_FIFTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_FIRST_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_FOURTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_NINTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_SECOND_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_SEVENTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_SIXTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_TENTH_MATCH |
|
static java.util.regex.Pattern |
GRAILS_RESOURCE_PATTERN_THIRD_MATCH |
|
static java.lang.String |
JAR_URL_SEPARATOR |
|
private static java.util.Map<java.lang.String, java.lang.Boolean> |
KNOWN_DOMAIN_CLASSES |
|
private static java.util.Map<java.lang.String, java.lang.Boolean> |
KNOWN_PATHS |
|
private static java.util.regex.Pattern |
PLUGIN_PATTERN |
|
private static java.util.regex.Pattern |
PLUGIN_RESOURCE_PATTERN |
|
static java.lang.String |
REGEX_FILE_SEPARATOR |
|
static java.util.regex.Pattern |
RESOURCE_PATH_PATTERN |
|
static java.util.regex.Pattern |
SPRING_SCRIPTS_PATH_PATTERN |
|
private static java.lang.String |
TOP_PATH |
|
static java.lang.String |
URL_PROTOCOL_CODE_SOURCE |
URL protocol for an entry from an OC4J jar file: "code-source" |
static java.lang.String |
URL_PROTOCOL_FILE |
URL protocol for a file in the file system: "file" |
static java.lang.String |
URL_PROTOCOL_JAR |
URL protocol for an entry from a jar file: "jar" |
static java.lang.String |
URL_PROTOCOL_VFS |
URL protocol for a JBoss VFS resource: "vfs" |
static java.lang.String |
URL_PROTOCOL_VFSZIP |
URL protocol for an entry from a JBoss jar file: "vfszip" |
static java.lang.String |
URL_PROTOCOL_WSJAR |
URL protocol for an entry from a WebSphere jar file: "wsjar" |
static java.lang.String |
URL_PROTOCOL_ZIP |
URL protocol for an entry from a zip file: "zip" |
static java.lang.String |
VIEWS_DIR_PATH |
The path to the views directory |
static java.lang.String |
VIEWS_DIR_PATH_NO_SLASH |
The path to the views directory without a trailing slash |
static java.lang.String |
WEB_APP_DIR |
The name of the Web app dir within Grails |
static java.lang.String |
WEB_INF |
The relative path to the WEB-INF directory |
private static java.lang.String |
WINDOWS_FOLDER_SEPARATOR |
|
static java.util.regex.Pattern[] |
grailsAppResourcePatterns |
|
static java.util.regex.Pattern[] |
patterns |
Type Params | Return Type | Name and description |
---|---|---|
|
public static java.lang.String |
appendPiecesForUri(java.lang.String pieces) Takes any number of Strings and appends them into a uri, making sure that a forward slash is inserted between each piece and making sure that no duplicate slashes are in the uri |
|
public static java.lang.String |
applyRelativePath(java.lang.String path, java.lang.String relativePath) Apply the given relative path to the given path, assuming standard Java folder separation (i.e. "/" separators). |
|
public java.lang.Object |
call(java.lang.Object args) |
|
public static java.lang.String |
classPackageAsResourcePath(java.lang.Class<?> clazz) Given an input class object, return a string which consists of the class's package name as a pathname, i.e., all dots ('.') are replaced by slashes ('/'). |
|
public static java.lang.String |
cleanPath(java.lang.String path) Normalize the path by suppressing sequences like "path/.." and inner simple dots. |
|
private static java.lang.String |
collectionToDelimitedString(java.util.Collection<?> coll, java.lang.String delim) |
|
private static java.lang.String |
collectionToDelimitedString(java.util.Collection<?> coll, java.lang.String delim, java.lang.String prefix, java.lang.String suffix) |
|
private static java.lang.String |
createGrailsResourcePattern(java.lang.String separator, java.lang.String base) |
|
private static java.lang.String |
deleteAny(java.lang.String inString, java.lang.String charsToDelete) |
|
private static java.lang.String[] |
delimitedListToStringArray(java.lang.String str, java.lang.String delimiter) Take a String which is a delimited list and convert it to a String array. |
|
private static java.lang.String[] |
delimitedListToStringArray(java.lang.String str, java.lang.String delimiter, java.lang.String charsToDelete) Take a String which is a delimited list and convert it to a String array. |
|
public static java.net.URL |
extractJarFileURL(java.net.URL jarUrl) Extract the URL for the actual jar file from the given URL (which may point to a resource in a jar file or to a jar file itself). |
|
private static java.lang.Class<?> |
forName(java.lang.String className, java.lang.ClassLoader defaultClassLoader) |
|
public static Resource |
getAppDir(Resource resource) |
|
public static java.lang.String |
getArtefactDirectory(java.lang.String path) Takes a file path and returns the name of the folder under grails-app i.e: |
|
public static java.lang.String |
getClassName(Resource resource) Gets the class name of the specified Grails resource |
|
public static java.lang.String |
getClassName(java.lang.String path) Returns the class name for a Grails resource. |
|
public static java.lang.String |
getClassNameForClassFile(java.lang.String rootDir, java.lang.String path) Returns the class name for a compiled class file |
|
public static java.io.File |
getFile(java.net.URL resourceUrl, java.lang.String description) Resolve the given resource URL to a java.io.File ,
i.e. to a file in the file system. |
|
public static java.io.File |
getFile(java.net.URI resourceUri, java.lang.String description) Resolve the given resource URI to a java.io.File ,
i.e. to a file in the file system. |
|
public static java.io.File |
getFile(java.net.URI resourceUri) Resolve the given resource URI to a java.io.File ,
i.e. to a file in the file system. |
|
public static java.lang.String |
getFilename(java.lang.String path) Extract the filename from the given path, e.g. |
|
public static java.lang.String |
getPathFromBaseDir(java.lang.String path) Gets the path relative to the project base directory. |
|
public static java.lang.String |
getPathFromRoot(java.lang.String path) Get the path relative to an artefact folder under grails-app i.e: |
|
public static java.lang.String |
getRelativeInsideWebInf(Resource resource) Takes a Grails resource (one located inside the grails-app dir) and gets its relative path inside the WEB-INF directory when deployed. |
|
public static java.lang.String |
getStaticResourcePathForResource(Resource resource, java.lang.String contextPath) Retrieves the static resource path for the given Grails resource artifact (controller/taglib etc.) |
|
public static Resource |
getViewsDir(Resource resource) |
|
private static boolean |
hasLength(java.lang.CharSequence str) |
|
public static java.lang.Object |
instantiateFromConfig(groovy.util.ConfigObject config, java.lang.String configKey, java.lang.String defaultClassName) |
|
public static java.lang.Object |
instantiateFromFlatConfig(java.util.Map<java.lang.String, java.lang.Object> flatConfig, java.lang.String configKey, java.lang.String defaultClassName) |
|
public static boolean |
isDomainClass(java.net.URL url) |
|
public static boolean |
isFileURL(java.net.URL url) Determine whether the given URL points to a resource in the file system, that is, has protocol "file" or "vfs". |
|
public static boolean |
isGrailsPath(java.lang.String path) |
|
public static boolean |
isGrailsResource(Resource r) Checks whether the specific resources is a Grails resource. |
|
public static boolean |
isJarURL(java.net.URL url) Determine whether the given URL points to a resource in a jar file, that is, has protocol "jar", "zip", "wsjar" or "code-source". |
|
public static boolean |
isProjectSource(java.lang.String path) Checks whether the specified path is a Grails path. |
|
public static boolean |
isProjectSource(Resource r) Checks whether the specified path is a Grails path. |
|
protected boolean |
removeEldestEntry(java.util.Map$Entry eldest) |
|
protected boolean |
removeEldestEntry(Map.Entry<java.lang.String, java.lang.Boolean> eldest) |
|
private static java.lang.String |
replace(java.lang.String inString, java.lang.String oldPattern, java.lang.String newPattern) Replace all occurences of a substring within a string with another string. |
|
private static java.lang.String[] |
toStringArray(java.util.Collection<java.lang.String> collection) |
|
public static java.net.URI |
toURI(java.net.URL url) Create a URI instance for the given URL, replacing spaces with "%20" quotes first. |
|
public static java.net.URI |
toURI(java.lang.String location) Create a URI instance for the given location String, replacing spaces with "%20" quotes first. |
|
public static void |
useCachesIfNecessary(java.net.URLConnection con) |
Methods inherited from class | Name |
---|---|
class java.lang.Object |
java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Pseudo URL prefix for loading from the class path: "classpath:"
URL prefix for loading from the file system: "file:"
The name of the Grails application directory
URL protocol for an entry from an OC4J jar file: "code-source"
URL protocol for a file in the file system: "file"
URL protocol for an entry from a jar file: "jar"
URL protocol for a JBoss VFS resource: "vfs"
URL protocol for an entry from a JBoss jar file: "vfszip"
URL protocol for an entry from a WebSphere jar file: "wsjar"
URL protocol for an entry from a zip file: "zip"
The path to the views directory
The path to the views directory without a trailing slash
The name of the Web app dir within Grails
The relative path to the WEB-INF directory
Takes any number of Strings and appends them into a uri, making sure that a forward slash is inserted between each piece and making sure that no duplicate slashes are in the uri
Input: "" Output: "" Input: "/alpha", "/beta", "/gamma" Output: "/alpha/beta/gamma Input: "/alpha/, "/beta/", "/gamma" Output: "/alpha/beta/gamma Input: "/alpha/", "/beta/", "/gamma/" Output "/alpha/beta/gamma/ Input: "alpha", "beta", "gamma" Output: "alpha/beta/gamma
pieces
- Strings to concatenate together into a uriApply the given relative path to the given path, assuming standard Java folder separation (i.e. "/" separators).
path
- the path to start from (usually a full file path)relativePath
- the relative path to apply
(relative to the full file path above) Given an input class object, return a string which consists of the
class's package name as a pathname, i.e., all dots ('.') are replaced by
slashes ('/'). Neither a leading nor trailing slash is added. The result
could be concatenated with a slash and the name of a resource and fed
directly to ClassLoader.getResource()
. For it to be fed to
Class.getResource
instead, a leading slash would also have
to be prepended to the returned value.
clazz
- the input class. A null
value or the default
(empty) package will result in an empty string ("") being returned.Normalize the path by suppressing sequences like "path/.." and inner simple dots.
The result is convenient for path comparison. For other uses, notice that Windows separators ("\") are replaced by simple slashes.
path
- the original pathTake a String which is a delimited list and convert it to a String array.
A single delimiter can consists of more than one character: It will still
be considered as single delimiter string, rather than as bunch of potential
delimiter characters - in contrast to tokenizeToStringArray
.
str
- the input Stringdelimiter
- the delimiter between elements (this is a single delimiter,
rather than a bunch individual delimiter characters)Take a String which is a delimited list and convert it to a String array.
A single delimiter can consists of more than one character: It will still
be considered as single delimiter string, rather than as bunch of potential
delimiter characters - in contrast to tokenizeToStringArray
.
str
- the input Stringdelimiter
- the delimiter between elements (this is a single delimiter,
rather than a bunch individual delimiter characters)charsToDelete
- a set of characters to delete. Useful for deleting unwanted
line breaks: e.g. "\\r\\n\\f" will delete all new lines and line feeds in a String.Extract the URL for the actual jar file from the given URL (which may point to a resource in a jar file or to a jar file itself).
jarUrl
- the original URLTakes a file path and returns the name of the folder under grails-app i.e: Input: /usr/joe/project/grails-app/domain/com/mystartup/Book.groovy Output: domain
path
- The pathGets the class name of the specified Grails resource
resource
- The Spring ResourceReturns the class name for a Grails resource.
path
- The path to checkReturns the class name for a compiled class file
path
- The path to check Resolve the given resource URL to a java.io.File
,
i.e. to a file in the file system.
resourceUrl
- the resource URL to resolvedescription
- a description of the original resource that
the URL was created for (for example, a class path location) Resolve the given resource URI to a java.io.File
,
i.e. to a file in the file system.
resourceUri
- the resource URI to resolvedescription
- a description of the original resource that
the URI was created for (for example, a class path location) Resolve the given resource URI to a java.io.File
,
i.e. to a file in the file system.
resourceUri
- the resource URI to resolveExtract the filename from the given path, e.g. "mypath/myfile.txt" -> "myfile.txt".
path
- the file path (may be null
)null
if noneGets the path relative to the project base directory. Input: /usr/joe/project/grails-app/conf/BootStrap.groovy Output: grails-app/conf/BootStrap.groovy
path
- The pathGet the path relative to an artefact folder under grails-app i.e: Input: /usr/joe/project/grails-app/conf/BootStrap.groovy Output: BootStrap.groovy Input: /usr/joe/project/grails-app/domain/com/mystartup/Book.groovy Output: com/mystartup/Book.groovy
path
- The path to evaluateTakes a Grails resource (one located inside the grails-app dir) and gets its relative path inside the WEB-INF directory when deployed.
resource
- The Grails resource, which is a file inside the grails-app dirRetrieves the static resource path for the given Grails resource artifact (controller/taglib etc.)
resource
- The ResourcecontextPath
- The additonal context path to prefixDetermine whether the given URL points to a resource in the file system, that is, has protocol "file" or "vfs".
url
- the URL to checkChecks whether the specific resources is a Grails resource. A Grails resource is a Groovy or Java class under the grails-app directory
r
- The resource to checkDetermine whether the given URL points to a resource in a jar file, that is, has protocol "jar", "zip", "wsjar" or "code-source".
"zip" and "wsjar" are used by BEA WebLogic Server and IBM WebSphere, respectively, but can be treated like jar files. The same applies to "code-source" URLs on Oracle OC4J, provided that the path contains a jar separator.
url
- the URL to checkChecks whether the specified path is a Grails path.
path
- The path to checkChecks whether the specified path is a Grails path.
r
- The resoruce to checkReplace all occurences of a substring within a string with another string.
inString
- String to examineoldPattern
- String to replacenewPattern
- String to insertCreate a URI instance for the given URL, replacing spaces with "%20" quotes first.
Furthermore, this method works on JDK 1.4 as well,
in contrast to the URL.toURI()
method.
url
- the URL to convert into a URI instanceCreate a URI instance for the given location String, replacing spaces with "%20" quotes first.
location
- the location String to convert into a URI instance