Catches init doc upload errors
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / ServiceProxyClient.java
index ca76a6a..79d6153 100644 (file)
@@ -260,12 +260,29 @@ public class ServiceProxyClient implements SearchClient {
     return initDocPaths;\r
   }\r
   \r
-  public ClientCommandResponse postInitDoc(byte[] initDoc, boolean includeDebug) throws IOException {\r
+  public HttpResponseWrapper postInitDoc(byte[] initDoc, boolean includeDebug) {\r
     HttpPost post = new HttpPost(serviceUrl+"?command=init" + (includeDebug? "&includeDebug=yes" : ""));\r
     post.setEntity(new ByteArrayEntity(initDoc));\r
-    byte[] response = client.execute(post, handler);\r
-    logger.debug("Response on POST was: " + new String(response,"UTF-8"));    \r
-    return new ClientCommandResponse(handler.getStatusCode(),response,handler.getContentType());    \r
+    ClientCommandResponse commandResponse = null;\r
+    byte[] response;\r
+    try {\r
+      response = client.execute(post, handler);\r
+      if (handler.getStatusCode()==200) {\r
+        commandResponse = new ClientCommandResponse(handler.getStatusCode(),response,handler.getContentType());\r
+      } else {\r
+        logger.error("Service Proxy status code: " + handler.getStatusCode());\r
+        commandResponse = new ClientCommandResponse(handler.getStatusCode(),CommandError.insertPazpar2ErrorXml("init", "Service Proxy error occurred", new String(response,"UTF-8")),"text/xml");                               \r
+      }\r
+    } catch (ClientProtocolException e) {\r
+      logger.error(e.getMessage());\r
+      e.printStackTrace();\r
+      commandResponse = new ClientCommandResponse(-1,CommandError.createErrorXml("init", "client protocol exception", e.getMessage()),"text/xml");      \r
+    } catch (IOException e) {\r
+      logger.error(e.getMessage());\r
+      e.printStackTrace();\r
+      commandResponse = new ClientCommandResponse(-1,CommandError.createErrorXml("init", "IO", e.getMessage()),"text/xml");      \r
+    }\r
+    return commandResponse;    \r
   }\r
   \r
   public void setServiceUrl (String url) {    \r