public class URLClassSpace extends java.lang.Object implements ClassSpace
Modifier and Type | Field and Description |
---|---|
private java.net.URL[] |
classPath |
private static java.lang.String[] |
EMPTY_CLASSPATH |
private java.lang.ClassLoader |
loader |
private static java.lang.String |
MANIFEST_ENTRY |
private static java.util.Enumeration<java.net.URL> |
NO_ENTRIES |
private static java.net.URL[] |
NO_URLS |
private java.lang.String |
pathDetails |
private static java.lang.String |
SYSTEM_CLASSPATH |
private static java.lang.ClassLoader |
SYSTEM_LOADER |
Constructor and Description |
---|
URLClassSpace(java.lang.ClassLoader loader)
Creates a
ClassSpace backed by a ClassLoader and its default class path. |
URLClassSpace(java.lang.ClassLoader loader,
java.net.URL[] path)
Creates a
ClassSpace backed by a ClassLoader with a restricted class path. |
Modifier and Type | Method and Description |
---|---|
DeferredClass<?> |
deferLoadClass(java.lang.String name)
Defers loading of the named class from the surrounding class space.
|
boolean |
equals(java.lang.Object rhs) |
private static java.net.URL[] |
expandClassPath(java.net.URL[] classPath)
Expands the given
URL class path to include Class-Path entries from local manifests. |
java.util.Enumeration<java.net.URL> |
findEntries(java.lang.String path,
java.lang.String glob,
boolean recurse)
Queries local class space content for entries matching the given pattern.
|
private java.net.URL[] |
getClassPath()
Returns the associated
URL class path; this can either be explicit or implicit. |
private static java.lang.String[] |
getClassPathEntries(java.net.URL url)
Looks for Class-Path entries in the given jar or directory; returns empty array if none are found.
|
java.net.URL |
getResource(java.lang.String name)
Queries the surrounding class space for the resource with the given name.
|
java.util.Enumeration<java.net.URL> |
getResources(java.lang.String name)
Queries the surrounding class space for all resources with the given name.
|
private static java.net.URL[] |
getSystemClassPath()
Returns the system
URL class path. |
java.net.URL[] |
getURLs() |
int |
hashCode() |
java.lang.Class<?> |
loadClass(java.lang.String name)
Loads the named class from the surrounding class space.
|
private static java.net.URL |
normalizeEntry(java.net.URL url)
Normalizes the given class path entry by removing any extraneous "jar:"..."!/" padding.
|
java.lang.String |
toString() |
private static final java.lang.String MANIFEST_ENTRY
private static final java.net.URL[] NO_URLS
private static final java.util.Enumeration<java.net.URL> NO_ENTRIES
private static final java.lang.String[] EMPTY_CLASSPATH
private static final java.lang.ClassLoader SYSTEM_LOADER
private static final java.lang.String SYSTEM_CLASSPATH
private final java.lang.ClassLoader loader
private final java.lang.String pathDetails
private java.net.URL[] classPath
public URLClassSpace(java.lang.ClassLoader loader)
ClassSpace
backed by a ClassLoader
and its default class path.
For URLClassLoader
s this is their expanded Class-Path; otherwise it is empty.
loader
- The class loader to use when getting/finding resourcespublic URLClassSpace(java.lang.ClassLoader loader, java.net.URL[] path)
ClassSpace
backed by a ClassLoader
with a restricted class path.loader
- The class loader to use when getting resourcespath
- The class path to use when finding resourcesgetResources(String)
,
findEntries(String, String, boolean)
public final java.lang.Class<?> loadClass(java.lang.String name)
ClassSpace
loadClass
in interface ClassSpace
name
- The class nameClassLoader.loadClass(String)
public final DeferredClass<?> deferLoadClass(java.lang.String name)
ClassSpace
deferLoadClass
in interface ClassSpace
name
- The class nameClassLoader.loadClass(String)
public final java.net.URL getResource(java.lang.String name)
ClassSpace
getResource
in interface ClassSpace
name
- The resource namenull
if it wasn't foundClassLoader.getResource(String)
public final java.util.Enumeration<java.net.URL> getResources(java.lang.String name)
ClassSpace
getResources
in interface ClassSpace
name
- The resource nameClassLoader.getResources(String)
public final java.util.Enumeration<java.net.URL> findEntries(java.lang.String path, java.lang.String glob, boolean recurse)
ClassSpace
findEntries
in interface ClassSpace
path
- The initial search directory; for example "META-INF"
glob
- The filename glob pattern; for example "*.xml"
recurse
- If true
recurse into sub-directories; otherwise only search initial directoryBundle.findEntries(String, String, boolean)
public final java.net.URL[] getURLs()
public final int hashCode()
hashCode
in class java.lang.Object
public final boolean equals(java.lang.Object rhs)
equals
in class java.lang.Object
public final java.lang.String toString()
toString
in class java.lang.Object
private java.net.URL[] getClassPath()
URL
class path; this can either be explicit or implicit.private static java.net.URL[] getSystemClassPath()
URL
class path.private static java.net.URL[] expandClassPath(java.net.URL[] classPath)
URL
class path to include Class-Path entries from local manifests.classPath
- The URL class pathprivate static java.net.URL normalizeEntry(java.net.URL url)
path
- The URL to normalizeprivate static java.lang.String[] getClassPathEntries(java.net.URL url) throws java.io.IOException
url
- The jar or directory to inspectjava.io.IOException