package org.primefaces.util; import java.io.IOException; import java.io.Writer; import javax.faces.component.UIComponent; import javax.faces.context.ResponseWriter; import org.bouncycastle.crypto.RuntimeCryptoException; public class CollectingResponseWriter extends ResponseWriter { private StringBuilder builder = new StringBuilder(); private boolean inXmlTag = false; @Override public ResponseWriter cloneWithWriter(Writer arg0) { // TODO Auto-generated method stub return null; } @Override public void endDocument() throws IOException { // TODO Auto-generated method stub } @Override public void endElement(String arg0) throws IOException { builder.append("</" + arg0 + ">"); } @Override public void flush() throws IOException { // TODO Auto-generated method stub } @Override public String getCharacterEncoding() { // TODO Auto-generated method stub return null; } @Override public String getContentType() { // TODO Auto-generated method stub return null; } @Override public void startDocument() throws IOException { // TODO Auto-generated method stub } @Override public void startElement(String arg0, UIComponent arg1) throws IOException { builder.append("<" + arg0); inXmlTag = true; } @Override public void writeAttribute(String arg0, Object arg1, String arg2) throws IOException { builder.append(" " + arg0 + "=\"" + arg1 + "\""); } @Override public void writeComment(Object arg0) throws IOException { // TODO Auto-generated method stub } @Override public void writeText(Object arg0, String arg1) throws IOException { if (inXmlTag) { inXmlTag = false; builder.append(">"); } builder.append(arg1); } @Override public void writeText(char[] arg0, int arg1, int arg2) throws IOException { if (inXmlTag) { inXmlTag = false; builder.append(">"); } builder.append(arg0); } @Override public void writeURIAttribute(String arg0, Object arg1, String arg2) throws IOException { // TODO Auto-generated method stub } @Override public void close() throws IOException { // TODO Auto-generated method stub } @Override public void write(char[] arg0, int arg1, int arg2) throws IOException { if (inXmlTag) { inXmlTag = false; builder.append(">"); } builder.append(arg0); } @Override public void write(String arg0) throws IOException { if (inXmlTag) { inXmlTag = false; builder.append(">"); } builder.append(arg0); } public String toString() { return builder.toString(); } }