/* (c) 2017 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.ows;
import java.awt.image.BufferStrategy;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
/**
* Copy of the BufferStrategy in main, for testing purposes
*
* @author Andrea Aime - GeoSolutions
*/
public class TestBufferStrategy implements ServiceStrategy, OutputStrategyFactory {
public String getId() {
return "BUFFER";
}
ByteArrayOutputStream buffer = null;
/**
* Provides a ByteArrayOutputStream for writeTo.
*
* @param response Response being processed.
*
* @return A ByteArrayOutputStream for writeTo opperation.
*
* @throws IOException DOCUMENT ME!
*/
public DispatcherOutputStream getDestination(HttpServletResponse response)
throws IOException {
buffer = new ByteArrayOutputStream(1024 * 1024);
return new DispatcherOutputStream(buffer);
}
/**
* Copies Buffer to Response output output stream.
*
* @throws IOException If the response outputt stream is unavailable.
*/
public void flush(HttpServletResponse response) throws IOException {
if ((buffer == null) || (response == null)) {
return; // should we throw an Exception here
}
OutputStream out = response.getOutputStream();
buffer.writeTo(out);
buffer = null;
}
/**
* Clears the buffer with out writing anything out to response.
*
* @see org.geoserver.ows.ServiceStrategy#abort()
*/
public void abort() {
buffer = null;
}
public Object clone() throws CloneNotSupportedException {
return new TestBufferStrategy();
}
@Override
public ServiceStrategy createOutputStrategy(HttpServletResponse response) {
return this;
}
}