package com.opensymphony.module.sitemesh.html; public class StateTransitionRule extends BasicRule { private final State newState; private final boolean writeEnclosingTag; private State lastState; public StateTransitionRule(String tagName, State newState) { this(tagName, newState, true); } public StateTransitionRule(String tagName, State newState, boolean writeEnclosingTag) { super(tagName); this.newState = newState; this.writeEnclosingTag = writeEnclosingTag; } public void process(Tag tag) { if (tag.getType() == Tag.OPEN) { lastState = context.currentState(); context.changeState(newState); newState.addRule(this); } else if (tag.getType() == Tag.CLOSE && lastState != null) { context.changeState(lastState); lastState = null; } } }