All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fauxjsp.servlet.ServletResponseWrapper Maven / Gradle / Ivy

package fauxjsp.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.WriteListener;

import fauxjsp.impl.Utils;

/**
 * Injects new {@link OutputStream}s into a {@link ServletResponse}
 * @author George Georgovassilis
 *
 */
public class ServletResponseWrapper extends javax.servlet.ServletResponseWrapper{

	protected ServletOutputStream servletOutputStream;
	protected PrintWriter printWriter;

	public ServletResponseWrapper(ServletResponse response, OutputStream out) {
		super(response);
		this.printWriter = new PrintWriter(out, true);
		servletOutputStream = new ServletOutputStream() {
			
			@Override
			public void write(int b) throws IOException {
				out.write(b);
			}
			
			@Override
			public void setWriteListener(WriteListener writeListener) {
			}
			
			@Override
			public boolean isReady() {
				return true;
			}
		};
	}

	public ServletResponseWrapper(ServletResponse response) {
		super(response);
		try {
			this.servletOutputStream = response.getOutputStream();
		} catch (IOException e) {
			throw Utils.softenException(e);
		}
	}
	
	@Override
	public ServletOutputStream getOutputStream() throws IOException {
		return servletOutputStream;
	}
	
	@Override
	public PrintWriter getWriter() throws IOException {
		if (printWriter==null) {
			printWriter = new PrintWriter(servletOutputStream);
		}
		return printWriter;
	}
	
	public void write(String content) {
		try {
			byte[] b = content!=null?content.getBytes(getCharacterEncoding()):new byte[0];
			servletOutputStream.write(b);
		} catch (Exception e) {
			throw Utils.softenException(e);
		}
	}
	
	public void commit() {
		try {
			servletOutputStream.flush();
		} catch (IOException e) {
			throw Utils.softenException(e);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy