Package org.apache.velocity.runtime.directive

# 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 class org.apache.velocity.runtime.directive.Directive

`log, rsvc`

### Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants

`BLOCK, LINE`

## Constructor Summary

Constructors
Constructor
Description
`Parse()`

## Method Summary

Modifier and Type
Method
Description
`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.
`protected Template`
`getTemplate(String path, String encoding)`
Find the template to render in the appropriate encoding
`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, getTemplate, 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 Details

### strictRef

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

## Constructor Details

### Parse

public Parse()

## Method Details

### 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 StandardParserTreeConstants.JJTWORD
  `t` - token of directive
  `templateName` - 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 path
  `encoding` - template encoding
Returns:
  found template
Throws:
  `ResourceNotFoundException` - if template was not found
Since:
  2.4