Package org.apache.velocity.runtime.directive

# Class Include

java.lang.Object
org.apache.velocity.runtime.directive.Directive
org.apache.velocity.runtime.directive.InputBase
org.apache.velocity.runtime.directive.Include

All Implemented Interfaces:
  `Cloneable`, `DirectiveConstants`

public class Include extends InputBase

Pluggable directive that handles the #include() statement in VTL. This #include() can take multiple arguments of either StringLiteral or Reference.

Notes:

1. For security reasons, the included source material can only come from somewhere within the template root tree. If you want to include content from elsewhere on your disk, add extra template roots, or use a link from somwehere under template root to that content.
2. By default, there is no output to the render stream in the event of a problem. You can override this behavior with two property values : include.output.errormsg.start include.output.errormsg.end If both are defined in velocity.properties, they will be used to in the render output to bracket the arg string that caused the problem. Ex. : if you are working in html then include.output.errormsg.start=<!-- #include error : include.output.errormsg.end= --> might be an excellent way to start...
3. As noted above, #include() can take multiple arguments. Ex : #include('foo.vm' 'bar.vm' $foo) will include all three if valid to output without any special separator.

Version:
  $Id$
Author:
  Geir Magnusson Jr., Jason van Zyl, Kasper Nielsen

## Field Summary

### 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
`Include()`

## Method Summary

Modifier and Type
Method
Description
`String`
`getName()`
Return name of this directive.
`protected Resource`
`getResource(String path, String encoding)`
Find the resource to include
`int`
`getType()`
Return type of this directive.
`void`
`init(RuntimeServices rs, InternalContextAdapter context, Node node)`
simple init - init the tree and get the elementKey from the AST
`boolean`
`isScopeProvided()`
Since there is no processing of content, there is never a need for an internal scope.
`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

`checkArgs, getColumn, getLine, getScopeName, getTemplate, getTemplateName, makeScope, postRender, preRender, setLocation, setLocation`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Include

public Include()

## Method Details

### getName

public String getName()
Return name of this directive.

Specified by:
  `getName` in class `Directive`
Returns:
  The name of this directive.

### getType

public int getType()
Return type of this directive.

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

### isScopeProvided

public boolean isScopeProvided()
Since there is no processing of content, there is never a need for an internal scope.

Overrides:
  `isScopeProvided` in class `Directive`
Returns:
  true if there will be a scope control injected into the context when rendering this directive.

### init

public void init(RuntimeServices rs, InternalContextAdapter context, Node node) throws TemplateInitException
simple init - init the tree and get the elementKey from the AST

Overrides:
  `init` in class `Directive`
Parameters:
  `rs` -
  `context` -
  `node` -
Throws:
  `TemplateInitException`

### render

public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException, MethodInvocationException, ResourceNotFoundException
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`
  `MethodInvocationException`
  `ResourceNotFoundException`

### getResource

protected Resource getResource(String path, String encoding) throws ResourceNotFoundException
Find the resource to include

Parameters:
  `path` - resource path
  `encoding` - resource encoding
Returns:
  found resource
Throws:
  `ResourceNotFoundException` - if resource was not found