Class JStructure

  • Direct Known Subclasses:
    JClass, JInterface

    public abstract class JStructure
    extends JType
    This class represents the basic Java "structure" for a Java source file. This is the base class for JClass and JInterface. This is a useful utility when creating in memory source code. The code in this package was modelled after the Java Reflection API as much as possible to reduce the learning curve.
    Version:
    $Revision$ $Date$
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private JAnnotations annotations  
      (package private) static java.lang.String DEFAULT_HEADER
      The Id for Source control systems I needed to separate this line to prevent CVS from expanding it here! ;-)
      private JComment header
      The source header
      private java.util.List<java.lang.String> imports
      List of imported classes and packages
      private java.util.List<java.lang.String> interfaces
      The set of interfaces implemented/extended by this JStructure
      private JDocComment jdc
      The Javadoc for this JStructure
      private JModifiers modifiers
      The JModifiers for this JStructure, which allows us to change the resulting qualifiers
      private java.lang.String packageName
      The package to which this JStructure belongs
      (package private) static java.lang.String version
      The source control version for listed in the JavaDoc I needed to separate this line to prevent CVS from expanding it here! ;-)
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected JStructure​(java.lang.String name)
      Creates a new JStructure with the given name.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      abstract void addField​(JField jField)
      Adds the given JField to this JStructure.
      void addImport​(java.lang.String className)
      Adds the given import to this JStructure
      void addInterface​(java.lang.String interfaceName)
      Adds the given interface to the list of interfaces this JStructure inherits method declarations from, and either implements (JClass) or extends (JInterface).
      void addInterface​(JInterface jInterface)
      Adds the given interface to the list of interfaces this JStructure inherits method declarations from, and either implements (JClass) or extends (JInterface).
      abstract void addMember​(JMember jMember)
      Adds the given JMember to this JStructure.
      void appendAnnotation​(java.lang.String annotation)  
      JAnnotations getAnnotations()  
      abstract JField getField​(java.lang.String name)
      Returns the field with the given name, or null if no field was found with the given name.
      abstract JField[] getFields()
      Returns an array of all the JFields of this JStructure
      java.lang.String getFilename​(java.lang.String destDir)
      Returns the name of the file that this JStructure would be printed to, given a call to #print.
      JComment getHeader()
      Returns the JComment header to display at the top of the source file for this JStructure, or null if no header was set.
      java.util.Enumeration<java.lang.String> getImports()
      Returns an Enumeration of imported package and class names for this JStructure.
      protected int getInterfaceCount()  
      java.util.Enumeration<java.lang.String> getInterfaces()
      Returns an Enumeration of interface names that this JStructure inherits from.
      JDocComment getJDocComment()
      Returns the Java Doc comment for this JStructure
      JModifiers getModifiers()
      Returns the JModifiers which allows the qualifiers to be changed.
      java.lang.String getName​(boolean stripPackage)
      Returns the name of the interface.
      protected static java.lang.String getPackageFromClassName​(java.lang.String className)
      Returns the package name from the given class name
      java.lang.String getPackageName()
      Returns the name of the package that this JStructure is a member of.
      boolean hasImport​(java.lang.String classname)
      Returns true if the given classname exists in the imports of this JStructure
      boolean isAbstract()  
      static boolean isValidClassName​(java.lang.String name)  
      void print()
      Prints the source code for this JStructure in the current working directory.
      void print​(java.lang.String destDir, java.lang.String lineSeparator)
      Prints the source code for this JStructure to the destination directory.
      abstract void print​(JSourceWriter jsw)
      Prints the source code for this JStructure to the given JSourceWriter.
      void printHeader​(JSourceWriter jsw)
      A utility method that prints the header to the given JSourceWriter
      void printImportDeclarations​(JSourceWriter jsw)
      A utility method that prints the imports to the given JSourceWriter
      protected static void printlnWithPrefix​(java.lang.String prefix, java.lang.String source, JSourceWriter jsw)
      Prints the given source string to the JSourceWriter using the given prefix at the beginning of each new line.
      void printPackageDeclaration​(JSourceWriter jsw)
      A utility method that prints the packageDeclaration to the given JSourceWriter
      boolean removeImport​(java.lang.String className)  
      void setAnnotations​(JAnnotations annotations)  
      void setHeader​(JComment comment)
      Sets the header comment for this JStructure
      void setPackageName​(java.lang.String packageName)
      Deprecated.
      removed in future version of javasource
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • DEFAULT_HEADER

        static final java.lang.String DEFAULT_HEADER
        The Id for Source control systems I needed to separate this line to prevent CVS from expanding it here! ;-)
        See Also:
        Constant Field Values
      • version

        static final java.lang.String version
        The source control version for listed in the JavaDoc I needed to separate this line to prevent CVS from expanding it here! ;-)
        See Also:
        Constant Field Values
      • header

        private JComment header
        The source header
      • imports

        private java.util.List<java.lang.String> imports
        List of imported classes and packages
      • interfaces

        private java.util.List<java.lang.String> interfaces
        The set of interfaces implemented/extended by this JStructure
      • jdc

        private JDocComment jdc
        The Javadoc for this JStructure
      • modifiers

        private JModifiers modifiers
        The JModifiers for this JStructure, which allows us to change the resulting qualifiers
      • packageName

        private java.lang.String packageName
        The package to which this JStructure belongs
    • Constructor Detail

      • JStructure

        protected JStructure​(java.lang.String name)
                      throws java.lang.IllegalArgumentException
        Creates a new JStructure with the given name.
        Parameters:
        name - the name of the JStructure.
        Throws:
        java.lang.IllegalArgumentException - when the given name is not a valid Class name.
    • Method Detail

      • addField

        public abstract void addField​(JField jField)
                               throws java.lang.IllegalArgumentException
        Adds the given JField to this JStructure.

        This method is implemented by subclasses and should only accept the proper fields for the subclass otherwise an IllegalArgumentException will be thrown. For example a JInterface will only accept static fields.

        Parameters:
        jField - , the JField to add
        Throws:
        java.lang.IllegalArgumentException - when the given JField has a name of an existing JField
      • addMember

        public abstract void addMember​(JMember jMember)
                                throws java.lang.IllegalArgumentException
        Adds the given JMember to this JStructure.

        This method is implemented by subclasses and should only accept the proper types for the subclass otherwise an IllegalArgumentException will be thrown.

        Parameters:
        jMember - the JMember to add to this JStructure.
        Throws:
        java.lang.IllegalArgumentException - when the given JMember has the same name of an existing JField or JMethod respectively.
      • addImport

        public void addImport​(java.lang.String className)
        Adds the given import to this JStructure
        Parameters:
        className - the className of the class to import.
      • addInterface

        public void addInterface​(java.lang.String interfaceName)
        Adds the given interface to the list of interfaces this JStructure inherits method declarations from, and either implements (JClass) or extends (JInterface).
        Parameters:
        interfaceName - the name of the interface to "inherit" method declarations from.
      • addInterface

        public void addInterface​(JInterface jInterface)
        Adds the given interface to the list of interfaces this JStructure inherits method declarations from, and either implements (JClass) or extends (JInterface).
        Parameters:
        jInterface - the JInterface to inherit from.
      • getField

        public abstract JField getField​(java.lang.String name)
        Returns the field with the given name, or null if no field was found with the given name.
        Parameters:
        name - the name of the field to return.
        Returns:
        the field with the given name, or null if no field was found with the given name.
      • getFields

        public abstract JField[] getFields()
        Returns an array of all the JFields of this JStructure
        Returns:
        an array of all the JFields of this JStructure
      • getFilename

        public java.lang.String getFilename​(java.lang.String destDir)
        Returns the name of the file that this JStructure would be printed to, given a call to #print.
        Parameters:
        destDir - the destination directory. This may be null.
        Returns:
        the name of the file that this JInterface would be printed as, given a call to #print.
      • getHeader

        public JComment getHeader()
        Returns the JComment header to display at the top of the source file for this JStructure, or null if no header was set.
        Returns:
        the JComment header or null if none exists.
      • getImports

        public java.util.Enumeration<java.lang.String> getImports()
        Returns an Enumeration of imported package and class names for this JStructure.
        Returns:
        the Enumeration of imports. May be empty.
      • getInterfaces

        public java.util.Enumeration<java.lang.String> getInterfaces()
        Returns an Enumeration of interface names that this JStructure inherits from.
        Returns:
        the Enumeration of interface names for this JStructure. May be empty.
      • getJDocComment

        public JDocComment getJDocComment()
        Returns the Java Doc comment for this JStructure
        Returns:
        the JDocComment for this JStructure
      • getModifiers

        public JModifiers getModifiers()
        Returns the JModifiers which allows the qualifiers to be changed.
        Returns:
        the JModifiers for this JStructure.
      • getPackageName

        public java.lang.String getPackageName()
        Returns the name of the package that this JStructure is a member of.
        Returns:
        the name of the package that this JStructure is a member of, or null if there is no current package name defined.
      • getName

        public java.lang.String getName​(boolean stripPackage)
        Returns the name of the interface.
        Parameters:
        stripPackage - a boolean that when true indicates that only the local name (no package) should be returned.
        Returns:
        the name of the class.
      • hasImport

        public boolean hasImport​(java.lang.String classname)
        Returns true if the given classname exists in the imports of this JStructure
        Parameters:
        classname - the class name to check for
        Returns:
        true if the given classname exists in the imports list
      • removeImport

        public boolean removeImport​(java.lang.String className)
      • isAbstract

        public boolean isAbstract()
      • isValidClassName

        public static boolean isValidClassName​(java.lang.String name)
      • print

        public void print()
        Prints the source code for this JStructure in the current working directory. Sub-directories will be created if necessary for the package.
      • print

        public void print​(java.lang.String destDir,
                          java.lang.String lineSeparator)
        Prints the source code for this JStructure to the destination directory. Sub-directories will be created if necessary for the package.
        Parameters:
        destDir - the destination directory
        lineSeparator - the line separator to use at the end of each line. If null, then the default line separator for the runtime platform will be used.
      • print

        public abstract void print​(JSourceWriter jsw)
        Prints the source code for this JStructure to the given JSourceWriter.
        Parameters:
        jsw - the JSourceWriter to print to.
      • printHeader

        public void printHeader​(JSourceWriter jsw)
        A utility method that prints the header to the given JSourceWriter
        Parameters:
        jsw - the JSourceWriter to print to.
      • printImportDeclarations

        public void printImportDeclarations​(JSourceWriter jsw)
        A utility method that prints the imports to the given JSourceWriter
        Parameters:
        jsw - the JSourceWriter to print to.
      • printPackageDeclaration

        public void printPackageDeclaration​(JSourceWriter jsw)
        A utility method that prints the packageDeclaration to the given JSourceWriter
        Parameters:
        jsw - the JSourceWriter to print to.
      • setHeader

        public void setHeader​(JComment comment)
        Sets the header comment for this JStructure
        Parameters:
        comment - the comment to display at the top of the source file when printed
      • setPackageName

        public void setPackageName​(java.lang.String packageName)
        Deprecated.
        removed in future version of javasource
        Allows changing the package name of this JStructure
        Parameters:
        packageName - the package name to use
      • getInterfaceCount

        protected int getInterfaceCount()
      • printlnWithPrefix

        protected static void printlnWithPrefix​(java.lang.String prefix,
                                                java.lang.String source,
                                                JSourceWriter jsw)
        Prints the given source string to the JSourceWriter using the given prefix at the beginning of each new line.
        Parameters:
        prefix - the prefix for each new line.
        source - the source code to print
        jsw - the JSourceWriter to print to.
      • getPackageFromClassName

        protected static java.lang.String getPackageFromClassName​(java.lang.String className)
        Returns the package name from the given class name
        Parameters:
        className - the className
        Returns:
        the package of the class, otherwise null
      • getAnnotations

        public JAnnotations getAnnotations()
        Returns:
        the annotations
      • appendAnnotation

        public void appendAnnotation​(java.lang.String annotation)
        Parameters:
        annotation - the annotation to append
      • setAnnotations

        public void setAnnotations​(JAnnotations annotations)
        Parameters:
        annotations - the annotations to set