Class Parse
- java.lang.Object
-
- org.apache.velocity.runtime.directive.Directive
-
- org.apache.velocity.runtime.directive.InputBase
-
- org.apache.velocity.runtime.directive.Parse
-
- All Implemented Interfaces:
Cloneable
,DirectiveConstants
public class Parse extends InputBase
Pluggable directive that handles the#parse()
statement in VTL.Notes: ----- 1) The parsed source material can only come from somewhere in the TemplateRoot tree for security reasons. There is no way around this. If you want to include content from elsewhere on your disk, use a link from somewhere under Template Root to that content. 2) There is a limited parse depth. It is set as a property "directive.parse.max_depth = 10" by default. This 10 deep limit is a safety feature to prevent infinite loops.
- Version:
- $Id$
- Author:
- Geir Magnusson Jr., Jason van Zyl, Christoph Reck
-
-
Field Summary
Fields Modifier and Type Field Description boolean
strictRef
Indicates if we are running in strict reference mode.-
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
-
-
Constructor Summary
Constructors Constructor Description Parse()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkArgs(ArrayList<Integer> argtypes, Token t, String templateName)
Called by the parser to validate the argument typesString
getName()
Return name of this directive.String
getScopeName()
Overrides the default to use "template", so that all templates can use the same scope reference, whether rendered via #parse or direct merge.protected Template
getTemplate(String path, String encoding)
Find the template to render in the appropriate encodingint
getType()
Return type of this directive.void
init(RuntimeServices rs, InternalContextAdapter context, Node node)
Init's the #parse directive.boolean
render(InternalContextAdapter context, Writer writer, Node node)
iterates through the argument list and renders every argument that is appropriate.-
Methods inherited from class org.apache.velocity.runtime.directive.InputBase
getInputEncoding
-
Methods inherited from class org.apache.velocity.runtime.directive.Directive
getColumn, getLine, getTemplate, getTemplateName, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
-
-
-
-
Method Detail
-
getName
public String getName()
Return name of this directive.
-
getScopeName
public String getScopeName()
Overrides the default to use "template", so that all templates can use the same scope reference, whether rendered via #parse or direct merge.- Overrides:
getScopeName
in classDirective
- Returns:
- the name to be used when a scope control is provided for this directive.
-
getType
public int getType()
Return type of this directive.
-
init
public void init(RuntimeServices rs, InternalContextAdapter context, Node node) throws TemplateInitException
Init's the #parse directive.- Overrides:
init
in classDirective
- Parameters:
rs
-context
-node
-- Throws:
TemplateInitException
-
render
public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException
iterates through the argument list and renders every argument that is appropriate. Any non appropriate arguments are logged, but render() continues.- Specified by:
render
in classDirective
- Parameters:
context
-writer
-node
-- Returns:
- True if the directive rendered successfully.
- Throws:
IOException
ResourceNotFoundException
ParseErrorException
MethodInvocationException
-
checkArgs
public void checkArgs(ArrayList<Integer> argtypes, Token t, String templateName) throws ParseException
Called by the parser to validate the argument types- Overrides:
checkArgs
in classDirective
- Parameters:
argtypes
- type, Array of argument types of each argument to the directive for example StandardParserTreeConstants.JJTWORDt
- token of directivetemplateName
- the name of the template this directive is referenced in.- Throws:
ParseException
-
getTemplate
protected Template getTemplate(String path, String encoding) throws ResourceNotFoundException
Find the template to render in the appropriate encoding- Parameters:
path
- template pathencoding
- template encoding- Returns:
- found template
- Throws:
ResourceNotFoundException
- if template was not found- Since:
- 2.4
-
-