org.exolab.javasource
Class JStructure

java.lang.Object
  extended by org.exolab.javasource.JType
      extended by org.exolab.javasource.JStructure
All Implemented Interfaces:
JAnnotatedElement
Direct Known Subclasses:
AbstractJClass, JAnnotationType, JInterface

public abstract class JStructure
extends JType
implements JAnnotatedElement

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: 6669 $ $Date: 2005-12-13 14:58:48 -0700 (Tue, 13 Dec 2005) $
Author:
Martin Skopp, Keith Visco

Field Summary
 
Fields inherited from class org.exolab.javasource.JType
BOOLEAN, BYTE, CHAR, DOUBLE, FLOAT, INT, LONG, SHORT
 
Constructor Summary
protected JStructure(java.lang.String name)
          Creates a new JStructure with the given name.
 
Method Summary
 void addAnnotation(JAnnotation annotation)
          Adds a JAnnotation to this source element.
abstract  void addField(JField jField)
          Adds the given JField to this JStructure.
protected  void addImport(JAnnotation annotation)
          Adds appropriate import for this JAnnotation.
protected  void addImport(JAnnotation[] annotations)
          Adds appropriate imports for each JAnnotation in the given Array.
abstract  void addImport(java.lang.String className)
          Adds the given import to this JStructure.
protected  void addImportInternal(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).
abstract  void addMember(JMember jMember)
          Adds the given JMember to this JStructure.
protected  JAnnotatedElementHelper getAnnotatedElementHelper()
          Returns the object managing the annotations for this JStructure.
 JAnnotation getAnnotation(JAnnotationType annotationType)
          Retrieves a JAnnotation for the given JAnnotationType, returns null if no annotation has been set.
 JAnnotation[] getAnnotations()
          Returns a list of JAnnotation's already set on this source element.
abstract  JField getField(java.lang.String name)
          Returns the field with the given name, or null if no field was found with that 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(String, String).
 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 getImports()
          Returns an Enumeration of imported package and class names for this JStructure.
protected  int getInterfaceCount()
          Return the count of the number of Interfaces that have been added to this JStructure.
 java.util.Enumeration getInterfaces()
          Returns an Enumeration of interface names that this JStructure inherits from.
 JDocComment getJDocComment()
          Returns the JavaDoc comment for this JStructure.
 JModifiers getModifiers()
          Returns the JModifiers, which allows the qualifiers to be changed.
 java.lang.String getPackageName()
          Returns the name of the package that this JStructure is a member of.
 boolean hasAnnotations()
          Returns true if this source element has any annotations.
 boolean hasImport(java.lang.String classname)
          Returns true if the given classname exists in the imports of this JStructure.
 boolean isAnnotationPresent(JAnnotationType annotationType)
          Returns true if a JAnnotation exists for the given JAnnotationType.
abstract  void print(JSourceWriter jsw)
          Prints the source code for this JStructure to the given JSourceWriter.
 void print(java.lang.String destDir, java.lang.String lineSeparator)
          Prints the source code for this JStructure to the destination directory.
 void printHeader(JSourceWriter jsw)
          A utility method that prints the header to the given JSourceWriter.
protected  void printImportDeclarations(JSourceWriter jsw)
          A utility method that prints the imports to the given JSourceWriter.
 void printPackageDeclaration(JSourceWriter jsw)
          A utility method that prints the packageDeclaration to the given JSourceWriter.
 JAnnotation removeAnnotation(JAnnotationType annotationType)
          Removes the JAnnotation from this source element for the given JAnnotationType.
 boolean removeImport(java.lang.String className)
          Remove the import of the given class name from this JStucture, returning true if the import was found and removed.
 void setHeader(JComment comment)
          Sets the header comment for this JStructure.
 java.lang.String toString()
          
Returns the String representation of this JType.
 
Methods inherited from class org.exolab.javasource.JType
getLocalName, getName, isArray, isPrimitive, setName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JStructure

protected JStructure(java.lang.String name)
Creates a new JStructure with the given name.

Parameters:
name - The name of the JStructure.
Method Detail

getHeader

public final 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.

setHeader

public final 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.

getPackageName

public final 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.

getImports

public final java.util.Enumeration getImports()
Returns an Enumeration of imported package and class names for this JStructure.

Returns:
The Enumeration of imports. May be empty but will not be null.

hasImport

public final 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.

addImport

public abstract void addImport(java.lang.String className)
Adds the given import to this JStructure. Note: You cannot import from the "default package," so imports with no package are ignored.

Parameters:
className - Name of the class to import.

addImportInternal

protected final void addImportInternal(java.lang.String className)
Adds the given import to this JStructure. Given class name should not be null or empty.
Note: You cannot import from the "default package," so imports with no package are ignored.

Parameters:
className - Name of the class to import.

addImport

protected final void addImport(JAnnotation annotation)
Adds appropriate import for this JAnnotation.

Parameters:
annotation - A JAnnotation for which we want to add an import to this JStructure.

addImport

protected final void addImport(JAnnotation[] annotations)
Adds appropriate imports for each JAnnotation in the given Array.

Parameters:
annotations - An Array of JAnnotation; we want to add an import to this JStructure for each JAnnotation in the Array.

removeImport

public final boolean removeImport(java.lang.String className)
Remove the import of the given class name from this JStucture, returning true if the import was found and removed.

Parameters:
className - Name of the class to remove the import of.
Returns:
If the import was previously part of this JStructure, false otherwise.

getJDocComment

public final JDocComment getJDocComment()
Returns the JavaDoc comment for this JStructure.

Returns:
The JDocComment for this JStructure.

getAnnotatedElementHelper

protected final JAnnotatedElementHelper getAnnotatedElementHelper()
Returns the object managing the annotations for this JStructure.

Returns:
The object managing the annotations for this JStructure.

hasAnnotations

public final boolean hasAnnotations()
Returns true if this source element has any annotations.

Specified by:
hasAnnotations in interface JAnnotatedElement
Returns:
Returns true if this source element has any annotations.

getAnnotations

public final JAnnotation[] getAnnotations()
Returns a list of JAnnotation's already set on this source element.

Specified by:
getAnnotations in interface JAnnotatedElement
Returns:
A list of all JAnnotations associated with this source element.

getAnnotation

public final JAnnotation getAnnotation(JAnnotationType annotationType)
Retrieves a JAnnotation for the given JAnnotationType, returns null if no annotation has been set.

Specified by:
getAnnotation in interface JAnnotatedElement
Parameters:
annotationType - Annotation type to retrieve.
Returns:
A JAnnotation for the given JAnnotationType.

isAnnotationPresent

public final boolean isAnnotationPresent(JAnnotationType annotationType)
Returns true if a JAnnotation exists for the given JAnnotationType.

Specified by:
isAnnotationPresent in interface JAnnotatedElement
Parameters:
annotationType - Annotation type to check for presence or absense.
Returns:
True if a JAnnotation has been added for the given JAnnotationType.

addAnnotation

public final void addAnnotation(JAnnotation annotation)
Adds a JAnnotation to this source element. An IllegalArgumentException is thrown if one already exists for the associated JAnnotationType.

Specified by:
addAnnotation in interface JAnnotatedElement
Parameters:
annotation - A JAnnotation to add to this source element.

removeAnnotation

public final JAnnotation removeAnnotation(JAnnotationType annotationType)
Removes the JAnnotation from this source element for the given JAnnotationType. An IllegalArgumentException is thrown if the provided JAnnotation isn't present.

Specified by:
removeAnnotation in interface JAnnotatedElement
Parameters:
annotationType - Annotation type to remove.
Returns:
The JAnnotation that was associated with this source element.

getModifiers

public final JModifiers getModifiers()
Returns the JModifiers, which allows the qualifiers to be changed.

Returns:
The JModifiers for this JStructure.

getInterfaces

public final java.util.Enumeration getInterfaces()
Returns an Enumeration of interface names that this JStructure inherits from.

Returns:
The Enumeration of interface names for this JStructure. May be empty but will not be null.

getInterfaceCount

protected final int getInterfaceCount()
Return the count of the number of Interfaces that have been added to this JStructure.

Returns:
The count of the number of Interfaces that have been added to this JStructure.

addInterface

public final 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.

getField

public abstract JField getField(java.lang.String name)
Returns the field with the given name, or null if no field was found with that 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.

addField

public abstract void addField(JField jField)
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.

addMember

public abstract void addMember(JMember jMember)
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.

getFilename

public final 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(String, String).

Parameters:
destDir - the destination directory. This may be null.
Returns:
the name of the file that this JInterface would be printed to

print

public final void print(java.lang.String destDir,
                        java.lang.String lineSeparator)
Prints the source code for this JStructure to the destination directory. Subdirectories will be created if necessary for the package.

Parameters:
destDir - Directory name to use as the root directory for all output.
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 final void printHeader(JSourceWriter jsw)
A utility method that prints the header to the given JSourceWriter.

Parameters:
jsw - The JSourceWriter to print to.

printPackageDeclaration

public final void printPackageDeclaration(JSourceWriter jsw)
A utility method that prints the packageDeclaration to the given JSourceWriter.

Parameters:
jsw - The JSourceWriter to print to.

printImportDeclarations

protected final void printImportDeclarations(JSourceWriter jsw)
A utility method that prints the imports to the given JSourceWriter.

Parameters:
jsw - The JSourceWriter to print to.

toString

public final java.lang.String toString()

Returns the String representation of this JType.

Overrides:
toString in class java.lang.Object


Intalio Inc. (C) 1999-2007. All rights reserved http://www.intalio.com