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
\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
\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
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
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
return getOneElementValue("type");\r
}\r
\r
-\r
\r
}\r
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
}\r
return targetCategories;\r
}\r
-\r
\r
}\r
--- /dev/null
+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