Moves Auth response class to SP data package
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / ServiceProxyExtensions.java
index 0ee2825..3c0da10 100644 (file)
@@ -16,10 +16,11 @@ import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;
 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
 import com.indexdata.mkjsf.pazpar2.commands.sp.AuthCommand;\r
 import com.indexdata.mkjsf.pazpar2.commands.sp.InitDocUpload;\r
-import com.indexdata.mkjsf.pazpar2.data.AuthResponse;\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
+import com.indexdata.mkjsf.pazpar2.data.sp.AuthResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
 import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser;\r
 import com.indexdata.mkjsf.utils.Utils;\r
 \r
@@ -45,18 +46,18 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
     //stateMgr.addStateListener(this);\r
   }\r
    \r
-  /*\r
+\r
   public void login(String un, String pw) {\r
-    if (user.isAuthenticated() && user.getName().equals(un) && pz2.spClient.checkAuthentication(user)) {\r
+    if (user.isAuthenticated() && user.getName().equals(un) /* && pz2.spClient.checkAuthentication(user) */) {\r
       logger.info("Repeat request from UI to authenticate user. Auth verified for given user name so skipping log-in.");\r
     } else {\r
       logger.info("doing un/pw login");\r
       user.setName(un);\r
       user.setPassword(pw);\r
-      login("dummy");\r
+      login("");\r
     }\r
   }\r
-  */\r
+\r
 \r
   \r
   @Override  \r
@@ -69,7 +70,9 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
                               new CommandParameter("username","=",user.getName()),\r
                               new CommandParameter("password","=",user.getPassword()));\r
     ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);\r
-    AuthResponse responseObject = (AuthResponse) (ResponseParser.getParser().getDataObject(commandResponse.getResponseString()));\r
+    String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth");\r
+    commandResponse.setResponseToParse(renamedResponse);\r
+    AuthResponse responseObject = (AuthResponse) ResponseParser.getParser().getDataObject(commandResponse);\r
     if (ResponseParser.docTypes.contains(responseObject.getType())) {\r
       pzresp.put(auth.getCommandName(), responseObject);\r
     }\r
@@ -93,8 +96,10 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
       pzresp.resetAllSessionData();\r
       AuthCommand auth = pzreq.getSp().getAuth(); \r
       auth.setParameterInState(new CommandParameter("action","=","ipAuth"));\r
-      ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);\r
-      AuthResponse responseObject = (AuthResponse) (ResponseParser.getParser().getDataObject(commandResponse.getResponseString()));\r
+      ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);      \r
+      String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth");\r
+      commandResponse.setResponseToParse(renamedResponse);\r
+      ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(commandResponse);\r
       if (ResponseParser.docTypes.contains(responseObject.getType())) {\r
         pzresp.put(auth.getCommandName(), responseObject);\r
       }\r
@@ -107,6 +112,12 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
       }      \r
     }\r
   }\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
   public String getInitDocPath () {\r
     return pz2.getSpClient().getConfiguration().get("INIT_DOC_PATH");\r
@@ -156,8 +167,8 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   }\r
   \r
   public void submitInitDoc () throws IOException {\r
-    HttpResponseWrapper response =  initDocUpload.submit();\r
-    ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response.getResponseString());\r
+    ClientCommandResponse response =  (ClientCommandResponse) initDocUpload.submit();\r
+    ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response);\r
     logger.info("Putting init response to : " + Utils.objectId(pzresp));\r
     pzresp.put("init", responseObject);\r
   }\r
@@ -171,12 +182,30 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
     return initDocUpload.getIncludeDebug();\r
   }\r
   \r
-  // TODO: Remove when possible\r
+  // TODO: Remove when obsolete\r
   public InitDocUpload getInitDocUpload () {\r
     return initDocUpload;\r
   }\r
-\r
   \r
+  public CategoriesResponse getCategories () {\r
+    if (pz2.isServiceProxyService()) {\r
+      ResponseDataObject response = pz2.doCommand("categories");\r
+      if (response.hasApplicationError()) {\r
+        logger.debug(response.getXml());\r
+        return new CategoriesResponse();\r
+      } else {\r
+        try {\r
+          return (CategoriesResponse) response;\r
+        } catch (Exception e) {\r
+          e.printStackTrace();\r
+          logger.debug(response.getXml());\r
+          return new CategoriesResponse();\r
+        }\r
+      }\r
+    } else {\r
+      return new CategoriesResponse();\r
+    }\r
+  }\r
   \r
   \r
 }\r