1 package com.indexdata.mkjsf.pazpar2.commands.sp;
\r
3 import org.apache.log4j.Logger;
\r
5 import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;
\r
6 import com.indexdata.mkjsf.pazpar2.Pz2Service;
\r
7 import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;
\r
8 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;
\r
9 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;
\r
10 import com.indexdata.mkjsf.pazpar2.data.sp.AuthResponse;
\r
11 import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject;
\r
14 * Represents a Service Proxy <code>auth</code> command, can be accessed by <code>pzreq.sp.auth</code>
\r
16 * <p>Authenticates a user against a Pazpar2 Service Proxy</p>
\r
18 * @author Niels Erik
\r
21 public class AuthCommand extends Pazpar2Command implements ServiceProxyCommand {
\r
23 private static final long serialVersionUID = 5487611235664162578L;
\r
24 private static Logger logger = Logger.getLogger(AuthCommand.class);
\r
26 public AuthCommand() {
\r
30 public SpResponseDataObject run() {
\r
31 Pz2Service.get().resetSearchAndRecordCommands();
\r
32 Pz2Service.get().getPzresp().getSp().resetAuthAndBeyond(true);
\r
33 ClientCommandResponse response = (ClientCommandResponse) Pz2Service.get().getSearchClient().executeCommand(this);
\r
34 String renamedResponse = renameResponseElement(response.getResponseString(), "auth");
\r
35 response.setResponseToParse(renamedResponse);
\r
36 AuthResponse responseObject = (AuthResponse) ResponseParser.getParser().getDataObject(response);
\r
37 if (ResponseParser.docTypes.contains(responseObject.getType())) {
\r
38 Pz2Service.get().getPzresp().put(getCommandName(), responseObject);
\r
40 if (responseObject.unsupportedCommand()) {
\r
41 logger.error("auth command does not seem to be supported by this Service Proxy");
\r
43 return responseObject;
\r
47 * Normalizes the response XML for the benefit of the SAX parser that creates data objects.
\r
48 * <p>The parser expects responses to have document element names corresponding to the names of
\r
49 * the commands that created the responses.</p>
\r
51 * @param responseString
\r
55 private String renameResponseElement(String responseString, String newName) {
\r
56 responseString = responseString.replace("<response>", "<" + newName + ">");
\r
57 responseString = responseString.replace("</response>", "</" + newName + ">");
\r
58 return responseString;
\r
62 * Sets Service Proxy command parameter <code>action</code>. See Service Proxy documentation for details.
\r
64 public void setAction (String action) {
\r
65 setParameterInState(new CommandParameter("action","=",action));
\r
69 * Gets parameter value for <code>action</cod>
\r
71 public String getAction () {
\r
72 return getParameterValue("action");
\r
76 * Sets Service Proxy command parameter <code>username</code>. See Service Proxy documentation for details.
\r
78 public void setUsername(String username) {
\r
79 setParameterInState(new CommandParameter("username","=",username));
\r
83 * Gets parameter value for <code>username</cod>
\r
85 public String getUsername () {
\r
86 return getParameterValue("username");
\r
90 * Sets Service Proxy command parameter <code>password</code>. See Service Proxy documentation for details.
\r
92 public void setPassword (String password) {
\r
93 setParameterInState(new CommandParameter("password","=",password));
\r
97 * Gets parameter value for <code>password</cod>
\r
99 public String getPassword () {
\r
100 return getParameterValue("password");
\r
103 public AuthCommand copy () {
\r
104 AuthCommand newCommand = new AuthCommand();
\r
105 for (String parameterName : parameters.keySet()) {
\r
106 newCommand.setParameterInState(parameters.get(parameterName).copy());
\r
112 public ServiceProxyCommand getSp() {
\r
117 public boolean spOnly() {
\r