/**
*
*/
package com.trendrr.strest.server.v2.models.http;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.netty.handler.codec.http.DefaultHttpResponse;
import org.jboss.netty.handler.codec.http.HttpRequest;
import org.jboss.netty.handler.codec.http.HttpResponse;
import org.jboss.netty.handler.codec.http.HttpResponseStatus;
import org.jboss.netty.handler.codec.http.HttpVersion;
import com.trendrr.strest.server.v2.models.StrestHeader;
import com.trendrr.strest.server.v2.models.StrestResponse;
import com.trendrr.strest.server.v2.models.StrestHeader.TxnStatus;
/**
* @author Dustin Norlander
* @created May 1, 2012
*
*/
public class StrestHttpResponse extends StrestHttpBase implements
StrestResponse {
protected static Log log = LogFactory.getLog(StrestHttpResponse.class);
public StrestHttpResponse(HttpResponse response) {
this.message = response;
}
public StrestHttpResponse() {
this.message = new DefaultHttpResponse(
HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
}
public HttpResponse getResponse() {
return (HttpResponse)this.message;
}
/* (non-Javadoc)
* @see com.trendrr.strest.server.v2.models.StrestResponse#setStatus(int, java.lang.String)
*/
@Override
public void setStatus(int code, String message) {
this.getResponse().setStatus(new HttpResponseStatus(code, message));
}
/* (non-Javadoc)
* @see com.trendrr.strest.server.v2.models.StrestResponse#getStatusCode()
*/
@Override
public int getStatusCode() {
HttpResponseStatus status = this.getResponse().getStatus();
if (status == null)
return 0;
return status.getCode();
}
/* (non-Javadoc)
* @see com.trendrr.strest.server.v2.models.StrestResponse#getStatusMessage()
*/
@Override
public String getStatusMessage() {
HttpResponseStatus status = this.getResponse().getStatus();
if (status == null)
return "No Message";
return status.getReasonPhrase();
}
/* (non-Javadoc)
* @see com.trendrr.strest.server.v2.models.StrestResponse#setTxnStatus(com.trendrr.strest.server.v2.models.StrestHeader.TxnStatus)
*/
@Override
public void setTxnStatus(TxnStatus status) {
this.addHeader(StrestHeader.Name.TXN_STATUS, status.getHttp());
}
/* (non-Javadoc)
* @see com.trendrr.strest.server.v2.models.StrestResponse#getTxnStatus()
*/
@Override
public TxnStatus getTxnStatus() {
return TxnStatus.instance(this.getHeader(StrestHeader.Name.TXN_STATUS));
}
/* (non-Javadoc)
* @see com.trendrr.strest.server.v2.models.StrestResponse#getContentBytes()
*/
@Override
public byte[] getContentBytes() {
return this.message.getContent().array();
}
}