package coreservlets.tags;

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;

/** Klasa obsługi znacznika then. Odczytuje ona instancję klasy
 *  IfTag i przetwarza swoją treść, jeżeli atrybut test klasy IfTag
 *  ma wartość true. Ponadto klasa rzuca wyjątek JspTagException,
 *  jeżeli przodkiem znacznika nie jest instancja klasy IfTag.
 *  <P>
 *  Taken from Core Servlets and JavaServer Pages Volume II
 *  from Prentice Hall and Sun Microsystems Press,
 *  http://volume2.coreservlets.com/.
 *  (C) 2007 Marty Hall, Larry Brown, and Yaakov Chaikin;
 *  may be freely used or adapted.
 */
public class ThenTag extends SimpleTagSupport {
  public void doTag() throws JspException, IOException {
    // Odczytanie znacznika przodka (znacznika if)
	IfTag ifTag = null;
	try {
      ifTag = (IfTag)getParent();
	}
    catch (ClassCastException cce) {
      String msg =
        "Błąd: 'then' musi się znajdować w 'if'.";
        throw new JspTagException(msg);
    }
    
    if (ifTag != null) {
      // Decyzja, czy należy zwrócić treść znacznika then
      if (ifTag.getTest()) {
        getJspBody().invoke(null);
      }
    } else {
      String msg =
        "Błąd: 'then' musi się znajdować w 'if'.";
      throw new JspTagException(msg);
    }
  }
}
