freemarker.template.instruction
Class SwitchInstruction

java.lang.Object
  |
  +--freemarker.template.instruction.SwitchInstruction
All Implemented Interfaces:
Instruction, java.io.Serializable, TemplateProcessor

public final class SwitchInstruction
extends java.lang.Object
implements Instruction, TemplateProcessor, java.io.Serializable

An instruction representing a switch-case structure.

Version:
$Id: SwitchInstruction.java,v 1.30 2003/11/27 11:36:45 run2000 Exp $
See Also:
Serialized Form

Fields inherited from interface freemarker.template.instruction.Instruction
BREAK, CASE, COMMENT_END, COMPRESS_END, DEFAULT, ELSE, ELSEIF, FOREACH_END, FUNCTION_END, IF_END, LIST_END, NONE, NOPARSE_END, SWITCH_END, TRANSFORM_END
 
Constructor Summary
SwitchInstruction(Expression testExpression)
          Constructor that takes an expression to be evaluated when testing each of the case statements.
 
Method Summary
 void addCase(DefaultCaseInstruction caseInstruction)
          Adds a case instruction to the switch.
 TemplateProcessor callBuilder(TemplateBuilder builder)
          A TemplateBuilder can call this method to have an Instruction call it back to be built.
 int getEndType()
          Determine what type of end instruction this is, if any.
 boolean isEndInstruction()
          Is this an end instruction?
 void process(TemplateModelRoot modelRoot, java.io.Writer out, TemplateRuntimeHandler eventHandler)
          Process this <switch ...
 java.lang.String toString()
          Returns a string representation of the object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SwitchInstruction

public SwitchInstruction(Expression testExpression)
Constructor that takes an expression to be evaluated when testing each of the case statements.
Parameters:
testExpression - the expression to be tested.
Throws:
NullPointerException - the test expression was null
java.lang.IllegalArgumentException - the testExpression was not a scalar or number
Method Detail

addCase

public void addCase(DefaultCaseInstruction caseInstruction)
Adds a case instruction to the switch.
Parameters:
caseInstruction - a CaseInstruction to be evaluated.

isEndInstruction

public boolean isEndInstruction()
Is this an end instruction?
Specified by:
isEndInstruction in interface Instruction
Returns:
false, indicating that this is not an end instruction

getEndType

public int getEndType()
Determine what type of end instruction this is, if any.
Specified by:
getEndType in interface Instruction
Returns:
NONE, indicating that this is not an end instruction

callBuilder

public TemplateProcessor callBuilder(TemplateBuilder builder)
                              throws ParseException
A TemplateBuilder can call this method to have an Instruction call it back to be built. This implementation calls the TemplateBuilder.buildStatement(SwitchInstruction) method, passing back a reference to itself. This approach is intended to make type-checking of Instruction objects unnecessary.
Specified by:
callBuilder in interface Instruction
Parameters:
builder - the builder to be called back by this method

process

public void process(TemplateModelRoot modelRoot,
                    java.io.Writer out,
                    TemplateRuntimeHandler eventHandler)
             throws java.io.IOException
Process this <switch ... > instruction.
Specified by:
process in interface TemplateProcessor
Parameters:
modelRoot - the root node of the data model.
out - a Writer to send the output to.
eventHandler - a TemplateEventAdapter for handling any events that occur during processing.

toString

public java.lang.String toString()
Returns a string representation of the object.
Overrides:
toString in class java.lang.Object
Returns:
a String representing this instruction subtree