More error handling/reporting. Normalizing auth resp
[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 {\r
49       try {\r
50         return new String(content,"UTF-8");\r
51       } catch (UnsupportedEncodingException e) {      \r
52         e.printStackTrace();\r
53         return "<error>unsupported encoding</error>";\r
54       }\r
55     }\r
56   }\r
57 \r
58   @Override\r
59   public byte[] getBytes() {\r
60     return content;\r
61   }\r
62   \r
63   public void setResponseToParse(String parseString) {    \r
64     try {\r
65       this.bytesForParsing = parseString.getBytes("UTF-8");\r
66     } catch (UnsupportedEncodingException e) {      \r
67       e.printStackTrace();\r
68     }\r
69   }\r
70 \r
71   public byte[] getResponseToParse() {\r
72     if (bytesForParsing != null) {\r
73       return bytesForParsing;\r
74     } else if (content != null) {\r
75       return content;\r
76     } else {\r
77       try {\r
78         return contentString.getBytes("UTF-8");\r
79       } catch (UnsupportedEncodingException e) {\r
80         e.printStackTrace();\r
81         return null;\r
82       }\r
83     }\r
84   }\r
85   \r
86   @Override\r
87   public boolean isBinary() {    \r
88     return !contentType.contains("xml");\r
89   }\r
90 \r
91 }\r