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
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
}\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
}\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
\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