org.rythmengine.internal.compiler
Class TemplateClass

java.lang.Object
  extended by org.rythmengine.internal.compiler.TemplateClass

public class TemplateClass
extends Object

Define the data structure hold template class/template src/generated java src


Field Summary
static String CN_SUFFIX
           
 CodeBuilder codeBuilder
          CodeBuilder to generate java source code

Could be used to merge state into including template class codeBuilder

 ICodeType codeType
          The code type could be HTML, JS, JSON etc
 byte[] enhancedByteCode
          The enhanced byteCode
 TemplateClass extendedTemplateClass
           
 Set<String> importPaths
          Store a list of import path, i.e.
 String includeTemplateClassNames
           
 boolean isValid
          Mark if this is a valid Rythm Template
 byte[] javaByteCode
          The compiled byteCode
 Class<ITemplate> javaClass
          The in JVM loaded class
 Package javaPackage
          The in JVM loaded package
 String javaSource
          The Java source
 int sigChecksum
          Signatures checksum
 ITemplateResource templateResource
          the template resource
 
Constructor Summary
TemplateClass(File file, RythmEngine engine)
          Construct a TemplateClass instance using template source file
TemplateClass(ITemplateResource resource, RythmEngine engine)
           
TemplateClass(ITemplateResource resource, RythmEngine engine, boolean noRefresh)
           
TemplateClass(ITemplateResource resource, RythmEngine engine, boolean noRefresh, IDialect dialect)
           
TemplateClass(ITemplateResource resource, RythmEngine engine, IDialect dialect)
           
TemplateClass(String template, RythmEngine engine)
          Construct a TemplateClass instance using template source content or file path
TemplateClass(String template, RythmEngine engine, IDialect dialect)
          Construct a TemplateClass instance using template source content or file path
 
Method Summary
 void addIncludeTemplateClass(TemplateClass tc)
           
 ITemplate asTemplate(ICodeType type, Locale locale, RythmEngine engine)
           
 ITemplate asTemplate(ITemplate caller, RythmEngine engine)
           
 ITemplate asTemplate(RythmEngine engine)
           
 void buildSourceCode()
           
 void buildSourceCode(String includingClassName)
           
 byte[] compile()
          Compile the class from Java source
 void compiled(byte[] code)
          Call back when a class is compiled.
static TemplateClass createInnerClass(String className, byte[] byteCode, TemplateClass parent)
           
 void delayedEnhance(TemplateClass root)
          Used to instruct embedded class byte code needs to be enhanced, but for now let's just use the java byte code as the enhanced bytecode
 void deserializeIncludeTagTypes(String s)
           
 byte[] enhance()
           
 boolean equals(Object o)
           
 String getKey()
          Return string representation of the template
 String getPackage()
           
 String getResourceLoaderClass()
           
 String getTagName()
          If not null then this template is a tag
 String getTemplateSource()
          The template source
 String getTemplateSource(boolean includeRoot)
           
 int hashCode()
           
 boolean isClass()
           
 boolean isDefinable()
          Is this class already compiled but not defined ?
 boolean isInner()
           
 boolean isStringTemplate()
          Is this template resource coming from a literal String or from a loaded resource like file
 void loadCachedByteCode(byte[] code)
           
 String name()
           
 String name0()
           
 boolean refresh()
           
 boolean refresh(boolean forceRefresh)
           
 String refreshIncludeTemplateClassNames()
           
 void reset()
          Remove all java source/ byte code and cache
 boolean returnObject(String tagName)
           
 TemplateClass root()
           
 String serializeIncludeTagTypes()
           
 void setTagType(String tagName, String type)
           
 String toString()
           
 void uncompile()
          Unload the class
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

extendedTemplateClass

public TemplateClass extendedTemplateClass

includeTemplateClassNames

public String includeTemplateClassNames

templateResource

public ITemplateResource templateResource
the template resource


javaSource

public String javaSource
The Java source


javaByteCode

public byte[] javaByteCode
The compiled byteCode


enhancedByteCode

public byte[] enhancedByteCode
The enhanced byteCode


importPaths

public Set<String> importPaths
Store a list of import path, i.e. those imports ends with ".*"


javaClass

public Class<ITemplate> javaClass
The in JVM loaded class


javaPackage

public Package javaPackage
The in JVM loaded package


codeType

public ICodeType codeType
The code type could be HTML, JS, JSON etc


sigChecksum

public int sigChecksum
Signatures checksum


isValid

public boolean isValid
Mark if this is a valid Rythm Template


codeBuilder

public CodeBuilder codeBuilder
CodeBuilder to generate java source code

Could be used to merge state into including template class codeBuilder


CN_SUFFIX

public static final String CN_SUFFIX
See Also:
Constant Field Values
Constructor Detail

TemplateClass

public TemplateClass(File file,
                     RythmEngine engine)
Construct a TemplateClass instance using template source file

Parameters:
file - the template source file

TemplateClass

public TemplateClass(String template,
                     RythmEngine engine)
Construct a TemplateClass instance using template source content or file path

Parameters:
template -

TemplateClass

public TemplateClass(String template,
                     RythmEngine engine,
                     IDialect dialect)
Construct a TemplateClass instance using template source content or file path

Parameters:
template -

TemplateClass

public TemplateClass(ITemplateResource resource,
                     RythmEngine engine)

TemplateClass

public TemplateClass(ITemplateResource resource,
                     RythmEngine engine,
                     IDialect dialect)

TemplateClass

public TemplateClass(ITemplateResource resource,
                     RythmEngine engine,
                     boolean noRefresh)

TemplateClass

public TemplateClass(ITemplateResource resource,
                     RythmEngine engine,
                     boolean noRefresh,
                     IDialect dialect)
Method Detail

root

public TemplateClass root()

createInnerClass

public static TemplateClass createInnerClass(String className,
                                             byte[] byteCode,
                                             TemplateClass parent)

isInner

public boolean isInner()

name0

public String name0()

name

public String name()

addIncludeTemplateClass

public void addIncludeTemplateClass(TemplateClass tc)

refreshIncludeTemplateClassNames

public String refreshIncludeTemplateClassNames()

setTagType

public void setTagType(String tagName,
                       String type)

returnObject

public boolean returnObject(String tagName)

serializeIncludeTagTypes

public String serializeIncludeTagTypes()

deserializeIncludeTagTypes

public void deserializeIncludeTagTypes(String s)

getTagName

public String getTagName()
If not null then this template is a tag


getTemplateSource

public String getTemplateSource()
The template source


getTemplateSource

public String getTemplateSource(boolean includeRoot)

isStringTemplate

public boolean isStringTemplate()
Is this template resource coming from a literal String or from a loaded resource like file


getResourceLoaderClass

public String getResourceLoaderClass()

getKey

public String getKey()
Return string representation of the template

Returns:

asTemplate

public ITemplate asTemplate(ICodeType type,
                            Locale locale,
                            RythmEngine engine)

asTemplate

public ITemplate asTemplate(RythmEngine engine)

asTemplate

public ITemplate asTemplate(ITemplate caller,
                            RythmEngine engine)

refresh

public boolean refresh()

buildSourceCode

public void buildSourceCode(String includingClassName)

buildSourceCode

public void buildSourceCode()

refresh

public boolean refresh(boolean forceRefresh)
Returns:
true if this class has changes refreshed, otherwise this class has not been changed yet

isDefinable

public boolean isDefinable()
Is this class already compiled but not defined ?

Returns:
if the class is compiled but not defined

reset

public void reset()
Remove all java source/ byte code and cache


compile

public byte[] compile()
Compile the class from Java source

Returns:
the bytes that comprise the class file

delayedEnhance

public void delayedEnhance(TemplateClass root)
Used to instruct embedded class byte code needs to be enhanced, but for now let's just use the java byte code as the enhanced bytecode


enhance

public byte[] enhance()

uncompile

public void uncompile()
Unload the class


isClass

public boolean isClass()

getPackage

public String getPackage()

loadCachedByteCode

public void loadCachedByteCode(byte[] code)

compiled

public void compiled(byte[] code)
Call back when a class is compiled.

Parameters:
code - The bytecode.

toString

public String toString()
Overrides:
toString in class Object

equals

public boolean equals(Object o)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object


Copyright © 2014. All Rights Reserved.