Package org.apache.tools.ant.util

# Class ClasspathUtils.Delegate

java.lang.Object
org.apache.tools.ant.util.ClasspathUtils.Delegate

Enclosing class:
  `ClasspathUtils`

public static class ClasspathUtils.Delegate extends Object
Delegate that helps out any specific ProjectComponent that needs dynamic classloading.

Ant ProjectComponents that need a to be able to dynamically load Classes and instantiate them often expose the following ant syntax sugar:

- nested <classpath>
- attribute @classpathref
- attribute @classname

This class functions as a delegate handling the configuration issues for this recurring pattern. Its usage pattern, as the name suggests, is delegation rather than inheritance.

Since:
  Ant 1.6

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Path`
  `createClasspath()`
  Delegate method handling the <classpath> tag.
  `ClassLoader`
  `getClassLoader()`
  Finds or creates the classloader for this object.
  `String`
  `getClassLoadId()`
  Computes the loaderId based on the configuration of the component.
  `Path`
  `getClasspath()`
  The classpath.
  `boolean`
  `isReverseLoader()`
  Get the reverseLoader setting.
  `Object`
  `newInstance()`
  Helper method obtaining a fresh instance of the class specified in the @classname and using the specified classpath.
  `void`
  `setClassname(String fcqn)`
  Delegate method handling the @classname attribute.
  `void`
  `setClasspath(Path classpath)`
  This method is a Delegate method handling the @classpath attribute.
  `void`
  `setClasspathref(Reference r)`
  Delegate method handling the @classpathref attribute.
  `void`
  `setLoaderRef(Reference r)`
  Sets the loaderRef.
  `void`
  `setReverseLoader(boolean reverseLoader)`
  Delegate method handling the @reverseLoader attribute.

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

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

- ## Method Details

  - ### setClasspath

    public void setClasspath(Path classpath)
    This method is a Delegate method handling the @classpath attribute.

    This attribute can set a path to add to the classpath.

    Parameters:
      `classpath` - the path to use for the classpath.

  - ### createClasspath

    public Path createClasspath()
    Delegate method handling the <classpath> tag.

    This nested path-like structure can set a path to add to the classpath.

    Returns:
      the created path.

  - ### setClassname

    public void setClassname(String fcqn)
    Delegate method handling the @classname attribute.

    This attribute sets the full qualified class name of the class to load and instantiate.

    Parameters:
      `fcqn` - the name of the class to load.

  - ### setClasspathref

    public void setClasspathref(Reference r)
    Delegate method handling the @classpathref attribute.

    This attribute can add a referenced path-like structure to the classpath.

    Parameters:
      `r` - the reference to the classpath.

  - ### setReverseLoader

    public void setReverseLoader(boolean reverseLoader)
    Delegate method handling the @reverseLoader attribute.

    This attribute can set a boolean indicating that the used classloader should NOT follow the classical parent-first scheme.

    By default this is supposed to be false.

    Caution: this behaviour is contradictory to the normal way classloaders work. Do not let your ProjectComponent use it if you are not really sure.

    Parameters:
      `reverseLoader` - if true reverse the order of looking up a class.

  - ### setLoaderRef

    public void setLoaderRef(Reference r)
    Sets the loaderRef.
    Parameters:
      `r` - the reference to the loader.

  - ### getClassLoader

    public ClassLoader getClassLoader()
    Finds or creates the classloader for this object.
    Returns:
      The class loader.

  - ### getClassLoadId

    public String getClassLoadId()
    Computes the loaderId based on the configuration of the component.
    Returns:
      a loader identifier.

  - ### newInstance

    public Object newInstance()
    Helper method obtaining a fresh instance of the class specified in the @classname and using the specified classpath.
    Returns:
      the fresh instantiated object.

  - ### getClasspath

    public Path getClasspath()
    The classpath.
    Returns:
      the classpath.

  - ### isReverseLoader

    public boolean isReverseLoader()
    Get the reverseLoader setting.
    Returns:
      true if looking up in reverse order.