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.