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