X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2FPz2Bean.java;h=f5a06750a92d80abc7dc3c0cd62a90eb1ba90677;hb=2816078831605dbc1c18147760e1212dd30909a8;hp=98f4c718fb5f5c5fdf6d5c41476394552e9d8587;hpb=28f8fc1f7a9c010900f73c3f6f95066471e21aee;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java b/src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java index 98f4c71..f5a0675 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java @@ -110,9 +110,10 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable { * @return Number of activeclients at the time of the 'show' command */ public String update (String commands) { + try { if (! errors.hasConfigurationErrors()) { if (commandsAreValid(commands)) { - if (hasQuery() || (commands.equals("record") && pzreq.getCommand("record").hasParameterSet("recordquery"))) { + if (hasQuery() || (commands.equals("record") && pzreq.getCommand("record").hasParameterValue("recordquery"))) { handleQueryStateChanges(commands); logger.debug("Processing request for " + commands); List threadList = new ArrayList(); @@ -135,10 +136,19 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable { String response = thread.getResponse(); responseLogger.debug("Response was: " + response); Pazpar2ResponseData responseObject = Pazpar2ResponseParser.getParser().getDataObject(response); - pzresp.put(commandName, responseObject); + if (Pazpar2ResponseParser.docTypes.contains(responseObject.getType())) { + pzresp.put(commandName, responseObject); + } else { + if (commandName.equals("record") && pzreq.getRecord().hasParameterValue("offset")) { + RecordResponse recordResponse = new RecordResponse(); + recordResponse.setType("record"); + recordResponse.setXml(responseObject.getXml()); + recordResponse.setAttribute("activeclients", "0"); + pzresp.put(commandName, recordResponse); + } + } } - if (commands.equals("record")) { - logger.debug("Record: Active clients: "+pzresp.getRecord().getActiveClients()); + if (commands.equals("record")) { return pzresp.getRecord().getActiveClients(); } else { return pzresp.getActiveClients(); @@ -156,12 +166,19 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable { logger.error("Did not attempt to execute query since there are configuration errors."); return "0"; } + } catch (ClassCastException cce) { + cce.printStackTrace(); + return ""; + } catch (NullPointerException npe) { + npe.printStackTrace(); + return ""; + } } public boolean commandsAreValid(String commands) { if (commands.equals("record")) { - if (!pzreq.getCommand("record").hasParameterSet("id")) { + if (!pzreq.getCommand("record").hasParameterValue("id")) { logger.error("Attempt to send record command without the id parameter"); return false; } @@ -194,7 +211,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable { } protected boolean hasQuery() { - return pzreq.getCommand("search").hasParameterSet("query"); + return pzreq.getCommand("search").hasParameterValue("query"); } @@ -220,7 +237,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable { if (stateMgr.hasPendingStateChange("record") && ! commands.equals("record")) { logger.debug("Found pending record ID change. Doing record before updating " + commands); stateMgr.hasPendingStateChange("record",false); - if (pzreq.getCommand("record").hasParameterSet("id")) { + if (pzreq.getCommand("record").hasParameterValue("id")) { update("record"); } else { pzresp.put("record", new RecordResponse());