1 package com.indexdata.mkjsf.pazpar2;
\r
3 import java.io.ByteArrayOutputStream;
\r
4 import java.io.UnsupportedEncodingException;
\r
6 import com.indexdata.masterkey.pazpar2.client.Pazpar2HttpResponse;
\r
9 * Contains one HTTP response to a command executed against a Pazpar2 service in such a
\r
10 * way as to give the response parser a common interface to responses, whether
\r
11 * they are from Pazpar2, from the Service Proxy, or are error messages created
\r
12 * by the JSF application during processing.
\r
14 * @author Niels Erik
\r
17 public class ClientCommandResponse implements HttpResponseWrapper {
\r
19 private int statusCode;
\r
20 private String contentType;
\r
21 private byte[] content = null;
\r
22 private String contentString = null;
\r
23 private byte[] bytesForParsing = null;
\r
26 * Used for storing Pazpar2 based response
\r
28 * @param pz2response
\r
31 public ClientCommandResponse(Pazpar2HttpResponse pz2response, ByteArrayOutputStream content) {
\r
32 this.content = content.toByteArray();
\r
33 this.statusCode = pz2response.getStatusCode();
\r
34 this.contentType = pz2response.getContentType();
\r
38 * Used for storing error response
\r
42 * @param contentType
\r
44 public ClientCommandResponse(int statusCode, String content, String contentType) {
\r
45 this.statusCode = statusCode;
\r
46 this.contentString = content;
\r
47 this.contentType = contentType;
\r
51 * Used for storing Service Proxy based response
\r
55 * @param contentType
\r
57 public ClientCommandResponse(int statusCode, byte[] content, String contentType) {
\r
58 this.statusCode = statusCode;
\r
59 this.content = content;
\r
60 this.contentType = contentType;
\r
64 public int getStatusCode() {
\r
69 public String getContentType() {
\r
74 * Gets the response as a String - unless the response is marked as binary
\r
77 public String getResponseString() {
\r
78 if (content == null) {
\r
79 return contentString;
\r
80 } else if (isBinary()) {
\r
81 return "[binary response]";
\r
84 return new String(content,"UTF-8");
\r
85 } catch (UnsupportedEncodingException e) {
\r
86 e.printStackTrace();
\r
87 return "<error>unsupported encoding</error>";
\r
93 public byte[] getBytes() {
\r
98 * Overrides the original response with a modified response. Used for
\r
99 * one instance of a response that is not named by the command that
\r
100 * created it - such as the parser expects.
\r
102 * @param parseString
\r
104 public void setResponseToParse(String parseString) {
\r
106 this.bytesForParsing = parseString.getBytes("UTF-8");
\r
107 } catch (UnsupportedEncodingException e) {
\r
108 e.printStackTrace();
\r
113 * Used by the parser to get the response for further processing.
\r
116 public byte[] getResponseToParse() {
\r
117 if (bytesForParsing != null) {
\r
118 return bytesForParsing;
\r
119 } else if (content != null) {
\r
123 return contentString.getBytes("UTF-8");
\r
124 } catch (UnsupportedEncodingException e) {
\r
125 e.printStackTrace();
\r
132 public boolean isBinary() {
\r
133 return !contentType.contains("xml");
\r