public abstract class JStructure extends JType implements JAnnotatedElement
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.
| Modifier | Constructor and Description |
|---|---|
protected |
JStructure(java.lang.String name)
Creates a new JStructure with the given name.
|
| Modifier and Type | Method and Description |
|---|---|
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.
|
void |
addImport(java.lang.String className)
Adds the given import to this JStructure.
|
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).
|
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), or given a call to
print() if the parameter destDir is null. |
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 |
getName(boolean stripPackage)
Returns the name of the class represented by this JStructure.
|
protected static java.lang.String |
getPackageFromClassName(java.lang.String className)
Returns the package name from the given class name.
|
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.
|
static boolean |
isValidClassName(java.lang.String classname)
Test the provided name and return true if it is a valid class name.
|
void |
print()
Prints the source code for this JStructure in the current working
directory.
|
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.
|
void |
printImportDeclarations(JSourceWriter jsw)
A utility method that prints the imports to the given JSourceWriter.
|
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.
|
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.
|
void |
setPackageName(java.lang.String packageName)
Allows changing the package name of this JStructure.
|
changePackage, getLocalName, getName, getWrapperName, isArray, isPrimitive, toStringprotected JStructure(java.lang.String name)
name - the name of the JStructure.public abstract void addField(JField jField)
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.
jField - the JField to addpublic abstract void addMember(JMember jMember)
This method is implemented by subclasses and should only accept the proper types for the subclass otherwise an IllegalArgumentException will be thrown.
jMember - the JMember to add to this JStructure.public void addImport(java.lang.String className)
className - name of the class to import.protected final void addImport(JAnnotation annotation)
annotation - a JAnnotation for which we want to add an import to
this JStructureprotected final void addImport(JAnnotation[] annotations)
annotations - an Array of JAnnotation; we want to add an import to
this JStructure for each JAnnotation in the Arraypublic final void addInterface(java.lang.String interfaceName)
interfaceName - the name of the interface to "inherit" method
declarations from.public final void addInterface(JInterface jInterface)
jInterface - the JInterface to inherit from.public abstract JField getField(java.lang.String name)
name - the name of the field to return.public abstract JField[] getFields()
public final java.lang.String getFilename(java.lang.String destDir)
print(String, String), or given a call to
print() if the parameter destDir is null.destDir - the destination directory. This may be null.public final JComment getHeader()
public final java.util.Enumeration getImports()
public final java.util.Enumeration getInterfaces()
public final JDocComment getJDocComment()
protected final JAnnotatedElementHelper getAnnotatedElementHelper()
public final JModifiers getModifiers()
public final java.lang.String getPackageName()
public final java.lang.String getName(boolean stripPackage)
stripPackage - a boolean that when true indicates that only the
local name (no package) should be returned.public final boolean hasImport(java.lang.String classname)
classname - the class name to check forpublic final boolean removeImport(java.lang.String className)
className - Name of the class to remove the import ofpublic static boolean isValidClassName(java.lang.String classname)
classname - A class name to test.public final void print()
public final void print(java.lang.String destDir,
java.lang.String lineSeparator)
destDir - directory name to use as the root directory for all outputlineSeparator - 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.public abstract void print(JSourceWriter jsw)
jsw - the JSourceWriter to print to.public final void printHeader(JSourceWriter jsw)
jsw - the JSourceWriter to print to.public final void printImportDeclarations(JSourceWriter jsw)
jsw - the JSourceWriter to print to.public final void printPackageDeclaration(JSourceWriter jsw)
jsw - the JSourceWriter to print to.public final void setHeader(JComment comment)
comment - the comment to display at the top of the source file when
printedpublic void setPackageName(java.lang.String packageName)
packageName - the package name to usepublic final void addAnnotation(JAnnotation annotation)
JAnnotatedElementaddAnnotation in interface JAnnotatedElementannotation - a JAnnotation to add to this source element.#addAnnotation(org.exolab.javasource.JAnnotation)
{@inheritDoc}public final JAnnotation getAnnotation(JAnnotationType annotationType)
JAnnotatedElementgetAnnotation in interface JAnnotatedElementannotationType - Annotation type to retrieve#getAnnotation(org.exolab.javasource.JAnnotationType)
{@inheritDoc}public final JAnnotation[] getAnnotations()
JAnnotatedElementgetAnnotations in interface JAnnotatedElement{@inheritDoc}public final boolean isAnnotationPresent(JAnnotationType annotationType)
JAnnotatedElementisAnnotationPresent in interface JAnnotatedElementannotationType - Annotation type to check for presence or absense#isAnnotationPresent(org.exolab.javasource.JAnnotationType)
{@inheritDoc}public final JAnnotation removeAnnotation(JAnnotationType annotationType)
JAnnotatedElementremoveAnnotation in interface JAnnotatedElementannotationType - Annotation type to remove#removeAnnotation(org.exolab.javasource.JAnnotationType)
{@inheritDoc}public final boolean hasAnnotations()
JAnnotatedElementhasAnnotations in interface JAnnotatedElement{@inheritDoc}protected final int getInterfaceCount()
protected static void printlnWithPrefix(java.lang.String prefix,
java.lang.String source,
JSourceWriter jsw)
prefix - the prefix for each new line.source - the source code to printjsw - the JSourceWriter to print to.protected static java.lang.String getPackageFromClassName(java.lang.String className)
className - an arbitrary class name, optionally including a packageIntalio Inc. (C) 1999-2006. All rights reserved http://www.intalio.com