Class GeneratedCodeClass

  • All Implemented Interfaces:
    CodeClass

    public class GeneratedCodeClass
    extends java.lang.Object
    implements CodeClass
    A CodeClass implementation that is used to generate new classes.

    When creating classes, instantiate one of these, add fields and methods. Associate CodeGenerator instances with methods. Then, use GeneratedClassLoader to make a new class.

    Author:
    Matthew Pocock
    • Constructor Detail

      • GeneratedCodeClass

        public GeneratedCodeClass​(java.lang.String name,
                                  java.lang.Class superClass,
                                  java.lang.Class[] interfaces,
                                  int modifiers)
                           throws CodeException
        Throws:
        CodeException
    • Method Detail

      • setSourceFile

        public void setSourceFile​(java.lang.String sourceFile)
        Set the source file associated with this code class.

        The source file appears in debugging output and stack traces. Use this method to set the source file that this generated class will clame to be from. You can use non-file names e.g. uri:myGenerator:proxy/foo

        To un-set the source file, use null.

        Parameters:
        sourceFile - the source file for this class
      • getSourceFile

        public java.lang.String getSourceFile()
        Get the source file associated with this code class.

        Null indicates that no source file is set.

        Returns:
        the source file for this code class
      • setDeprecated

        public void setDeprecated​(boolean deprecated)
        Set the deprecation flag.

        If deprecated is true, the class will be flagged as deprecated.

        Parameters:
        deprecated - the new value of the deprecation
      • isDeprecated

        public boolean isDeprecated()
        Get the deprecation flag.
        Returns:
        wether or not this class is deprecated
      • getMethods

        public java.util.Set getMethods()
        Description copied from interface: CodeClass
        Get all methods declared by this class and its super classes, removing all super class methods that are over ridden.

        This should return methods, regardless of their accessability.

        Specified by:
        getMethods in interface CodeClass
        Returns:
        a Set containing all methods
      • getMethodsByName

        public java.util.Set getMethodsByName​(java.lang.String name)
        Description copied from interface: CodeClass
        Get the name of all methods that could be invoked through this class with a given name.
        Specified by:
        getMethodsByName in interface CodeClass
        Parameters:
        name - the name of the method
        Returns:
        a Set of CodeMethod instances with that name
      • getConstructor

        public CodeMethod getConstructor​(CodeClass[] args)
                                  throws java.lang.NoSuchMethodException
        Description copied from interface: CodeClass
        Get a constructor by argument list.
        Specified by:
        getConstructor in interface CodeClass
        Parameters:
        args - the arguments it takes
        Returns:
        a matching constructor
        Throws:
        java.lang.NoSuchMethodException - if there is no matching constructor
      • getMethod

        public CodeMethod getMethod​(java.lang.String name,
                                    CodeClass[] args)
                             throws java.lang.NoSuchMethodException
        Description copied from interface: CodeClass
        Get a method by name and argument list.
        Specified by:
        getMethod in interface CodeClass
        Parameters:
        name - the name of the method
        args - the arguments it takes
        Returns:
        a matching method
        Throws:
        java.lang.NoSuchMethodException - if there is no maching method
      • getFields

        public java.util.Set getFields()
        Description copied from interface: CodeClass
        Get all fields accessible through this class.
        Specified by:
        getFields in interface CodeClass
        Returns:
        a Set of all accessible fields
      • getFieldByName

        public CodeField getFieldByName​(java.lang.String name)
                                 throws java.lang.NoSuchFieldException
        Description copied from interface: CodeClass
        Get a field by its name.
        Specified by:
        getFieldByName in interface CodeClass
        Parameters:
        name - the field name
        Returns:
        a CodeField representing the field
        Throws:
        java.lang.NoSuchFieldException - if there is no field by that name accessible through this class
      • getName

        public java.lang.String getName()
        Specified by:
        getName in interface CodeClass
      • getJName

        public java.lang.String getJName()
        Specified by:
        getJName in interface CodeClass
      • getModifiers

        public int getModifiers()
        Description copied from interface: CodeClass
        Get the modifiers associated with the class.
        Specified by:
        getModifiers in interface CodeClass
        Returns:
        the modifier integer
      • getDescriptor

        public java.lang.String getDescriptor()
        Specified by:
        getDescriptor in interface CodeClass
      • createCode

        public void createCode​(java.io.OutputStream os)
                        throws java.io.IOException,
                               CodeException
        Throws:
        java.io.IOException
        CodeException
      • isPrimitive

        public boolean isPrimitive()
        Description copied from interface: CodeClass
        Discover if the class represents a primitive type.
        Specified by:
        isPrimitive in interface CodeClass
        Returns:
        true if the class represents a primative type
      • isArray

        public boolean isArray()
        Description copied from interface: CodeClass
        Discover if the class is an array type.
        Specified by:
        isArray in interface CodeClass
        Returns:
        true if the class is an array type