Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.tools.ant
Class AntClassLoader

    java.lang.Object
      java.lang.ClassLoader
          org.apache.tools.ant.AntClassLoader

All Implemented Interfaces:
  BuildListener, java.util.EventListener

public class AntClassLoader
extends java.lang.ClassLoader
implements BuildListener

Used to load classes within ant with a different claspath from that used to start ant. Note that it is possible to force a class into this loader even when that class is on the system classpath by using the forceLoadClass method. Any subsequent classes loaded by that class will then use this loader rather than the system class loader.

Author:
  Conor MacNeill, Jesse Glick, Magesh Umasankar

Constructor Summary
`AntClassLoader(java.lang.ClassLoader parent, boolean parentFirst)` Creates an empty class loader.
`AntClassLoader(java.lang.ClassLoader parent, Project project, Path classpath, boolean parentFirst)` Creates a classloader for the given project using the classpath given.
`AntClassLoader(Project project, Path classpath)` Creates a classloader for the given project using the classpath given.
`AntClassLoader(Project project, Path classpath, boolean parentFirst)` Creates a classloader for the given project using the classpath given.

Method Summary
`void` | `addLoaderPackageRoot(java.lang.String packageRoot)` Adds a package root to the list of packages which must be loaded using this loader.
`void` | `addPathElement(java.lang.String pathElement)` Adds an element to the classpath to be searched.
`void` | `addSystemPackageRoot(java.lang.String packageRoot)` Adds a package root to the list of packages which must be loaded on the parent loader.
`void` | `buildFinished(BuildEvent event)` Cleans up any resources held by this classloader at the end of a build.
`void` | `buildStarted(BuildEvent event)` Empty implementation to satisfy the BuildListener interface.
`void` | `cleanup()` Cleans up any resources held by this classloader.
`java.lang.Class` | `findClass(java.lang.String name)` Searches for and load a class on the classpath of this class loader.
`protected java.util.Enumeration` | `findResources(java.lang.String name)` Returns an enumeration of URLs representing all the resources with the given name by searching the class loader's classpath.
`java.lang.Class` | `forceLoadClass(java.lang.String classname)` Loads a class through this class loader even if that class is available on the parent classpath.
`java.lang.Class` | `forceLoadSystemClass(java.lang.String classname)` Loads a class through this class loader but defer to the parent class loader.
`java.lang.String` | `getClasspath()` Returns the classpath this classloader will consult.
`java.net.URL` | `getResource(java.lang.String name)` Finds the resource with the given name.
`java.io.InputStream` | `getResourceAsStream(java.lang.String name)` Returns a stream to read the requested resource name.
`static void` | `initializeClass(java.lang.Class theClass)` Forces initialization of a class in a JDK 1.1 compatible, albeit hacky way.
`protected java.lang.Class` | `loadClass(java.lang.String classname, boolean resolve)` Loads a class with this class loader.
`protected void` | `log(java.lang.String message, int priority)` Logs a message through the project object if one has been provided.
`void` | `messageLogged(BuildEvent event)` Empty implementation to satisfy the BuildListener interface.
`void` | `resetThreadContextLoader()` Resets the current thread's context loader to its original value.
`void` | `setIsolated(boolean isolated)` Sets whether this classloader should run in isolated mode.
`void` | `setThreadContextLoader()` Sets the current thread's context loader to this classloader, storing the current loader value for later resetting.
`void` | `targetFinished(BuildEvent event)` Empty implementation to satisfy the BuildListener interface.
`void` | `targetStarted(BuildEvent event)` Empty implementation to satisfy the BuildListener interface.
`void` | `taskFinished(BuildEvent event)` Empty implementation to satisfy the BuildListener interface.
`void` | `taskStarted(BuildEvent event)` Empty implementation to satisfy the BuildListener interface.

Methods inherited from class java.lang.ClassLoader
`clearAssertionStatus, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findResource, findSystemClass, getPackage, getPackages, getParent, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AntClassLoader

    public AntClassLoader(Project project,
                          Path classpath)

  Creates a classloader for the given project using the classpath given.

Parameters:
  `project` - The project to which this classloader is to belong. Must not be `null`.
  `classpath` - The classpath to use to load the classes. This is combined with the system classpath in a manner determined by the value of ${build.sysclasspath}. May be `null`, in which case no path elements are set up to start with.

### AntClassLoader

    public AntClassLoader(java.lang.ClassLoader parent,
                          Project project,
                          Path classpath,
                          boolean parentFirst)

  Creates a classloader for the given project using the classpath given.

Parameters:
  `parent` - The parent classloader to which unsatisfied loading attempts are delegated. May be `null`, in which case the classloader which loaded this class is used as the parent.
  `project` - The project to which this classloader is to belong. Must not be `null`.
  `classpath` - the classpath to use to load the classes. May be `null`, in which case no path elements are set up to start with.
  `parentFirst` - If `true`, indicates that the parent classloader should be consulted before trying to load the a class through this loader.

### AntClassLoader

    public AntClassLoader(Project project,
                          Path classpath,
                          boolean parentFirst)

  Creates a classloader for the given project using the classpath given.

Parameters:
  `project` - The project to which this classloader is to belong. Must not be `null`.
  `classpath` - The classpath to use to load the classes. May be `null`, in which case no path elements are set up to start with.
  `parentFirst` - If `true`, indicates that the parent classloader should be consulted before trying to load the a class through this loader.

### AntClassLoader

    public AntClassLoader(java.lang.ClassLoader parent,
                          boolean parentFirst)

  Creates an empty class loader. The classloader should be configured with path elements to specify where the loader is to look for classes.

Parameters:
  `parent` - The parent classloader to which unsatisfied loading attempts are delegated. May be `null`, in which case the classloader which loaded this class is used as the parent.
  `parentFirst` - If `true`, indicates that the parent classloader should be consulted before trying to load the a class through this loader.

Method Detail

### log

    protected void log(java.lang.String message,
                       int priority)

  Logs a message through the project object if one has been provided.

  Parameters:
    `message` - The message to log. Should not be `null`.
    `priority` - The logging priority of the message.

### setThreadContextLoader

    public void setThreadContextLoader()

  Sets the current thread's context loader to this classloader, storing the current loader value for later resetting.

### resetThreadContextLoader

    public void resetThreadContextLoader()

  Resets the current thread's context loader to its original value.

### addPathElement

    public void addPathElement(java.lang.String pathElement)
                        throws BuildException

  Adds an element to the classpath to be searched.

  Parameters:
    `pathElement` - The path element to add. Must not be `null`.
  Throws:
    `BuildException` - if the given path element cannot be resolved against the project.

### getClasspath

    public java.lang.String getClasspath()

  Returns the classpath this classloader will consult.

  Returns:
    the classpath used for this classloader, with elements separated by the path separator for the system.

### setIsolated

    public void setIsolated(boolean isolated)

  Sets whether this classloader should run in isolated mode. In isolated mode, classes not found on the given classpath will not be referred to the parent class loader but will cause a ClassNotFoundException.

  Parameters:
    `isolated` - Whether or not this classloader should run in isolated mode.

### initializeClass

    public static void initializeClass(java.lang.Class theClass)

  Forces initialization of a class in a JDK 1.1 compatible, albeit hacky way.

  Parameters:
    `theClass` - The class to initialize. Must not be `null`.

### addSystemPackageRoot

    public void addSystemPackageRoot(java.lang.String packageRoot)

  Adds a package root to the list of packages which must be loaded on the parent loader. All subpackages are also included.

  Parameters:
    `packageRoot` - The root of all packages to be included. Should not be `null`.

### addLoaderPackageRoot

    public void addLoaderPackageRoot(java.lang.String packageRoot)

  Adds a package root to the list of packages which must be loaded using this loader. All subpackages are also included.

  Parameters:
    `packageRoot` - The root of all packages to be included. Should not be `null`.

### forceLoadClass

    public java.lang.Class forceLoadClass(java.lang.String classname)
                                   throws java.lang.ClassNotFoundException

  Loads a class through this class loader even if that class is available on the parent classpath. This ensures that any classes which are loaded by the returned class will use this classloader.

  Parameters:
    `classname` - The name of the class to be loaded. Must not be `null`.
  Returns:
    the required Class object
  Throws:
    `java.lang.ClassNotFoundException` - if the requested class does not exist on this loader's classpath.

### forceLoadSystemClass

    public java.lang.Class forceLoadSystemClass(java.lang.String classname)
                                         throws java.lang.ClassNotFoundException

  Loads a class through this class loader but defer to the parent class loader. This ensures that instances of the returned class will be compatible with instances which which have already been loaded on the parent loader.

  Parameters:
    `classname` - The name of the class to be loaded. Must not be `null`.
  Returns:
    the required Class object
  Throws:
    `java.lang.ClassNotFoundException` - if the requested class does not exist on this loader's classpath.

### getResourceAsStream

    public java.io.InputStream getResourceAsStream(java.lang.String name)

  Returns a stream to read the requested resource name.

  Parameters:
    `name` - The name of the resource for which a stream is required. Must not be `null`.
  Returns:
    a stream to the required resource or `null` if the resource cannot be found on the loader's classpath.

### getResource

    public java.net.URL getResource(java.lang.String name)

  Finds the resource with the given name. A resource is some data (images, audio, text, etc) that can be accessed by class code in a way that is independent of the location of the code.

  Parameters:
    `name` - The name of the resource for which a stream is required. Must not be `null`.
  Returns:
    a URL for reading the resource, or `null` if the resource could not be found or the caller doesn't have adequate privileges to get the resource.

### findResources

    protected java.util.Enumeration findResources(java.lang.String name)
                                           throws java.io.IOException

  Returns an enumeration of URLs representing all the resources with the given name by searching the class loader's classpath.

  Parameters:
    `name` - The resource name to search for. Must not be `null`.
  Returns:
    an enumeration of URLs for the resources
  Throws:
    `java.io.IOException` - if I/O errors occurs (can't happen)

### loadClass

    protected java.lang.Class loadClass(java.lang.String classname,
                                        boolean resolve)
                                 throws java.lang.ClassNotFoundException

  Loads a class with this class loader. This class attempts to load the class in an order determined by whether or not the class matches the system/loader package lists, with the loader package list taking priority. If the classloader is in isolated mode, failure to load the class in this loader will result in a ClassNotFoundException.

  Parameters:
    `classname` - The name of the class to be loaded. Must not be `null`.
    `resolve` - `true` if all classes upon which this class depends are to be loaded.
  Returns:
    the required Class object
  Throws:
    `java.lang.ClassNotFoundException` - if the requested class does not exist on the system classpath (when not in isolated mode) or this loader's classpath.

### findClass

    public java.lang.Class findClass(java.lang.String name)
                              throws java.lang.ClassNotFoundException

  Searches for and load a class on the classpath of this class loader.

  Parameters:
    `name` - The name of the class to be loaded. Must not be `null`.
  Returns:
    the required Class object
  Throws:
    `java.lang.ClassNotFoundException` - if the requested class does not exist on this loader's classpath.

### cleanup

    public void cleanup()

  Cleans up any resources held by this classloader. Any open archive files are closed.

### buildStarted

    public void buildStarted(BuildEvent event)

  Empty implementation to satisfy the BuildListener interface.

  Specified by:
    `buildStarted` in interface `BuildListener`
  Parameters:
    `event` - the buildStarted event

### buildFinished

    public void buildFinished(BuildEvent event)

  Cleans up any resources held by this classloader at the end of a build.

  Specified by:
    `buildFinished` in interface `BuildListener`
  Parameters:
    `event` - the buildFinished event
  See Also:
    `BuildEvent.getException()`

### targetStarted

    public void targetStarted(BuildEvent event)

  Empty implementation to satisfy the BuildListener interface.

  Specified by:
    `targetStarted` in interface `BuildListener`
  Parameters:
    `event` - the targetStarted event
  See Also:
    `BuildEvent.getTarget()`

### targetFinished

    public void targetFinished(BuildEvent event)

  Empty implementation to satisfy the BuildListener interface.

  Specified by:
    `targetFinished` in interface `BuildListener`
  Parameters:
    `event` - the targetFinished event
  See Also:
    `BuildEvent.getException()`

### taskStarted

    public void taskStarted(BuildEvent event)

  Empty implementation to satisfy the BuildListener interface.

  Specified by:
    `taskStarted` in interface `BuildListener`
  Parameters:
    `event` - the taskStarted event
  See Also:
    `BuildEvent.getTask()`

### taskFinished

    public void taskFinished(BuildEvent event)

  Empty implementation to satisfy the BuildListener interface.

  Specified by:
    `taskFinished` in interface `BuildListener`
  Parameters:
    `event` - the taskFinished event
  See Also:
    `BuildEvent.getException()`

### messageLogged

    public void messageLogged(BuildEvent event)

  Empty implementation to satisfy the BuildListener interface.

  Specified by:
    `messageLogged` in interface `BuildListener`
  Parameters:
    `event` - the messageLogged event
  See Also:
    `BuildEvent.getMessage()`, `BuildEvent.getPriority()`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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