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.
addField
public abstract void addField(JField jField)
throws 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.
addImport
public void addImport(String className)
Adds the given import to this JStructure
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).
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).
jInterface
- the JInterface to inherit from.
addMember
public abstract void addMember(JMember jMember)
throws 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.
jMember
- the JMember to add to this JStructure.
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.
name
- the name of the field to return.
- 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
- 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.
destDir
- the destination directory. This may be null.
- 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.
- the JComment header or null if none exists.
getImports
public Enumeration getImports()
Returns an Enumeration of imported package and
class names for this JStructure.
- 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.
- the Enumeration of interface names for this
JStructure. May be empty.
getJDocComment
public JDocComment getJDocComment()
Returns the Java Doc comment for this JStructure
- the JDocComment for this JStructure
getModifiers
public JModifiers getModifiers()
Returns the JModifiers which allows the qualifiers to be changed.
- the JModifiers for this JStructure.
getName
public String getName(boolean stripPackage)
Returns the name of the interface.
stripPackage
- a boolean that when true indicates that only
the local name (no package) should be returned.
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.
- 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
classname
- the class name to check for
- 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.
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.
jsw
- the JSourceWriter to print to.
printHeader
public void printHeader(JSourceWriter jsw)
A utility method that prints the header to the given
JSourceWriter
jsw
- the JSourceWriter to print to.
printImportDeclarations
public void printImportDeclarations(JSourceWriter jsw)
A utility method that prints the imports to the given
JSourceWriter
jsw
- the JSourceWriter to print to.
printPackageDeclaration
public void printPackageDeclaration(JSourceWriter jsw)
A utility method that prints the packageDeclaration to
the given JSourceWriter
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.
prefix
- the prefix for each new line.source
- the source code to printjsw
- the JSourceWriter to print to.
removeImport
public boolean removeImport(String className)
setHeader
public void setHeader(JComment comment)
Sets the header comment for this JStructure
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
packageName
- the package name to use