Example usage for javax.servlet.jsp.tagext TagAdapter TagAdapter

List of usage examples for javax.servlet.jsp.tagext TagAdapter TagAdapter

Introduction

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

Prototype

public TagAdapter(SimpleTag adaptee) 

Source Link

Document

Creates a new TagAdapter that wraps the given SimpleTag and returns the parent tag when getParent() is called.

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 w ww. j  a  v  a  2  s.  c  om
    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);
}