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 928253 2010-03-27 19:39:04Z nbubna $
Author:
Geir Magnusson Jr., Jason van Zyl, Christoph Reck

Field Summary
 
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
 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
 

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

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


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