Package org.jibx.schema.codegen
Class SourceBuilder
- java.lang.Object
-
- org.jibx.schema.codegen.SourceBuilder
-
public class SourceBuilder extends java.lang.Object
Abstract syntax tree builder. This wraps the AST with convenience methods and added control information.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
SourceBuilder.WriterVisitor
Visitor to apply edits.
-
Field Summary
Fields Modifier and Type Field Description private AST
m_ast
Actual AST instance.private java.util.ArrayList
m_classes
Builders for main classes in file.private CompilationUnit
m_compilationUnit
Compilation unit.protected ImportsTracker
m_importsTracker
Tracker for imports.private java.lang.String
m_name
Name of this source.private PackageHolder
m_package
Package containing this source.private static Logger
s_logger
Logger for class.private static java.util.Map
s_primitiveTypeCodes
Map from primitive type name to type code.
-
Constructor Summary
Constructors Constructor Description SourceBuilder(AST ast, PackageHolder pack, java.lang.String name, ImportsTracker imports)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private AbstractTypeDeclaration
createClass(java.lang.String cname, boolean isenum)
Create a type declaration.Type
createParameterizedType(java.lang.String type, java.lang.String param)
Create a parameterized type.Type
createType(java.lang.String type)
Create type definition.protected Name
createTypeName(java.lang.String type)
Create type name.void
finish(boolean verbose)
Generate the actual source file.(package private) AST
getAST()
AST access for related classes.java.lang.String
getPackageName()
Get the name of the package containing this source file.ClassBuilder
newInnerClass(java.lang.String cname, ClassBuilder outer, boolean isenum)
Add a new inner class to the file.ClassBuilder
newMainClass(java.lang.String cname, boolean isenum)
Add a new main class to the file.
-
-
-
Field Detail
-
s_logger
private static final Logger s_logger
Logger for class.
-
s_primitiveTypeCodes
private static final java.util.Map s_primitiveTypeCodes
Map from primitive type name to type code.
-
m_ast
private final AST m_ast
Actual AST instance.
-
m_package
private final PackageHolder m_package
Package containing this source.
-
m_name
private final java.lang.String m_name
Name of this source.
-
m_compilationUnit
private final CompilationUnit m_compilationUnit
Compilation unit.
-
m_importsTracker
protected final ImportsTracker m_importsTracker
Tracker for imports.
-
m_classes
private java.util.ArrayList m_classes
Builders for main classes in file.
-
-
Constructor Detail
-
SourceBuilder
public SourceBuilder(AST ast, PackageHolder pack, java.lang.String name, ImportsTracker imports)
Constructor.- Parameters:
ast
-pack
-name
-imports
-
-
-
Method Detail
-
getAST
AST getAST()
AST access for related classes.- Returns:
- AST
-
getPackageName
public java.lang.String getPackageName()
Get the name of the package containing this source file.- Returns:
- name
-
createClass
private AbstractTypeDeclaration createClass(java.lang.String cname, boolean isenum)
Create a type declaration.- Parameters:
cname
- class nameisenum
- Java 5 enum class flag- Returns:
- type declaration
-
newMainClass
public ClassBuilder newMainClass(java.lang.String cname, boolean isenum)
Add a new main class to the file.- Parameters:
cname
- class nameisenum
- Java 5 enum class flag- Returns:
- builder
-
newInnerClass
public ClassBuilder newInnerClass(java.lang.String cname, ClassBuilder outer, boolean isenum)
Add a new inner class to the file.- Parameters:
cname
- class nameouter
- containing class builderisenum
- Java 5 enum class flag- Returns:
- builder
-
createTypeName
protected Name createTypeName(java.lang.String type)
Create type name.- Parameters:
type
- fully-qualified type name- Returns:
- name
-
createType
public Type createType(java.lang.String type)
Create type definition. This uses the supplied type name, which may include array suffixes and/or type parameters, to construct the actual type definition.- Parameters:
type
- fully qualified type name, or primitive type name- Returns:
- constructed typed definition
-
createParameterizedType
public Type createParameterizedType(java.lang.String type, java.lang.String param)
Create a parameterized type.- Parameters:
type
- fully qualified type nameparam
- fully qualified parameter type name- Returns:
- type
-
finish
public void finish(boolean verbose)
Generate the actual source file.- Parameters:
verbose
-
-
-