org.codehaus.modello.generator.java.javasource

Class JStructure

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: 508 $ $Date: 2005-10-24 20:37:08 -0400 (Mon, 24 Oct 2005) $

Author: Martin Skopp Keith Visco

Constructor Summary
protected JStructure(String name)
Creates a new JStructure with the given name.
Method Summary
abstract voidaddField(JField jField)
Adds the given JField to this JStructure.
voidaddImport(String className)
Adds the given import to this JStructure
voidaddInterface(String interfaceName)
Adds the given interface to the list of interfaces this JStructure inherits method declarations from, and either implements (JClass) or extends (JInterface).
voidaddInterface(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 voidaddMember(JMember jMember)
Adds the given JMember to this JStructure.
abstract JFieldgetField(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
StringgetFilename(String destDir)
Returns the name of the file that this JStructure would be printed to, given a call to #print.
JCommentgetHeader()
Returns the JComment header to display at the top of the source file for this JStructure, or null if no header was set.
EnumerationgetImports()
Returns an Enumeration of imported package and class names for this JStructure.
protected intgetInterfaceCount()
EnumerationgetInterfaces()
Returns an Enumeration of interface names that this JStructure inherits from.
JDocCommentgetJDocComment()
Returns the Java Doc comment for this JStructure
JModifiersgetModifiers()
Returns the JModifiers which allows the qualifiers to be changed.
StringgetName(boolean stripPackage)
Returns the name of the interface.
protected static StringgetPackageFromClassName(String className)
Returns the package name from the given class name
StringgetPackageName()
Returns the name of the package that this JStructure is a member of.
booleanhasImport(String classname)
Returns true if the given classname exists in the imports of this JStructure
static booleanisValidClassName(String name)
voidprint()
Prints the source code for this JStructure in the current working directory.
voidprint(String destDir, String lineSeparator)
Prints the source code for this JStructure to the destination directory.
abstract voidprint(JSourceWriter jsw)
Prints the source code for this JStructure to the given JSourceWriter.
voidprintHeader(JSourceWriter jsw)
A utility method that prints the header to the given JSourceWriter
voidprintImportDeclarations(JSourceWriter jsw)
A utility method that prints the imports to the given JSourceWriter
protected static voidprintlnWithPrefix(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.
voidprintPackageDeclaration(JSourceWriter jsw)
A utility method that prints the packageDeclaration to the given JSourceWriter
booleanremoveImport(String className)
voidsetHeader(JComment comment)
Sets the header comment for this JStructure
voidsetPackageName(String packageName)
Allows changing the package name of this JStructure

Constructor Detail

JStructure

protected JStructure(String name)
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)
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

addImport

public void addImport(String className)
Adds the given import to this JStructure

Parameters: 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.

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.

Throws: java.lang.IllegalArgumentException when the given JMember has the same name of an existing JField or JMethod respectively.

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 getImports()
Returns an Enumeration of imported package and class names for this JStructure.

Returns: the Enumeration of imports. May be empty.

getInterfaceCount

protected int getInterfaceCount()

getInterfaces

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

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.

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.

getPackageFromClassName

protected static String getPackageFromClassName(String className)
Returns the package name from the given class name

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.

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

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: 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.

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.

printPackageDeclaration

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

Parameters: jsw the JSourceWriter to print to.

removeImport

public boolean removeImport(String className)

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(String packageName)
Allows changing the package name of this JStructure

Parameters: packageName the package name to use

Copyright © 2001-2007 Codehaus. All Rights Reserved.