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
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
FieldsModifier and TypeFieldDescriptionbooleanIndicates if we are running in strict reference mode.Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCalled by the parser to validate the argument typesgetName()Return name of this directive.Overrides the default to use "template", so that all templates can use the same scope reference, whether rendered via #parse or direct merge.protected TemplategetTemplate(String path, String encoding) Find the template to render in the appropriate encodingintgetType()Return type of this directive.voidinit(RuntimeServices rs, InternalContextAdapter context, Node node) Init's the #parse directive.booleanrender(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
getInputEncodingMethods inherited from class org.apache.velocity.runtime.directive.Directive
getColumn, getLine, getTemplate, getTemplateName, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
-
Field Details
-
strictRef
public boolean strictRefIndicates if we are running in strict reference mode.
-
-
Constructor Details
-
Parse
public Parse()
-
-
Method Details
-
getName
Return name of this directive. -
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:
getScopeNamein 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:
initin 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:
renderin classDirective- Parameters:
context-writer-node-- Returns:
- True if the directive rendered successfully.
- Throws:
IOExceptionResourceNotFoundExceptionParseErrorExceptionMethodInvocationException
-
checkArgs
public void checkArgs(ArrayList<Integer> argtypes, Token t, String templateName) throws ParseException Called by the parser to validate the argument types- Overrides:
checkArgsin 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
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
-