Removes timing from thread object
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / CommandThread.java
index ce3df29..78c5652 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
+  HttpResponseWrapper commandResponse = null;      \r
   \r
   public CommandThread (Pazpar2Command command, SearchClient client) {\r
     this.command = command;\r
@@ -23,53 +17,19 @@ public class CommandThread extends Thread {
   }\r
   \r
   /**\r
-   * Runs the specified command using the specified Pazpar2 client\r
-   * Sets the Pazpar2 response as an XML response string to be retrieved by\r
-   * getResponse().\r
-   * \r
-   * In case of an exception, an error response is generated, the document\r
-   * element being the same as it would have been if successful (named after\r
-   * the command, that is).  \r
-   *  \r
+   * Executes the specified command using the specified Pazpar2 client\r
    */\r
-  public void run() {\r
-    \r
-    if (command.getName().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
+  public void run() {    \r
+    logger.debug(command.getCommandName() + " executing asynchronously");\r
+    commandResponse = client.executeCommand(command);\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 HttpResponseWrapper getCommandResponse () {\r
+    return commandResponse;\r
   }\r
     \r
   public Pazpar2Command getCommand() {\r