From deabd96044f622fdb3d31368da5416027a40d6c3 Mon Sep 17 00:00:00 2001
From: anttil <anttil>
Date: Tue, 19 Feb 2013 14:57:37 +0000
Subject: [PATCH] BIS-139 / SP-510: Auto-symlink startup script

SVN: 28397
---
 datastore_server/dist/autosymlink.sh          | 27 +++++++++++++++++++
 datastore_server/dist/datastore_server.sh     |  1 +
 .../utils/DssPropertyParametersUtil.java      | 26 ++++++++++++++++++
 3 files changed, 54 insertions(+)
 create mode 100755 datastore_server/dist/autosymlink.sh

diff --git a/datastore_server/dist/autosymlink.sh b/datastore_server/dist/autosymlink.sh
new file mode 100755
index 00000000000..86510941218
--- /dev/null
+++ b/datastore_server/dist/autosymlink.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+pushd . > /dev/null
+cd `dirname $0`
+
+deleted="false"
+java -cp "lib/datastore_server.jar:lib/*" ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil 2>/dev/null|while read line
+do	
+
+	if [ "$deleted" = "false" ];
+	then
+		rm -f lib/autolink-*.jar;
+		deleted="true";
+	fi;
+
+	dropbox=`echo $line|cut -d" " -f1`;
+        folder=`echo $line|cut -d" " -f2`;
+
+	if [ -d ${folder}/lib ];
+	then
+		for jar in `ls ${folder}/lib/*.jar`;
+		do
+			echo "# ln -s $jar `pwd`/lib/autolink-${dropbox}-`basename $jar`";
+			ln -s $jar `pwd`/lib/autolink-${dropbox}-`basename $jar`;
+		done;
+	fi;
+done
+popd > /dev/null
diff --git a/datastore_server/dist/datastore_server.sh b/datastore_server/dist/datastore_server.sh
index b8e1260d790..8eb4c74317b 100755
--- a/datastore_server/dist/datastore_server.sh
+++ b/datastore_server/dist/datastore_server.sh
@@ -161,6 +161,7 @@ case "$command" in
 
     echo -n "Starting Data Store Server "
     rotateLogFiles $LOGFILE $MAXLOGS
+    ./autosymlink.sh
     shift 1
     ${CMD} "$@" > $STARTUPLOG 2>&1 & echo $! > $PIDFILE
     if [ $? -eq 0 ]; then
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
index 477c3ed80cf..dc5e695b484 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.generic.shared.utils;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Properties;
@@ -257,4 +258,29 @@ public class DssPropertyParametersUtil
         ConfigurationFailureException e = new ConfigurationFailureException(template.createText());
         return e;
     }
+
+    public static void main(String[] args)
+    {
+        ExtendedProperties properties =
+                DssPropertyParametersUtil
+                        .loadProperties(DssPropertyParametersUtil.SERVICE_PROPERTIES_FILE);
+        CorePluginsUtils.addCorePluginsProperties(properties, ScannerType.DSS);
+        ExtendedProperties serviceProperties =
+                DssPropertyParametersUtil.extendProperties(properties);
+        CorePluginsInjector injector =
+                new CorePluginsInjector(ScannerType.DSS, DssPluginType.values());
+        Map<String, File> pluginFolders =
+                injector.injectCorePlugins(serviceProperties);
+
+        try
+        {
+            for (String key : pluginFolders.keySet())
+            {
+                System.out.println(key + " " + pluginFolders.get(key).getCanonicalPath());
+            }
+        } catch (IOException ex)
+        {
+            ex.printStackTrace();
+        }
+    }
 }
-- 
GitLab