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
  Constructor | Description
  --- | ---
  `AntTypeDefinition()` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `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 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​(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.