From f3fb63fbbcefecca0fa3b83e53bb2ae1e3d7431c Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 12 Mar 2013 07:46:34 +0000
Subject: [PATCH] SP-533, BIS-336: Bug fixed: Dynamic properties GUI tester
 didn't worked.

SVN: 28591
---
 .../openbis/generic/server/CommonServer.java  |  7 ++++---
 .../DynamicPropertyEvaluator.java             |  3 ---
 .../IDynamicPropertyCalculatorFactory.java    |  5 +++++
 .../DynamicPropertyCalculatorFactory.java     | 21 ++++++++++++++-----
 .../dto/DynamicPropertyEvaluationInfo.java    |  1 +
 5 files changed, 26 insertions(+), 11 deletions(-)

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 8d4ef3523cd..cc04875791a 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
@@ -138,8 +138,8 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.IDyna
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.IDynamicPropertyEvaluator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityAdaptorFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.JythonDynamicPropertyCalculator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.JythonEntityValidationCalculator.IValidationRequestDelegate;
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDynamicPropertyCalculator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.entity_validation.IEntityValidatorFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.entity_validation.api.IEntityValidator;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.EncapsulatedCommonServer;
@@ -3349,8 +3349,9 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
         IEntityInformationWithPropertiesHolder entity = getEntity(info, session);
         try
         {
-            JythonDynamicPropertyCalculator calculator =
-                    JythonDynamicPropertyCalculator.create(info.getScript());
+            IDynamicPropertyCalculator calculator =
+                    dynamicPropertyCalculatorFactory.getCalculator(info.getPluginType(),
+                            info.getSciptName(), info.getScript());
             IDynamicPropertyEvaluator evaluator =
                     new DynamicPropertyEvaluator(getDAOFactory(), null,
                             dynamicPropertyCalculatorFactory, managedPropertyEvaluatorFactory);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/DynamicPropertyEvaluator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/DynamicPropertyEvaluator.java
index dda3e52f678..87d968c6cca 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/DynamicPropertyEvaluator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/DynamicPropertyEvaluator.java
@@ -61,8 +61,6 @@ public class DynamicPropertyEvaluator implements IDynamicPropertyEvaluator
 
     private final IDynamicPropertyCalculatorFactory dynamicPropertyCalculatorFactory;
 
-    private final IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory;
-
     /** path of evaluation - used to generate meaningful error message for cyclic dependencies */
     private final List<EntityTypePropertyTypePE> evaluationPath =
             new ArrayList<EntityTypePropertyTypePE>();
@@ -79,7 +77,6 @@ public class DynamicPropertyEvaluator implements IDynamicPropertyEvaluator
                 new EntityPropertiesConverterDelegatorFacade(daoFactory,
                         customSessionProviderOrNull, managedPropertyEvaluatorFactory);
         this.dynamicPropertyCalculatorFactory = dynamicPropertyCalculatorFactory;
-        this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory;
     }
 
     @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/IDynamicPropertyCalculatorFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/IDynamicPropertyCalculatorFactory.java
index 6cd5d314add..9409c06a74b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/IDynamicPropertyCalculatorFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/IDynamicPropertyCalculatorFactory.java
@@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property;
 
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDynamicPropertyCalculator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDynamicPropertyCalculatorHotDeployPlugin;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PluginType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.hotdeploy_plugins.ICommonPropertyBasedHotDeployPluginFactory;
 
@@ -28,4 +29,8 @@ public interface IDynamicPropertyCalculatorFactory extends
         ICommonPropertyBasedHotDeployPluginFactory<IDynamicPropertyCalculatorHotDeployPlugin>
 {
     public IDynamicPropertyCalculator getCalculator(EntityTypePropertyTypePE etpt);
+
+    public IDynamicPropertyCalculator getCalculator(PluginType pluginType, String scriptName,
+            String script);
+
 }
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 674f2d2a6fb..ea7abcc1f46 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
@@ -20,6 +20,7 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.IDynamicPropertyCalculatorFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDynamicPropertyCalculator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDynamicPropertyCalculatorHotDeployPlugin;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PluginType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.hotdeploy_plugins.AbstractCommonPropertyBasedHotDeployPluginFactory;
@@ -43,17 +44,27 @@ public class DynamicPropertyCalculatorFactory
     /** Returns a calculator for given script (creates a new one if nothing is found in cache). */
     public IDynamicPropertyCalculator getCalculator(EntityTypePropertyTypePE etpt)
     {
-        switch (etpt.getScript().getPluginType())
+        PluginType pluginType = etpt.getScript().getPluginType();
+        String script = etpt.getScript().getScript();
+        String scriptName = etpt.getScript().getName();
+        return getCalculator(pluginType, scriptName, script);
+    }
+
+    @Override
+    public IDynamicPropertyCalculator getCalculator(PluginType pluginType, String scriptName,
+            String script)
+    {
+        switch (pluginType)
         {
             case JYTHON:
-                return JythonDynamicPropertyCalculator.create(etpt.getScript().getScript());
+                return JythonDynamicPropertyCalculator.create(script);
             case PREDEPLOYED:
                 IDynamicPropertyCalculator dynamicPropertyCalculator =
-                        tryGetPredeployedPluginByName(etpt.getScript().getName());
+                        tryGetPredeployedPluginByName(scriptName);
                 if (dynamicPropertyCalculator == null)
                 {
-                    throw new UserFailureException("Couldn't find plugin named '"
-                            + etpt.getScript().getName() + "'.");
+                    throw new UserFailureException("Couldn't find plugin named '" + scriptName
+                            + "'.");
                 }
 
                 return dynamicPropertyCalculator;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DynamicPropertyEvaluationInfo.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DynamicPropertyEvaluationInfo.java
index c236779b522..72c6727ff20 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DynamicPropertyEvaluationInfo.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DynamicPropertyEvaluationInfo.java
@@ -37,6 +37,7 @@ public class DynamicPropertyEvaluationInfo extends BasicEntityDescription
             PluginType pluginType, String scriptName, String script)
     {
         super(entityKind, entityIdentifier);
+        this.pluginType = pluginType;
         this.sciptName = scriptName;
         this.script = script;
     }
-- 
GitLab