Work in progress on error detect,report,troubleshoot
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / CommandThread.java
index 50ec2b6..ea52988 100644 (file)
@@ -7,8 +7,9 @@ import org.apache.log4j.Logger;
 \r
 import com.indexdata.masterkey.pazpar2.client.ClientCommand;\r
 import com.indexdata.masterkey.pazpar2.client.Pazpar2Client;\r
+import com.indexdata.masterkey.pazpar2.client.Pazpar2HttpResponse;\r
 import com.indexdata.masterkey.pazpar2.client.exceptions.Pazpar2ErrorException;\r
-import com.indexdata.pz2utils4jsf.pazpar2.data.ApplicationError;\r
+import com.indexdata.pz2utils4jsf.pazpar2.data.CommandError;\r
 \r
 public class CommandThread extends Thread {\r
 \r
@@ -16,7 +17,7 @@ public class CommandThread extends Thread {
   Pazpar2Command command;\r
   Pazpar2Client client;\r
   private ByteArrayOutputStream baos = new ByteArrayOutputStream();\r
-  private StringBuilder response = new StringBuilder("");\r
+  private StringBuilder response = new StringBuilder("");  \r
   \r
   public CommandThread (Pazpar2Command command, Pazpar2Client client) {\r
     this.command = command;\r
@@ -40,16 +41,24 @@ public class CommandThread extends Thread {
     }\r
     try {\r
       long start = System.currentTimeMillis();\r
-      client.executeCommand(clientCommand, baos);\r
-      response.append(baos.toString("UTF-8"));\r
+      Pazpar2HttpResponse httpResponse = client.executeCommand(clientCommand, baos);\r
+      if (httpResponse.getStatusCode()==200) {\r
+        response.append(baos.toString("UTF-8"));  \r
+      } else {\r
+        String resp = baos.toString("UTF-8");\r
+        throw new Pazpar2ErrorException(resp,httpResponse.getStatusCode(),resp,null);\r
+      }       \r
       long end = System.currentTimeMillis();      \r
       logger.debug("Executed " + command.getName() + " in " + (end-start) + " ms." );\r
     } catch (IOException e) {\r
-      response.append(ApplicationError.createErrorXml(command.getName(), "io", e.getMessage())); \r
+      response.append(CommandError.createErrorXml(command.getName(), "io", e.getMessage())); \r
       logger.error(response.toString());\r
     } catch (Pazpar2ErrorException e) {\r
-      response.append(ApplicationError.createErrorXml(command.getName(), "pazpar2error", e.getMessage())); \r
+      response.append(CommandError.createErrorXml(command.getName(), "pazpar2error", e.getMessage())); \r
       logger.error(response.toString());\r
+    } catch (Exception e) {\r
+      response.append(CommandError.createErrorXml(command.getName(), "general", e.getMessage())); \r
+      logger.error(response.toString());      \r
     }\r
   }\r
   \r