Example usage for javax.servlet.jsp.tagext SimpleTag setJspContext

List of usage examples for javax.servlet.jsp.tagext SimpleTag setJspContext

Introduction

In this page you can find the example usage for javax.servlet.jsp.tagext SimpleTag setJspContext.

Prototype

public void setJspContext(JspContext pc);

Source Link

Document

Called by the container to provide this tag handler with the JspContext for this invocation.

Usage

From source file:de.micromata.genome.gwiki.page.gspt.TagSupport.java

public static void initSimpleSimpleTag(SimpleTag tag, List<Object> attributes, final ChildPageContext ctx,
        final Closure body) throws Exception {
    if (log.isDebugEnabled())
        log.debug("Init simple tag: " + tag.getClass().getName());
    Tag ptag = ctx.getCurrentTag();/*from   ww  w. j  a  va2  s  .  c o m*/
    final JspContext pctx;// .getBrickContext().getPageContext();
    if (ctx.isUseParentTagContext() == true) {
        pctx = ctx.getParentPageContext();
    } else {
        pctx = ctx;
    }
    tag.setJspContext(pctx);
    tag.setParent(ptag);
    attributes = evalAttributes(tag, attributes, ctx);
    setAttributes(tag, attributes, ctx);
    final TagAdapter tagAdapter = new TagAdapter(tag);
    ctx.setCurrentTag(tagAdapter);
    tag.setJspBody(new JspFragment() {
        @Override
        public JspContext getJspContext() {
            return pctx;
        }

        @Override
        public void invoke(Writer out) throws JspException, IOException {
            ctx.getTagStack().push(new Pair<Tag, Integer>(tagAdapter, -1));
            try {
                JspWriter oldOut = null;
                try {
                    if (pctx instanceof ChildPageContext) {
                        oldOut = pctx.getOut();
                        if (out != oldOut) {
                            ((ChildPageContext) pctx).setInternalGroovyOut(createPrintWriter(out));
                        } else {
                            oldOut = null;
                        }
                    }
                    body.call();
                } finally {
                    if (oldOut != null) {
                        pctx.getOut().flush();
                        ((ChildPageContext) pctx).setInternalGroovyOut(createPrintWriter(oldOut));
                    }
                }
            } finally {
                ctx.getTagStack().pop();
            }
        }
    });
    tag.doTag();
    ctx.setCurrentTag(ptag);
}