01444ef240f6ede9976413856a5472d5e91ebdba
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / ClientCommandResponse.java
1 package com.indexdata.mkjsf.pazpar2;\r
2 \r
3 import java.io.ByteArrayOutputStream;\r
4 import java.io.UnsupportedEncodingException;\r
5 \r
6 import com.indexdata.masterkey.pazpar2.client.Pazpar2HttpResponse;\r
7 \r
8 public class ClientCommandResponse implements HttpResponseWrapper {\r
9     \r
10   private int statusCode;\r
11   private String contentType;\r
12   private byte[] content = null;\r
13   private String contentString = null;\r
14   private byte[] bytesForParsing = null;\r
15   \r
16   public ClientCommandResponse(Pazpar2HttpResponse pz2response, ByteArrayOutputStream content) {    \r
17     this.content = content.toByteArray();\r
18     this.statusCode = pz2response.getStatusCode();\r
19     this.contentType = pz2response.getContentType();\r
20   }\r
21     \r
22   public ClientCommandResponse(int statusCode, String content, String contentType) {\r
23     this.statusCode = statusCode;\r
24     this.contentString = content;\r
25     this.contentType = contentType;\r
26   }\r
27   \r
28   public ClientCommandResponse(int statusCode, byte[] content, String contentType) {\r
29     this.statusCode = statusCode;\r
30     this.content = content;\r
31     this.contentType = contentType;\r
32   }\r
33 \r
34   @Override\r
35   public int getStatusCode() {    \r
36     return statusCode;\r
37   }\r
38 \r
39   @Override\r
40   public String getContentType() {\r
41     return contentType;\r
42   }\r
43 \r
44   @Override\r
45   public String getResponseString() {\r
46     if (content == null) {\r
47       return contentString;\r
48     } else if (isBinary()) {\r
49       return "[binary response]";\r
50     } else {\r
51       try {\r
52         return new String(content,"UTF-8");\r
53       } catch (UnsupportedEncodingException e) {      \r
54         e.printStackTrace();\r
55         return "<error>unsupported encoding</error>";\r
56       }\r
57     }\r
58   }\r
59 \r
60   @Override\r
61   public byte[] getBytes() {\r
62     return content;\r
63   }\r
64   \r
65   public void setResponseToParse(String parseString) {    \r
66     try {\r
67       this.bytesForParsing = parseString.getBytes("UTF-8");\r
68     } catch (UnsupportedEncodingException e) {      \r
69       e.printStackTrace();\r
70     }\r
71   }\r
72 \r
73   public byte[] getResponseToParse() {\r
74     if (bytesForParsing != null) {\r
75       return bytesForParsing;\r
76     } else if (content != null) {\r
77       return content;\r
78     } else {\r
79       try {\r
80         return contentString.getBytes("UTF-8");\r
81       } catch (UnsupportedEncodingException e) {\r
82         e.printStackTrace();\r
83         return null;\r
84       }\r
85     }\r
86   }\r
87   \r
88   @Override\r
89   public boolean isBinary() {    \r
90     return !contentType.contains("xml");\r
91   }\r
92 \r
93 }\r