X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2FServiceProxyExtensions.java;h=6aeb6ffd174c8ab5825c266dc337f713c8804374;hb=dfcad4c5faeefc5915130c99f1508dee59820f2e;hp=560edb6de631a219b51968a47b71fb7ce2a9bfed;hpb=16f342276da7b336c96e285005db5c1401f2a6c6;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java b/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java index 560edb6..6aeb6ff 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java @@ -12,12 +12,15 @@ import org.apache.log4j.Logger; import org.apache.myfaces.custom.fileupload.UploadedFile; import com.indexdata.mkjsf.config.ConfigurationReader; +import com.indexdata.mkjsf.pazpar2.commands.CommandParameter; import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands; +import com.indexdata.mkjsf.pazpar2.commands.sp.AuthCommand; import com.indexdata.mkjsf.pazpar2.commands.sp.InitDocUpload; import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject; import com.indexdata.mkjsf.pazpar2.data.ResponseParser; import com.indexdata.mkjsf.pazpar2.data.Responses; -import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser; +import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse; +import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject; import com.indexdata.mkjsf.utils.Utils; @Named("pz2x") @SessionScoped @@ -30,7 +33,6 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab private InitDocUpload initDocUpload; @Inject ConfigurationReader configurator; - @Inject ServiceProxyUser user; @Inject Pz2Bean pz2; @Inject Pazpar2Commands pzreq; @Inject Responses pzresp; @@ -41,36 +43,50 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab // TODO: //stateMgr.addStateListener(this); } - - public void login(String un, String pw) { - if (user.isAuthenticated() && user.getName().equals(un) && pz2.spClient.checkAuthentication(user)) { - logger.info("Repeat request from UI to authenticate user. Auth verified for given user name so skipping log-in."); - } else { - logger.info("doing un/pw login"); - user.setName(un); - user.setPassword(pw); - login("dummy"); + + public void authenticate() { + pz2.resetSearchAndRecordCommands(); + pzresp.getSp().resetAuthAndBeyond(true); + AuthCommand auth = pzreq.getSp().getAuth(); + ClientCommandResponse commandResponse = pz2.getSpClient().send(auth); + String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth"); + commandResponse.setResponseToParse(renamedResponse); + ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(commandResponse); + if (ResponseParser.docTypes.contains(responseObject.getType())) { + pzresp.put(auth.getCommandName(), responseObject); } + String responseStr = commandResponse.getResponseString(); + logger.info(responseStr); } - - @Override + + public void login(String un, String pw) { + login(un,pw,""); + } + + public void login(String un, String pw, String navigateTo) { + pzreq.getSp().getAuth().setUsername(un); + pzreq.getSp().getAuth().setPassword(pw); + login(""); + } + + @Override public String login(String navigateTo) { - logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient()); - pz2.resetSearchAndRecordCommands(); - pzresp.resetAllSessionData(); - pz2.getSpClient().authenticate(user); + AuthCommand auth = pzreq.getSp().getAuth(); + auth.setParameterInState(new CommandParameter("action","=","login")); + authenticate(); return navigateTo; } + + public void ipAuthenticate () { + AuthCommand auth = pzreq.getSp().getAuth(); + auth.setParameterInState(new CommandParameter("action","=","ipAuth")); + authenticate(); + } - public void ipAuthenticate (ServiceProxyUser user) { - if (!user.isIpAuthenticated()) { - if (user.isAuthenticated()) { - user.clear(); - } - pz2.resetSearchAndRecordCommands(); - pzresp.resetAllSessionData(); - pz2.getSpClient().ipAuthenticate(user); - } + private String renameResponseElement(String responseString, String newName) { + responseString = responseString.replace("", "<" + newName + ">"); + responseString = responseString.replace("", ""); + return responseString; } public String getInitDocPath () { @@ -92,9 +108,9 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab public ClientCommandResponse postInit() throws UnsupportedEncodingException, IOException { String initDocPath = pz2.getSpClient().getInitDocPaths().get(0); logger.info("Paths: " + pz2.getSpClient().getInitDocPaths()); - logger.info("Path: " + initDocPath); + logger.info("Path: " + initDocPath); pz2.resetSearchAndRecordCommands(); - pzresp.resetAllSessionData(); + pzresp.getSp().resetAuthAndBeyond(true); ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName()); return response; } @@ -102,7 +118,7 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab @Override public HttpResponseWrapper postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException { pz2.resetSearchAndRecordCommands(); - pzresp.resetAllSessionData(); + pzresp.getSp().resetAuthAndBeyond(true); HttpResponseWrapper response = pz2.getSpClient().postInitDoc(initDoc,includeDebug); return response; } @@ -121,8 +137,8 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab } public void submitInitDoc () throws IOException { - HttpResponseWrapper response = initDocUpload.submit(); - ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response.getResponseString()); + ClientCommandResponse response = (ClientCommandResponse) initDocUpload.submit(); + ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response); logger.info("Putting init response to : " + Utils.objectId(pzresp)); pzresp.put("init", responseObject); } @@ -136,12 +152,35 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab return initDocUpload.getIncludeDebug(); } - // TODO: Remove when possible + // TODO: Remove when obsolete public InitDocUpload getInitDocUpload () { return initDocUpload; } - + public CategoriesResponse getCategories () { + if (pz2.isServiceProxyService()) { + SpResponseDataObject response = (SpResponseDataObject) pz2.doCommand("categories"); + if (response.unsupportedCommand()) { + logger.warn("Command 'categories' not supported by this Service Proxy"); + return new CategoriesResponse(); + } else { + if (response.hasApplicationError()) { + logger.debug(response.getXml()); + return new CategoriesResponse(); + } else { + try { + return (CategoriesResponse) response; + } catch (Exception e) { + e.printStackTrace(); + logger.debug(response.getXml()); + return new CategoriesResponse(); + } + } + } + } else { + return new CategoriesResponse(); + } + } }