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