/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.internal.http.requests;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.message.BasicHttpResponse;
import com.subgraph.vega.api.http.requests.IHttpHeaderBuilder;
import com.subgraph.vega.api.http.requests.IHttpResponseBuilder;
import com.subgraph.vega.api.model.requests.IRequestLogRecord;
public class HttpResponseBuilder extends HttpMessageBuilder implements IHttpResponseBuilder {
private int statusCode = -200;
private String reasonPhrase = "";
@Override
public synchronized void clear() {
super.clear();
statusCode = 200;
reasonPhrase = "";
}
@Override
public synchronized void setFromResponse(IRequestLogRecord record) {
setFromResponse(record.getResponse());
}
@Override
public synchronized void setFromResponse(HttpResponse response) {
setFromStatusLine(response.getStatusLine());
setHeaders(response.getAllHeaders());
setEntity(response.getEntity());
}
@Override
public synchronized void setFromStatusLine(StatusLine statusLine) {
setProtocolVersion(statusLine.getProtocolVersion());
statusCode = statusLine.getStatusCode();
reasonPhrase = statusLine.getReasonPhrase();
}
@Override
public synchronized String getStatusLine() {
if (getProtocolVersion() != null) {
return getProtocolVersion().toString() + " " + Integer.toString(statusCode) + " " + reasonPhrase;
} else {
return "";
}
}
@Override
public synchronized HttpResponse buildResponse() {
BasicHttpResponse response = new BasicHttpResponse(getProtocolVersion(), statusCode, reasonPhrase);
setHeadersEntity();
IHttpHeaderBuilder[] headers = getHeaders();
for (IHttpHeaderBuilder h: headers) {
response.addHeader(h.buildHeader());
}
response.setEntity(getEntity());
return response;
}
}