freemarker.template.instruction
Class SwitchInstruction

java.lang.Object
  extended by freemarker.template.instruction.SwitchInstruction
All Implemented Interfaces:
Instruction, TemplateProcessor, java.io.Serializable

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 1162 2013-04-20 12:04:32Z run2000 $
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface freemarker.template.instruction.Instruction
Instruction.EndType
 
Nested classes/interfaces inherited from interface freemarker.template.TemplateProcessor
TemplateProcessor.ExitStatus
 
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.
 Instruction.EndType getEndType()
          Determine what type of end instruction this is, if any.
 boolean isEndInstruction()
          Is this an end instruction?
 TemplateProcessor.ExitStatus process(TemplateProcessorParameters p)
          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:
java.lang.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 Instruction.EndType 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
Throws:
ParseException

process

public TemplateProcessor.ExitStatus process(TemplateProcessorParameters p)
                                     throws java.io.IOException
Process this <switch ... > instruction.

Specified by:
process in interface TemplateProcessor
Parameters:
p - template processing parameters
Returns:
an exit code indicating how the process terminated, typically used for short-circuiting template processing
Throws:
java.io.IOException - an IO error occurred 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