java.lang.Object
org.codehaus.modello.plugin.java.javasource.JType
org.codehaus.modello.plugin.java.javasource.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$
Author:
Martin Skopp, Keith Visco
  • Constructor Details

  • Method Details

    • addField

      public abstract void addField(JField jField) throws 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:
      IllegalArgumentException - when the given JField has a name of an existing JField
    • addMember

      public abstract void addMember(org.codehaus.modello.plugin.java.javasource.JMember jMember) throws 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:
      IllegalArgumentException - when the given JMember has the same name of an existing JField or JMethod respectively.
    • addImport

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

      public void addInterface(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(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 String getFilename(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 Enumeration<String> getImports()
      Returns an Enumeration of imported package and class names for this JStructure.
      Returns:
      the Enumeration of imports. May be empty.
    • getInterfaces

      public Enumeration<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 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 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(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(String className)
    • isAbstract

      public boolean isAbstract()
    • isValidClassName

      public static boolean isValidClassName(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(String destDir, 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
    • getInterfaceCount

      protected int getInterfaceCount()
    • printlnWithPrefix

      protected static void printlnWithPrefix(String prefix, 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 String getPackageFromClassName(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(String annotation)
      Parameters:
      annotation - the annotation to append
    • setAnnotations

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