org.apache.velocity.runtime.directive
Class Directive

java.lang.Object
  extended by org.apache.velocity.runtime.directive.Directive
All Implemented Interfaces:
Cloneable, DirectiveConstants
Direct Known Subclasses:
Block, Break, Evaluate, Foreach, InputBase, Macro, RuntimeMacro, Stop, VelocimacroProxy

public abstract class Directive
extends Object
implements DirectiveConstants, Cloneable

Base class for all directives used in Velocity.

Version:
$Id: Directive.java 961427 2010-07-07 16:14:36Z apetrelli $
Author:
Jason van Zyl, Nathan Bubna

Field Summary
protected  RuntimeServices rsvc
           
 
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
 
Constructor Summary
Directive()
           
 
Method Summary
 void checkArgs(ArrayList<Integer> argtypes, Token t, String templateName)
          The Parser calls this method during template parsing to check the arguments types.
 int getColumn()
          for log msg purposes
 int getLine()
          for log msg purposes
abstract  String getName()
          Return the name of this directive.
 String getScopeName()
           
 String getTemplateName()
           
abstract  int getType()
          Get the directive type BLOCK/LINE.
 void init(RuntimeServices rs, InternalContextAdapter context, Node node)
          How this directive is to be initialized.
 boolean isScopeProvided()
           
protected  Scope makeScope(Object prev)
           
protected  void postRender(InternalContextAdapter context)
          This cleans up any scope control for this directive after rendering, assuming the scope control was turned on.
protected  void preRender(InternalContextAdapter context)
          This creates and places the scope control for this directive into the context (if scope provision is turned on).
abstract  boolean render(InternalContextAdapter context, Writer writer, Node node)
          How this directive is to be rendered
 void setLocation(int line, int column)
          Allows the template location to be set.
 void setLocation(int line, int column, String templateName)
          Allows the template location to be set.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rsvc

protected RuntimeServices rsvc
Constructor Detail

Directive

public Directive()
Method Detail

getName

public abstract String getName()
Return the name of this directive.

Returns:
The name of this directive.

getType

public abstract int getType()
Get the directive type BLOCK/LINE.

Returns:
The directive type BLOCK/LINE.

setLocation

public void setLocation(int line,
                        int column)
Allows the template location to be set.

Parameters:
line -
column -

setLocation

public void setLocation(int line,
                        int column,
                        String templateName)
Allows the template location to be set.

Parameters:
line -
column -

getLine

public int getLine()
for log msg purposes

Returns:
The current line for log msg purposes.

getColumn

public int getColumn()
for log msg purposes

Returns:
The current column for log msg purposes.

getTemplateName

public String getTemplateName()
Returns:
The template file name this directive was defined in, or null if not defined in a file.

getScopeName

public String getScopeName()
Returns:
the name to be used when a scope control is provided for this directive.

isScopeProvided

public boolean isScopeProvided()
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
How this directive is to be initialized.

Parameters:
rs -
context -
node -
Throws:
TemplateInitException

checkArgs

public void checkArgs(ArrayList<Integer> argtypes,
                      Token t,
                      String templateName)
               throws ParseException
The Parser calls this method during template parsing to check the arguments types. Be aware that this method is called pre init, so not all data is available in this method. The default implementation does not peform any checking. We do this so that Custom directives do not trigger any parse errors in IDEs.

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

render

public abstract boolean render(InternalContextAdapter context,
                               Writer writer,
                               Node node)
                        throws IOException,
                               ResourceNotFoundException,
                               ParseErrorException,
                               MethodInvocationException
How this directive is to be rendered

Parameters:
context -
writer -
node -
Returns:
True if the directive rendered successfully.
Throws:
IOException
ResourceNotFoundException
ParseErrorException
MethodInvocationException

preRender

protected void preRender(InternalContextAdapter context)
This creates and places the scope control for this directive into the context (if scope provision is turned on).


makeScope

protected Scope makeScope(Object prev)

postRender

protected void postRender(InternalContextAdapter context)
This cleans up any scope control for this directive after rendering, assuming the scope control was turned on.



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