package glaze.client.wire.tasks; import glaze.client.Response; import java.io.Serializable; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.apache.http.Header; import com.google.common.base.Objects; public class SerializableResponse implements Serializable { private static final long serialVersionUID = 6522661301517225640L; private final byte[] bytes; private final int status; private final Map<String, String> headers; public SerializableResponse(Response response) { this.headers = new HashMap<String, String>(); this.bytes = getBytes(response); this.status = response.status(); initHeaders(response); } public String asString() { return new String(bytes); } public byte[] getBytes() { return bytes; } public Map<String, String> getHeaders() { return Collections.unmodifiableMap(headers); } public int status() { return status; } @Override public String toString() { return Objects.toStringHelper(this).add("status", status).add("headers", headers).toString(); } private byte[] getBytes(Response response) { try { return response.asBytes(); } catch (Exception e) { return new byte[] {}; } } private void initHeaders(Response response) { Header[] allHeaders = response.getHttpResponse().getAllHeaders(); if (allHeaders != null) { for (Header h : allHeaders) { headers.put(h.getName(), h.getValue()); } } } }