package org.japanosample.test.legacy;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
import org.japano.metadata.annotation.JapanoAttribute;
import org.japano.metadata.annotation.JapanoTag;

/**
 
 @author  Sven Helmberger ( sven dot helmberger at gmx dot de )
 @version $Id: TestTag.java,v 1.3 2005/09/26 23:00:55 fforw Exp $
 
 */
 ( library="/test/legacy" )
public class TestTag extends TagSupport
{ 
  private Tag parent;
  private int cnt;

  private String attr;
   ( required = true )
  public void setAttribute(String attr)
  {
    this.attr=attr;
  }
  
  public int doStartTag() throws javax.servlet.jsp.JspException
  {
    try
    {
      pageContext.getOut().print("[START attr=\""+attr+"\"]");      
      cnt=0;
    }
    catch(IOException ioe)
    {
      throw new JspException(ioe);
    }
    return EVAL_BODY_INCLUDE;
  }

  
  
  public int doEndTag() throws javax.servlet.jsp.JspException
  {
    try
    {
      pageContext.getOut().print("[END]");      
    }
    catch(IOException ioe)
    {
      throw new JspException(ioe);
    }
    return Tag.EVAL_PAGE;
  }  

  public int doAfterBody() throws JspException
  {
    return cnt++ < 2 ? IterationTag.EVAL_BODY_AGAIN : IterationTag.SKIP_BODY;
  }
}