X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2FPz2Bean.java;h=4c6d8a0f13a515e54f41d468bed232364a797e48;hb=3d72901f9f5e443837bf67603024de8c7d06a68e;hp=30ac45531d570c20f0f99b247ea5be50c22c5c79;hpb=9098b374f587a1a96a084961a1434c333581284f;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 30ac455..4c6d8a0 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java @@ -141,17 +141,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria return ""; } else { logger.debug("Executing record command"); - ResponseDataObject responseObject = doCommand("record"); - if ((pzreq.getRecord().hasParameterValue("offset") || - pzreq.getRecord().hasParameterValue("checksum")) && - !responseObject.getType().equals("record")) { - logger.debug("Storing record offset response as 'record'"); - RecordResponse recordResponse = new RecordResponse(); - recordResponse.setType("record"); - recordResponse.setXml(responseObject.getXml()); - recordResponse.setAttribute("activeclients", "0"); - pzresp.put("record", recordResponse); - } + doCommand("record"); return pzresp.getRecord().getActiveClients(); } } @@ -336,12 +326,31 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria long end = System.currentTimeMillis(); logger.debug("Executed " + command.getCommandName() + " in " + (end-start) + " ms." ); responseLogger.debug("Response was: " + commandResponse.getResponseString()); - responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse)commandResponse); - if (ResponseParser.docTypes.contains(responseObject.getType())) { - logger.debug("Storing " + responseObject.getType() + " in pzresp. "); - pzresp.put(commandName, responseObject); + if (commandResponse.getContentType().contains("xml")) { + responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse)commandResponse); + if (ResponseParser.docTypes.contains(responseObject.getType())) { + logger.debug("Storing " + responseObject.getType() + " in pzresp. "); + pzresp.put(commandName, responseObject); + } else { + if (commandName.equals("record")) { + logger.debug("Command was 'record' but response not '' - assuming raw record response."); + ResponseDataObject recordResponse = new RecordResponse(); + recordResponse.setType("record"); + recordResponse.setXml(responseObject.getXml()); + recordResponse.setAttribute("activeclients", "0"); + pzresp.put("record", recordResponse); + } + } + } else if (commandResponse.isBinary()) { + responseObject = new RecordResponse(); + responseObject.setType(commandName); + logger.info("Binary response"); + responseObject.setAttribute("activeclients", "0"); + responseObject.setXml("binary response"); + responseObject.setBinary(commandResponse.getBytes()); + pzresp.put("record", responseObject); } else { - logger.info("Unrecognized response object type not cached in pzresp: " + responseObject.getType()); + logger.error("Response was not found to be XML or binary. The response was not handled."); } return responseObject; }