Rearranges pz2/sp client logic to isolate error messaging
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / CommandThread.java
index ce3df29..e3169b9 100644 (file)
@@ -1,21 +1,15 @@
 package com.indexdata.mkjsf.pazpar2;\r
 \r
-import java.io.ByteArrayOutputStream;\r
-import java.io.IOException;\r
-\r
 import org.apache.log4j.Logger;\r
 \r
-import com.indexdata.masterkey.pazpar2.client.exceptions.Pazpar2ErrorException;\r
 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;\r
-import com.indexdata.mkjsf.pazpar2.data.CommandError;\r
 \r
 public class CommandThread extends Thread {\r
 \r
   private static Logger logger = Logger.getLogger(CommandThread.class);\r
   Pazpar2Command command;\r
   SearchClient client;\r
-  private ByteArrayOutputStream baos = new ByteArrayOutputStream();\r
-  private StringBuilder response = new StringBuilder("");  \r
+  CommandResponse commandResponse = null;      \r
   \r
   public CommandThread (Pazpar2Command command, SearchClient client) {\r
     this.command = command;\r
@@ -34,42 +28,21 @@ public class CommandThread extends Thread {
    */\r
   public void run() {\r
     \r
-    if (command.getName().equals("search")) {\r
+    if (command.getCommandName().equals("search")) {\r
       client.setSearchCommand(command);\r
     }\r
-    try {\r
-      long start = System.currentTimeMillis();\r
-      CommandResponse commandResponse = client.executeCommand(command, baos);\r
-      if (commandResponse.getStatusCode()==200) {\r
-        response.append(commandResponse.getResponseString());  \r
-      } else if (commandResponse.getStatusCode()==417) {        \r
-        logger.error("Pazpar2 status code 417: " + baos.toString("UTF-8"));\r
-        response.append(CommandError.insertPazpar2ErrorXml(command.getName(), "Expectation failed (417)", commandResponse.getResponseString()));        \r
-      } else {\r
-        String resp = baos.toString("UTF-8");\r
-        logger.error("Pazpar2 status code was " + commandResponse.getStatusCode() + ": " + resp);\r
-        throw new Pazpar2ErrorException(resp,commandResponse.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(CommandError.createErrorXml(command.getName(), "io", e.getMessage())); \r
-      logger.error(response.toString());\r
-    } catch (Pazpar2ErrorException e) {\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
+    long start = System.currentTimeMillis();\r
+    commandResponse = client.executeCommand(command);\r
+    long end = System.currentTimeMillis();\r
+    logger.debug("Executed " + command.getCommandName() + " in " + (end-start) + " ms." );\r
   }\r
   \r
   /**\r
    * \r
    * @return Pazpar2 response as an XML string, possibly a generated error XML\r
    */\r
-  public String getResponse () {\r
-    return response.toString();\r
+  public CommandResponse getCommandResponse () {\r
+    return commandResponse;\r
   }\r
     \r
   public Pazpar2Command getCommand() {\r