You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/06/08 16:23:37 UTC

svn commit: r1684195 - in /sling/trunk/tooling/support/provisioning-model/src: main/java/org/apache/sling/provisioning/model/ test/java/org/apache/sling/provisioning/model/ test/resources/merge/

Author: cziegeler
Date: Mon Jun  8 14:23:37 2015
New Revision: 1684195

URL: http://svn.apache.org/r1684195
Log:
SLING-4124 : Bootstrap command file can't be appended

Modified:
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
    sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
    sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-base.txt
    sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-merge.txt

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java?rev=1684195&r1=1684194&r2=1684195&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java Mon Jun  8 14:23:37 2015
@@ -154,48 +154,63 @@ public abstract class ModelUtility {
             if ( mode != null ) {
                 baseConfig.getProperties().put(ModelConstants.CFG_UNPROCESSED_MODE, mode);
             }
-        }
-        final boolean baseIsRaw = baseConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED) != null;
-        final boolean mergeIsRaw = mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED) != null;
-        // simplest case, both are raw
-        if ( baseIsRaw && mergeIsRaw ) {
-            final String cfgMode = (String)mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED_MODE);
-            if ( cfgMode == null || ModelConstants.CFG_MODE_OVERWRITE.equals(cfgMode) ) {
-                copyConfigurationProperties(baseConfig, mergeConfig);
-            } else {
-                final Configuration newConfig = new Configuration(baseConfig.getPid(), baseConfig.getFactoryPid());
-                getProcessedConfiguration(newConfig, baseConfig);
-                clearConfiguration(baseConfig);
-                copyConfigurationProperties(baseConfig, newConfig);
+        } else {
+            final boolean baseIsRaw = baseConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED) != null;
+            final boolean mergeIsRaw = mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED) != null;
+            // simplest case, both are raw
+            if ( baseIsRaw && mergeIsRaw ) {
+                final String cfgMode = (String)mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED_MODE);
+                if ( cfgMode == null || ModelConstants.CFG_MODE_OVERWRITE.equals(cfgMode) ) {
+                    copyConfigurationProperties(baseConfig, mergeConfig);
+                } else {
+                    final Configuration newConfig = new Configuration(baseConfig.getPid(), baseConfig.getFactoryPid());
+                    getProcessedConfiguration(newConfig, baseConfig);
+                    clearConfiguration(baseConfig);
+                    copyConfigurationProperties(baseConfig, newConfig);
 
-                clearConfiguration(newConfig);
-                getProcessedConfiguration(newConfig, mergeConfig);
-                copyConfigurationProperties(baseConfig, newConfig);
-            }
+                    clearConfiguration(newConfig);
+                    getProcessedConfiguration(newConfig, mergeConfig);
+
+                    if ( baseConfig.isSpecial() ) {
+                        final String baseValue = baseConfig.getProperties().get(baseConfig.getPid()).toString();
+                        final String mergeValue = newConfig.getProperties().get(baseConfig.getPid()).toString();
+                        baseConfig.getProperties().put(baseConfig.getPid(), baseValue + "\n" + mergeValue);
+                    } else {
+                        copyConfigurationProperties(baseConfig, newConfig);
+                    }
+                }
 
-        // another simple case, both are not raw
-        } else if ( !baseIsRaw && !mergeIsRaw ) {
-            // merge mode is always overwrite
-            clearConfiguration(baseConfig);
-            copyConfigurationProperties(baseConfig, mergeConfig);
-
-        // base is not raw but merge is
-        } else if ( !baseIsRaw && mergeIsRaw ) {
-            final String cfgMode = (String)mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED_MODE);
-            if ( cfgMode == null || ModelConstants.CFG_MODE_OVERWRITE.equals(cfgMode) ) {
+            // another simple case, both are not raw
+            } else if ( !baseIsRaw && !mergeIsRaw ) {
+                // merge mode is always overwrite
                 clearConfiguration(baseConfig);
                 copyConfigurationProperties(baseConfig, mergeConfig);
+
+            // base is not raw but merge is
+            } else if ( !baseIsRaw && mergeIsRaw ) {
+                final String cfgMode = (String)mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED_MODE);
+                if ( cfgMode == null || ModelConstants.CFG_MODE_OVERWRITE.equals(cfgMode) ) {
+                    clearConfiguration(baseConfig);
+                    copyConfigurationProperties(baseConfig, mergeConfig);
+                } else {
+                    final Configuration newMergeConfig = new Configuration(mergeConfig.getPid(), mergeConfig.getFactoryPid());
+                    getProcessedConfiguration(newMergeConfig, mergeConfig);
+
+                    if ( baseConfig.isSpecial() ) {
+                        final String baseValue = baseConfig.getProperties().get(baseConfig.getPid()).toString();
+                        final String mergeValue = newMergeConfig.getProperties().get(baseConfig.getPid()).toString();
+                        baseConfig.getProperties().put(baseConfig.getPid(), baseValue + "\n" + mergeValue);
+                    } else {
+                        copyConfigurationProperties(baseConfig, newMergeConfig);
+                    }
+                }
+
+                // base is raw, but merge is not raw
             } else {
-                final Configuration newMergeConfig = new Configuration(mergeConfig.getPid(), mergeConfig.getFactoryPid());
-                getProcessedConfiguration(newMergeConfig, mergeConfig);
-                copyConfigurationProperties(baseConfig, newMergeConfig);
+                // merge mode is always overwrite
+                clearConfiguration(baseConfig);
+                copyConfigurationProperties(baseConfig, mergeConfig);
             }
-
-            // base is raw, but merge is not raw
-        } else {
-            // merge mode is always overwrite
-            clearConfiguration(baseConfig);
-            copyConfigurationProperties(baseConfig, mergeConfig);
         }
     }
 

Modified: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java?rev=1684195&r1=1684194&r2=1684195&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java Mon Jun  8 14:23:37 2015
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertArr
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.List;
 
@@ -77,15 +78,21 @@ public class ModelUtilityTest {
 
         ModelUtility.merge(baseRaw, mergeRaw);
 
-        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseRaw.getFeature("configadmin").getRunMode(), 3);
+        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseRaw.getFeature("configadmin").getRunMode(), 4);
 
-        final Configuration cfgA = cfgs.get(0);
+        final Configuration cfgBoot = cfgs.get(0);
+        assertEquals(1, cfgBoot.getProperties().size());
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.a"));
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.b"));
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.c"));
+
+        final Configuration cfgA = cfgs.get(1);
         assertEquals("org.apache.test.A", cfgA.getPid());
         assertNull(cfgA.getFactoryPid());
         assertEquals(1, cfgA.getProperties().size());
         assertEquals("AA", cfgA.getProperties().get("name"));
 
-        final Configuration cfgB = cfgs.get(1);
+        final Configuration cfgB = cfgs.get(2);
         assertEquals("org.apache.test.B", cfgB.getPid());
         assertNull(cfgB.getFactoryPid());
         assertEquals(3, cfgB.getProperties().size());
@@ -93,7 +100,7 @@ public class ModelUtilityTest {
         assertEquals("bar", cfgB.getProperties().get("foo"));
         assertArrayEquals(new String[] {"one", "two", "three"}, (String[])cfgB.getProperties().get("array"));
 
-        final Configuration cfgC = cfgs.get(2);
+        final Configuration cfgC = cfgs.get(3);
         assertEquals("org.apache.test.C", cfgC.getPid());
         assertNull(cfgC.getFactoryPid());
         assertEquals(3, cfgC.getProperties().size());
@@ -111,22 +118,26 @@ public class ModelUtilityTest {
 
         ModelUtility.merge(baseEffective, mergeEffective);
 
-        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseEffective.getFeature("configadmin").getRunMode(), 3);
+        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseEffective.getFeature("configadmin").getRunMode(), 4);
+
+        final Configuration cfgBoot = cfgs.get(0);
+        assertEquals(1, cfgBoot.getProperties().size());
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.c"));
 
-        final Configuration cfgA = cfgs.get(0);
+        final Configuration cfgA = cfgs.get(1);
         assertEquals("org.apache.test.A", cfgA.getPid());
         assertNull(cfgA.getFactoryPid());
         assertEquals(1, cfgA.getProperties().size());
         assertEquals("AA", cfgA.getProperties().get("name"));
 
-        final Configuration cfgB = cfgs.get(1);
+        final Configuration cfgB = cfgs.get(2);
         assertEquals("org.apache.test.B", cfgB.getPid());
         assertNull(cfgB.getFactoryPid());
         assertEquals(2, cfgB.getProperties().size());
         assertEquals("BB", cfgB.getProperties().get("name"));
         assertEquals("bar", cfgB.getProperties().get("foo"));
 
-        final Configuration cfgC = cfgs.get(2);
+        final Configuration cfgC = cfgs.get(3);
         assertEquals("org.apache.test.C", cfgC.getPid());
         assertNull(cfgC.getFactoryPid());
         assertEquals(1, cfgC.getProperties().size());
@@ -140,22 +151,26 @@ public class ModelUtilityTest {
 
         ModelUtility.merge(baseRaw, mergeEffective);
 
-        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseRaw.getFeature("configadmin").getRunMode(), 3);
+        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseRaw.getFeature("configadmin").getRunMode(), 4);
 
-        final Configuration cfgA = cfgs.get(0);
+        final Configuration cfgBoot = cfgs.get(0);
+        assertEquals(1, cfgBoot.getProperties().size());
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.c"));
+
+        final Configuration cfgA = cfgs.get(1);
         assertEquals("org.apache.test.A", cfgA.getPid());
         assertNull(cfgA.getFactoryPid());
         assertEquals(1, cfgA.getProperties().size());
         assertEquals("AA", cfgA.getProperties().get("name"));
 
-        final Configuration cfgB = cfgs.get(1);
+        final Configuration cfgB = cfgs.get(2);
         assertEquals("org.apache.test.B", cfgB.getPid());
         assertNull(cfgB.getFactoryPid());
         assertEquals(2, cfgB.getProperties().size());
         assertEquals("BB", cfgB.getProperties().get("name"));
         assertEquals("bar", cfgB.getProperties().get("foo"));
 
-        final Configuration cfgC = cfgs.get(2);
+        final Configuration cfgC = cfgs.get(3);
         assertEquals("org.apache.test.C", cfgC.getPid());
         assertNull(cfgC.getFactoryPid());
         assertEquals(1, cfgC.getProperties().size());
@@ -169,15 +184,21 @@ public class ModelUtilityTest {
 
         ModelUtility.merge(baseEffective, mergeRaw);
 
-        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseEffective.getFeature("configadmin").getRunMode(), 3);
+        final List<Configuration> cfgs = U.assertConfigurationsInRunMode(baseEffective.getFeature("configadmin").getRunMode(), 4);
+
+        final Configuration cfgBoot = cfgs.get(0);
+        assertEquals(1, cfgBoot.getProperties().size());
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.a"));
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.b"));
+        assertTrue(cfgBoot.getProperties().get(":bootstrap").toString().contains("uninstall bundle.c"));
 
-        final Configuration cfgA = cfgs.get(0);
+        final Configuration cfgA = cfgs.get(1);
         assertEquals("org.apache.test.A", cfgA.getPid());
         assertNull(cfgA.getFactoryPid());
         assertEquals(1, cfgA.getProperties().size());
         assertEquals("AA", cfgA.getProperties().get("name"));
 
-        final Configuration cfgB = cfgs.get(1);
+        final Configuration cfgB = cfgs.get(2);
         assertEquals("org.apache.test.B", cfgB.getPid());
         assertNull(cfgB.getFactoryPid());
         assertEquals(3, cfgB.getProperties().size());
@@ -185,7 +206,7 @@ public class ModelUtilityTest {
         assertEquals("bar", cfgB.getProperties().get("foo"));
         assertArrayEquals(new String[] {"one", "two", "three"}, (String[])cfgB.getProperties().get("array"));
 
-        final Configuration cfgC = cfgs.get(2);
+        final Configuration cfgC = cfgs.get(3);
         assertEquals("org.apache.test.C", cfgC.getPid());
         assertNull(cfgC.getFactoryPid());
         assertEquals(3, cfgC.getProperties().size());

Modified: sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-base.txt
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-base.txt?rev=1684195&r1=1684194&r2=1684195&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-base.txt (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-base.txt Mon Jun  8 14:23:37 2015
@@ -41,4 +41,8 @@ org.apache.test.C
       "3"
     ]
     name="C"    
+
+:bootstrap
+    uninstall bundle.a
+    uninstall bundle.b
     
\ No newline at end of file

Modified: sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-merge.txt
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-merge.txt?rev=1684195&r1=1684194&r2=1684195&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-merge.txt (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/config-merge.txt Mon Jun  8 14:23:37 2015
@@ -32,4 +32,6 @@ org.apache.test.B [mode=merge]
 
 org.apache.test.C [mode=merge]
     foo="bar"    
-    
\ No newline at end of file
+
+:bootstrap [mode=merge]
+    uninstall bundle.c