From 48bf757c2b4714b0b5155605424eb106cbe4693a Mon Sep 17 00:00:00 2001
From: gakin <gakin>
Date: Mon, 27 Jun 2016 11:41:50 +0000
Subject: [PATCH] SSDM-3820 : S233 DLCM OpenbisSync - Changes necessary for
 DLCM data source servlet

SVN: 36754
---
 .../dss/generic/server/ConfigParameters.java       |  2 +-
 .../server/oaipmh/JythonBasedRequestHandler.java   | 14 ++++++++++++--
 .../dss/generic/server/oaipmh/OaipmhServlet.java   |  5 +++++
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java
index 1ee1f6f31ca..ef6ccbacc89 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java
@@ -88,7 +88,7 @@ public final class ConfigParameters implements IServletPropertiesManager
 
     static final String PLUGIN_SERVICE_CLASS_KEY = "class";
 
-    static final String PLUGIN_SERVICE_PATH_KEY = "path";
+    public static final String PLUGIN_SERVICE_PATH_KEY = "path";
 
     /**
      * The path that contains the jars for webstart applications. This is used to initialize ResourceHandler, which is used to serve the jars.
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/JythonBasedRequestHandler.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/JythonBasedRequestHandler.java
index 3acdc7bb0c8..c0ff128f8e9 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/JythonBasedRequestHandler.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/JythonBasedRequestHandler.java
@@ -68,7 +68,9 @@ public class JythonBasedRequestHandler implements IRequestHandler
 
     private static final String PROPERTIES_VARIABLE_NAME = "properties";
 
-    private Properties properties;
+    private static final String USER_SESSION_TOKEN = "userSessionToken";
+
+    protected Properties properties;
 
     private String scriptPath;
 
@@ -122,7 +124,9 @@ public class JythonBasedRequestHandler implements IRequestHandler
                     new HashMap<String, String>(), service.createEMailClient(), session.getUserName(), session.getUserEmail(),
                     session.getSessionToken());
             IRequestHandlerPluginScriptRunner runner = factory.createRequestHandlerPluginRunner(context);
-            runner.setVariable(PROPERTIES_VARIABLE_NAME, properties);
+
+            setVariables(runner, session);
+
             runner.handle(req, resp);
         } finally
         {
@@ -130,6 +134,12 @@ public class JythonBasedRequestHandler implements IRequestHandler
         }
     }
 
+    protected void setVariables(IRequestHandlerPluginScriptRunner runner, SessionContextDTO session)
+    {
+        runner.setVariable(PROPERTIES_VARIABLE_NAME, properties);
+        runner.setVariable(USER_SESSION_TOKEN, session.getSessionToken());
+    }
+
     protected IPluginScriptRunnerFactory getScriptRunnerFactory(String scriptPath)
     {
         return new PluginScriptRunnerFactory(scriptPath);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/OaipmhServlet.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/OaipmhServlet.java
index 48f61c3ea3b..8e231923cb4 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/OaipmhServlet.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/oaipmh/OaipmhServlet.java
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import ch.systemsx.cisd.openbis.dss.generic.server.ConfigParameters;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 
 /**
@@ -104,6 +105,10 @@ public class OaipmhServlet extends HttpServlet
                     Enumeration<String> parameterNames = config.getInitParameterNames();
                     String handlerParameterNamePrefix = handlerParameterName + ".";
 
+                    // pass in the mandatory service plugin property "path"
+                    properties.setProperty("path", config.getInitParameter(ConfigParameters.PLUGIN_SERVICE_PATH_KEY));
+
+                    // pass in request-handler plugin properties
                     while (parameterNames.hasMoreElements())
                     {
                         String parameterName = parameterNames.nextElement();
-- 
GitLab