package examples; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.util.Hashtable; import java.io.Writer; import java.io.IOException; import oracle.jsp.jml.JmlNumber; public class ExampleLoopTag extends BodyTagSupport { String index; int count; int i; JmlNumber ib; public ExampleLoopTag() { resetAttr(); } public void release() { resetAttr(); } private void resetAttr() { index=null; count=0; i=0; ib=null; } public void setIndex(String index) { this.index=index; } public void setCount(String count) { this.count=Integer.parseInt(count); } public int doStartTag() throws JspException { return EVAL_BODY_TAG; } public void doInitBody() throws JspException { ib=new JmlNumber(); pageContext.setAttribute(index, ib); i++; ib.setValue(i); } public int doAfterBody() throws JspException { try { if (i >= count) { bodyContent.writeOut(bodyContent.getEnclosingWriter()); return SKIP_BODY; } else pageContext.setAttribute(index, ib); i++; ib.setValue(i); return EVAL_BODY_TAG; } catch (IOException ex) { throw new JspTagException(ex.toString()); } } }