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

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