Package org.exolab.javasource
Class JStructure
java.lang.Object
org.exolab.javasource.JType
org.exolab.javasource.JStructure
- All Implemented Interfaces:
JAnnotatedElement
- Direct Known Subclasses:
AbstractJClass
,JAnnotationType
,JInterface
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.
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: 8382 $ $Date: 2005-12-13 14:58:48 -0700 (Tue, 13 Dec 2005) $
- Author:
- Martin Skopp, Keith Visco
-
Field Summary
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
JStructure
(String name) Creates a new JStructure with the given name. -
Method Summary
Modifier and TypeMethodDescriptionfinal void
addAnnotation
(JAnnotation annotation) Adds a JAnnotation to this source element.abstract void
Adds the given JField to this JStructure.abstract void
Adds the given import to this JStructure.protected final void
addImport
(JAnnotation annotation) Adds appropriate import for this JAnnotation.protected final void
addImport
(JAnnotation[] annotations) Adds appropriate imports for each JAnnotation in the given Array.protected final void
addImportInternal
(String className) Adds the given import to this JStructure.final 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).abstract void
Adds the given JMember to this JStructure.protected final JAnnotatedElementHelper
Returns the object managing the annotations for this JStructure.final JAnnotation
getAnnotation
(JAnnotationType annotationType) Retrieves a JAnnotation for the given JAnnotationType, returns null if no annotation has been set.final JAnnotation[]
Returns a list of JAnnotation's already set on this source element.abstract JField
Returns the field with the given name, or null if no field was found with that name.abstract JField[]
Returns an array of all the JFields of this JStructure.final String
getFilename
(String destDir) Returns the name of the file that this JStructure would be printed to, given a call toprint(String, String)
.final JComment
Returns the JComment header to display at the top of the source file for this JStructure, or null if no header was set.final int
Returns the amount of imports.final Enumeration<String>
Returns an Enumeration of imported package and class names for this JStructure.final int
Return the count of the number of Interfaces that have been added to this JStructure.final Enumeration<String>
Returns an Enumeration of interface names that this JStructure inherits from.final JDocComment
Returns the JavaDoc comment for this JStructure.final JModifiers
Returns the JModifiers, which allows the qualifiers to be changed.final String
Returns the name of the package that this JStructure is a member of.final boolean
Returns true if this source element has any annotations.final boolean
Returns true if the given classname exists in the imports of this JStructure.final boolean
isAnnotationPresent
(JAnnotationType annotationType) Returns true if a JAnnotation exists for the given JAnnotationType.final void
Prints the source code for this JStructure to the destination directory.abstract void
print
(JSourceWriter jsw) Deprecated.Please use the Velocity-template based approach instead.final void
printHeader
(JSourceWriter jsw) A utility method that prints the header to the given JSourceWriter.protected final void
A utility method that prints the imports to the given JSourceWriter.final void
A utility method that prints the packageDeclaration to the given JSourceWriter.final JAnnotation
removeAnnotation
(JAnnotationType annotationType) Removes the JAnnotation from this source element for the given JAnnotationType.final boolean
removeImport
(String className) Remove the import of the given class name from this JStucture, returning true if the import was found and removed.final boolean
removeInterface
(String interfaceName) Removes the given interface from the list of interfaces thisJStructure
has.final void
Sets the header comment for this JStructure.final String
toString()
Returns the String representation of this JType.Methods inherited from class org.exolab.javasource.JType
getLocalName, getName, isArray, isPrimitive, setName
-
Constructor Details
-
JStructure
Creates a new JStructure with the given name.- Parameters:
name
- The name of the JStructure.
-
-
Method Details
-
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
Sets the header comment for this JStructure.- Parameters:
comment
- The comment to display at the top of the source file when printed.
-
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
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.
-
getImportCount
public final int getImportCount()Returns the amount of imports.- Returns:
- The amount of imports.
-
hasImport
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
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
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
Adds appropriate import for this JAnnotation.- Parameters:
annotation
- A JAnnotation for which we want to add an import to this JStructure.
-
addImport
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
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
Returns the JavaDoc comment for this JStructure.- Returns:
- The JDocComment for this JStructure.
-
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 interfaceJAnnotatedElement
- Returns:
- Returns true if this source element has any annotations.
-
getAnnotations
Returns a list of JAnnotation's already set on this source element.- Specified by:
getAnnotations
in interfaceJAnnotatedElement
- Returns:
- A list of all JAnnotations associated with this source element.
-
getAnnotation
Retrieves a JAnnotation for the given JAnnotationType, returns null if no annotation has been set.- Specified by:
getAnnotation
in interfaceJAnnotatedElement
- Parameters:
annotationType
- Annotation type to retrieve.- Returns:
- A JAnnotation for the given JAnnotationType.
-
isAnnotationPresent
Returns true if a JAnnotation exists for the given JAnnotationType.- Specified by:
isAnnotationPresent
in interfaceJAnnotatedElement
- Parameters:
annotationType
- Annotation type to check for presence or absense.- Returns:
- True if a JAnnotation has been added for the given JAnnotationType.
-
addAnnotation
Adds a JAnnotation to this source element. An IllegalArgumentException is thrown if one already exists for the associated JAnnotationType.- Specified by:
addAnnotation
in interfaceJAnnotatedElement
- Parameters:
annotation
- A JAnnotation to add to this source element.
-
removeAnnotation
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 interfaceJAnnotatedElement
- Parameters:
annotationType
- Annotation type to remove.- Returns:
- The JAnnotation that was associated with this source element.
-
getModifiers
Returns the JModifiers, which allows the qualifiers to be changed.- Returns:
- The JModifiers for this JStructure.
-
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
public 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
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.
-
removeInterface
Removes the given interface from the list of interfaces thisJStructure
has.- Parameters:
interfaceName
- The name of the interface to be removed.- Returns:
- true if
JStructure
implemented the interface and it was removed, false otherwise.
-
getField
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
Returns an array of all the JFields of this JStructure.- Returns:
- An array of all the JFields of this JStructure.
-
addField
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
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
Returns the name of the file that this JStructure would be printed to, given a call toprint(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
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
Deprecated.Please use the Velocity-template based approach instead.Prints the source code for this JStructure to the given JSourceWriter.- Parameters:
jsw
- The JSourceWriter to print to.
-
printHeader
A utility method that prints the header to the given JSourceWriter.- Parameters:
jsw
- The JSourceWriter to print to.
-
printPackageDeclaration
A utility method that prints the packageDeclaration to the given JSourceWriter.- Parameters:
jsw
- The JSourceWriter to print to.
-
printImportDeclarations
A utility method that prints the imports to the given JSourceWriter.- Parameters:
jsw
- The JSourceWriter to print to.
-
toString
Returns the String representation of this JType.
-