From 4dc17ecc93eae696ed21d6efb2296e17eed672ce Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 31 May 2012 14:11:03 +0000
Subject: [PATCH] SP-71, BIS-52: bug concerning disabling of core plugins fixed

SVN: 25425
---
 installation/resource/installer/install.xml   |  2 +-
 .../resource/tarball/console.properties       | 12 +++---
 ... SetEnableTechnologiesVariableAction.java} | 18 +++++++-
 .../izpack/SetTechnologyCheckBoxesAction.java |  4 +-
 ...EnableTechnologiesVariableActionTest.java} | 43 +++++++++++++------
 5 files changed, 56 insertions(+), 23 deletions(-)
 rename installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/{SetDisableTechnologiesVariableAction.java => SetEnableTechnologiesVariableAction.java} (88%)
 rename installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/{SetDisableTechnologiesVariableActionTest.java => SetEnableTechnologiesVariableActionTest.java} (78%)

diff --git a/installation/resource/installer/install.xml b/installation/resource/installer/install.xml
index 3c9698c8997..a3b7682b71e 100644
--- a/installation/resource/installer/install.xml
+++ b/installation/resource/installer/install.xml
@@ -105,7 +105,7 @@
     <panel classname="com.izforge.izpack.panels.userinput.UserInputPanel" id="UserInputPanel.TECHNOLOGIES" condition="isStandardTechnologies">
       <actions>
         <action stage="preactivate" classname="ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction" />
-        <action stage="postvalidate" classname="ch.systemsx.cisd.openbis.installer.izpack.SetDisableTechnologiesVariableAction" />
+        <action stage="postvalidate" classname="ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction" />
       </actions>
     </panel>
 
diff --git a/installation/resource/tarball/console.properties b/installation/resource/tarball/console.properties
index 30d335214be..1c57768f17b 100644
--- a/installation/resource/tarball/console.properties
+++ b/installation/resource/tarball/console.properties
@@ -35,11 +35,11 @@ KEY_STORE_PASSWORD = changeit
 # Password of the key
 KEY_PASSWORD = changeit
 
-# Standard technology PROTEOMICS is enabled by default
-#PROTEOMICS = false
+# Standard technology PROTEOMICS is disabled by default
+#PROTEOMICS = true
 
-# Standard technology SCREENING is enabled by default
-#SCREENING = false
+# Standard technology SCREENING is disabled by default
+#SCREENING = true
 
-# Standard technology ILLUMINA-NGS is enabled by default
-#ILLUMINA-NGS = false
\ No newline at end of file
+# Standard technology ILLUMINA-NGS is disabled by default
+#ILLUMINA-NGS = true
\ No newline at end of file
diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDisableTechnologiesVariableAction.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java
similarity index 88%
rename from installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDisableTechnologiesVariableAction.java
rename to installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java
index 56a9e34cd6d..fa2206ea34a 100644
--- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDisableTechnologiesVariableAction.java
+++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableAction.java
@@ -39,9 +39,10 @@ import ch.systemsx.cisd.common.shared.basic.utils.CommaSeparatedListBuilder;
  * 
  * @author Franz-Josef Elmer
  */
-public class SetDisableTechnologiesVariableAction implements PanelAction
+public class SetEnableTechnologiesVariableAction implements PanelAction
 {
     static final String ENABLED_TECHNOLOGIES_VARNAME = "ENABLED_TECHNOLOGIES";
+    static final String DISABLED_TECHNOLOGIES_VARNAME = "DISABLED_TECHNOLOGIES";
     static final String DISABLED_CORE_PLUGINS_KEY = "disabled-core-plugins";
 
     public void initialize(PanelActionConfiguration configuration)
@@ -58,6 +59,7 @@ public class SetDisableTechnologiesVariableAction implements PanelAction
     void updateEnabledTechnologyProperty(AutomatedInstallData data,
             boolean isFirstTimeInstallation, File installDir)
     {
+        data.setVariable(DISABLED_TECHNOLOGIES_VARNAME, createListOfDisabledTechnologies(data));
         String newTechnologyList = createListOfEnabledTechnologies(data);
         data.setVariable(ENABLED_TECHNOLOGIES_VARNAME, newTechnologyList);
         if (isFirstTimeInstallation == false)
@@ -149,5 +151,19 @@ public class SetDisableTechnologiesVariableAction implements PanelAction
         }
         return builder.toString();
     }
+    
+    private String createListOfDisabledTechnologies(AutomatedInstallData data)
+    {
+        CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
+        for (String technology : GlobalInstallationContext.TECHNOLOGIES)
+        {
+            String technologyFlag = data.getVariable(technology);
+            if (technologyFlag == null || Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
+            {
+                builder.append(technology.toLowerCase());
+            }
+        }
+        return builder.toString();
+    }
 
 }
diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetTechnologyCheckBoxesAction.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetTechnologyCheckBoxesAction.java
index ebf8593ed8e..320fcb4f92b 100644
--- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetTechnologyCheckBoxesAction.java
+++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetTechnologyCheckBoxesAction.java
@@ -29,7 +29,7 @@ import com.izforge.izpack.data.PanelAction;
  * Action which sets the variables which are the values of check boxes on the technology page. If
  * the variable is already set nothing is done. Otherwise the behavior depends on whether this is
  * installation or upgrading. In case of installation the flag will be <code>true</code>. In case of
- * upgrading <code>service.properties</code> files are scanned in order to check whether a certain
+ * upgrading <code>service.properties</code> file of AS is scanned in order to check whether a certain
  * technology is enabled or not.
  * 
  * @author Franz-Josef Elmer
@@ -98,7 +98,7 @@ public class SetTechnologyCheckBoxesAction implements PanelAction
             String variable = data.getVariable(technology);
             if (variable == null)
             {
-                boolean technologyFlag = true;
+                boolean technologyFlag = false;
                 if (GlobalInstallationContext.isUpdateInstallation)
                 {
                     technologyFlag =
diff --git a/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetDisableTechnologiesVariableActionTest.java b/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java
similarity index 78%
rename from installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetDisableTechnologiesVariableActionTest.java
rename to installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java
index ea82bd5f50b..8aee1ddb64f 100644
--- a/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetDisableTechnologiesVariableActionTest.java
+++ b/installation/sourceTest/java/ch/systemsx/cisd/openbis/installer/izpack/SetEnableTechnologiesVariableActionTest.java
@@ -18,8 +18,8 @@ package ch.systemsx.cisd.openbis.installer.izpack;
 
 import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContext.TECHNOLOGY_PROTEOMICS;
 import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContext.TECHNOLOGY_SCREENING;
-import static ch.systemsx.cisd.openbis.installer.izpack.SetDisableTechnologiesVariableAction.DISABLED_CORE_PLUGINS_KEY;
-import static ch.systemsx.cisd.openbis.installer.izpack.SetDisableTechnologiesVariableAction.ENABLED_TECHNOLOGIES_VARNAME;
+import static ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction.DISABLED_CORE_PLUGINS_KEY;
+import static ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction.ENABLED_TECHNOLOGIES_VARNAME;
 import static ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction.ENABLED_TECHNOLOGIES_KEY;
 
 import java.io.File;
@@ -43,7 +43,7 @@ import ch.systemsx.cisd.common.filesystem.FileUtilities;
  *
  * @author Franz-Josef Elmer
  */
-public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystemTestCase
+public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemTestCase
 {
     private File configFile;
     private File dssConfigFile;
@@ -79,7 +79,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "true");
         variables.setProperty(TECHNOLOGY_SCREENING, "false");
 
-        AutomatedInstallData data = updateDisabledTechnologyProperties(variables, true);
+        AutomatedInstallData data = updateEnabledTechnologyProperties(variables, true);
 
         assertEquals("proteomics", data.getVariable(ENABLED_TECHNOLOGIES_VARNAME));
     }
@@ -91,7 +91,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
         variables.setProperty(TECHNOLOGY_SCREENING, "false");
 
-        AutomatedInstallData data = updateDisabledTechnologyProperties(variables, true);
+        AutomatedInstallData data = updateEnabledTechnologyProperties(variables, true);
 
         assertEquals("", data.getVariable(ENABLED_TECHNOLOGIES_VARNAME));
     }
@@ -105,7 +105,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         
         try
         {
-            updateDisabledTechnologyProperties(variables, false);
+            updateEnabledTechnologyProperties(variables, false);
             fail("Exception expected.");
         } catch (RuntimeException ex)
         {
@@ -124,7 +124,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "true");
         variables.setProperty(TECHNOLOGY_SCREENING, "false");
 
-        updateDisabledTechnologyProperties(variables, false);
+        updateEnabledTechnologyProperties(variables, false);
 
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + "=proteomics]", FileUtilities
                 .loadToStringList(configFile).toString());
@@ -139,7 +139,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "true");
         variables.setProperty(TECHNOLOGY_SCREENING, "true");
         
-        updateDisabledTechnologyProperties(variables, false);
+        updateEnabledTechnologyProperties(variables, false);
         
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics, screening, answer = 42]", FileUtilities
                 .loadToStringList(configFile).toString());
@@ -155,7 +155,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
         variables.setProperty(TECHNOLOGY_SCREENING, "true");
         
-        updateDisabledTechnologyProperties(variables, false);
+        updateEnabledTechnologyProperties(variables, false);
         
         assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
                 .loadToStringList(configFile).toString());
@@ -163,6 +163,23 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
                 .loadToStringList(dssConfigFile).toString());
     }
 
+    @Test
+    public void testUpdateAppendPropertyWithEmptyDisabledCorePluginsProperty()
+    {
+        FileUtilities.writeToFile(configFile, "abc = 123");
+        FileUtilities.writeToFile(dssConfigFile, DISABLED_CORE_PLUGINS_KEY + "= ");
+        Properties variables = new Properties();
+        variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
+        variables.setProperty(TECHNOLOGY_SCREENING, "true");
+        
+        updateEnabledTechnologyProperties(variables, false);
+        
+        assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
+                .loadToStringList(configFile).toString());
+        assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics]", FileUtilities
+                .loadToStringList(dssConfigFile).toString());
+    }
+    
     @Test
     public void testUpdateDisabledPluginsForSwitchedTechnologies()
     {
@@ -173,7 +190,7 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
         variables.setProperty(TECHNOLOGY_SCREENING, "true");
 
-        updateDisabledTechnologyProperties(variables, false);
+        updateEnabledTechnologyProperties(variables, false);
 
         assertEquals("[a = b, " + DISABLED_CORE_PLUGINS_KEY + " = proteomics:a:b, proteomics, "
                 + "gamma = alpha]", FileUtilities.loadToStringList(dssConfigFile).toString());
@@ -189,14 +206,14 @@ public class SetDisableTechnologiesVariableActionTest extends AbstractFileSystem
         variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
         variables.setProperty(TECHNOLOGY_SCREENING, "true");
         
-        updateDisabledTechnologyProperties(variables, false);
+        updateEnabledTechnologyProperties(variables, false);
     }
 
-    private AutomatedInstallData updateDisabledTechnologyProperties(Properties variables,
+    private AutomatedInstallData updateEnabledTechnologyProperties(Properties variables,
             boolean isFirstTimeInstallation)
     {
         InstallData data = new InstallData(variables, new VariableSubstitutorImpl(new Properties()));
-        SetDisableTechnologiesVariableAction action = new SetDisableTechnologiesVariableAction();
+        SetEnableTechnologiesVariableAction action = new SetEnableTechnologiesVariableAction();
         action.updateEnabledTechnologyProperty(data, isFirstTimeInstallation, workingDirectory);
         return data;
     }
-- 
GitLab