Moves request logic from pz2bean to individual commands
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / Pazpar2Command.java
index 06aebf3..5979ad3 100644 (file)
@@ -9,9 +9,11 @@ import org.apache.log4j.Logger;
 import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;\r
 import com.indexdata.mkjsf.pazpar2.HttpResponseWrapper;\r
 import com.indexdata.mkjsf.pazpar2.Pz2Bean;\r
+import com.indexdata.mkjsf.pazpar2.SearchClient;\r
 import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
+import com.indexdata.mkjsf.pazpar2.data.Responses;\r
 \r
 public abstract class Pazpar2Command implements Serializable  {\r
   \r
@@ -20,8 +22,7 @@ public abstract class Pazpar2Command implements Serializable  {
   protected String name = "";\r
   protected Map<String,CommandParameter> parameters = new HashMap<String,CommandParameter>();  \r
   \r
-  public Pazpar2Command () {\r
-    \r
+  public Pazpar2Command () {    \r
   }\r
   \r
   public void setCommandName(String name) {\r
@@ -39,14 +40,29 @@ public abstract class Pazpar2Command implements Serializable  {
   }\r
   \r
   public ResponseDataObject run() {\r
-    logger.info("Running " + getCommandName() + " using " + Pz2Bean.get().getSearchClient());    \r
-    HttpResponseWrapper httpResponse = Pz2Bean.get().getSearchClient().executeCommand(this);\r
+    return run(Pz2Bean.get().getSearchClient(),\r
+               Pz2Bean.get().getPzresp());\r
+  }\r
+  \r
+  /**\r
+   * For running the command in a thread. Client and Responses must be \r
+   * provided because at this point the CDI bean cannot be retrieved \r
+   * from within a thread.\r
+   * \r
+   * @param client\r
+   * @param pzresp\r
+   * @return\r
+   */\r
+  public ResponseDataObject run(SearchClient client,Responses pzresp) {\r
+    logger.info("Running " + getCommandName() + " using " + client);    \r
+    HttpResponseWrapper httpResponse = client.executeCommand(this);\r
     logger.info("Parsing response for " + getCommandName());\r
     ResponseDataObject responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse) httpResponse);\r
     logger.info("Storing response for " + getCommandName());\r
-    Pz2Bean.get().getPzresp().put(getCommandName(), responseObject);\r
-    return responseObject;\r
+    pzresp.put(getCommandName(), responseObject);\r
+    return responseObject;    \r
   }\r
+  \r
     \r
   public void setParameter (CommandParameter parameter) {\r
     Pazpar2Command copy = this.copy();\r
@@ -143,8 +159,7 @@ public abstract class Pazpar2Command implements Serializable  {
   }\r
 \r
   public String getParameterValue(String parameterName) {\r
-    return getParameter(parameterName)==null ? "" : getParameter(parameterName).getValueWithExpressions();\r
-    \r
+    return getParameter(parameterName)==null ? "" : getParameter(parameterName).getValueWithExpressions();    \r
   }\r
 \r
   public String getUrlEncodedParameterValue(String parameterName) {\r
@@ -161,11 +176,6 @@ public abstract class Pazpar2Command implements Serializable  {
   \r
   private void checkInState(Pazpar2Command command) {\r
     Pz2Bean.get().getStateMgr().checkIn(command);\r
-    // if (stateMgr() != null) {\r
-    //   stateMgr().checkIn(command);\r
-    // } else {\r
-    //   logger.info("Command '" + command.getCommandName() + "' not affecting state (history) as no state manager was defined for this command.");\r
-    // }\r
   }\r
   \r
   public abstract ServiceProxyCommand getSp();\r