Rearranges pz2/sp client logic to isolate error messaging
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / Pz2CommandResponse.java
index 0471b66..df14da7 100644 (file)
@@ -8,32 +8,61 @@ import com.indexdata.masterkey.pazpar2.client.Pazpar2HttpResponse;
 public class Pz2CommandResponse implements CommandResponse {\r
   \r
   private Pazpar2HttpResponse pz2httpResponse = null;\r
-  private ByteArrayOutputStream content = null;\r
+  private int statusCode;\r
+  private String contentType;\r
+  private byte[] content = null;\r
+  private String contentString = null;\r
   \r
   public Pz2CommandResponse(Pazpar2HttpResponse pz2response, ByteArrayOutputStream content) {\r
     pz2httpResponse = pz2response;\r
-    this.content = content;\r
+    this.content = content.toByteArray();\r
+    this.statusCode = pz2httpResponse.getStatusCode();\r
+    this.contentType = pz2httpResponse.getContentType();\r
+  }\r
+  \r
+  public Pz2CommandResponse(Pazpar2HttpResponse pz2response, String content) {\r
+    pz2httpResponse = pz2response;\r
+    this.contentString = content;\r
+  }\r
+  \r
+  public Pz2CommandResponse(int statusCode, String content, String contentType) {\r
+    this.statusCode = statusCode;\r
+    this.contentString = content;\r
+    this.contentType = contentType;\r
   }\r
 \r
   @Override\r
   public int getStatusCode() {    \r
-    return pz2httpResponse.getStatusCode();\r
+    return statusCode;\r
   }\r
 \r
   @Override\r
   public String getContentType() {\r
-    return pz2httpResponse.getContentType();\r
+    return contentType;\r
   }\r
 \r
   @Override\r
   public String getResponseString() {\r
-    try {\r
-      return content.toString("UTF-8");\r
-    } catch (UnsupportedEncodingException e) {      \r
-      e.printStackTrace();\r
-      return null;\r
+    if (content == null) {\r
+      return contentString;\r
+    } else {\r
+      try {\r
+        return new String(content,"UTF-8");\r
+      } catch (UnsupportedEncodingException e) {      \r
+        e.printStackTrace();\r
+        return "<error>unsupported encoding</error>";\r
+      }\r
     }\r
   }\r
 \r
+  @Override\r
+  public byte[] getBinaryResponse() {\r
+    return content;\r
+  }\r
+\r
+  @Override\r
+  public boolean isBinary() {    \r
+    return !contentType.contains("xml");\r
+  }\r
 \r
 }\r