|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjaxx.compiler.JAXXCompiler
public class JAXXCompiler
Compiles JAXX files into Java classes.
useJAXXCompilerFinalizer ... todo finish javadoc
| Field Summary | |
|---|---|
protected java.lang.StringBuffer |
applyDataBinding
Body of the applyDataBinding method. |
protected int |
autogenID
Sequence number used to create automatic variable names. |
protected java.io.File |
baseDir
Base directory used for path resolution (normally the directory in which the .jaxx file resides). |
protected java.lang.StringBuffer |
bodyCode
Extra code to be added to the class body. |
protected java.lang.ClassLoader |
classLoader
ClassLoader which searches the user-specified class path in addition to the normal class path |
protected CompilerConfiguration |
configuration
configuration of the compiler |
protected java.util.List<DataBinding> |
dataBindings
data bindings detected |
protected CompiledObjectDecorator |
defaultDecorator
default decodator to use if none specified |
protected org.w3c.dom.Document |
document
Parsed XML of src file. |
protected JAXXEngine |
engine
engine which references this compiler (can be null if compiler is standalone) |
protected java.util.Map<EventHandler,java.lang.String> |
eventHandlerMethodNames
Map of event handler method names used in compiler |
protected java.util.Map<java.lang.String,java.util.Map<ClassDescriptor,java.util.List<EventHandler>>> |
eventHandlers
Maps objects (expressed in Java code) to event listener classes (e.g. |
protected boolean |
failed
flag to detect if an error occurs while compiling jaxx file |
protected DefaultObjectHandler |
firstPassClassTagHandler
The unique object handler used in first pass |
protected java.util.Map<CompiledObject,java.lang.String> |
ids
Maps objects to their ID strings. |
protected java.util.Set<java.lang.String> |
importedClasses
Contains strings of the form "javax.swing.Timer" |
protected java.util.Set<java.lang.String> |
importedPackages
Contains strings of the form "javax.swing." |
protected java.lang.StringBuffer |
initDataBindings
Code to initialize data bindings. |
protected java.lang.StringBuffer |
initializer
Extra code to be added to the instance initializer. |
protected java.util.List<java.lang.Runnable> |
initializers
A list of Runnables which will be run after the first compilation pass. |
static int |
INLINE_THRESHOLD
Maximum length of an inlinable creation method. |
protected java.util.List<Rule> |
inlineStyles
Contains all attributes defined inline on class tags. |
protected JavaFile |
javaFile
the file to be generated |
static java.lang.String |
JAXX_INTERNAL_NAMESPACE
|
static java.lang.String |
JAXX_NAMESPACE
|
protected java.lang.StringBuffer |
lateInitializer
Extra code to be added at the end of the instance initializer. |
protected java.util.regex.Matcher |
leftBraceMatcher
left brace matcher |
protected static java.lang.String |
lineSeparator
Line separator cached value |
protected static org.apache.commons.logging.Log |
log
Logger |
protected boolean |
mainDeclared
true if a main() method has been declared in a script |
protected java.util.Map<java.lang.String,CompiledObject> |
objects
Maps object ID strings to the objects themselves. |
protected java.util.Stack<CompiledObject> |
openComponents
Keeps track of open components (components still having children added). |
protected java.lang.String |
outputClassName
Name of class being compiled. |
protected java.lang.StringBuffer |
processDataBinding
Body of the processDataBinding method. |
protected java.lang.StringBuffer |
removeDataBinding
Body of the removeDataBinding method. |
protected java.util.regex.Matcher |
rightBraceMatcher
right brace matcher |
protected CompiledObject |
root
Object corresponding to the root tag in the document. |
protected ScriptManager |
scriptManager
|
protected java.util.Stack<java.io.File> |
sourceFiles
Used for error reporting purposes, so we can report the right source file. |
protected java.io.File |
src
jaxx file being compiled. |
static boolean |
STRICT_CHECKS
True to throw exceptions when we encounter unresolvable classes, false to ignore. |
protected Stylesheet |
stylesheet
Combination of all stylesheets registered using registerStylesheet(jaxx.runtime.css.Stylesheet). |
protected SymbolTable |
symbolTable
table of symbols for this compiler |
protected java.util.Stack<org.w3c.dom.Element> |
tagsBeingCompiled
Used for error reporting purposes, so we can report the right line number. |
protected java.util.Map<java.lang.Object,java.lang.String> |
uniqueIds
Maps of uniqued id for objects used in compiler |
| Constructor Summary | |
|---|---|
JAXXCompiler(JAXXEngine engine,
java.io.File baseDir,
java.io.File src,
java.lang.String outputClassName,
CompilerConfiguration configuration,
java.util.List<java.lang.String> defaultImports)
Creates a new JAXXCompiler. |
|
| Method Summary | |
|---|---|
void |
addDependencyClass(java.lang.String className)
|
void |
addImport(java.lang.String text)
|
void |
addInlineStyle(CompiledObject object,
java.lang.String propertyName,
boolean dataBinding)
|
void |
addScriptField(FieldDescriptor field)
|
void |
addScriptMethod(MethodDescriptor method)
|
void |
addSimpleField(JavaField javaField)
|
void |
appendApplyDataBinding(java.lang.String code)
|
void |
appendBodyCode(java.lang.String code)
|
void |
appendInitDataBindings(java.lang.String code)
|
void |
appendInitializerCode(java.lang.String code)
|
void |
appendLateInitializer(java.lang.String code)
|
void |
appendProcessDataBinding(java.lang.String code)
|
void |
appendRemoveDataBinding(java.lang.String code)
|
void |
applyStylesheets()
|
java.lang.String |
checkJavaCode(java.lang.String javaCode)
Verifies that a snippet of Java code parses correctly. |
void |
checkOverride(CompiledObject object)
|
boolean |
checkReference(org.w3c.dom.Element tag,
java.lang.String reference,
boolean strict,
java.lang.String attribute)
Check that a reference exists in symbol table on second compil pass |
void |
closeComponent(CompiledObject component)
|
protected void |
compileFirstPass()
|
void |
compileFirstPass(org.w3c.dom.Element tag)
|
protected void |
compileSecondPass()
|
void |
compileSecondPass(org.w3c.dom.Element tag)
|
java.lang.Object |
convertFromString(java.lang.String string,
java.lang.Class<?> type)
|
static java.lang.String |
escapeJavaString(java.lang.String raw)
Escapes a string using standard Java escape sequences, generally in preparation to including it in a string literal in a compiled Java file. |
void |
finalizeCompiler(java.lang.Iterable<JAXXCompilerFinalizer> finalizers)
|
void |
generate(JavaFileGenerator generator)
|
java.lang.StringBuffer |
getApplyDataBinding()
|
java.lang.String |
getAutoId(ClassDescriptor objectClass)
|
java.lang.String |
getAutoId(java.lang.String name)
|
java.io.File |
getBaseDir()
|
java.lang.StringBuffer |
getBodyCode()
|
static java.lang.String |
getCanonicalName(java.lang.Class<?> clazz)
|
static java.lang.String |
getCanonicalName(ClassDescriptor clazz)
|
static java.lang.String |
getCanonicalName(CompiledObject compiled)
|
java.lang.ClassLoader |
getClassLoader()
Returns a ClassLoader which searches the user-specified class path in addition
to the normal system class path. |
CompiledObject |
getCompiledObject(java.lang.String id)
|
CompilerConfiguration |
getConfiguration()
|
java.util.List<DataBinding> |
getDataBindings()
|
JAXXEngine |
getEngine()
|
java.lang.String |
getEventHandlerMethodName(EventHandler handler)
|
java.util.Map<java.lang.String,java.util.Map<ClassDescriptor,java.util.List<EventHandler>>> |
getEventHandlers()
|
java.lang.String[] |
getExtraInterfaces()
|
java.lang.String |
getGenericType()
|
java.util.Set<java.lang.String> |
getImportedClasses()
|
java.util.Set<java.lang.String> |
getImportedPackages()
|
java.lang.StringBuffer |
getInitDataBindings()
|
java.lang.StringBuffer |
getInitializer()
|
java.lang.String |
getJavaCode(java.lang.Object object)
|
JavaFile |
getJavaFile()
|
JAXXObjectDescriptor |
getJAXXObjectDescriptor()
|
java.lang.StringBuffer |
getLateInitializer()
|
static java.lang.String |
getLineSeparator()
Returns the system line separator string. |
protected int |
getNextLeftBrace(java.lang.String string,
int pos)
|
protected int |
getNextRightBrace(java.lang.String string,
int pos)
|
java.util.Iterator<CompiledObject> |
getObjectCreationOrder()
|
java.util.Map<java.lang.String,CompiledObject> |
getObjects()
|
CompiledObject |
getOpenComponent()
|
java.lang.String |
getOutputClassName()
|
java.lang.StringBuffer |
getProcessDataBinding()
|
java.lang.StringBuffer |
getRemoveDataBinding()
|
CompiledObject |
getRootObject()
|
static javax.xml.parsers.SAXParser |
getSAXParser()
|
FieldDescriptor[] |
getScriptFields()
|
ScriptManager |
getScriptManager()
|
MethodDescriptor |
getScriptMethod(java.lang.String methodName)
|
MethodDescriptor[] |
getScriptMethods()
|
java.util.Stack<java.io.File> |
getSourceFiles()
|
Stylesheet |
getStylesheet()
|
java.lang.String |
getSuperGenericType()
|
SymbolTable |
getSymbolTable()
|
java.lang.String |
getUniqueId(java.lang.Object object)
|
boolean |
hasApplyDataBinding()
|
boolean |
hasMethod(java.lang.String methodName)
|
boolean |
hasProcessDataBinding()
|
boolean |
hasRemoveDataBinding()
|
boolean |
inlineCreation(CompiledObject object)
|
boolean |
isAbstractClass()
|
boolean |
isFailed()
|
boolean |
isMainDeclared()
|
void |
openComponent(CompiledObject component)
|
void |
openComponent(CompiledObject component,
java.lang.String constraints)
|
void |
openInvisibleComponent(CompiledObject component)
|
static org.w3c.dom.Document |
parseDocument(java.io.InputStream in)
|
java.lang.String |
preprocessScript(java.lang.String script)
|
java.lang.String |
processDataBindings(java.lang.String stringValue)
Examine an attribute value for data binding expressions. |
void |
registerCompiledObject(CompiledObject object)
|
void |
registerDataBinding(java.lang.String src,
java.lang.String dest,
java.lang.String assignment)
|
void |
registerEventHandler(EventHandler handler)
|
void |
registerInitializer(java.lang.Runnable r)
Registers a Runnable which will be executed after the first
compilation pass is complete. |
void |
registerScript(java.lang.String script)
|
void |
registerScript(java.lang.String script,
java.io.File sourceFile)
|
void |
registerStylesheet(Stylesheet stylesheet)
|
void |
reportError(CompilerException ex)
|
void |
reportError(org.w3c.dom.Element tag,
java.lang.String error)
|
void |
reportError(org.w3c.dom.Element tag,
java.lang.String error,
int lineOffset)
|
void |
reportError(int lineNumber,
java.lang.String error)
|
void |
reportError(java.lang.String error)
|
void |
reportError(java.lang.String extraMessage,
CompilerException ex)
|
void |
reportWarning(org.w3c.dom.Element tag,
java.lang.String warning,
int lineOffset)
|
void |
reportWarning(java.lang.String warning)
|
void |
runInitializers()
|
void |
setAbstractClass(boolean abstractClass)
|
void |
setExtraInterfaces(java.lang.String[] extraInterfaces)
|
void |
setGenericType(java.lang.String genericType)
|
void |
setMainDeclared(boolean mainDeclared)
|
void |
setSuperGenericType(java.lang.String superGenericType)
|
static java.io.File |
URLtoFile(java.lang.String urlString)
|
static java.io.File |
URLtoFile(java.net.URL url)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final org.apache.commons.logging.Log log
public static final boolean STRICT_CHECKS
public static final java.lang.String JAXX_NAMESPACE
public static final java.lang.String JAXX_INTERNAL_NAMESPACE
public static final int INLINE_THRESHOLD
protected static java.lang.String lineSeparator
protected final DefaultObjectHandler firstPassClassTagHandler
protected boolean failed
protected CompiledObject root
protected java.util.Set<java.lang.String> importedPackages
protected java.util.Set<java.lang.String> importedClasses
protected java.util.Stack<CompiledObject> openComponents
protected int autogenID
protected java.util.List<DataBinding> dataBindings
protected SymbolTable symbolTable
protected java.io.File baseDir
protected java.io.File src
protected org.w3c.dom.Document document
protected java.lang.String outputClassName
protected ScriptManager scriptManager
protected Stylesheet stylesheet
registerStylesheet(jaxx.runtime.css.Stylesheet).
protected java.util.List<Rule> inlineStyles
protected java.util.Map<java.lang.String,java.util.Map<ClassDescriptor,java.util.List<EventHandler>>> eventHandlers
protected java.util.Map<java.lang.Object,java.lang.String> uniqueIds
protected java.util.Map<EventHandler,java.lang.String> eventHandlerMethodNames
protected java.lang.ClassLoader classLoader
protected java.util.List<java.lang.Runnable> initializers
protected java.util.regex.Matcher leftBraceMatcher
protected java.util.regex.Matcher rightBraceMatcher
protected java.lang.StringBuffer initializer
protected java.lang.StringBuffer lateInitializer
protected java.lang.StringBuffer bodyCode
protected java.lang.StringBuffer initDataBindings
protected java.lang.StringBuffer applyDataBinding
protected java.lang.StringBuffer removeDataBinding
protected java.lang.StringBuffer processDataBinding
protected boolean mainDeclared
protected JavaFile javaFile
protected CompilerConfiguration configuration
protected java.util.Stack<org.w3c.dom.Element> tagsBeingCompiled
protected java.util.Stack<java.io.File> sourceFiles
protected java.util.Map<java.lang.String,CompiledObject> objects
protected java.util.Map<CompiledObject,java.lang.String> ids
protected CompiledObjectDecorator defaultDecorator
protected final JAXXEngine engine
| Constructor Detail |
|---|
public JAXXCompiler(JAXXEngine engine,
java.io.File baseDir,
java.io.File src,
java.lang.String outputClassName,
CompilerConfiguration configuration,
java.util.List<java.lang.String> defaultImports)
engine - engine which use the compiler (could be null if not attach to any engine)baseDir - classpath locationsrc - location of file to runoutputClassName - the out file nameconfiguration - configuration to pass to javacdefaultImports - list of default imports to add to java files| Method Detail |
|---|
public void runInitializers()
public void registerInitializer(java.lang.Runnable r)
Runnable which will be executed after the first
compilation pass is complete.
r - runnable to register
public void compileFirstPass(org.w3c.dom.Element tag)
throws java.io.IOException
java.io.IOException
public void compileSecondPass(org.w3c.dom.Element tag)
throws java.io.IOException
java.io.IOException
protected void compileFirstPass()
throws java.io.IOException
java.io.IOException
protected void compileSecondPass()
throws java.io.IOException
java.io.IOException
public void openComponent(CompiledObject component)
throws CompilerException
CompilerException
public void openComponent(CompiledObject component,
java.lang.String constraints)
throws CompilerException
CompilerExceptionpublic void openInvisibleComponent(CompiledObject component)
public CompiledObject getOpenComponent()
public void closeComponent(CompiledObject component)
public void registerCompiledObject(CompiledObject object)
public CompiledObject getCompiledObject(java.lang.String id)
public boolean inlineCreation(CompiledObject object)
public void checkOverride(CompiledObject object)
throws CompilerException
CompilerExceptionpublic java.lang.String getJavaCode(java.lang.Object object)
public java.lang.Object convertFromString(java.lang.String string,
java.lang.Class<?> type)
public java.util.List<DataBinding> getDataBindings()
public java.lang.String processDataBindings(java.lang.String stringValue)
throws CompilerException
registerDataBinding(java.lang.String, java.lang.String, java.lang.String).
If the attribute value does not invoke data binding, this method returns null
stringValue - the string value of the property from the XML
CompilerException - ?
public void registerDataBinding(java.lang.String src,
java.lang.String dest,
java.lang.String assignment)
public void registerEventHandler(EventHandler handler)
public java.lang.String getEventHandlerMethodName(EventHandler handler)
public void addScriptField(FieldDescriptor field)
public void addScriptMethod(MethodDescriptor method)
public void registerScript(java.lang.String script)
throws CompilerException
CompilerException
public void registerScript(java.lang.String script,
java.io.File sourceFile)
throws CompilerException
CompilerException
public java.lang.String preprocessScript(java.lang.String script)
throws CompilerException
CompilerExceptionpublic void applyStylesheets()
public void registerStylesheet(Stylesheet stylesheet)
public void addInlineStyle(CompiledObject object,
java.lang.String propertyName,
boolean dataBinding)
public void reportWarning(java.lang.String warning)
public void reportWarning(org.w3c.dom.Element tag,
java.lang.String warning,
int lineOffset)
public void reportError(java.lang.String error)
public void reportError(CompilerException ex)
public void reportError(java.lang.String extraMessage,
CompilerException ex)
public void reportError(org.w3c.dom.Element tag,
java.lang.String error)
public void reportError(org.w3c.dom.Element tag,
java.lang.String error,
int lineOffset)
public void reportError(int lineNumber,
java.lang.String error)
public java.util.Map<java.lang.String,CompiledObject> getObjects()
public java.util.Map<java.lang.String,java.util.Map<ClassDescriptor,java.util.List<EventHandler>>> getEventHandlers()
public CompilerConfiguration getConfiguration()
public java.lang.String getOutputClassName()
public java.io.File getBaseDir()
public java.util.Set<java.lang.String> getImportedClasses()
public java.util.Set<java.lang.String> getImportedPackages()
public java.util.Iterator<CompiledObject> getObjectCreationOrder()
public CompiledObject getRootObject()
public java.util.Stack<java.io.File> getSourceFiles()
public ScriptManager getScriptManager()
public SymbolTable getSymbolTable()
public Stylesheet getStylesheet()
public FieldDescriptor[] getScriptFields()
public MethodDescriptor[] getScriptMethods()
public MethodDescriptor getScriptMethod(java.lang.String methodName)
public boolean isFailed()
public java.lang.ClassLoader getClassLoader()
ClassLoader which searches the user-specified class path in addition
to the normal system class path.
ClassLoader to use while resolving class referencespublic JAXXObjectDescriptor getJAXXObjectDescriptor()
public java.lang.StringBuffer getInitializer()
public java.lang.StringBuffer getLateInitializer()
public java.lang.StringBuffer getBodyCode()
public java.lang.StringBuffer getInitDataBindings()
public java.lang.StringBuffer getApplyDataBinding()
public java.lang.StringBuffer getRemoveDataBinding()
public java.lang.StringBuffer getProcessDataBinding()
public boolean isMainDeclared()
public void setMainDeclared(boolean mainDeclared)
public void appendInitializerCode(java.lang.String code)
public void appendBodyCode(java.lang.String code)
public void appendInitDataBindings(java.lang.String code)
public void appendProcessDataBinding(java.lang.String code)
public void appendApplyDataBinding(java.lang.String code)
public void appendRemoveDataBinding(java.lang.String code)
public void appendLateInitializer(java.lang.String code)
public boolean hasProcessDataBinding()
public boolean hasApplyDataBinding()
public boolean hasRemoveDataBinding()
public boolean hasMethod(java.lang.String methodName)
public void addImport(java.lang.String text)
public void addDependencyClass(java.lang.String className)
public java.lang.String checkJavaCode(java.lang.String javaCode)
javaCode - the Java code snippet to test
CompilerException - if the code cannot be parsed
public boolean checkReference(org.w3c.dom.Element tag,
java.lang.String reference,
boolean strict,
java.lang.String attribute)
tag - the current tagreference - the required referencestrict - flag to report an error if reference was not foundattribute - (if not null reference the attribute where is defined the reference)
true if reference was found, false otherwise and add an error in compiler
protected int getNextLeftBrace(java.lang.String string,
int pos)
protected int getNextRightBrace(java.lang.String string,
int pos)
public java.lang.String getAutoId(ClassDescriptor objectClass)
public java.lang.String getAutoId(java.lang.String name)
public java.lang.String getUniqueId(java.lang.Object object)
public void setExtraInterfaces(java.lang.String[] extraInterfaces)
public java.lang.String[] getExtraInterfaces()
public boolean isAbstractClass()
public void setAbstractClass(boolean abstractClass)
public java.lang.String getGenericType()
public void setGenericType(java.lang.String genericType)
public java.lang.String getSuperGenericType()
public void setSuperGenericType(java.lang.String superGenericType)
public void addSimpleField(JavaField javaField)
public JavaFile getJavaFile()
public void finalizeCompiler(java.lang.Iterable<JAXXCompilerFinalizer> finalizers)
throws java.lang.Exception
java.lang.Exception
public void generate(JavaFileGenerator generator)
throws java.io.IOException
java.io.IOExceptionpublic static java.lang.String getLineSeparator()
public static java.lang.String getCanonicalName(java.lang.Class<?> clazz)
public static java.lang.String getCanonicalName(ClassDescriptor clazz)
public static java.lang.String getCanonicalName(CompiledObject compiled)
public static java.lang.String escapeJavaString(java.lang.String raw)
raw - the raw string to be escape
public static java.io.File URLtoFile(java.net.URL url)
public static java.io.File URLtoFile(java.lang.String urlString)
public static javax.xml.parsers.SAXParser getSAXParser()
public static org.w3c.dom.Document parseDocument(java.io.InputStream in)
throws java.io.IOException,
org.xml.sax.SAXException
java.io.IOException
org.xml.sax.SAXExceptionpublic JAXXEngine getEngine()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||