Class JCompUnit


  • public class JCompUnit
    extends java.lang.Object
    A representation of the Java Source code for a Java compilation unit. This is a useful utility when creating in memory source code. 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 java.util.List<JClass> classes
      The set of top-level classes that live in this compilation unit.
      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 java.lang.String fileName
      The file to which this JCompUnit will be saved
      private JComment header  
      private java.util.List<JInterface> interfaces
      The set of top-level interfaces that live in this compilation unit.
      private java.lang.String packageName
      The package for this JCompUnit
    • Constructor Summary

      Constructors 
      Constructor Description
      JCompUnit​(java.lang.String packageName, java.lang.String fileName)
      Creates a new JCompUnit
      JCompUnit​(JClass jClass)
      Creates a new JCompUnit with the given JClass (which must have been created with either a full class name or package/local name) as the public class.
      JCompUnit​(JInterface jInterface)
      Creates a new JCompUnit with the given JInterface as public interface Package and file name are taken from jInterface.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addClass​(JClass jClass)
      Adds a JClass which should be printed in this file.
      void addInterface​(JInterface jInterface)
      Adds a JInterface which should be printed in this file.
      void addStructure​(JStructure jStructure)
      Adds the given JStructure (either a JInterface or a JClass) to this JCompUnit.
      java.lang.String getFilename​(java.lang.String destDir)
      Returns the name of the file that this JCompUnit would be printed as, given a call to #print.
      java.util.SortedSet<java.lang.String> getImports()
      returns a array of String containing all import classes/packages, also imports within the same package of this object.
      protected static java.lang.String getPackageFromClassName​(java.lang.String className)  
      java.lang.String getPackageName()
      Returns the name of the package that this JCompUnit is a member of
      private void init()  
      void print()
      Prints the source code for this JClass in the current directory with the default line seperator of the the runtime platform.
      void print​(java.lang.String destDir)
      Prints the source code for this JClass with the default line seperator of the the runtime platform.
      void print​(java.lang.String destDir, java.lang.String lineSeparator)
      Prints the source code for this JCompUnit.
      void print​(JSourceWriter jsw)
      Prints the source code for this JClass.
      void printStructures​(JSourceWriter jsw, boolean printPublic)
      Print the source code for the contained JClass objects.
      private void resolveNames()
      Update the names of nested classes and interfaces.
      void setHeader​(JComment comment)
      Sets the header comment for this JCompUnit
      • Methods inherited from class java.lang.Object

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

      • DEFAULT_HEADER

        private 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
      • packageName

        private java.lang.String packageName
        The package for this JCompUnit
      • fileName

        private java.lang.String fileName
        The file to which this JCompUnit will be saved
      • classes

        private java.util.List<JClass> classes
        The set of top-level classes that live in this compilation unit.
      • interfaces

        private java.util.List<JInterface> interfaces
        The set of top-level interfaces that live in this compilation unit.
    • Constructor Detail

      • JCompUnit

        public JCompUnit​(java.lang.String packageName,
                         java.lang.String fileName)
        Creates a new JCompUnit
        Parameters:
        packageName - the name of the package for this JCompUnit. If packageName is null or empty, no 'package' line will be generated.
        fileName - the name of the file in which this JCompUnit will be stored
      • JCompUnit

        public JCompUnit​(JClass jClass)
        Creates a new JCompUnit with the given JClass (which must have been created with either a full class name or package/local name) as the public class. Package and file name are taken from jClass.
        Parameters:
        jClass - the public class for this JCompUnit.
      • JCompUnit

        public JCompUnit​(JInterface jInterface)
        Creates a new JCompUnit with the given JInterface as public interface Package and file name are taken from jInterface.
        Parameters:
        jInterface - the public interface for this JCompUnit.
    • Method Detail

      • init

        private void init()
      • addStructure

        public void addStructure​(JStructure jStructure)
                          throws java.lang.IllegalArgumentException
        Adds the given JStructure (either a JInterface or a JClass) to this JCompUnit.
        Parameters:
        jStructure - the JStructure to add
        Throws:
        java.lang.IllegalArgumentException - when the given JStructure has the same name of an existing JStructure or if the class of jStructure is unknown.
      • addClass

        public void addClass​(JClass jClass)
        Adds a JClass which should be printed in this file.
        Parameters:
        jClass - the JClass to add
      • addInterface

        public void addInterface​(JInterface jInterface)
        Adds a JInterface which should be printed in this file.
        Parameters:
        jInterface - the JInterface to add
      • getImports

        public java.util.SortedSet<java.lang.String> getImports()
        returns a array of String containing all import classes/packages, also imports within the same package of this object.
        Returns:
        a array of String containing all import classes/packages, also imports within the same package of this object.
      • getFilename

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

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

        protected static java.lang.String getPackageFromClassName​(java.lang.String className)
      • print

        public void print()
        Prints the source code for this JClass in the current directory with the default line seperator of the the runtime platform.
        See Also:
        print(java.lang.String, java.lang.String)
      • print

        public void print​(java.lang.String destDir)
        Prints the source code for this JClass with the default line seperator of the the runtime platform.
        Parameters:
        destDir - the destination directory to generate the file.
        See Also:
        print(java.lang.String, java.lang.String)
      • print

        public void print​(java.lang.String destDir,
                          java.lang.String lineSeparator)
        Prints the source code for this JCompUnit.
        Parameters:
        destDir - the destination directory to generate the file.
        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 void print​(JSourceWriter jsw)
        Prints the source code for this JClass.
        Parameters:
        jsw - the JSourceWriter to print to.
      • printStructures

        public final void printStructures​(JSourceWriter jsw,
                                          boolean printPublic)
        Print the source code for the contained JClass objects.
        Parameters:
        jsw - the JSourceWriter to print to.
        printPublic - if true, print only public classes; if false, print only non-public classes.
      • setHeader

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

        private void resolveNames()
        Update the names of nested classes and interfaces.