From db20e7bba8b7001ea86dcd5d2754c1de31add29b Mon Sep 17 00:00:00 2001
From: gpawel <gpawel>
Date: Wed, 13 Feb 2013 14:40:03 +0000
Subject: [PATCH] SP-485 BIS-286 : Java plugins for managed/dynamic properties
 and validation

SVN: 28368
---
 .../PredeployedPluginSelectionWidget.java          | 14 ++++++++++++++
 .../ui/script/AbstractScriptEditRegisterForm.java  |  8 +++++---
 .../DynamicPropertyCalculatorFactory.java          |  2 +-
 .../entity_validation/EntityValidatorFactory.java  |  2 +-
 .../ManagedPropertyEvaluatorFactory.java           |  2 +-
 5 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PredeployedPluginSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PredeployedPluginSelectionWidget.java
index ee1aa14b2a1..18b9012dab7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PredeployedPluginSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PredeployedPluginSelectionWidget.java
@@ -45,6 +45,8 @@ public class PredeployedPluginSelectionWidget extends
                 "plugin", "plugins");
 
         this.viewContext = viewContext;
+
+        setAutoSelectFirst(false);
     }
 
     @Override
@@ -90,9 +92,21 @@ public class PredeployedPluginSelectionWidget extends
 
     public void setSelectedValue(String value)
     {
+        clearSelections();
         setSelection(convertItems(Collections.singletonList(value)));
     }
 
+    public String tryGetSelectedValue()
+    {
+        SimpleComboValue<String> selection = getValue();
+        if (selection != null)
+        {
+            return selection.getValue();
+        }
+
+        return null;
+    }
+
     private class ListPredeployedPluginsCallback extends
             PredeployedPluginSelectionWidget.ListItemsCallback
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java
index 8a40225eb3e..64a4b5af8f0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java
@@ -177,14 +177,14 @@ abstract public class AbstractScriptEditRegisterForm extends AbstractRegistratio
                                         .getSimpleValue();
                     }
                     scriptExecution.update(nameField.isVisible() ? nameField.getValue()
-                            : predeployedPluginsWidget.getValue().getValue(), scriptField
+                            : predeployedPluginsWidget.tryGetSelectedValue(), scriptField
                             .getValue(), pluginTypeOrNull);
                 }
             };
 
         scriptField.addListener(Events.Change, scriptParametersListener);
         nameField.addListener(Events.Change, scriptParametersListener);
-        predeployedPluginsWidget.addListener(Events.Change, scriptParametersListener);
+        predeployedPluginsWidget.addListener(Events.SelectionChange, scriptParametersListener);
     }
 
     private SelectionChangedListener<SimpleComboValue<ScriptType>> createScriptTypeChangedListener()
@@ -241,7 +241,9 @@ abstract public class AbstractScriptEditRegisterForm extends AbstractRegistratio
             scriptField.setValidator(null);
         }
 
-        scriptExecution.update(nameField.getValue(), scriptField.getValue(), pluginType);
+        scriptExecution.update(nameField.isVisible() ? nameField.getValue()
+                : predeployedPluginsWidget.tryGetSelectedValue(), scriptField.getValue(),
+                pluginType);
     }
 
     private IValidable asValidable(final FormPanel panel)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/DynamicPropertyCalculatorFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/DynamicPropertyCalculatorFactory.java
index 67ddea02c23..c95900ae58e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/DynamicPropertyCalculatorFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/DynamicPropertyCalculatorFactory.java
@@ -42,9 +42,9 @@ public class DynamicPropertyCalculatorFactory implements IDynamicPropertyCalcula
     {
         if (false == StringUtils.isBlank(pluginDirectoryPath))
         {
-            hotDeploymentController.addPluginDirectory(new File(pluginDirectoryPath));
             this.predeployedPlugins =
                     hotDeploymentController.getPluginMap(IDynamicPropertyCalculator.class);
+            hotDeploymentController.addPluginDirectory(new File(pluginDirectoryPath));
         } else
         {
             this.predeployedPlugins = null;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/entity_validation/EntityValidatorFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/entity_validation/EntityValidatorFactory.java
index b7757df6ee2..45a639fd2d6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/entity_validation/EntityValidatorFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/entity_validation/EntityValidatorFactory.java
@@ -44,8 +44,8 @@ public class EntityValidatorFactory implements IEntityValidatorFactory
     {
         if (false == StringUtils.isBlank(pluginDirectoryPath))
         {
-            hotDeploymentController.addPluginDirectory(new File(pluginDirectoryPath));
             this.predeployedPlugins = hotDeploymentController.getPluginMap(IEntityValidator.class);
+            hotDeploymentController.addPluginDirectory(new File(pluginDirectoryPath));
         } else
         {
             this.predeployedPlugins = null;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluatorFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluatorFactory.java
index 6e7e7ceedb3..c9c55530a52 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluatorFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluatorFactory.java
@@ -49,9 +49,9 @@ public class ManagedPropertyEvaluatorFactory implements IManagedPropertyEvaluato
     {
         if (false == StringUtils.isBlank(pluginDirectoryPath))
         {
-            hotDeploymentController.addPluginDirectory(new File(pluginDirectoryPath));
             this.predeployedPlugins =
                     hotDeploymentController.getPluginMap(IManagedPropertyEvaluator.class);
+            hotDeploymentController.addPluginDirectory(new File(pluginDirectoryPath));
         } else
         {
             this.predeployedPlugins = null;
-- 
GitLab