Creates SP response data object
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Wed, 22 May 2013 16:07:25 +0000 (12:07 -0400)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Wed, 22 May 2013 16:07:25 +0000 (12:07 -0400)
.. for the purpose of detecting unsupported SP commands on execution

src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/AuthResponse.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/CategoriesResponse.java
src/main/java/com/indexdata/mkjsf/pazpar2/data/sp/SpResponseDataObject.java [new file with mode: 0644]

index d283b29..6aeb6ff 100644 (file)
@@ -20,6 +20,7 @@ import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;
 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
 import com.indexdata.mkjsf.pazpar2.data.Responses;\r
 import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject;\r
 import com.indexdata.mkjsf.utils.Utils;\r
 \r
 @Named("pz2x") @SessionScoped\r
@@ -158,17 +159,22 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   \r
   public CategoriesResponse getCategories () {\r
     if (pz2.isServiceProxyService()) {\r
-      ResponseDataObject response = pz2.doCommand("categories");\r
-      if (response.hasApplicationError()) {\r
-        logger.debug(response.getXml());\r
+      SpResponseDataObject response = (SpResponseDataObject) pz2.doCommand("categories");\r
+      if (response.unsupportedCommand()) {\r
+        logger.warn("Command 'categories' not supported by this Service Proxy");        \r
         return new CategoriesResponse();\r
       } else {\r
-        try {\r
-          return (CategoriesResponse) response;\r
-        } catch (Exception e) {\r
-          e.printStackTrace();\r
+        if (response.hasApplicationError()) {\r
           logger.debug(response.getXml());\r
           return new CategoriesResponse();\r
+        } else {\r
+          try {\r
+            return (CategoriesResponse) response;\r
+          } catch (Exception e) {\r
+            e.printStackTrace();\r
+            logger.debug(response.getXml());\r
+            return new CategoriesResponse();\r
+          }\r
         }\r
       }\r
     } else {\r
index e076644..6e99317 100644 (file)
@@ -16,6 +16,7 @@ import org.apache.log4j.Logger;
 \r
 import com.indexdata.mkjsf.errors.ErrorHelper;\r
 import com.indexdata.mkjsf.errors.ErrorInterface;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject;\r
 import com.indexdata.mkjsf.pazpar2.data.sp.SpResponses;\r
 import com.indexdata.mkjsf.utils.Utils;\r
 \r
@@ -44,10 +45,15 @@ public class Responses implements Serializable {
       logger.info("Error detected in search");\r
       return true;\r
     }\r
-    for (String name : dataObjects.keySet()) {\r
+    for (String name : dataObjects.keySet()) {      \r
       if (dataObjects.get(name).hasApplicationError()) {\r
-        logger.info("Error detected in " + name);\r
-        return true;\r
+        if (dataObjects.get(name) instanceof SpResponseDataObject &&\r
+           ((SpResponseDataObject)dataObjects.get(name)).unsupportedCommand()) {\r
+            logger.info("Command  [" + name + "] not supported by this service");                    \r
+        } else {\r
+          logger.info("Error detected in " + name);\r
+          return true;\r
+        }\r
       }\r
     }    \r
     return false;\r
index 751f39f..55a7373 100644 (file)
@@ -1,8 +1,6 @@
 package com.indexdata.mkjsf.pazpar2.data.sp;\r
 \r
-import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
-\r
-public class AuthResponse extends ResponseDataObject {\r
+public class AuthResponse extends SpResponseDataObject  {\r
 \r
   private static final long serialVersionUID = 8006774126022849936L;\r
 \r
@@ -22,6 +20,5 @@ public class AuthResponse extends ResponseDataObject {
     return getOneElementValue("type");\r
   }\r
   \r
-\r
   \r
 }\r
index 52cd3d3..2f7ede9 100644 (file)
@@ -4,10 +4,11 @@ import java.util.ArrayList;
 import java.util.List;\r
 \r
 import javax.enterprise.context.SessionScoped;\r
+\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
 \r
 @SessionScoped\r
-public class CategoriesResponse extends ResponseDataObject {\r
+public class CategoriesResponse extends SpResponseDataObject  {\r
 \r
   private static final long serialVersionUID = 5502182636437956412L;\r
     \r
@@ -20,6 +21,5 @@ public class CategoriesResponse extends ResponseDataObject {
     }\r
     return targetCategories;\r
   }\r
-\r
   \r
 }\r
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
new file mode 100644 (file)
index 0000000..2d18536
--- /dev/null
@@ -0,0 +1,28 @@
+package com.indexdata.mkjsf.pazpar2.data.sp;\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
+\r
+  private static final long serialVersionUID = -3098556883153269199L;\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
+        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
+}\r