Package org.apache.tools.ant

# Class AntTypeDefinition

java.lang.Object
org.apache.tools.ant.AntTypeDefinition

Direct Known Subclasses:
  `PreSetDef.PreSetDefinition`

public class AntTypeDefinition extends Object
This class contains all the information on a particular ant type, the classname, adapter and the class it should be assignable from. This type replaces the task/datatype split of pre ant 1.6.

## Constructor Summary

Constructors
Constructor
Description
`AntTypeDefinition()`

## Method Summary

Modifier and Type
Method
Description
`void`
`checkClass(Project project)`
Checks if the attributes are correct.
`Object`
`create(Project project)`
Create an instance of the definition.
`ClassLoader`
`getClassLoader()`
Get the classloader for this definition.
`String`
`getClassName()`
Get the classname of the definition.
`Class<?>`
`getExposedClass(Project project)`
Get the exposed class for this definition.
`String`
`getName()`
Return the definition's name.
`Class<?>`
`getTypeClass(Project project)`
Get the definition class.
`<T> T`
`innerCreateAndSet(Class<T> newclass, Project project)`
Inner implementation of the `createAndSet(Project, Class)` logic, with no exception catching.
`Class<?>`
`innerGetTypeClass()`
Try and load a class, with no attempt to catch any fault.
`boolean`
`isRestrict()`
Get the restrict attribute.
`boolean`
`sameDefinition(AntTypeDefinition other, Project project)`
Equality method for this definition (assumes the names are the same).
`void`
`setAdapterClass(Class<?> adapterClass)`
Set the adapter class for this definition.
`void`
`setAdaptToClass(Class<?> adaptToClass)`
Set the assignable class for this definition.
`void`
`setClass(Class<?> clazz)`
Set the class of the definition.
`void`
`setClassLoader(ClassLoader classLoader)`
Set the classloader to use to create an instance of the definition.
`void`
`setClassName(String className)`
Set the classname of the definition.
`void`
`setName(String name)`
Set the definition's name.
`void`
`setRestrict(boolean restrict)`
Set the restrict attribute.
`boolean`
`similarDefinition(AntTypeDefinition other, Project project)`
Similar definition; used to compare two definitions defined twice with the same name and the same types.

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

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

## Constructor Details

### AntTypeDefinition

public AntTypeDefinition()

## Method Details

### setRestrict

public void setRestrict(boolean restrict)
Set the restrict attribute.

Parameters:
  `restrict` - the value to set.

### isRestrict

public boolean isRestrict()
Get the restrict attribute.

Returns:
  the restrict attribute.

### setName

public void setName(String name)
Set the definition's name.

Parameters:
  `name` - the name of the definition.

### getName

public String getName()
Return the definition's name.

Returns:
  the name of the definition.

### setClass

public void setClass(Class<?> clazz)
Set the class of the definition. As a side-effect may set the classloader and classname.

Parameters:
  `clazz` - the class of this definition.

### setClassName

public void setClassName(String className)
Set the classname of the definition.

Parameters:
  `className` - the classname of this definition.

### getClassName

public String getClassName()
Get the classname of the definition.

Returns:
  the name of the class of this definition.

### setAdapterClass

public void setAdapterClass(Class<?> adapterClass)
Set the adapter class for this definition. This class is used to adapt the definitions class if required.

Parameters:
  `adapterClass` - the adapterClass.

### setAdaptToClass

public void setAdaptToClass(Class<?> adaptToClass)
Set the assignable class for this definition.

Parameters:
  `adaptToClass` - the assignable class.

### setClassLoader

public void setClassLoader(ClassLoader classLoader)
Set the classloader to use to create an instance of the definition.

Parameters:
  `classLoader` - the ClassLoader.

### getClassLoader

public ClassLoader getClassLoader()
Get the classloader for this definition.

Returns:
  the classloader for this definition.

### getExposedClass

public Class<?> getExposedClass(Project project)
Get the exposed class for this definition. This will be a proxy class (adapted class) if there is an adapter class and the definition class is not assignable from the assignable class.

Parameters:
  `project` - the current project.
Returns:
  the exposed class - may return null if unable to load the class

### getTypeClass

public Class<?> getTypeClass(Project project)
Get the definition class.

Parameters:
  `project` - the current project.
Returns:
  the type of the definition.

### innerGetTypeClass

public Class<?> innerGetTypeClass() throws ClassNotFoundException
Try and load a class, with no attempt to catch any fault.

Returns:
  the class that implements this component
Throws:
  `ClassNotFoundException` - if the class cannot be found.
  `NoClassDefFoundError` - if the there is an error finding the class.

### create

public Object create(Project project)
Create an instance of the definition. The instance may be wrapped in a proxy class.

Parameters:
  `project` - the current project.
Returns:
  the created object.

### checkClass

public void checkClass(Project project)
Checks if the attributes are correct.

- if the class can be created.
- if an adapter class can be created
- if the type is assignable from adapter
- if the type can be used with the adapter class

Parameters:
  `project` - the current project.

### innerCreateAndSet

public <T> T innerCreateAndSet(Class<T> newclass, Project project) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException
Inner implementation of the `createAndSet(Project, Class)` logic, with no exception catching.

Type Parameters:
  `T` - return type of the method
Parameters:
  `newclass` - class to create
  `project` - the project to use
Returns:
  a newly constructed and bound instance.
Throws:
  `NoSuchMethodException` - no good constructor.
  `InstantiationException` - cannot initialize the object.
  `IllegalAccessException` - cannot access the object.
  `InvocationTargetException` - error in invocation.

### sameDefinition

public boolean sameDefinition(AntTypeDefinition other, Project project)
Equality method for this definition (assumes the names are the same).

Parameters:
  `other` - another definition.
  `project` - the project the definition.
Returns:
  true if the definitions are the same.

### similarDefinition

public boolean similarDefinition(AntTypeDefinition other, Project project)
Similar definition; used to compare two definitions defined twice with the same name and the same types. The classloader may be different but have the same path so #sameDefinition cannot be used.

Parameters:
  `other` - the definition to compare to.
  `project` - the current project.
Returns:
  true if the definitions are the same.