package org.webpieces.templating.api; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Map; import org.webpieces.templating.impl.GroovyTemplateSuperclass; import groovy.lang.Closure; public class ClosureUtil { // private final static Logger log = LoggerFactory.getLogger(ClosureUtil.class); // private static CountThreadLocal closureDepth = new CountThreadLocal(); public static String toString(String name, Closure<?> closure, Map<String, Object> groovyVariablesBound) { // boolean enabled = log.isInfoEnabled(); // if(enabled) { // int count = closureDepth.get().incrementAndGet(); // String tabs = generate(count); // if(groovyVariablesBound == null) // groovyVariablesBound = new HashMap<>(); // log.info(tabs+"closure '"+name+"' nestLevel="+count+" {"); // for(Entry<String, Object> entry : groovyVariablesBound.entrySet()) { // log.info(tabs+" "+entry.getKey()+"="+entry.getValue()); // } // } PrintWriter oldWriter = (PrintWriter) closure.getProperty(GroovyTemplateSuperclass.OUT_PROPERTY_NAME); StringWriter newWriter = new StringWriter(); closure.setProperty(GroovyTemplateSuperclass.OUT_PROPERTY_NAME, new PrintWriter(newWriter)); closure.call(); closure.setProperty(GroovyTemplateSuperclass.OUT_PROPERTY_NAME, oldWriter); // // if(enabled) { // int count = closureDepth.get().getAndDecrement(); // String tabs = generate(count); // log.info(tabs+"} // end "+name); // // } return newWriter.toString(); } // private static String generate(int count) { // String tabs = ""; // for(int i = 0; i < count; i++) { // tabs += " "; // } // return tabs; // } // // private static class CountThreadLocal extends ThreadLocal<AtomicInteger> { // @Override // protected AtomicInteger initialValue() { // return new AtomicInteger(0); // } // } }