Organizes SP specific responses in separate class
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Tue, 21 May 2013 15:17:40 +0000 (11:17 -0400)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Tue, 21 May 2013 15:17:40 +0000 (11:17 -0400)
Also: introduces reset-levels:
      all from search and beyond
      all fron init and beyond
      all from auth and beyond
for clarity when switching service URL's and service IDs

src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Bean.java
src/main/java/com/indexdata/mkjsf/pazpar2/Pz2Client.java
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/SpResponses.java

index 29d9280..1a1b1f9 100644 (file)
@@ -26,7 +26,6 @@ import com.indexdata.mkjsf.errors.ErrorHelper;
 import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;\r
 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;\r
 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
-import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;\r
 import com.indexdata.mkjsf.pazpar2.data.RecordResponse;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
@@ -98,7 +97,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria
       errors.addConfigurationError(new ConfigurationError("Search Client","Configuration",e.getMessage()));                \r
     } \r
     logger.info(configReader.document());\r
-    pzresp.resetAllSessionData();    \r
+    pzresp.getSp().resetAuthAndBeyond(true);    \r
   }\r
   \r
   public void resetSearchAndRecordCommands () {\r
@@ -119,9 +118,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria
       errors.addConfigurationError(new ConfigurationError("No client defined","Client is null","No search client defined. A client must be pre-configured or selected runtime, prior to searching."));\r
     } else {\r
       stateMgr.hasPendingStateChange("search",false);\r
-      pzresp.resetSearchResponses();\r
-      // resets some record and show command parameters without \r
-      // changing state or creating state change feedback\r
+      pzresp.resetSearchAndBeyond();\r
       pzreq.getRecord().removeParametersInState();        \r
       pzreq.getShow().setParameterInState(new CommandParameter("start","=",0));    \r
       logger.debug(Utils.objectId(this) + " is searching using "+pzreq.getCommand("search").getUrlEncodedParameterValue("query"));\r
@@ -405,7 +402,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria
     if (url!=null && searchClient != null && !url.equals(searchClient.getServiceUrl())) {\r
       pzreq.getRecord().removeParametersInState();\r
       pzreq.getSearch().removeParametersInState();\r
-      pzresp.resetAllSessionData();\r
+      pzresp.getSp().resetAuthAndBeyond(true);\r
       user.clear();\r
       searchClient.setServiceUrl(url);\r
     }    \r
@@ -418,7 +415,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria
   public void setServiceId () {\r
     pzreq.getRecord().removeParametersInState();\r
     pzreq.getSearch().removeParametersInState();\r
-    pzresp.resetSearchResponses();\r
+    pzresp.resetSearchAndBeyond();\r
     pz2Client.setServiceId(pzreq.getInit().getService());\r
   }\r
   \r
@@ -542,7 +539,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Configurable, Seria
     if (!serviceType.equals(type)  &&\r
         !serviceType.equals(SERVICE_TYPE_TBD)) {\r
       resetSearchAndRecordCommands();\r
-      pzresp.resetAllSessionData();\r
+      pzresp.getSp().resetAuthAndBeyond(true);\r
     }\r
     serviceType = type;\r
     if (serviceType.equals(SERVICE_TYPE_PZ2)) {\r
index 3b33000..9d4ee91 100644 (file)
@@ -9,9 +9,6 @@ import java.util.HashMap;
 import java.util.List;\r
 import java.util.Map;\r
 \r
-import javax.faces.context.ExternalContext;\r
-import javax.faces.context.FacesContext;\r
-\r
 import org.apache.log4j.Logger;\r
 \r
 import com.indexdata.masterkey.config.MissingMandatoryParameterException;\r
index 3c0da10..ff69dcc 100644 (file)
@@ -64,7 +64,7 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   public String login(String navigateTo) {\r
     logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient());\r
     pz2.resetSearchAndRecordCommands();\r
-    pzresp.resetAllSessionData();\r
+    pzresp.getSp().resetAuthAndBeyond(true);\r
     AuthCommand auth = pzreq.getSp().getAuth(); \r
     auth.setParametersInState(new CommandParameter("action","=","login"),\r
                               new CommandParameter("username","=",user.getName()),\r
@@ -93,7 +93,7 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
         user.clear();\r
       }\r
       pz2.resetSearchAndRecordCommands();\r
-      pzresp.resetAllSessionData();\r
+      pzresp.getSp().resetAuthAndBeyond(true);\r
       AuthCommand auth = pzreq.getSp().getAuth(); \r
       auth.setParameterInState(new CommandParameter("action","=","ipAuth"));\r
       ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);      \r
@@ -138,9 +138,9 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   public ClientCommandResponse postInit() throws UnsupportedEncodingException, IOException {    \r
     String initDocPath = pz2.getSpClient().getInitDocPaths().get(0);\r
     logger.info("Paths: " + pz2.getSpClient().getInitDocPaths());\r
-    logger.info("Path: " + initDocPath);\r
+    logger.info("Path: " + initDocPath);   \r
     pz2.resetSearchAndRecordCommands();\r
-    pzresp.resetAllSessionData();\r
+    pzresp.getSp().resetAuthAndBeyond(true);\r
     ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName());    \r
     return response;\r
   }\r
@@ -148,7 +148,7 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   @Override\r
   public HttpResponseWrapper postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException {    \r
     pz2.resetSearchAndRecordCommands();\r
-    pzresp.resetAllSessionData();\r
+    pzresp.getSp().resetAuthAndBeyond(true);\r
     HttpResponseWrapper response = pz2.getSpClient().postInitDoc(initDoc,includeDebug);    \r
     return response;\r
   }\r
index 1df2363..e076644 100644 (file)
@@ -16,8 +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.AuthResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.SpResponses;\r
 import com.indexdata.mkjsf.utils.Utils;\r
 \r
 @Named("pzresp") @SessionScoped\r
@@ -27,6 +26,7 @@ public class Responses implements Serializable {
   protected Map<String,ResponseDataObject> dataObjects = new ConcurrentHashMap<String,ResponseDataObject>();\r
   private static Logger logger = Logger.getLogger(Responses.class);\r
   private ErrorHelper errorHelper = null;\r
+  private SpResponses sp = null;\r
 \r
   public Responses() {    \r
   }\r
@@ -75,25 +75,23 @@ public class Responses implements Serializable {
     return error;         \r
   }\r
   \r
-  public void resetSearchResponses() {\r
+  public void resetSearchAndBeyond() {\r
     logger.debug("Resetting show,stat,termlist,bytarget,record,search response objects.");\r
     dataObjects.put("show", new ShowResponse());\r
     dataObjects.put("stat", new StatResponse());\r
     dataObjects.put("termlist", new TermListsResponse());\r
     dataObjects.put("bytarget", new ByTarget());\r
     dataObjects.put("record", new RecordResponse());\r
-    dataObjects.put("search", new SearchResponse());    \r
+    dataObjects.put("search", new SearchResponse());\r
+    getSp().resetSearchAndBeyond(false);\r
   }\r
   \r
-  public void resetAllSessionData () {\r
-    logger.debug("Resetting all response objects");\r
-    dataObjects = new ConcurrentHashMap<String,ResponseDataObject>();    \r
-    resetSearchResponses();\r
-    dataObjects.put("init", new InitResponse());\r
-    dataObjects.put("auth", new AuthResponse());\r
-    dataObjects.put("categories", new CategoriesResponse());\r
+  public void resetInitAndBeyond () {\r
+    dataObjects.put("init", new InitResponse());        \r
+    resetSearchAndBeyond();\r
+    getSp().resetInitAndBeyond(false);\r
   }\r
-  \r
+    \r
   public InitResponse getInit () {    \r
     return ((InitResponse) dataObjects.get("init"));\r
   }\r
@@ -130,17 +128,6 @@ public class Responses implements Serializable {
     return ((ByTarget) dataObjects.get("bytarget"));\r
   }\r
 \r
-  // Service Proxy extras   \r
-  public AuthResponse getAuth () {\r
-    return ((AuthResponse) dataObjects.get("auth"));\r
-  }\r
-\r
-  public CategoriesResponse getCategories() {\r
-    return ((CategoriesResponse) dataObjects.get("categories"));\r
-  }\r
-  // Service Proxy extras\r
-  \r
-\r
   public ResponseDataObject getResponseObject (String name) {\r
     return dataObjects.get(name);\r
   }\r
@@ -182,4 +169,8 @@ public class Responses implements Serializable {
     facesContext.responseComplete();\r
   }\r
   \r
+  public SpResponses getSp() {\r
+    return (sp == null ? new SpResponses(this) : sp);\r
+  }\r
+  \r
 }
\ No newline at end of file
index db58ca9..b5bb18c 100644 (file)
@@ -1,9 +1,64 @@
 package com.indexdata.mkjsf.pazpar2.data.sp;\r
 \r
-public class SpResponses {\r
+import java.io.Serializable;\r
 \r
-  public SpResponses() {\r
-    // TODO Auto-generated constructor stub\r
+import com.indexdata.mkjsf.pazpar2.data.Responses;\r
+\r
+public class SpResponses implements Serializable {\r
+  \r
+  private static final long serialVersionUID = -3831357590639961167L;\r
+  private Responses responses = null;  \r
+\r
+  public SpResponses(Responses responses) {\r
+    this.responses = responses;  \r
+  }\r
+  \r
+  /**\r
+   * Resets all responses from the search request to any request \r
+   * that can follow search (i.e. show and bytarget but not init or auth) \r
+   * @param includePazpar2Responses Set to true if the invocation should\r
+   *                                reset Pazpar2 responses \r
+   *                                (non-SP-specific responses) as well. \r
+   */\r
+  public void resetSearchAndBeyond(boolean includePazpar2Responses) {\r
+    if (includePazpar2Responses) {\r
+      responses.resetSearchAndBeyond();\r
+    }\r
+  }\r
+\r
+  /**\r
+   * Resets all responses from the init request to any request \r
+   * that can follow init (i.e. search and show but not auth) \r
+   * @param includePazpar2Responses Set to true if the invocation should\r
+   *                                reset Pazpar2 responses \r
+   *                                (non-SP-specific responses) as well. \r
+   */\r
+  public void resetInitAndBeyond (boolean includePazpar2Responses) {\r
+    responses.put("categories", new CategoriesResponse());\r
+    if (includePazpar2Responses) {\r
+      responses.resetInitAndBeyond();\r
+    }\r
+    resetSearchAndBeyond(includePazpar2Responses);    \r
+  }\r
+  \r
+  /**\r
+   * Resets all responses from the authentication request to any request \r
+   * that can follow authentication. \r
+   * @param includePazpar2Responses Set to true if the invocation should\r
+   *                                reset Pazpar2 responses \r
+   *                                (non-SP-specific responses) as well. \r
+   */\r
+  public void resetAuthAndBeyond (boolean includePazpar2Responses) {\r
+    responses.put("auth", new AuthResponse());\r
+    resetInitAndBeyond(includePazpar2Responses);    \r
+  }\r
+  \r
+  public AuthResponse getAuth () {\r
+    return ((AuthResponse) responses.getResponseObject("auth"));\r
+  }\r
+\r
+  public CategoriesResponse getCategories() {\r
+    return ((CategoriesResponse) responses.getResponseObject("categories"));\r
   }\r
 \r
 }\r