Renames class, removes obsolete, javadoc
[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 /**\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
13  *  \r
14  * @author Niels Erik\r
15  *\r
16  */\r
17 public class ClientCommandResponse implements HttpResponseWrapper {\r
18     \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
24   \r
25   /**\r
26    * Used for storing Pazpar2 based response\r
27    * \r
28    * @param pz2response\r
29    * @param content\r
30    */\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
35   }\r
36     \r
37   /**\r
38    * Used for storing error response\r
39    *  \r
40    * @param statusCode\r
41    * @param content\r
42    * @param contentType\r
43    */\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
48   }\r
49   \r
50   /**\r
51    * Used for storing Service Proxy based response\r
52    * \r
53    * @param statusCode\r
54    * @param content\r
55    * @param contentType\r
56    */\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
61   }\r
62 \r
63   @Override\r
64   public int getStatusCode() {    \r
65     return statusCode;\r
66   }\r
67 \r
68   @Override\r
69   public String getContentType() {\r
70     return contentType;\r
71   }\r
72 \r
73   /**\r
74    * Gets the response as a String - unless the response is marked as binary\r
75    */\r
76   @Override\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
82     } else {\r
83       try {\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
88       }\r
89     }\r
90   }\r
91 \r
92   @Override\r
93   public byte[] getBytes() {\r
94     return content;\r
95   }\r
96   \r
97   /**\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
101    * \r
102    * @param parseString\r
103    */\r
104   public void setResponseToParse(String parseString) {    \r
105     try {\r
106       this.bytesForParsing = parseString.getBytes("UTF-8");\r
107     } catch (UnsupportedEncodingException e) {      \r
108       e.printStackTrace();\r
109     }\r
110   }\r
111 \r
112   /**\r
113    * Used by the parser to get the response for further processing. \r
114    * @return\r
115    */\r
116   public byte[] getResponseToParse() {\r
117     if (bytesForParsing != null) {\r
118       return bytesForParsing;\r
119     } else if (content != null) {\r
120       return content;\r
121     } else {\r
122       try {\r
123         return contentString.getBytes("UTF-8");\r
124       } catch (UnsupportedEncodingException e) {\r
125         e.printStackTrace();\r
126         return null;\r
127       }\r
128     }\r
129   }\r
130   \r
131   @Override\r
132   public boolean isBinary() {    \r
133     return !contentType.contains("xml");\r
134   }\r
135 \r
136 }\r