package org.jblooming.waf;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import java.io.Writer;
import java.io.StringWriter;
import java.io.IOException;
/**
* @author Federico Soldani - fsoldani@open-lab.com
* @author Roberto Bicchierai - rbicchierai@open-lab.com
* Date: 26-nov-2009
* Time: 12.53.39
*
* Example to use:
*
* <code>
* JspToString jspToString = new JspToString();
* jspToString.start(pageContext);
* out = jspToString.getOut();
*
* // BEGIN CODE ON THE WRITER //
* ButtonJS js = new ButtonJS("addRow()");
* js.toHtml(pageContext); // This code is on the writer
*
* %>bla bla bla before<% // This code is on the writer
* // END CODE ON THE WRITER //
*
* Writer writer = jspToString.end(pageContext);
* out = jspToString.getOut();
*
* // BEGIN CODE ON THE JSP //
* %>bla bla bla after<% // This code is on the jsp
* // END CODE ON THE JSP //
*
* System.out.println(writer.toString());
* </code>
*/
public class JspToString {
private Writer writer;
private BodyContent content;
public JspWriter out;
/**
* Default constructor with StringWriter writer.
*/
public JspToString() {
this(new StringWriter());
}
public JspToString(Writer writer) {
this.writer = writer;
this.content = null;
}
public void start(PageContext pageContext) {
this.content = pageContext.pushBody();
this.out = pageContext.getOut();
}
public Writer end(PageContext pageContext) throws IOException{
this.content.writeOut(this.writer);
pageContext.popBody();
this.out = pageContext.getOut();
return this.writer;
}
public Writer getWriter() {
return this.writer;
}
public JspWriter getOut() {
return this.out;
}
}