package org.jboss.resteasy.mock;
import org.jboss.resteasy.spi.HttpResponse;
import org.jboss.resteasy.util.CaseInsensitiveMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.NewCookie;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* Acts as a bridge between asynchronous message and reply
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class MockHttpResponse implements HttpResponse
{
protected int status;
protected ByteArrayOutputStream baos = new ByteArrayOutputStream();
protected OutputStream os = baos;
@SuppressWarnings(value = "unchecked")
protected CaseInsensitiveMap outputHeaders = new CaseInsensitiveMap();
protected List<NewCookie> newCookies = new ArrayList<NewCookie>();
protected String errorMessage;
protected boolean sentError = false;
public MockHttpResponse()
{
}
public int getStatus()
{
return status;
}
public void setStatus(int status)
{
this.status = status;
}
@SuppressWarnings(value = "unchecked")
public MultivaluedMap<String, Object> getOutputHeaders()
{
return outputHeaders;
}
public OutputStream getOutputStream() throws IOException
{
return os;
}
@Override
public void setOutputStream(OutputStream os)
{
this.os = os;
}
public byte[] getOutput()
{
return baos.toByteArray();
}
public String getContentAsString()
{
return new String(baos.toByteArray());
}
public void addNewCookie(NewCookie cookie)
{
newCookies.add(cookie);
}
public void sendError(int status) throws IOException
{
sentError = true;
this.status = status;
}
public void sendError(int status, String message) throws IOException
{
sentError = true;
this.status = status;
this.errorMessage = message;
}
public List<NewCookie> getNewCookies()
{
return newCookies;
}
public String getErrorMessage()
{
return errorMessage;
}
public boolean isErrorSent()
{
return sentError;
}
public boolean isCommitted()
{
return baos.size() > 0;
}
public void reset()
{
baos = new ByteArrayOutputStream();
os = baos;
outputHeaders = new CaseInsensitiveMap();
newCookies = new ArrayList<NewCookie>();
sentError = false;
status = 0;
errorMessage = null;
}
}