Class JCodeModel
- java.lang.Object
-
- com.sun.codemodel.JCodeModel
-
public final class JCodeModel extends java.lang.Object
Root of the code DOM.Here's your typical CodeModel application.
JCodeModel cm = new JCodeModel(); // generate source code by populating the 'cm' tree. cm._class(...); ... // write them out cm.build(new File("."));
Every CodeModel node is always owned by one
JCodeModel
object at any given time (which can be often accesesd by the owner() method.) As such, when you generate Java code, most of the operation works in a top-down fashion. For example, you create a class fromJCodeModel
, which gives you aJDefinedClass
. Then you invoke a method on it to generate a new method, which gives youJMethod
, and so on. There are a few exceptions to this, most notably buildingJExpression
s, but generally you work with CodeModel in a top-down fashion. Because of this design, most of the CodeModel classes aren't directly instanciable.Where to go from here?
Most of the time you'd want to populate new type definitions in a
JCodeModel
. See_class(String, ClassType)
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
JCodeModel.JReferencedClass
References to existing classes.private class
JCodeModel.TypeNameParser
-
Field Summary
Fields Modifier and Type Field Description JPrimitiveType
BOOLEAN
static java.util.Map<java.lang.Class<?>,java.lang.Class<?>>
boxToPrimitive
The reverse look up forprimitiveToBox
JPrimitiveType
BYTE
JPrimitiveType
CHAR
JPrimitiveType
DOUBLE
JPrimitiveType
FLOAT
JPrimitiveType
INT
protected static boolean
isCaseSensitiveFileSystem
If the flag is true, we will consider two classes "Foo" and "foo" as a collision.JPrimitiveType
LONG
JNullType
NULL
Obtains a reference to the special "null" type.private java.util.HashMap<java.lang.String,JPackage>
packages
The packages that this JCodeWriter contains.static java.util.Map<java.lang.Class<?>,java.lang.Class<?>>
primitiveToBox
Conversion from primitive typeClass
(such asInteger.TYPE
to its boxed type (such as Integer.class)private java.util.HashMap<java.lang.Class<?>,JCodeModel.JReferencedClass>
refClasses
All JReferencedClasses are pooled here.JPrimitiveType
SHORT
JPrimitiveType
VOID
private JClass
wildcard
Cached forwildcard()
.
-
Constructor Summary
Constructors Constructor Description JCodeModel()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description JDefinedClass
_class(int mods, java.lang.String fullyqualifiedName, ClassType t)
Creates a new generated class.JDefinedClass
_class(java.lang.String fullyqualifiedName)
Creates a new generated class.JDefinedClass
_class(java.lang.String fullyqualifiedName, ClassType t)
Creates a new generated class.JDefinedClass
_getClass(java.lang.String fullyQualifiedName)
Gets a reference to the already created generated class.JPackage
_package(java.lang.String name)
Add a package to the list of packages to be generatedJType
_ref(java.lang.Class<?> c)
JDefinedClass
anonymousClass(JClass baseType)
Creates a new anonymous class.JDefinedClass
anonymousClass(java.lang.Class<?> baseType)
void
build(CodeWriter out)
A convenience method forbuild(out,out)
.void
build(CodeWriter source, CodeWriter resource)
Generates Java source code.void
build(java.io.File destDir)
A convenience method forbuild(destDir,System.out)
.void
build(java.io.File srcDir, java.io.File resourceDir)
A convenience method forbuild(srcDir,resourceDir,System.out)
.void
build(java.io.File srcDir, java.io.File resourceDir, java.io.PrintStream status)
Generates Java source code.void
build(java.io.File destDir, java.io.PrintStream status)
Generates Java source code.int
countArtifacts()
Returns the number of files to be generated ifbuild(java.io.File, java.io.PrintStream)
is invoked now.JClass
directClass(java.lang.String name)
Creates a dummy, unknownJClass
that represents a given name.private static boolean
getFileSystemCaseSensitivity()
JDefinedClass
newAnonymousClass(JClass baseType)
Deprecated.The naming convention doesn't match the rest of the CodeModel.java.util.Iterator<JPackage>
packages()
Returns an iterator that walks the packages defined using this code writer.JType
parseType(java.lang.String name)
Obtains a type object from a type name.JClass
ref(java.lang.Class<?> clazz)
Obtains a reference to an existing class from its Class object.JClass
ref(java.lang.String fullyQualifiedClassName)
Obtains a reference to an existing class from its fully-qualified class name.JPackage
rootPackage()
JClass
wildcard()
Gets aJClass
representation for "?", which is equivalent to "? extends Object".
-
-
-
Field Detail
-
packages
private java.util.HashMap<java.lang.String,JPackage> packages
The packages that this JCodeWriter contains.
-
refClasses
private final java.util.HashMap<java.lang.Class<?>,JCodeModel.JReferencedClass> refClasses
All JReferencedClasses are pooled here.
-
NULL
public final JNullType NULL
Obtains a reference to the special "null" type.
-
VOID
public final JPrimitiveType VOID
-
BOOLEAN
public final JPrimitiveType BOOLEAN
-
BYTE
public final JPrimitiveType BYTE
-
SHORT
public final JPrimitiveType SHORT
-
CHAR
public final JPrimitiveType CHAR
-
INT
public final JPrimitiveType INT
-
FLOAT
public final JPrimitiveType FLOAT
-
LONG
public final JPrimitiveType LONG
-
DOUBLE
public final JPrimitiveType DOUBLE
-
isCaseSensitiveFileSystem
protected static final boolean isCaseSensitiveFileSystem
If the flag is true, we will consider two classes "Foo" and "foo" as a collision.
-
wildcard
private JClass wildcard
Cached forwildcard()
.
-
primitiveToBox
public static final java.util.Map<java.lang.Class<?>,java.lang.Class<?>> primitiveToBox
Conversion from primitive typeClass
(such asInteger.TYPE
to its boxed type (such as Integer.class)
-
boxToPrimitive
public static final java.util.Map<java.lang.Class<?>,java.lang.Class<?>> boxToPrimitive
The reverse look up forprimitiveToBox
-
-
Method Detail
-
getFileSystemCaseSensitivity
private static boolean getFileSystemCaseSensitivity()
-
_package
public JPackage _package(java.lang.String name)
Add a package to the list of packages to be generated- Parameters:
name
- Name of the package. Use "" to indicate the root package.- Returns:
- Newly generated package
-
rootPackage
public final JPackage rootPackage()
-
packages
public java.util.Iterator<JPackage> packages()
Returns an iterator that walks the packages defined using this code writer.
-
_class
public JDefinedClass _class(java.lang.String fullyqualifiedName) throws JClassAlreadyExistsException
Creates a new generated class.- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
directClass
public JClass directClass(java.lang.String name)
Creates a dummy, unknownJClass
that represents a given name.This method is useful when the code generation needs to include the user-specified class that may or may not exist, and only thing known about it is a class name.
-
_class
public JDefinedClass _class(int mods, java.lang.String fullyqualifiedName, ClassType t) throws JClassAlreadyExistsException
Creates a new generated class.- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_class
public JDefinedClass _class(java.lang.String fullyqualifiedName, ClassType t) throws JClassAlreadyExistsException
Creates a new generated class.- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_getClass
public JDefinedClass _getClass(java.lang.String fullyQualifiedName)
Gets a reference to the already created generated class.- Returns:
- null If the class is not yet created.
- See Also:
JPackage._getClass(String)
-
newAnonymousClass
public JDefinedClass newAnonymousClass(JClass baseType)
Deprecated.The naming convention doesn't match the rest of the CodeModel. UseanonymousClass(JClass)
instead.Creates a new anonymous class.
-
anonymousClass
public JDefinedClass anonymousClass(JClass baseType)
Creates a new anonymous class.
-
anonymousClass
public JDefinedClass anonymousClass(java.lang.Class<?> baseType)
-
build
public void build(java.io.File destDir, java.io.PrintStream status) throws java.io.IOException
Generates Java source code. A convenience method forbuild(destDir,destDir,System.out)
.- Parameters:
destDir
- source files are generated into this directory.status
- if non-null, progress indication will be sent to this stream.- Throws:
java.io.IOException
-
build
public void build(java.io.File srcDir, java.io.File resourceDir, java.io.PrintStream status) throws java.io.IOException
Generates Java source code. A convenience method that callsbuild(CodeWriter,CodeWriter)
.- Parameters:
srcDir
- Java source files are generated into this directory.resourceDir
- Other resource files are generated into this directory.status
- if non-null, progress indication will be sent to this stream.- Throws:
java.io.IOException
-
build
public void build(java.io.File destDir) throws java.io.IOException
A convenience method forbuild(destDir,System.out)
.- Throws:
java.io.IOException
-
build
public void build(java.io.File srcDir, java.io.File resourceDir) throws java.io.IOException
A convenience method forbuild(srcDir,resourceDir,System.out)
.- Throws:
java.io.IOException
-
build
public void build(CodeWriter out) throws java.io.IOException
A convenience method forbuild(out,out)
.- Throws:
java.io.IOException
-
build
public void build(CodeWriter source, CodeWriter resource) throws java.io.IOException
Generates Java source code.- Throws:
java.io.IOException
-
countArtifacts
public int countArtifacts()
Returns the number of files to be generated ifbuild(java.io.File, java.io.PrintStream)
is invoked now.
-
ref
public JClass ref(java.lang.Class<?> clazz)
Obtains a reference to an existing class from its Class object.The parameter may not be primitive.
- See Also:
for the version that handles more cases.
-
_ref
public JType _ref(java.lang.Class<?> c)
-
ref
public JClass ref(java.lang.String fullyQualifiedClassName)
Obtains a reference to an existing class from its fully-qualified class name.First, this method attempts to load the class of the given name. If that fails, we assume that the class is derived straight from
Object
, and return aJClass
.
-
wildcard
public JClass wildcard()
Gets aJClass
representation for "?", which is equivalent to "? extends Object".
-
parseType
public JType parseType(java.lang.String name) throws java.lang.ClassNotFoundException
Obtains a type object from a type name.This method handles primitive types, arrays, and existing
Class
es.- Throws:
java.lang.ClassNotFoundException
- If the specified type is not found.
-
-