package com.indexdata.mkjsf.pazpar2.commands.sp;\r
\r
+import org.apache.log4j.Logger;\r
+\r
+import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;\r
+import com.indexdata.mkjsf.pazpar2.Pz2Service;\r
import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;\r
import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;\r
+import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject;\r
\r
+/**\r
+ * Represents a Service Proxy <code>auth</code> command. \r
+ * \r
+ * <p>Authenticates a user against a Pazpar2 Service Proxy</p>\r
+ * \r
+ * @author Niels Erik\r
+ *\r
+ */\r
public class AuthCommand extends Pazpar2Command implements ServiceProxyCommand {\r
\r
private static final long serialVersionUID = 5487611235664162578L;\r
+ private static Logger logger = Logger.getLogger(AuthCommand.class);\r
\r
public AuthCommand() {\r
super("auth");\r
}\r
\r
+ public SpResponseDataObject run() {\r
+ Pz2Service.get().resetSearchAndRecordCommands();\r
+ Pz2Service.get().getPzresp().getSp().resetAuthAndBeyond(true);\r
+ ClientCommandResponse response = (ClientCommandResponse) Pz2Service.get().getSearchClient().executeCommand(this); \r
+ String renamedResponse = renameResponseElement(response.getResponseString(), "auth"); \r
+ response.setResponseToParse(renamedResponse);\r
+ SpResponseDataObject responseObject = (SpResponseDataObject) ResponseParser.getParser().getDataObject(response); \r
+ if (ResponseParser.docTypes.contains(responseObject.getType())) {\r
+ Pz2Service.get().getPzresp().put(getCommandName(), responseObject);\r
+ }\r
+ if (responseObject.unsupportedCommand()) {\r
+ logger.error("auth command does not seem to be supported by this Service Proxy");\r
+ }\r
+ return responseObject;\r
+ }\r
+ \r
+ /**\r
+ * Normalizes the response XML for the benefit of the SAX parser that creates data objects. \r
+ * <p>The parser expects responses to have document element names corresponding to the names of\r
+ * the commands that created the responses.</p>\r
+ * \r
+ * @param responseString\r
+ * @param newName\r
+ * @return\r
+ */\r
+ private String renameResponseElement(String responseString, String newName) {\r
+ responseString = responseString.replace("<response>", "<" + newName + ">");\r
+ responseString = responseString.replace("</response>", "</" + newName + ">");\r
+ return responseString;\r
+ }\r
+\r
+ /**\r
+ * Sets Service Proxy command parameter <code>action</code>. See Service Proxy documentation for details. \r
+ */\r
public void setAction (String action) {\r
setParameterInState(new CommandParameter("action","=",action));\r
} \r
\r
+ /**\r
+ * Gets parameter value for <code>action</cod>\r
+ */\r
public String getAction () {\r
return getParameterValue("action");\r
}\r
\r
+ /**\r
+ * Sets Service Proxy command parameter <code>username</code>. See Service Proxy documentation for details. \r
+ */\r
public void setUsername(String username) {\r
setParameterInState(new CommandParameter("username","=",username));\r
}\r
\r
+ /**\r
+ * Gets parameter value for <code>username</cod>\r
+ */\r
public String getUsername () {\r
return getParameterValue("username");\r
}\r
- \r
+ \r
+ /**\r
+ * Sets Service Proxy command parameter <code>password</code>. See Service Proxy documentation for details. \r
+ */\r
public void setPassword (String password) {\r
setParameterInState(new CommandParameter("password","=",password));\r
}\r
\r
+ /**\r
+ * Gets parameter value for <code>password</cod>\r
+ */\r
public String getPassword () {\r
return getParameterValue("password");\r
}\r