X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2FCommandThread.java;h=78c56527a40d77c2a47677e44c8838a706cb1061;hb=46440016f16326b6004b03b74582596b532f0261;hp=ce3df290cbe15cce5a4909c8eb0b2887b8ca3a36;hpb=ccb28ae8d5d46d29c40bd8b1637522c212b80636;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/CommandThread.java b/src/main/java/com/indexdata/mkjsf/pazpar2/CommandThread.java index ce3df29..78c5652 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/CommandThread.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/CommandThread.java @@ -1,21 +1,15 @@ package com.indexdata.mkjsf.pazpar2; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - import org.apache.log4j.Logger; -import com.indexdata.masterkey.pazpar2.client.exceptions.Pazpar2ErrorException; import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command; -import com.indexdata.mkjsf.pazpar2.data.CommandError; public class CommandThread extends Thread { private static Logger logger = Logger.getLogger(CommandThread.class); Pazpar2Command command; SearchClient client; - private ByteArrayOutputStream baos = new ByteArrayOutputStream(); - private StringBuilder response = new StringBuilder(""); + HttpResponseWrapper commandResponse = null; public CommandThread (Pazpar2Command command, SearchClient client) { this.command = command; @@ -23,53 +17,19 @@ public class CommandThread extends Thread { } /** - * Runs the specified command using the specified Pazpar2 client - * Sets the Pazpar2 response as an XML response string to be retrieved by - * getResponse(). - * - * In case of an exception, an error response is generated, the document - * element being the same as it would have been if successful (named after - * the command, that is). - * + * Executes the specified command using the specified Pazpar2 client */ - public void run() { - - if (command.getName().equals("search")) { - client.setSearchCommand(command); - } - try { - long start = System.currentTimeMillis(); - CommandResponse commandResponse = client.executeCommand(command, baos); - if (commandResponse.getStatusCode()==200) { - response.append(commandResponse.getResponseString()); - } else if (commandResponse.getStatusCode()==417) { - logger.error("Pazpar2 status code 417: " + baos.toString("UTF-8")); - response.append(CommandError.insertPazpar2ErrorXml(command.getName(), "Expectation failed (417)", commandResponse.getResponseString())); - } else { - String resp = baos.toString("UTF-8"); - logger.error("Pazpar2 status code was " + commandResponse.getStatusCode() + ": " + resp); - throw new Pazpar2ErrorException(resp,commandResponse.getStatusCode(),resp,null); - } - long end = System.currentTimeMillis(); - logger.debug("Executed " + command.getName() + " in " + (end-start) + " ms." ); - } catch (IOException e) { - response.append(CommandError.createErrorXml(command.getName(), "io", e.getMessage())); - logger.error(response.toString()); - } catch (Pazpar2ErrorException e) { - response.append(CommandError.createErrorXml(command.getName(), "pazpar2error", e.getMessage())); - logger.error(response.toString()); - } catch (Exception e) { - response.append(CommandError.createErrorXml(command.getName(), "general", e.getMessage())); - logger.error(response.toString()); - } + public void run() { + logger.debug(command.getCommandName() + " executing asynchronously"); + commandResponse = client.executeCommand(command); } /** * * @return Pazpar2 response as an XML string, possibly a generated error XML */ - public String getResponse () { - return response.toString(); + public HttpResponseWrapper getCommandResponse () { + return commandResponse; } public Pazpar2Command getCommand() {