org.rythmengine.template
Class TemplateBase

java.lang.Object
  extended by org.rythmengine.utils.TextBuilder
      extended by org.rythmengine.internal.TemplateBuilder
          extended by org.rythmengine.template.TemplateBase
All Implemented Interfaces:
Cloneable, ITag, ITemplate
Direct Known Subclasses:
TagBase

public abstract class TemplateBase
extends TemplateBuilder
implements ITemplate

The base class of template implementation. It provides a set of protected methods which is handy to use in template authoring


Nested Class Summary
protected static class TemplateBase.__Itr<T>
          The helper class to facilitate generating code for the "for" loop in the template source
 
Nested classes/interfaces inherited from class org.rythmengine.utils.TextBuilder
TextBuilder.StrBuf
 
Nested classes/interfaces inherited from interface org.rythmengine.template.ITemplate
ITemplate.__Context
 
Nested classes/interfaces inherited from interface org.rythmengine.template.ITag
ITag.__Body, ITag.__Parameter, ITag.__ParameterList
 
Field Summary
protected  ITemplate.__Context __ctx
          The render context
protected  RythmEngine __engine
          The rythm engine that run this template
protected static ILogger __logger
          The logger
protected  boolean __logTime
           
protected  TemplateBase __parent
          The parent template (layout template)
protected  Map<String,Object> __renderArgs
          Stores render args of this template.
 
Fields inherited from class org.rythmengine.utils.TextBuilder
__buffer, __caller
 
Constructor Summary
TemplateBase()
          Construct a template instance
 
Method Summary
protected  void __append(boolean b)
          Append a boolean to internal buffer
protected  void __append(char c)
          Append a char to internal buffer
protected  void __append(double d)
          Append a double to internal buffer
protected  void __append(float f)
          Append a float to internal buffer
protected  void __append(int i)
          Append an integer to internal buffer
protected  void __append(long l)
          Append a long to internal buffer
protected  void __append(Object o)
          Append a object to internal buffer or output (os or writer).
protected  void __append(TextBuilder.StrBuf wrapper)
          Append a TextBuilder.StrBuf content into the buffer
protected  TemplateBase __caller()
          Return caller of the template when this template is invoked as a tag
 ITemplate __cloneMe(RythmEngine engine, ITemplate caller)
          Not to be used in user application or template
 ICodeType __curCodeType()
          (not API) Return current code type.
 Escape __curEscape()
          (not API) Return the current escape scheme
 Locale __curLocale()
          (not API) Return the current locale
protected static void __debug(String msg, Object... args)
           
 Escape __defaultEscape()
          Return the default escape method.
protected  void __endSection()
          End a layout section.
protected  void __endSection(boolean def)
          End a layout section with a boolean flag mark if it is a default content or not.
 RythmEngine __engine()
          Return the engine running this template
protected static void __error(String msg, Object... args)
           
protected static void __error(Throwable t, String msg, Object... args)
           
protected  Object __eval(String expr)
           
protected
<T> T
__get(String name)
          Alias of __getRenderArg(String)
protected
<T> T
__getAs(String name, Class<T> c)
          Get render arg and do type cast to the class specified
<T> T
__getRenderArg(String name)
          Return a render arg value by name
protected
<T> T
__getRenderProperty(String name)
          Get render property by name.
protected
<T> T
__getRenderProperty(String name, T def)
          Get render property by name.
protected
<T> T
__getRenderPropertyAs(String name, T def)
          Get render property by name and do type cast to the specified default value.
protected  RawData __getSection()
          Get layout content as RawData.
protected  RawData __getSection(String name)
          Get a section content as RawData by name.
 org.rythmengine.internal.compiler.TemplateClass __getTemplateClass(boolean useCaller)
          Get the template class of this template.
 Map<String,Object> __getUserContext()
          Return user context previously set to this template instance.
protected  void __handleTemplateExecutionException(Exception e)
          Handle template execution exception.
protected  String __i18n(String key, Object... args)
           
protected static void __info(String msg, Object... args)
           
 void __init()
          the implementation of this method is to be generated by CodeBuilder.
protected  void __internalBuild()
          Not to be used in user application or template
protected  TemplateBase __internalClone()
          Not to be used in user application or template
protected  void __internalInit()
          Not to be used in user application or template
protected  String __internalRender()
          Not to be used in user application or template
protected  void __invokeTag(int line, String name)
          Invoke a tag.
protected  void __invokeTag(int line, String name, boolean ignoreNonExistsTag)
          Invoke a tag.
protected  void __invokeTag(int line, String name, ITag.__ParameterList params)
          Invoke a tag.
protected  void __invokeTag(int line, String name, ITag.__ParameterList params, boolean ignoreNonExistsTag)
          Invoke a tag.
protected  void __invokeTag(int line, String name, ITag.__ParameterList params, ITag.__Body body)
          Invoke a tag.
protected  void __invokeTag(int line, String name, ITag.__ParameterList params, ITag.__Body body, boolean ignoreNoExistsTag)
          Invoke a tag.
protected  void __invokeTag(int line, String name, ITag.__ParameterList params, ITag.__Body body, ITag.__Body context)
          Invoke a tag.
protected  void __invokeTag(int line, String name, ITag.__ParameterList params, ITag.__Body body, ITag.__Body context, boolean ignoreNonExistsTag)
          Invoke a tag.
protected  void __loadExtendingArgs()
          the implementation of this method is to be generated by CodeBuilder.
protected static void __log(String msg, Object... args)
           
protected  void __pLayoutContent()
          Print the layout content.
protected  void __pLayoutSection(String name)
          Print a layout section by name.
 void __prepareRender(ICodeType type, Locale locale, RythmEngine engine)
           
protected  RawData __render(String template)
          Render another template from within this template.
protected  RawData __render(String template, Object... args)
          Render another template from this template.
protected  String __renderArgName(int i)
          Return render arg name by position
protected  Class[] __renderArgTypeArray()
          Return render arg type in array.
protected  Map<String,Class> __renderArgTypeMap()
          Return render arg type in Map.
protected  TemplateBase __set(String name, Object arg)
          alias of __setRenderArg(String, Object)
protected  void __setLayoutContent(String body)
          Set layout content.
protected  void __setOutput(File file)
          Set output file
protected  void __setOutput(OutputStream os)
          Set output stream
protected  void __setOutput(String path)
          Set output file path
protected  void __setOutput(Writer w)
          Set output writer
 ITemplate __setOutputStream(OutputStream os)
          Set binary output stream to the template instance.
 ITemplate __setRenderArg(int position, Object arg)
          Set a render arg by position
 ITemplate __setRenderArg(JSONWrapper jsonData)
          Set renderArgs using JSON data
 ITemplate __setRenderArg(String name, Object arg)
          Set a render arg by name
 ITemplate __setRenderArgs(Map<String,Object> args)
          Set renderArgs in name-value pair
 ITemplate __setRenderArgs(Object... args)
          Set renderArgs in position
protected  TemplateBase __setRenderArgs0(ITag.__ParameterList params)
          Set render arg from tag params Not to be used in user application or template
protected  void __setRenderProperty(String name, Object val)
          Set render property by name.
 ITemplate __setSecureCode(String secureCode)
          Set secure code (for sandbox purpse)
 void __setTemplateClass(org.rythmengine.internal.compiler.TemplateClass templateClass)
          Set template class and template code type to this template instance

protected  void __setup()
          the implementation of this method is to be generated by CodeBuilder.
 ITemplate __setUserContext(Map<String,Object> context)
          Set user context to the template instance
 ITemplate __setWriter(Writer writer)
          Set a character based writer to the template instance
protected  void __startSection(String name)
          Start a layout section.
protected  void __triggerRenderEvent(IEvent<Void,ITemplate> event, RythmEngine engine)
          Trigger render events.
protected static void __warn(String msg, Object... args)
           
protected static void __warn(Throwable t, String msg, Object... args)
           
 TextBuilder build()
          The CodeBuilder will generate the implementation of this method usually
 TemplateBase pe(Object o)
          Print a general expression with default escape method
 TemplateBase pe(Object o, Escape escape)
          Print a general expression, using specified escape method
 String render()
          Render and return result in String.
 void render(OutputStream os)
          Render to binary output stream.
 void render(Writer w)
          Render to character based writer.
protected  S s()
          Return String helper instance.
 
Methods inherited from class org.rythmengine.internal.TemplateBuilder
pe, pe, pe, pe, pe, pe, pe, pe, pe, pe, pe, pe, pe
 
Methods inherited from class org.rythmengine.utils.TextBuilder
__append, __getBuffer, __setBuffer, buffer, caller, clone, getSelfOut, np, p, p, p, p, p, p, p, p, p, p2t, p2tn, p3t, p3tn, p4t, p4tn, pn, pn, pt, ptn, setSelfOut, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.rythmengine.template.ITemplate
__getBuffer
 
Methods inherited from interface org.rythmengine.template.ITag
__call, __getName, __setBodyContext
 

Field Detail

__logger

protected static final ILogger __logger
The logger


__engine

protected transient RythmEngine __engine
The rythm engine that run this template


__renderArgs

protected Map<String,Object> __renderArgs
Stores render args of this template. The generated template source code will also declare render args as separate protected field while keeping a copy inside this Map data structure


__parent

protected TemplateBase __parent
The parent template (layout template)


__ctx

protected ITemplate.__Context __ctx
The render context


__logTime

protected boolean __logTime
Constructor Detail

TemplateBase

public TemplateBase()
Construct a template instance

Method Detail

__setTemplateClass

public void __setTemplateClass(org.rythmengine.internal.compiler.TemplateClass templateClass)
Set template class and template code type to this template instance

Not to be called in user application or template

Parameters:
templateClass -

__prepareRender

public void __prepareRender(ICodeType type,
                            Locale locale,
                            RythmEngine engine)

s

protected S s()
Return String helper instance. Could be used in template authoring. For example:


 @if (s().empty(userRight)){
    @return
 }
 


__setWriter

public ITemplate __setWriter(Writer writer)
Description copied from interface: ITemplate
Set a character based writer to the template instance

Specified by:
__setWriter in interface ITemplate
Returns:
this template instance

__setOutputStream

public ITemplate __setOutputStream(OutputStream os)
Description copied from interface: ITemplate
Set binary output stream to the template instance.

Specified by:
__setOutputStream in interface ITemplate
Returns:
this template instance

__engine

public RythmEngine __engine()
Return the engine running this template

Specified by:
__engine in interface ITemplate
Returns:
the engine running the template

__invokeTag

protected void __invokeTag(int line,
                           String name)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           boolean ignoreNonExistsTag)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
ignoreNonExistsTag -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           ITag.__ParameterList params)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
params -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           ITag.__ParameterList params,
                           boolean ignoreNonExistsTag)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
params -
ignoreNonExistsTag -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           ITag.__ParameterList params,
                           ITag.__Body body)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
params -
body -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           ITag.__ParameterList params,
                           ITag.__Body body,
                           boolean ignoreNoExistsTag)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
params -
body -
ignoreNoExistsTag -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           ITag.__ParameterList params,
                           ITag.__Body body,
                           ITag.__Body context)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
params -
body -
context -

__invokeTag

protected void __invokeTag(int line,
                           String name,
                           ITag.__ParameterList params,
                           ITag.__Body body,
                           ITag.__Body context,
                           boolean ignoreNonExistsTag)
Invoke a tag. Usually should not used directly in user template

Parameters:
line -
name -
params -
body -
context -
ignoreNonExistsTag -

__render

protected RawData __render(String template,
                           Object... args)
Render another template from this template. Could be used in template authoring. For example:


 @args String customTemplate, Map customParams
 @{ Object renderResult = render(customTemplate, customParams);
 }
 

@renderResult

Parameters:
template -
args -
Returns:
render result

__render

protected RawData __render(String template)
Render another template from within this template. Using the renderArgs of this template.

Parameters:
template -
Returns:
render result as RawData
See Also:
__render(String, Object...)

__setLayoutContent

protected final void __setLayoutContent(String body)
Set layout content. Should not be used in user application or template

Parameters:
body -

__startSection

protected void __startSection(String name)
Start a layout section. Not to be used in user application or template

Parameters:
name -

__endSection

protected void __endSection()
End a layout section. Not to be used in user application or template


__endSection

protected void __endSection(boolean def)
End a layout section with a boolean flag mark if it is a default content or not. Not to be used in user application or template

Parameters:
def -

__pLayoutSection

protected void __pLayoutSection(String name)
Print a layout section by name. Not to be used in user application or template

Parameters:
name -

__getSection

protected RawData __getSection(String name)
Get a section content as RawData by name. Not to be used in user application or template

Parameters:
name -
Returns:
section data by name

__getSection

protected RawData __getSection()
Get layout content as RawData. Not to be used in user application or template

Returns:
layout content

__pLayoutContent

protected void __pLayoutContent()
Print the layout content. Not to be used in user application or template


__internalClone

protected TemplateBase __internalClone()
Not to be used in user application or template

Returns:
a TemplateBase

__cloneMe

public ITemplate __cloneMe(RythmEngine engine,
                           ITemplate caller)
Not to be used in user application or template

Specified by:
__cloneMe in interface ITemplate
Parameters:
engine - the rythm engine
caller - the caller template
Returns:
cloned template

__internalInit

protected void __internalInit()
Not to be used in user application or template


__setup

protected void __setup()
the implementation of this method is to be generated by CodeBuilder. Not to be used in user application or template


__loadExtendingArgs

protected void __loadExtendingArgs()
the implementation of this method is to be generated by CodeBuilder. Not to be used in user application or template


__init

public void __init()
the implementation of this method is to be generated by CodeBuilder. Not to be used in user application or template

Specified by:
__init in interface ITemplate

__getTemplateClass

public org.rythmengine.internal.compiler.TemplateClass __getTemplateClass(boolean useCaller)
Get the template class of this template. Not to be used in user application or template

Specified by:
__getTemplateClass in interface ITemplate
Parameters:
useCaller -
Returns:
a TemplateClass

render

public final void render(OutputStream os)
Render to binary output stream. This method is usually called from API defined in RythmEngine

Specified by:
render in interface ITemplate
Parameters:
os -

render

public final void render(Writer w)
Render to character based writer. This method is usually called from API defined in RythmEngine

Specified by:
render in interface ITemplate
Parameters:
w -

__triggerRenderEvent

protected void __triggerRenderEvent(IEvent<Void,ITemplate> event,
                                    RythmEngine engine)
Trigger render events.

Not an API for user application

Parameters:
event -
engine -

render

public final String render()
Render and return result in String. This method is usually called from API defined in RythmEngine

Specified by:
render in interface ITemplate
Returns:
render result

__setSecureCode

public ITemplate __setSecureCode(String secureCode)
Description copied from interface: ITemplate
Set secure code (for sandbox purpse)

Specified by:
__setSecureCode in interface ITemplate
Returns:
this template

__setOutput

protected void __setOutput(String path)
Set output file path

Parameters:
path -

__setOutput

protected void __setOutput(File file)
Set output file

Parameters:
file -

__setOutput

protected void __setOutput(OutputStream os)
Set output stream

Parameters:
os -

__setOutput

protected void __setOutput(Writer w)
Set output writer

Parameters:
w -

__internalBuild

protected void __internalBuild()
Not to be used in user application or template


__internalRender

protected String __internalRender()
Not to be used in user application or template


build

public TextBuilder build()
The CodeBuilder will generate the implementation of this method usually

Overrides:
build in class TextBuilder
Returns:
this template as a TextBuilder

__getUserContext

public Map<String,Object> __getUserContext()
Description copied from interface: ITemplate
Return user context previously set to this template instance. if there is no user context has been set, then an empty Map is returned.

Specified by:
__getUserContext in interface ITemplate
Returns:
the user context

__setUserContext

public ITemplate __setUserContext(Map<String,Object> context)
Description copied from interface: ITemplate
Set user context to the template instance

Specified by:
__setUserContext in interface ITemplate
Returns:
this template instance

__renderArgTypeArray

protected Class[] __renderArgTypeArray()
Return render arg type in array. Not to be used in user application or template


__renderArgName

protected String __renderArgName(int i)
Return render arg name by position

Parameters:
i -
Returns:
render argument name by position

__renderArgTypeMap

protected Map<String,Class> __renderArgTypeMap()
Return render arg type in Map. Not to be used in user application or template

Returns:
render args types mapped by name

__setRenderArgs

public ITemplate __setRenderArgs(Map<String,Object> args)
Description copied from interface: ITemplate
Set renderArgs in name-value pair

Specified by:
__setRenderArgs in interface ITemplate
Returns:
this template instance

__setRenderArg

public ITemplate __setRenderArg(JSONWrapper jsonData)
Description copied from interface: ITemplate
Set renderArgs using JSON data

Specified by:
__setRenderArg in interface ITemplate
Returns:
this template instance

__setRenderArgs0

protected TemplateBase __setRenderArgs0(ITag.__ParameterList params)
Set render arg from tag params Not to be used in user application or template

Parameters:
params -
Returns:
this template instance

__setRenderArgs

public ITemplate __setRenderArgs(Object... args)
Description copied from interface: ITemplate
Set renderArgs in position

Specified by:
__setRenderArgs in interface ITemplate
Returns:
this template instance

__setRenderArg

public ITemplate __setRenderArg(String name,
                                Object arg)
Description copied from interface: ITemplate
Set a render arg by name

Specified by:
__setRenderArg in interface ITemplate
Returns:
this template instance

__set

protected final TemplateBase __set(String name,
                                   Object arg)
alias of __setRenderArg(String, Object)

Parameters:
name -
arg -
Returns:
this template instance

__caller

protected final TemplateBase __caller()
Return caller of the template when this template is invoked as a tag

Returns:
caller template

__getRenderArg

public <T> T __getRenderArg(String name)
Description copied from interface: ITemplate
Return a render arg value by name

Specified by:
__getRenderArg in interface ITemplate
Returns:
render arg by name

__get

protected final <T> T __get(String name)
Alias of __getRenderArg(String)

Type Parameters:
T -
Parameters:
name -
Returns:
a render argument

__getAs

protected final <T> T __getAs(String name,
                              Class<T> c)
Get render arg and do type cast to the class specified

Type Parameters:
T -
Parameters:
name -
c -
Returns:
a render argument

__getRenderProperty

protected final <T> T __getRenderProperty(String name,
                                          T def)
Get render property by name. And do type case by the left value of the expression.

If no property found by name then return the default value specified

Type Parameters:
T -
Parameters:
name -
def -
Returns:
a render property

__getRenderProperty

protected final <T> T __getRenderProperty(String name)
Get render property by name. This is usually called by @get() directive in teh layout template.

Type Parameters:
T -
Parameters:
name -
Returns:
a render property
See Also:
__setRenderProperty(String, Object)

__getRenderPropertyAs

protected final <T> T __getRenderPropertyAs(String name,
                                            T def)
Get render property by name and do type cast to the specified default value. If the render property cannot be found by name, then return the default value

Type Parameters:
T -
Parameters:
name -
def -
Returns:
a render property
See Also:
__getRenderProperty(String)

__setRenderProperty

protected final void __setRenderProperty(String name,
                                         Object val)
Set render property by name. This is pass value from sub (content) template to parent (layout) template Usually this is invoked by @set() directive in the sub template

Parameters:
name -
val -
See Also:
__getRenderProperty(String), __getRenderProperty(String, Object)

__handleTemplateExecutionException

protected final void __handleTemplateExecutionException(Exception e)
Handle template execution exception. Not to be called in user application or template

Parameters:
e -

__setRenderArg

public ITemplate __setRenderArg(int position,
                                Object arg)
Description copied from interface: ITemplate
Set a render arg by position

Specified by:
__setRenderArg in interface ITemplate
Returns:
this template instance

__curCodeType

public ICodeType __curCodeType()
Description copied from interface: ITemplate
(not API) Return current code type.

Specified by:
__curCodeType in interface ITemplate
Returns:
current type

__curLocale

public Locale __curLocale()
Description copied from interface: ITemplate
(not API) Return the current locale

Specified by:
__curLocale in interface ITemplate
Returns:
the locale

__curEscape

public Escape __curEscape()
Description copied from interface: ITemplate
(not API) Return the current escape scheme

Specified by:
__curEscape in interface ITemplate
Returns:
the escape

__append

protected void __append(TextBuilder.StrBuf wrapper)
Description copied from class: TextBuilder
Append a TextBuilder.StrBuf content into the buffer

Overrides:
__append in class TextBuilder

__append

protected void __append(Object o)
Description copied from class: TextBuilder
Append a object to internal buffer or output (os or writer).

Overrides:
__append in class TextBuilder

__append

protected void __append(char c)
Description copied from class: TextBuilder
Append a char to internal buffer

Overrides:
__append in class TextBuilder

__append

protected void __append(int i)
Description copied from class: TextBuilder
Append an integer to internal buffer

Overrides:
__append in class TextBuilder

__append

protected void __append(long l)
Description copied from class: TextBuilder
Append a long to internal buffer

Overrides:
__append in class TextBuilder

__append

protected void __append(float f)
Description copied from class: TextBuilder
Append a float to internal buffer

Overrides:
__append in class TextBuilder

__append

protected void __append(double d)
Description copied from class: TextBuilder
Append a double to internal buffer

Overrides:
__append in class TextBuilder

__append

protected void __append(boolean b)
Description copied from class: TextBuilder
Append a boolean to internal buffer

Overrides:
__append in class TextBuilder

__defaultEscape

public Escape __defaultEscape()
Description copied from class: TemplateBuilder
Return the default escape method.

This implementation returns Escape.RAW. But the sub class could override this method to return different escape method

Overrides:
__defaultEscape in class TemplateBuilder
Returns:
escape

pe

public final TemplateBase pe(Object o)
Description copied from class: TemplateBuilder
Print a general expression with default escape method

Overrides:
pe in class TemplateBuilder
Returns:
the current builder

pe

public final TemplateBase pe(Object o,
                             Escape escape)
Description copied from class: TemplateBuilder
Print a general expression, using specified escape method

Overrides:
pe in class TemplateBuilder
Returns:
the current builder

__eval

protected final Object __eval(String expr)

__log

protected static void __log(String msg,
                            Object... args)

__debug

protected static void __debug(String msg,
                              Object... args)

__info

protected static void __info(String msg,
                             Object... args)

__warn

protected static void __warn(String msg,
                             Object... args)

__warn

protected static void __warn(Throwable t,
                             String msg,
                             Object... args)

__error

protected static void __error(String msg,
                              Object... args)

__error

protected static void __error(Throwable t,
                              String msg,
                              Object... args)

__i18n

protected String __i18n(String key,
                        Object... args)


Copyright © 2013. All Rights Reserved.