X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2FServiceProxyExtensions.java;h=f09176d4e4221d9c3548fc3037dbc8a24067b567;hb=d400a082759c1a58cb79713f04ab2f3d62bca97c;hp=04343c3d7360c8b04c40aeb184da673fda1747c0;hpb=624e99924920a462fba11c993daf9813c994ae07;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 04343c3..f09176d 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/ServiceProxyExtensions.java @@ -9,15 +9,23 @@ import javax.inject.Inject; import javax.inject.Named; 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.Pazpar2Responses; +import com.indexdata.mkjsf.pazpar2.data.AuthResponse; +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.data.sp.CategoriesResponse; import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser; +import com.indexdata.mkjsf.utils.Utils; @Named("pz2x") @SessionScoped -public class ServiceProxyExtensions implements ServiceProxyInterface, Serializable { +public class ServiceProxyExtensions implements ServiceProxyInterface, Serializable { private static final long serialVersionUID = 4221824985678758225L; private static Logger logger = Logger.getLogger(ServiceProxyExtensions.class); @@ -29,7 +37,7 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializa @Inject ServiceProxyUser user; @Inject Pz2Bean pz2; @Inject Pazpar2Commands pzreq; - @Inject Pazpar2Responses pzresp; + @Inject Responses pzresp; public ServiceProxyExtensions() { @@ -37,7 +45,8 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializa // 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."); @@ -48,24 +57,67 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializa login("dummy"); } } + */ - @Override + + @Override public String login(String navigateTo) { logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient()); - pz2.getSpClient().authenticate(user); - pz2.resetSearchAndResults(); + pz2.resetSearchAndRecordCommands(); + pzresp.resetAllSessionData(); + AuthCommand auth = pzreq.getSp().getAuth(); + auth.setParametersInState(new CommandParameter("action","=","login"), + new CommandParameter("username","=",user.getName()), + new CommandParameter("password","=",user.getPassword())); + ClientCommandResponse commandResponse = pz2.getSpClient().send(auth); + String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth"); + commandResponse.setResponseToParse(renamedResponse); + AuthResponse responseObject = (AuthResponse) ResponseParser.getParser().getDataObject(commandResponse); + if (ResponseParser.docTypes.contains(responseObject.getType())) { + pzresp.put(auth.getCommandName(), responseObject); + } + String responseStr = commandResponse.getResponseString(); + logger.info(responseStr); + if (responseStr.contains("FAIL")) { + user.credentialsAuthenticationSucceeded(false); + } else { + user.credentialsAuthenticationSucceeded(true); + } return navigateTo; } + public void ipAuthenticate (ServiceProxyUser user) { if (!user.isIpAuthenticated()) { if (user.isAuthenticated()) { user.clear(); } - pz2.resetSearchAndResults(); - pz2.getSpClient().ipAuthenticate(user); + pz2.resetSearchAndRecordCommands(); + pzresp.resetAllSessionData(); + AuthCommand auth = pzreq.getSp().getAuth(); + auth.setParameterInState(new CommandParameter("action","=","ipAuth")); + 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); + if (responseStr.contains("FAIL")) { + user.credentialsAuthenticationSucceeded(false); + } else { + user.credentialsAuthenticationSucceeded(true); + } } } + + private String renameResponseElement(String responseString, String newName) { + responseString = responseString.replace("", "<" + newName + ">"); + responseString = responseString.replace("", ""); + return responseString; + } public String getInitDocPath () { return pz2.getSpClient().getConfiguration().get("INIT_DOC_PATH"); @@ -87,15 +139,17 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializa String initDocPath = pz2.getSpClient().getInitDocPaths().get(0); logger.info("Paths: " + pz2.getSpClient().getInitDocPaths()); logger.info("Path: " + initDocPath); - pz2.resetSearchAndResults(); + pz2.resetSearchAndRecordCommands(); + pzresp.resetAllSessionData(); ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName()); return response; } @Override - public ClientCommandResponse postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException { - pz2.resetSearchAndResults(); - ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDoc,includeDebug); + public HttpResponseWrapper postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException { + pz2.resetSearchAndRecordCommands(); + pzresp.resetAllSessionData(); + HttpResponseWrapper response = pz2.getSpClient().postInitDoc(initDoc,includeDebug); return response; } @@ -104,8 +158,50 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializa return initDocResponse; } + public void setUploadedInitDoc (UploadedFile uploadedFile) { + initDocUpload.setUploadedFile(uploadedFile); + } + + public UploadedFile getUploadedInitDoc () { + return initDocUpload.getUploadedFile(); + } + + public void submitInitDoc () throws IOException { + ClientCommandResponse response = (ClientCommandResponse) initDocUpload.submit(); + ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response); + logger.info("Putting init response to : " + Utils.objectId(pzresp)); + pzresp.put("init", responseObject); + } + + public void setIncludeInitDocDebug(boolean bool) { + logger.info(Utils.objectId(this) + " setting debug to " + bool); + initDocUpload.setIncludeDebug(bool); + } + + public boolean getIncludeInitDocDebug() { + return initDocUpload.getIncludeDebug(); + } + + // TODO: Remove when possible public InitDocUpload getInitDocUpload () { return initDocUpload; } + public CategoriesResponse getCategories () { + ResponseDataObject response = pz2.doCommand("categories"); + 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(); + } + } + } + + }