org.apache.velocity.runtime.directive
Class Parse

java.lang.Object
  extended by org.apache.velocity.runtime.directive.Directive
      extended by org.apache.velocity.runtime.directive.InputBase
          extended by 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 somwhere 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: Parse.java 928252 2010-03-27 19:34:23Z nbubna $
Author:
Geir Magnusson Jr., Jason van Zyl, Christoph Reck

Field Summary
 boolean strictRef
          Indicates if we are running in strict reference mode.
 
Fields inherited from class org.apache.velocity.runtime.directive.Directive
rsvc
 
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
 
Constructor Summary
Parse()
           
 
Method Summary
 void checkArgs(ArrayList<Integer> argtypes, Token t, String templateName)
          Called by the parser to validate the argument types
 String 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.
 int 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, getTemplateName, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

strictRef

public boolean strictRef
Indicates if we are running in strict reference mode.

Constructor Detail

Parse

public Parse()
Method Detail

getName

public String getName()
Return name of this directive.

Specified by:
getName in class Directive
Returns:
The 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 class Directive
Returns:
the name to be used when a scope control is provided for this directive.

getType

public int getType()
Return type of this directive.

Specified by:
getType in class Directive
Returns:
The type of this directive.

init

public void init(RuntimeServices rs,
                 InternalContextAdapter context,
                 Node node)
          throws TemplateInitException
Init's the #parse directive.

Overrides:
init in class Directive
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 class Directive
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 class Directive
Parameters:
argtypes - type, Array of argument types of each argument to the directive for example ParserTreeConstants.JJTWORD
t - token of directive
templateName - the name of the template this directive is referenced in.
Throws:
ParseException


Copyright © 2000-2012 The Apache Software Foundation. All Rights Reserved.