Package org.apache.tools.ant

## Class AntTypeDefinition

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

Direct Known Subclasses:
  `PreSetDef.PreSetDefinition`

    public class AntTypeDefinition
    extends java.lang.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
`AntTypeDefinition()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `checkClass​(Project project)` Checks if the attributes are correct.
`java.lang.Object` `create​(Project project)` Create an instance of the definition.
`java.lang.ClassLoader` `getClassLoader()` Get the classloader for this definition.
`java.lang.String` `getClassName()` Get the classname of the definition.
`java.lang.Class<?>` `getExposedClass​(Project project)` Get the exposed class for this definition.
`java.lang.String` `getName()` Return the definition's name.
`java.lang.Class<?>` `getTypeClass​(Project project)` Get the definition class.
`<T> T` `innerCreateAndSet​(java.lang.Class<T> newclass, Project project)` Inner implementation of the `createAndSet(Project, Class)` logic, with no exception catching.
`java.lang.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​(java.lang.Class<?> adapterClass)` Set the adapter class for this definition.
`void` `setAdaptToClass​(java.lang.Class<?> adaptToClass)` Set the assignable class for this definition.
`void` `setClass​(java.lang.Class<?> clazz)` Set the class of the definition.
`void` `setClassLoader​(java.lang.ClassLoader classLoader)` Set the classloader to use to create an instance of the definition.
`void` `setClassName​(java.lang.String className)` Set the classname of the definition.
`void` `setName​(java.lang.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 Detail

#### AntTypeDefinition

    public AntTypeDefinition()

### Method Detail

#### 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​(java.lang.String name)

Set the definition's name.

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

#### getName

    public java.lang.String getName()

Return the definition's name.

Returns:
  the name of the definition.

#### setClass

    public void setClass​(java.lang.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​(java.lang.String className)

Set the classname of the definition.

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

#### getClassName

    public java.lang.String getClassName()

Get the classname of the definition.

Returns:
  the name of the class of this definition.

#### setAdapterClass

    public void setAdapterClass​(java.lang.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​(java.lang.Class<?> adaptToClass)

Set the assignable class for this definition.

Parameters:
  `adaptToClass` - the assignable class.

#### setClassLoader

    public void setClassLoader​(java.lang.ClassLoader classLoader)

Set the classloader to use to create an instance of the definition.

Parameters:
  `classLoader` - the ClassLoader.

#### getClassLoader

    public java.lang.ClassLoader getClassLoader()

Get the classloader for this definition.

Returns:
  the classloader for this definition.

#### getExposedClass

    public java.lang.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 java.lang.Class<?> getTypeClass​(Project project)

Get the definition class.

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

#### innerGetTypeClass

    public java.lang.Class<?> innerGetTypeClass()
                                         throws java.lang.ClassNotFoundException

Try and load a class, with no attempt to catch any fault.

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

#### create

    public java.lang.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​(java.lang.Class<T> newclass,
                                   Project project)
                            throws java.lang.NoSuchMethodException,
                                   java.lang.InstantiationException,
                                   java.lang.IllegalAccessException,
                                   java.lang.reflect.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:
  `java.lang.NoSuchMethodException` - no good constructor.
  `java.lang.InstantiationException` - cannot initialize the object.
  `java.lang.IllegalAccessException` - cannot access the object.
  `java.lang.reflect.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.