Skip to content
Snippets Groups Projects
Commit 2b14d2f0 authored by felmer's avatar felmer
Browse files

LMS-2818 allow deletion of a property in plugin.properties

SVN: 24597
parent b620c7a7
No related branches found
No related tags found
No related merge requests found
...@@ -53,6 +53,8 @@ import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner; ...@@ -53,6 +53,8 @@ import ch.systemsx.cisd.openbis.generic.shared.coreplugin.CorePluginScanner;
*/ */
class CorePluginsInjector class CorePluginsInjector
{ {
static final String DELETE_KEY_WORD = "__DELETE__";
private static final String UNALLOWED_PLUGIN_NAME_CHARACTERS = " ,="; private static final String UNALLOWED_PLUGIN_NAME_CHARACTERS = " ,=";
static final String CORE_PLUGINS_FOLDER_KEY = "core-plugins-folder"; static final String CORE_PLUGINS_FOLDER_KEY = "core-plugins-folder";
...@@ -153,7 +155,7 @@ class CorePluginsInjector ...@@ -153,7 +155,7 @@ class CorePluginsInjector
for (Entry<Object, Object> keyValuePair : pluginProperties.entrySet()) for (Entry<Object, Object> keyValuePair : pluginProperties.entrySet())
{ {
String value = keyValuePair.getValue().toString(); String value = keyValuePair.getValue().toString();
properties.setProperty(pluginName + "." + keyValuePair.getKey(), value); injectProperty(properties, pluginName + "." + keyValuePair.getKey(), value);
} }
} else } else
{ {
...@@ -164,7 +166,7 @@ class CorePluginsInjector ...@@ -164,7 +166,7 @@ class CorePluginsInjector
String key = keyValuePair.getKey().toString(); String key = keyValuePair.getKey().toString();
if (keysOfKeyLists.contains(key) == false) if (keysOfKeyLists.contains(key) == false)
{ {
properties.setProperty(key, value); injectProperty(properties, key, value);
} }
} }
pluginKeyBundles.add(miscPluginKeyBundles); pluginKeyBundles.add(miscPluginKeyBundles);
...@@ -174,6 +176,18 @@ class CorePluginsInjector ...@@ -174,6 +176,18 @@ class CorePluginsInjector
} }
pluginKeyBundles.addOrReplaceKeyBundleIn(properties); pluginKeyBundles.addOrReplaceKeyBundleIn(properties);
} }
private void injectProperty(Properties properties, String key, String value)
{
String property = properties.getProperty(key);
if (property != null && property.trim().equals(DELETE_KEY_WORD))
{
properties.remove(key);
} else
{
properties.setProperty(key, value);
}
}
private Set<String> getDisabledPlugins(Properties properties) private Set<String> getDisabledPlugins(Properties properties)
{ {
......
...@@ -44,6 +44,7 @@ import ch.systemsx.cisd.common.filesystem.FileUtilities; ...@@ -44,6 +44,7 @@ import ch.systemsx.cisd.common.filesystem.FileUtilities;
import ch.systemsx.cisd.common.logging.ISimpleLogger; import ch.systemsx.cisd.common.logging.ISimpleLogger;
import ch.systemsx.cisd.common.logging.LogLevel; import ch.systemsx.cisd.common.logging.LogLevel;
import ch.systemsx.cisd.common.utilities.ExtendedProperties; import ch.systemsx.cisd.common.utilities.ExtendedProperties;
import ch.systemsx.cisd.openbis.dss.generic.shared.Constants;
/** /**
* *
...@@ -298,6 +299,45 @@ public class CorePluginsInjectorTest extends AbstractFileSystemTestCase ...@@ -298,6 +299,45 @@ public class CorePluginsInjectorTest extends AbstractFileSystemTestCase
context.assertIsSatisfied(); context.assertIsSatisfied();
} }
@Test
public void testDeletedPropertyForPluginTypeNotMiscellaneous()
{
File pluginFolder = new File(corePluginsFolder, "screening/1/dss/services/z");
pluginFolder.mkdirs();
FileUtilities.writeToFile(new File(pluginFolder, PLUGIN_PROPERTIES_FILE_NAME),
"alpha = 42\nbeta = 43");
Properties properties = createProperties();
properties.setProperty("z.beta", CorePluginsInjector.DELETE_KEY_WORD);
preparePluginNameLog("screening:services:z [" + pluginFolder + "]");
injector.injectCorePlugins(properties);
assertProperties(corePluginsFolderProperty
+ Constants.PLUGIN_SERVICES_LIST_KEY + " = z\n"
+ "z.alpha = 42\n", properties);
context.assertIsSatisfied();
}
@Test
public void testDeletedPropertyForPluginTypeMiscellaneous()
{
File pluginFolder = new File(corePluginsFolder, "screening/1/dss/miscellaneous/z");
pluginFolder.mkdirs();
FileUtilities.writeToFile(new File(pluginFolder, PLUGIN_PROPERTIES_FILE_NAME),
"z = 42\nbeta = 43");
Properties properties = createProperties();
properties.setProperty("beta", CorePluginsInjector.DELETE_KEY_WORD);
preparePluginNameLog("screening:miscellaneous:z [" + pluginFolder + "]");
injector.injectCorePlugins(properties);
assertProperties(corePluginsFolderProperty
+ "z = 42\n", properties);
context.assertIsSatisfied();
}
private void preparePluginNameLog(final String... fullPluginNames) private void preparePluginNameLog(final String... fullPluginNames)
{ {
context.checking(new Expectations() context.checking(new Expectations()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment