package com.intuit.tank.conversation;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "transaction", namespace = Namespace.NAMESPACE_V1)
@XmlType(name = "transaction", namespace = Namespace.NAMESPACE_V1)
@XmlAccessorType(XmlAccessType.FIELD)
public class Transaction {
/**
*
*/
private static final char NEWLINE = '\n';
@XmlElement(namespace = Namespace.NAMESPACE_V1)
private Request request;
@XmlElement(namespace = Namespace.NAMESPACE_V1)
private Response response;
/**
* @return the request
*/
public Request getRequest() {
return request;
}
/**
* @param request
* the request to set
*/
public void setRequest(Request request) {
this.request = request;
}
/**
* @return the response
*/
public Response getResponse() {
return response;
}
/**
* @param response
* the response to set
*/
public void setResponse(Response response) {
this.response = response;
}
/**
* @{inheritDoc
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (request != null) {
sb.append("------------ Request ------------").append(NEWLINE)
.append(" ").append(request.getFirstLine()).append(NEWLINE);
sb.append(buildHeaderString(" ", request.getHeaders())).append(NEWLINE);
sb.append("------------ Body ------------").append(NEWLINE);
sb.append(request.getBodyAsString()).append(NEWLINE).append(NEWLINE);
}
if (response != null) {
sb.append("------------ Response ------------").append(NEWLINE)
.append(" ").append(response.getFirstLine()).append(NEWLINE);
sb.append(buildHeaderString(" ", response.getHeaders())).append(NEWLINE);
sb.append("------------ Body ------------").append(NEWLINE);
sb.append(response.getBodyAsString()).append(NEWLINE).append(NEWLINE);
}
return sb.toString();
}
/**
* @param headers
* @return
*/
public String buildHeaderString(String prefix, List<Header> headers) {
StringBuilder sb = new StringBuilder();
for (Header h : headers) {
sb.append(prefix).append(h.getKey()).append(": ").append(h.getValue()).append(NEWLINE);
}
return sb.toString();
}
}