AntTypeDefinition (Apache Ant API)
Description: declaration: package: org.apache.tools.ant, class: AntTypeDefinition

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