From a9327fccf2bfd54f44d278c40547e4f8c116b800 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 23 Feb 2012 11:25:54 +0000
Subject: [PATCH] LMS-2612 CorePluginScanner: Moved from package server ->
 shared. Ignore plugin versions which do not have subfolder specified
 ScannerType.

SVN: 24535
---
 .../shared/utils/CorePluginsInjector.java     |  2 +-
 .../core-plugins/plugin-X/17/dss/.gitignore   |  0
 .../core-plugins/plugin-Y/2/dss/.gitignore    |  0
 .../openbis/generic/server/CommonServer.java  |  2 +-
 .../generic/server/CommonServerLogger.java    |  2 +-
 .../server/ICommonServerForInternalUse.java   |  2 +-
 .../server/business/bo/CorePluginTable.java   |  2 +-
 .../server/business/bo/ICorePluginTable.java  |  2 +-
 .../coreplugin/CorePluginRegistrator.java     |  3 +-
 .../coreplugin/CorePluginScanner.java         |  8 +++-
 .../coreplugin/ICorePluginResourceLoader.java |  2 +-
 .../business/bo/CorePluginTableTest.java      |  2 +-
 .../coreplugin/CorePluginScannerTest.java     | 37 +++++++++++++++++--
 13 files changed, 50 insertions(+), 14 deletions(-)
 create mode 100644 openbis/resource/test-data/core-plugins/plugin-X/17/dss/.gitignore
 create mode 100644 openbis/resource/test-data/core-plugins/plugin-Y/2/dss/.gitignore
 rename openbis/source/java/ch/systemsx/cisd/openbis/generic/{server => shared}/coreplugin/CorePluginScanner.java (95%)
 rename openbis/source/java/ch/systemsx/cisd/openbis/generic/{server => shared}/coreplugin/ICorePluginResourceLoader.java (94%)
 rename openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/{server => shared}/coreplugin/CorePluginScannerTest.java (68%)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/CorePluginsInjector.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/CorePluginsInjector.java
index 451b9dc5b4e..b32f6d88c35 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/CorePluginsInjector.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/CorePluginsInjector.java
@@ -42,8 +42,8 @@ import ch.systemsx.cisd.common.logging.LogLevel;
 import ch.systemsx.cisd.common.maintenance.MaintenanceTaskUtils;
 import ch.systemsx.cisd.common.utilities.PropertyParametersUtil;
 import ch.systemsx.cisd.openbis.dss.generic.shared.Constants;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.CorePluginScanner;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner;
 
 /**
  * 
diff --git a/openbis/resource/test-data/core-plugins/plugin-X/17/dss/.gitignore b/openbis/resource/test-data/core-plugins/plugin-X/17/dss/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/openbis/resource/test-data/core-plugins/plugin-Y/2/dss/.gitignore b/openbis/resource/test-data/core-plugins/plugin-Y/2/dss/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
index 39965fa5e99..a694f573433 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
@@ -75,7 +75,6 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.dynamic_property.calc
 import ch.systemsx.cisd.openbis.generic.server.business.bo.dynamic_property.calculator.api.IEntityAdaptor;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataStoreDAO;
@@ -176,6 +175,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplaceme
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IPerson;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentHolderPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AuthorizationGroupPE;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java
index 52d5ba2a238..65c0312707d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java
@@ -25,7 +25,6 @@ import org.apache.log4j.Level;
 
 import ch.systemsx.cisd.authentication.ISessionManager;
 import ch.systemsx.cisd.common.spring.IInvocationLoggerContext;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.AbstractServerLogger;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
@@ -98,6 +97,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ICommonServerForInternalUse.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ICommonServerForInternalUse.java
index 7caf5c64400..43fccb94e9e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ICommonServerForInternalUse.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ICommonServerForInternalUse.java
@@ -20,10 +20,10 @@ import java.util.List;
 
 import org.springframework.transaction.annotation.Transactional;
 
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTable.java
index c8b54466950..fe1134ae8e4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTable.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTable.java
@@ -28,11 +28,11 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.logging.LogLevel;
 import ch.systemsx.cisd.openbis.generic.server.coreplugin.AsCorePluginPaths;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.IMasterDataScriptRegistrationRunner;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.MasterDataRegistrationException;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.CorePluginPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
 import ch.systemsx.cisd.openbis.generic.shared.translator.CorePluginTranslator;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICorePluginTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICorePluginTable.java
index 2e93f8c05bf..7f617539d4d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICorePluginTable.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICorePluginTable.java
@@ -18,8 +18,8 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo;
 
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader;
 
 /**
  * @author Kaloyan Enimanev
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginRegistrator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginRegistrator.java
index fcb9212dd34..8073eeabff2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginRegistrator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginRegistrator.java
@@ -25,8 +25,9 @@ import org.springframework.beans.factory.InitializingBean;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.openbis.generic.server.ICommonServerForInternalUse;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.CorePluginScanner.ScannerType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner.ScannerType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 import ch.systemsx.cisd.openbis.generic.shared.util.ServerUtils;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginScanner.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/CorePluginScanner.java
similarity index 95%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginScanner.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/CorePluginScanner.java
index ce7f073557d..cc8c756d65a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginScanner.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/CorePluginScanner.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.coreplugin;
+package ch.systemsx.cisd.openbis.generic.shared.coreplugin;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -120,7 +120,11 @@ public class CorePluginScanner implements ICorePluginResourceLoader
             if (isValidVersionDir(versionDir))
             {
                 CorePlugin pluginVersion = createPlugin(pluginRootDir, versionDir);
-                allVersionsForPlugin.add(pluginVersion);
+                File folder = getFolderForPlugin(pluginVersion);
+                if (folder.exists())
+                {
+                    allVersionsForPlugin.add(pluginVersion);
+                }
             } else
             {
                 log.log(LogLevel.WARN, String.format("Invalid version '%s' for plugin '%s'. "
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/ICorePluginResourceLoader.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/ICorePluginResourceLoader.java
similarity index 94%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/ICorePluginResourceLoader.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/ICorePluginResourceLoader.java
index 4ea6ee6974f..0985b901cc0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/ICorePluginResourceLoader.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/ICorePluginResourceLoader.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.coreplugin;
+package ch.systemsx.cisd.openbis.generic.shared.coreplugin;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTableTest.java
index 1f7217542ab..53d92c077b8 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTableTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/CorePluginTableTest.java
@@ -29,11 +29,11 @@ import org.testng.annotations.Test;
 import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.test.RecordingMatcher;
 import ch.systemsx.cisd.openbis.generic.server.coreplugin.AsCorePluginPaths;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.IMasterDataScriptRegistrationRunner;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.MasterDataRegistrationException;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.MasterDataTransactionErrors;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.CorePluginPE;
 
 /**
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginScannerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/CorePluginScannerTest.java
similarity index 68%
rename from openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginScannerTest.java
rename to openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/CorePluginScannerTest.java
index e570257034b..74077f5b9a0 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginScannerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/coreplugin/CorePluginScannerTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.server.coreplugin;
+package ch.systemsx.cisd.openbis.generic.shared.coreplugin;
 
 import java.io.File;
 import java.io.FileFilter;
@@ -28,8 +28,10 @@ import org.testng.annotations.Test;
 import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
 import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.logging.MockLogger;
-import ch.systemsx.cisd.openbis.generic.server.coreplugin.CorePluginScanner.ScannerType;
+import ch.systemsx.cisd.openbis.generic.server.coreplugin.AsCorePluginPaths;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CorePlugin;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner;
+import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner.ScannerType;
 
 /**
  * @author Kaloyan Enimanev
@@ -39,7 +41,7 @@ public class CorePluginScannerTest extends AbstractFileSystemTestCase
     private final String CORE_PLUGINS_DIR = "../openbis/resource/test-data/core-plugins";
 
     @Test
-    public void testWithRealFolder() throws IOException
+    public void testWithRealFolderScannerTypeAS() throws IOException
     {
         MockLogger logger = new MockLogger();
         File pluginsDir = preparePluginsDirectory(CORE_PLUGINS_DIR);
@@ -69,6 +71,35 @@ public class CorePluginScannerTest extends AbstractFileSystemTestCase
         assertEquals(output, logger.toString());
     }
 
+    @Test
+    public void testWithRealFolderScannerTypeDSS() throws IOException
+    {
+        MockLogger logger = new MockLogger();
+        File pluginsDir = preparePluginsDirectory(CORE_PLUGINS_DIR);
+        CorePluginScanner scanner =
+                new CorePluginScanner(pluginsDir.getAbsolutePath(), ScannerType.DSS, logger);
+
+        List<CorePlugin> plugins = scanner.scanForPlugins();
+        Collections.sort(plugins);
+
+        assertEquals(2, plugins.size());
+
+        CorePlugin plugin = plugins.get(0);
+        assertEquals("plugin-X", plugin.getName());
+        assertEquals(17, plugin.getVersion());
+
+        plugin = plugins.get(1);
+        assertEquals("plugin-Y", plugin.getName());
+        assertEquals(2, plugin.getVersion());
+
+        String output =
+                String.format(
+                        "WARN: No valid versions have been detected for plugin '%s/invalid-folder'.\n"
+                                + "WARN: Invalid version 'NaN-version' for plugin '%s/plugin-X'. Plugin version must be non-negative integer numbers.\n",
+                        pluginsDir.getAbsolutePath(), pluginsDir.getAbsolutePath());
+        assertEquals(output, logger.toString());
+    }
+
     private File preparePluginsDirectory(String originalPath) throws IOException
     {
         File originalDir = new File(originalPath);
-- 
GitLab