/**
*
*/
package com.idega.faces;
import java.io.StringWriter;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import com.idega.core.cache.BufferResponseWriterManager;
import com.idega.faces.componentbased.HtmlStringBufferedResponseWriter;
/**
* <p>
* TODO tryggvil Describe Type ResponseWriterUtils
* </p>
* Last modified: $Date: 2006/02/28 14:48:35 $ by $Author: tryggvil $
*
* @author <a href="mailto:tryggvil@idega.com">tryggvil</a>
* @version $Revision: 1.1 $
*/
public class ResponseWriterUtils implements BufferResponseWriterManager {
static BufferResponseWriterManager instance;
public static BufferResponseWriterManager getInstance(){
if(instance==null){
instance = new ResponseWriterUtils();
}
return instance;
}
/* (non-Javadoc)
* @see com.idega.faces.BufferResponseWriterManager#createBufferedResponseWriter(java.io.StringWriter, javax.faces.context.ResponseWriter)
*/
public ResponseWriter createBufferedResponseWriter(StringWriter buffer,ResponseWriter realResponseWriter){
String contentType=null;
String encoding=null;
HtmlStringBufferedResponseWriter writer = new HtmlStringBufferedResponseWriter(buffer,contentType,encoding);
writer.setRealResponseWriter(realResponseWriter);
return writer;
}
/* (non-Javadoc)
* @see com.idega.faces.BufferResponseWriterManager#getBufferFromResponseWriter(javax.faces.context.ResponseWriter)
*/
public StringWriter getBufferFromResponseWriter(ResponseWriter writer){
HtmlStringBufferedResponseWriter hWriter = (HtmlStringBufferedResponseWriter)writer;
return hWriter.getStringWriter();
}
/* (non-Javadoc)
* @see com.idega.faces.BufferResponseWriterManager#getRealResponseWriter(javax.faces.context.ResponseWriter)
*/
public ResponseWriter getRealResponseWriter(ResponseWriter bufferWriter){
HtmlStringBufferedResponseWriter hWriter = (HtmlStringBufferedResponseWriter)bufferWriter;
return hWriter.getRealResponseWriter();
}
/* (non-Javadoc)
* @see com.idega.faces.BufferResponseWriterManager#switchContextToWriteToBuffer(javax.faces.context.FacesContext, java.io.StringWriter)
*/
public void switchContextToWriteToBuffer(FacesContext context,StringWriter buffer){
ResponseWriter oldResponseWriter = context.getResponseWriter();
ResponseWriter bufferResponseWriter = createBufferedResponseWriter(buffer,oldResponseWriter);
context.setResponseWriter(bufferResponseWriter);
}
/* (non-Javadoc)
* @see com.idega.faces.BufferResponseWriterManager#resetRealResponseWriter(javax.faces.context.FacesContext)
*/
public StringWriter resetRealResponseWriter(FacesContext context){
ResponseWriter responseWriter = context.getResponseWriter();
StringWriter buffer = getBufferFromResponseWriter(responseWriter);
ResponseWriter realResponseWriter = getRealResponseWriter(responseWriter);
context.setResponseWriter(realResponseWriter);
//ResponseWriter bufferResponseWriter = createBufferedResponseWriter(buffer);
//context.setResponseWriter(bufferResponseWriter);
return buffer;
}
}