List of usage examples for javax.servlet.jsp.tagext TagAdapter TagAdapter
public TagAdapter(SimpleTag adaptee)
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); }