Package org.codehaus.commons.compiler.lang

# Class ClassLoaders

java.lang.Object
org.codehaus.commons.compiler.lang.ClassLoaders

public final class ClassLoaders extends Object
Utility methods around the `ClassLoader`.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ClassLoader`
`BOOTCLASSPATH_CLASS_LOADER`
The `ClassLoader` that loads the classes on the currently executing JVM's "boot class path", i.e.
`static final ClassLoader`
`CLASSPATH_CLASS_LOADER`
The `ClassLoader` that loads the classes on the currently executing JVM's "class path", i.e.

## Method Summary

Modifier and Type
Method
Description
`static ClassLoader`
`getsResourceAsStream(ResourceFinder finder, ClassLoader parent)`
Creates and returns a `ClassLoader` that implements `ClassLoader.getResourceAsStream(String)` via a `ResourceFinder`.
`static Map<String,URL>`
`getSubresources(ClassLoader classLoader, String name, boolean includeDirectories, boolean recurse)`
Returns a name-to-URL mapping of all resources "under" a given directory name.
`static Map<String,URL>`
`getSubresourcesOf(URL root, String rootName, boolean includeDirectories, boolean recurse)`
Returns a name-to-URL mapping of all resources "under" a given root resource.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### CLASSPATH_CLASS_LOADER

public static final ClassLoader CLASSPATH_CLASS_LOADER
The `ClassLoader` that loads the classes on the currently executing JVM's "class path", i.e. the JARs in the JRE's "lib" and "lib/ext" directories, and the JARs and class directories specified through the class path.

### BOOTCLASSPATH_CLASS_LOADER

public static final ClassLoader BOOTCLASSPATH_CLASS_LOADER
The `ClassLoader` that loads the classes on the currently executing JVM's "boot class path", i.e. the JARs in the JRE's "lib" and "lib/ext" directories, but not the JARs and class directories specified through the `--classpath` command line option.

## Method Details

### getsResourceAsStream

public static ClassLoader getsResourceAsStream(ResourceFinder finder, @Nullable ClassLoader parent)
Creates and returns a `ClassLoader` that implements `ClassLoader.getResourceAsStream(String)` via a `ResourceFinder`.

`ClassLoader.getResource(String)` returns a non-`null` value iff then resoure finder finds a `LocatableResource`.

Notice that `ClassLoader.getResources(String)` is not overridden.

### getSubresources

public static Map<String,URL> getSubresources(@Nullable ClassLoader classLoader, String name, boolean includeDirectories, boolean recurse) throws IOException
Returns a name-to-URL mapping of all resources "under" a given directory name.

Iff the name does not end with a slash, then calling this method is equivalent with calling `ClassLoader.getResource(String)`.

Otherwise, if the name does end with a slash, then this method returns a name-to-URL mapping of all content resources who's names begin with the given name. Iff recurse is `false`, then only immediate subresources are included. Iff includeDirectories is `true`, then also directory resources are included in the result set; their names all ending with a slash.

If multiple resources have the name, then the resources are retrieved from the first occurrence.

Parameters:
  `classLoader` - The class loader to use; `null` means use the system class loader
  `name` - No leading slash
Returns:
  Keys ending with a slash map to "directory resources", the other keys map to "content resources"
Throws:
  `IOException`

### getSubresourcesOf

public static Map<String,URL> getSubresourcesOf(URL root, String rootName, boolean includeDirectories, boolean recurse) throws IOException
Returns a name-to-URL mapping of all resources "under" a given root resource.

If the root designates a "content resource" (as opposed to a "directory resource"), then the method returns `Collections.singletonMap(name, rootName)`.

Otherwise, if the root designates a "directory resource", then this method returns a name-to-URL mapping of all content resources that are located "under" the root resource. Iff recurse is `false`, then only immediate subresources are included. Iff includeDirectories is `true`, then directory resources are also included in the result set; their names all ending with a slash.

Returns:
  Keys ending with a slash map to "directory resources", the other keys map to "content resources"
Throws:
  `IOException`