Adds distinction between pz2 and sp errors
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Wed, 22 May 2013 16:43:16 +0000 (12:43 -0400)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Wed, 22 May 2013 16:43:16 +0000 (12:43 -0400)
.. and checks for SP command fall-through to Pazpar2 (unsupported SP commands)

src/main/java/com/indexdata/mkjsf/errors/ConfigurationError.java
src/main/java/com/indexdata/mkjsf/errors/ErrorHelper.java
src/main/java/com/indexdata/mkjsf/errors/ErrorInterface.java
src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Client.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/CommandError.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/Pazpar2Error.java [deleted file]
src/main/java/com/indexdata/mkjsf/pazpar2/data/ResponseDataObject.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/ResponseParser.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/ServiceError.java [new file with mode: 0644]
src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/SpResponseDataObject.java

index 575893b..b844549 100644 (file)
@@ -3,7 +3,7 @@ package com.indexdata.mkjsf.errors;
 import java.util.List;\r
 \r
 import com.indexdata.mkjsf.errors.ErrorHelper.ErrorCode;\r
 import java.util.List;\r
 \r
 import com.indexdata.mkjsf.errors.ErrorHelper.ErrorCode;\r
-import com.indexdata.mkjsf.pazpar2.data.Pazpar2Error;\r
+import com.indexdata.mkjsf.pazpar2.data.ServiceError;\r
 \r
 \r
 public class ConfigurationError implements ErrorInterface {\r
 \r
 \r
 public class ConfigurationError implements ErrorInterface {\r
@@ -55,11 +55,11 @@ public class ConfigurationError implements ErrorInterface {
     return applicationErrorCode;\r
   }\r
   \r
     return applicationErrorCode;\r
   }\r
   \r
-  public boolean hasPazpar2Error () {\r
+  public boolean isServiceError () {\r
     return false;\r
   }\r
   \r
     return false;\r
   }\r
   \r
-  public Pazpar2Error getPazpar2Error() {\r
+  public ServiceError getServiceError() {\r
     return null;\r
   }\r
  \r
     return null;\r
   }\r
  \r
index e75d663..f0da037 100644 (file)
@@ -40,8 +40,8 @@ public class ErrorHelper implements Serializable {
   \r
   public ErrorHelper.ErrorCode getErrorCode(ErrorInterface appError) {\r
     String errmsg = appError.getMessage();\r
   \r
   public ErrorHelper.ErrorCode getErrorCode(ErrorInterface appError) {\r
     String errmsg = appError.getMessage();\r
-    if (appError.hasPazpar2Error()) {\r
-      if (appError.getPazpar2Error().getMsg().contains("target settings from file")) {\r
+    if (appError.isServiceError()) {\r
+      if (appError.getServiceError().getMsg().contains("target settings from file")) {\r
         return ErrorCode.LOCAL_SETTINGS_FILE_NOT_FOUND;\r
       } else {\r
         return ErrorCode.PAZPAR2_ERRORS;\r
         return ErrorCode.LOCAL_SETTINGS_FILE_NOT_FOUND;\r
       } else {\r
         return ErrorCode.PAZPAR2_ERRORS;\r
@@ -121,8 +121,8 @@ public class ErrorHelper implements Serializable {
             + "that a pazpar2 service is running at the given address." + nl);\r
         break;           \r
       case PAZPAR2_ERRORS:\r
             + "that a pazpar2 service is running at the given address." + nl);\r
         break;           \r
       case PAZPAR2_ERRORS:\r
-        if (error.hasPazpar2Error()) {          \r
-          int pz2code = Integer.parseInt(error.getPazpar2Error().getCode());\r
+        if (error.isServiceError()) {          \r
+          int pz2code = Integer.parseInt(error.getServiceError().getCode());\r
           switch (pz2code) {\r
             case 3:\r
               suggestions.add("The search experienced a problem with the query terms.");\r
           switch (pz2code) {\r
             case 3:\r
               suggestions.add("The search experienced a problem with the query terms.");\r
@@ -140,7 +140,7 @@ public class ErrorHelper implements Serializable {
               suggestions.add(" that the Service Proxy session timed out.");\r
               break;\r
             default:\r
               suggestions.add(" that the Service Proxy session timed out.");\r
               break;\r
             default:\r
-              suggestions.add("Pazpar2 error: " + error.getPazpar2Error().getMsg() + " (Pazpar2 # "+error.getPazpar2Error().getCode()+")");\r
+              suggestions.add("Pazpar2 error: " + error.getServiceError().getMsg() + " (Pazpar2 # "+error.getServiceError().getCode()+")");\r
           }\r
           break;\r
         } else {\r
           }\r
           break;\r
         } else {\r
index feb578c..7754c13 100644 (file)
@@ -4,7 +4,7 @@ import java.io.Serializable;
 import java.util.List;\r
 \r
 import com.indexdata.mkjsf.errors.ErrorHelper.ErrorCode;\r
 import java.util.List;\r
 \r
 import com.indexdata.mkjsf.errors.ErrorHelper.ErrorCode;\r
-import com.indexdata.mkjsf.pazpar2.data.Pazpar2Error;\r
+import com.indexdata.mkjsf.pazpar2.data.ServiceError;\r
 \r
 \r
 public interface ErrorInterface extends Serializable {\r
 \r
 \r
 public interface ErrorInterface extends Serializable {\r
@@ -16,7 +16,7 @@ public interface ErrorInterface extends Serializable {
   public ErrorCode getApplicationErrorCode();\r
   public List<String> getSuggestions();\r
   public void setErrorHelper(ErrorHelper helper);\r
   public ErrorCode getApplicationErrorCode();\r
   public List<String> getSuggestions();\r
   public void setErrorHelper(ErrorHelper helper);\r
-  public boolean hasPazpar2Error();\r
-  public Pazpar2Error getPazpar2Error();\r
+  public boolean isServiceError();\r
+  public ServiceError getServiceError();\r
     \r
 }\r
     \r
 }\r
index 9d4ee91..6dfe77f 100644 (file)
@@ -129,7 +129,7 @@ public class Pz2Client implements SearchClient {
       logger.error(e.getMessage());\r
       e.printStackTrace();\r
       logger.error("Creating error XML");\r
       logger.error(e.getMessage());\r
       e.printStackTrace();\r
       logger.error("Creating error XML");\r
-      commandResponse = new ClientCommandResponse(0,CommandError.createErrorXml(command.getCommandName(), "", "Pazpar2Error", e.getMessage(),""),"text/xml");\r
+      commandResponse = new ClientCommandResponse(0,CommandError.createErrorXml(command.getCommandName(), "", "ServiceError", e.getMessage(),""),"text/xml");\r
     }\r
     long end = System.currentTimeMillis();      \r
     logger.debug("Executed " + command.getCommandName() + " in " + (end-start) + " ms." );\r
     }\r
     long end = System.currentTimeMillis();      \r
     logger.debug("Executed " + command.getCommandName() + " in " + (end-start) + " ms." );\r
index ede8767..54aa8f6 100644 (file)
@@ -41,8 +41,8 @@ public class CommandError extends ResponseDataObject implements ErrorInterface {
   }\r
       \r
   public String getMessage() {\r
   }\r
       \r
   public String getMessage() {\r
-    if (hasPazpar2Error()) {      \r
-      return getPazpar2Error().getMsg();\r
+    if (isServiceError()) {      \r
+      return getServiceError().getMsg();\r
     } else {      \r
       return getOneElementValue("errormessage");\r
     }\r
     } else {      \r
       return getOneElementValue("errormessage");\r
     }\r
@@ -129,13 +129,21 @@ public class CommandError extends ResponseDataObject implements ErrorInterface {
     return applicationErrorCode;    \r
   }\r
   \r
     return applicationErrorCode;    \r
   }\r
   \r
-  public boolean hasPazpar2Error () {\r
-    return ( getOneElement("error") != null);            \r
+  public boolean isServiceError () {\r
+    ServiceError pz2err = (ServiceError) getOneElement("error");\r
+    return (pz2err != null);\r
   }\r
   \r
   }\r
   \r
-  public Pazpar2Error getPazpar2Error() {\r
-    return (Pazpar2Error) getOneElement("error");\r
+  public ServiceError getServiceError() {\r
+    return (ServiceError) getOneElement("error");\r
+  }\r
+  \r
+  public boolean isServiceProxyError () {\r
+    return (isServiceError() && getServiceError().isServiceProxyError());\r
   }\r
 \r
   }\r
 \r
+  public boolean isPazpar2Error () {\r
+    return (isServiceError() && getServiceError().isPazpar2Error());\r
+  }\r
 \r
 }\r
 \r
 }\r
diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Pazpar2Error.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Pazpar2Error.java
deleted file mode 100644 (file)
index b46cb8b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.indexdata.mkjsf.pazpar2.data;\r
-\r
-public class Pazpar2Error extends ResponseDataObject {\r
-\r
-  private static final long serialVersionUID = -7060267782024414318L;\r
-\r
-  public String getCode() {\r
-    return getAttribute("code");\r
-  }\r
-  \r
-  public String getMsg() {\r
-    return getAttribute("msg");\r
-  }\r
-}\r
index 3fe9803..8ffd810 100644 (file)
@@ -108,12 +108,15 @@ public class ResponseDataObject implements Serializable {
     return (CommandError) getOneElement("applicationerror");\r
   }\r
   \r
     return (CommandError) getOneElement("applicationerror");\r
   }\r
   \r
-  public boolean hasPazpar2Error() {\r
-    return hasApplicationError() && getApplicationError().hasPazpar2Error();\r
+  public boolean hasServiceError() {\r
+    return hasApplicationError() \r
+        && getApplicationError().isServiceError();        \r
   }\r
   \r
   }\r
   \r
-  \r
-  \r
+  public ServiceError getServiceError() {\r
+    return (hasServiceError()? getApplicationError().getServiceError() : null);\r
+  }\r
+      \r
   public void setXml(String xml) {\r
     this.xml = xml; \r
   }\r
   public void setXml(String xml) {\r
     this.xml = xml; \r
   }\r
index cf60173..179424d 100644 (file)
@@ -120,7 +120,7 @@ public class ResponseParser extends DefaultHandler {
     } else if (localName.equals("applicationerror")) {\r
       currentElement = new CommandError();\r
     } else if (localName.equals("error") && dataElements.peek().getType().equals("applicationerror")) {\r
     } else if (localName.equals("applicationerror")) {\r
       currentElement = new CommandError();\r
     } else if (localName.equals("error") && dataElements.peek().getType().equals("applicationerror")) {\r
-      currentElement = new Pazpar2Error(); \r
+      currentElement = new ServiceError(); \r
     // Service Proxy extras  \r
     } else if (localName.equals("auth")) {  \r
       currentElement = new AuthResponse();\r
     // Service Proxy extras  \r
     } else if (localName.equals("auth")) {  \r
       currentElement = new AuthResponse();\r
diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/ServiceError.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/ServiceError.java
new file mode 100644 (file)
index 0000000..5969670
--- /dev/null
@@ -0,0 +1,22 @@
+package com.indexdata.mkjsf.pazpar2.data;\r
+\r
+public class ServiceError extends ResponseDataObject {\r
+\r
+  private static final long serialVersionUID = -7060267782024414318L;\r
+\r
+  public String getCode() {\r
+    return getAttribute("code");\r
+  }\r
+  \r
+  public String getMsg() {\r
+    return getAttribute("msg");\r
+  }\r
+  \r
+  public boolean isPazpar2Error() {\r
+    return (getCode() != null && getCode().length()>0 && Integer.parseInt(getCode())<100);\r
+  }\r
+  \r
+  public boolean isServiceProxyError() {\r
+    return (getCode() != null && getCode().length()>0 && Integer.parseInt(getCode())>100);\r
+  }        \r
+}\r
index 2d18536..81b1c18 100644 (file)
@@ -2,7 +2,6 @@ package com.indexdata.mkjsf.pazpar2.data.sp;
 \r
 import org.apache.log4j.Logger;\r
 \r
 \r
 import org.apache.log4j.Logger;\r
 \r
-import com.indexdata.mkjsf.pazpar2.data.ServiceError;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
 \r
 public class SpResponseDataObject extends ResponseDataObject {\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
 \r
 public class SpResponseDataObject extends ResponseDataObject {\r
@@ -11,18 +10,11 @@ public class SpResponseDataObject extends ResponseDataObject {
   private static Logger logger = Logger.getLogger(SpResponseDataObject.class);\r
 \r
   public boolean unsupportedCommand() {\r
   private static Logger logger = Logger.getLogger(SpResponseDataObject.class);\r
 \r
   public boolean unsupportedCommand() {\r
-    if (hasServiceError()) {\r
-      ServiceError serviceError = getApplicationError().getServiceError();\r
-      if (serviceError.getValue().equals("command") &&\r
-          serviceError.getCode().equals("3")) {\r
+    if (hasServiceError() && getServiceError().getCode().equalsIgnoreCase("3")) {\r
         logger.warn("The " + getType() + " command not supported by this Service Proxy (request fell through SP to Pazpar2).");\r
         return true;\r
         logger.warn("The " + getType() + " command not supported by this Service Proxy (request fell through SP to Pazpar2).");\r
         return true;\r
-      } else {\r
-        logger.error("Error encountered: " + serviceError.getCode() + ": " + serviceError.getMsg());\r
-        return false;\r
-      }\r
     }\r
     return false;\r
   }\r
     }\r
     return false;\r
   }\r
-\r
+  \r
 }\r
 }\r