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 java.lang.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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Path` | `createClasspath()` Delegate method handling the <classpath> tag.
    `java.lang.ClassLoader` | `getClassLoader()` Finds or creates the classloader for this object.
    `java.lang.String` | `getClassLoadId()` Computes the loaderId based on the configuration of the component.
    `Path` | `getClasspath()` The classpath.
    `boolean` | `isReverseLoader()` Get the reverseLoader setting.
    `java.lang.Object` | `newInstance()` Helper method obtaining a fresh instance of the class specified in the @classname and using the specified classpath.
    `void` | `setClassname(java.lang.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 Detail

    - #### 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(java.lang.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 java.lang.ClassLoader getClassLoader()

      Finds or creates the classloader for this object.
      Returns:
        The class loader.

    - #### getClassLoadId

          public java.lang.String getClassLoadId()

      Computes the loaderId based on the configuration of the component.
      Returns:
        a loader identifier.

    - #### newInstance

          public java.lang.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.