From ff74a02127ad0f4129a89a20fd057e28f30767ea Mon Sep 17 00:00:00 2001 From: "Niels Erik G. Nielsen" Date: Wed, 22 May 2013 13:56:56 -0400 Subject: [PATCH] Adds checks for unsupported commands Avoids running unsupported 'categories' repeatedly. Warns in log about unsupported 'auth' command. --- .../mkjsf/pazpar2/ServiceProxyExtensions.java | 41 ++++++++++++-------- .../indexdata/mkjsf/pazpar2/data/Responses.java | 2 +- .../pazpar2/data/sp/SpResponseDataObject.java | 10 ++--- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java b/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java index 6aeb6ff..c10c55e 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java @@ -3,6 +3,8 @@ package com.indexdata.mkjsf.pazpar2; import java.io.IOException; import java.io.Serializable; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; @@ -36,25 +38,31 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab @Inject Pz2Bean pz2; @Inject Pazpar2Commands pzreq; @Inject Responses pzresp; - - + public ServiceProxyExtensions() { this.initDocUpload = new InitDocUpload(this); // TODO: //stateMgr.addStateListener(this); } - + public void authenticate() { + String command = "auth"; + if (pzresp.getSp().getAuth().unsupportedCommand()) { + logger.warn("Running seemingly unsupported command [auth] against SP."); + } pz2.resetSearchAndRecordCommands(); pzresp.getSp().resetAuthAndBeyond(true); AuthCommand auth = pzreq.getSp().getAuth(); ClientCommandResponse commandResponse = pz2.getSpClient().send(auth); - String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth"); + String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth"); commandResponse.setResponseToParse(renamedResponse); - ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(commandResponse); + SpResponseDataObject responseObject = (SpResponseDataObject) ResponseParser.getParser().getDataObject(commandResponse); if (ResponseParser.docTypes.contains(responseObject.getType())) { pzresp.put(auth.getCommandName(), responseObject); } + if (responseObject.unsupportedCommand()) { + logger.error("auth command does not seem to be supported by this Service Proxy"); + } String responseStr = commandResponse.getResponseString(); logger.info(responseStr); } @@ -157,24 +165,25 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab return initDocUpload; } - public CategoriesResponse getCategories () { + public CategoriesResponse getCategories () { + String command="categories"; if (pz2.isServiceProxyService()) { - SpResponseDataObject response = (SpResponseDataObject) pz2.doCommand("categories"); - if (response.unsupportedCommand()) { - logger.warn("Command 'categories' not supported by this Service Proxy"); + if (pzresp.getSp().getCategories().unsupportedCommand()) { + logger.info("Skipping seemingly unsupported command: " + command); return new CategoriesResponse(); } else { - if (response.hasApplicationError()) { - logger.debug(response.getXml()); - return new CategoriesResponse(); - } else { - try { + SpResponseDataObject response = (SpResponseDataObject) pz2.doCommand(command); + if (response.unsupportedCommand()) { + logger.warn("Command 'categories' not supported by this Service Proxy"); + } else if (response.hasApplicationError()) { + logger.error(response.getXml()); + } + try { return (CategoriesResponse) response; - } catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); logger.debug(response.getXml()); return new CategoriesResponse(); - } } } } else { diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java index 6e99317..ef6526b 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java @@ -49,7 +49,7 @@ public class Responses implements Serializable { if (dataObjects.get(name).hasApplicationError()) { if (dataObjects.get(name) instanceof SpResponseDataObject && ((SpResponseDataObject)dataObjects.get(name)).unsupportedCommand()) { - logger.info("Command [" + name + "] not supported by this service"); + logger.debug("Command [" + name + "] not supported by this service"); } else { logger.info("Error detected in " + name); return true; diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/SpResponseDataObject.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/SpResponseDataObject.java index 81b1c18..2620723 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/SpResponseDataObject.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/SpResponseDataObject.java @@ -1,17 +1,15 @@ package com.indexdata.mkjsf.pazpar2.data.sp; -import org.apache.log4j.Logger; - import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject; public class SpResponseDataObject extends ResponseDataObject { - private static final long serialVersionUID = -3098556883153269199L; - private static Logger logger = Logger.getLogger(SpResponseDataObject.class); + private static final long serialVersionUID = -3098556883153269199L; public boolean unsupportedCommand() { - if (hasServiceError() && getServiceError().getCode().equalsIgnoreCase("3")) { - logger.warn("The " + getType() + " command not supported by this Service Proxy (request fell through SP to Pazpar2)."); + if (hasServiceError() + && getServiceError().getCode().equals("3") + && getServiceError().getValue().equals("command")) { return true; } return false; -- 1.7.10.4