Class JStructure
- 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$
-
-
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 headerprivate java.util.List<java.lang.String>
imports
List of imported classes and packagesprivate java.util.List<java.lang.String>
interfaces
The set of interfaces implemented/extended by this JStructureprivate JDocComment
jdc
The Javadoc for this JStructureprivate JModifiers
modifiers
The JModifiers for this JStructure, which allows us to change the resulting qualifiersprivate 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 JStructurevoid
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 JStructurejava.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 JStructureJModifiers
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 namejava.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 JStructureboolean
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 JSourceWritervoid
printImportDeclarations(JSourceWriter jsw)
A utility method that prints the imports to the given JSourceWriterprotected 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 JSourceWriterboolean
removeImport(java.lang.String className)
void
setAnnotations(JAnnotations annotations)
void
setHeader(JComment comment)
Sets the header comment for this JStructurevoid
setPackageName(java.lang.String packageName)
Deprecated.removed in future version of javasource-
Methods inherited from class org.codehaus.modello.plugin.java.javasource.JType
changePackage, createArray, getComponentType, getLocalName, getName, isArray, isPrimitive, toString
-
-
-
-
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
-
annotations
private JAnnotations annotations
-
-
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 directorylineSeparator
- 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 javasourceAllows 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 printjsw
- 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
-
-