Class 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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      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 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.