Class VelocimacroProxy
java.lang.Object
org.apache.velocity.runtime.directive.Directive
org.apache.velocity.runtime.directive.VelocimacroProxy
- All Implemented Interfaces:
Cloneable,DirectiveConstants
VelocimacroProxy.java
a proxy Directive-derived object to fit with the current directive system
- Version:
- $Id: VelocimacroProxy.java 898032 2010-01-11 19:51:03Z nbubna $
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate String[]private Stringprivate String[]private booleanprivate Stringprivate intprivate SimpleNodeprivate intprivate booleanFields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate StringbuildErrorMsg(Node node, int numArgsProvided) Build an error message for not providing the correct number of argumentsvoidcheckArgs(InternalContextAdapter context, Node node, boolean hasBody) check if we are calling this macro with the right number of arguments.getName()Return name of this Velocimacro.intreturns the number of ars needed for this VMintgetType()Velocimacros are always LINE type directives.voidinit(RuntimeServices rs) Initialize members of VelocimacroProxy.booleanrender(InternalContextAdapter context, Writer writer, Node node) How this directive is to be renderedbooleanrender(InternalContextAdapter context, Writer writer, Node node, Renderable body) Renders the macro using the context.voidsetArgArray(String[] arr) sets the array of arguments specified in the macro definitionvoidsets the directive name of this VMvoidsetNodeTree(SimpleNode tree) Methods inherited from class org.apache.velocity.runtime.directive.Directive
getColumn, getLine, getScopeName, getTemplateName, init, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
-
Field Details
-
macroName
-
argArray
-
literalArgArray
-
nodeTree
-
numMacroArgs
private int numMacroArgs -
strictArguments
private boolean strictArguments -
localContextScope
private boolean localContextScope -
maxCallDepth
private int maxCallDepth -
bodyReference
-
-
Constructor Details
-
VelocimacroProxy
public VelocimacroProxy()
-
-
Method Details
-
getName
Return name of this Velocimacro. -
getType
public int getType()Velocimacros are always LINE type directives. -
setName
sets the directive name of this VM- Parameters:
name-
-
setArgArray
sets the array of arguments specified in the macro definition- Parameters:
arr-
-
setNodeTree
- Parameters:
tree-
-
getNumArgs
public int getNumArgs()returns the number of ars needed for this VM- Returns:
- The number of ars needed for this VM
-
render
public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException, MethodInvocationException, MacroOverflowException Description copied from class:DirectiveHow this directive is to be rendered- Specified by:
renderin classDirective- Returns:
- True if the directive rendered successfully.
- Throws:
IOExceptionMethodInvocationExceptionMacroOverflowException
-
render
public boolean render(InternalContextAdapter context, Writer writer, Node node, Renderable body) throws IOException, MethodInvocationException, MacroOverflowException Renders the macro using the context.- Parameters:
context- Current rendering contextwriter- Writer for outputnode- AST that calls the macro- Returns:
- True if the directive rendered successfully.
- Throws:
IOExceptionMethodInvocationExceptionMacroOverflowException
-
init
Initialize members of VelocimacroProxy. called from MacroEntry -
buildErrorMsg
Build an error message for not providing the correct number of arguments -
checkArgs
check if we are calling this macro with the right number of arguments. If we are not, and strictArguments is active, then throw TemplateInitException. This method is called during macro render, so it must be thread safe.
-