You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:57:54 UTC
[sling-org-apache-sling-provisioning-model] 16/19: SLING-4124 :
Bootstrap command file can't be appended
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.provisioning.model-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-provisioning-model.git
commit bd96e540180c81604cbe3b7ef443598dbe4e0e9b
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Mon Jun 8 14:23:37 2015 +0000
SLING-4124 : Bootstrap command file can't be appended
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/support/provisioning-model@1684195 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/provisioning/model/ModelUtility.java | 85 +++++++++++++---------
.../sling/provisioning/model/ModelUtilityTest.java | 53 ++++++++++----
src/test/resources/merge/config-base.txt | 4 +
src/test/resources/merge/config-merge.txt | 4 +-
4 files changed, 94 insertions(+), 52 deletions(-)
diff --git a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
index cfeea1f..4946cbf 100644
--- a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
+++ b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
@@ -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);
+ } 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);
+
+ 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, newConfig);
+ copyConfigurationProperties(baseConfig, mergeConfig);
- clearConfiguration(newConfig);
- getProcessedConfiguration(newConfig, mergeConfig);
- copyConfigurationProperties(baseConfig, newConfig);
- }
+ // 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);
- // another simple case, both are not raw
- } else if ( !baseIsRaw && !mergeIsRaw ) {
- // merge mode is always overwrite
- clearConfiguration(baseConfig);
- copyConfigurationProperties(baseConfig, 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 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) ) {
+ // base is raw, but merge is not raw
+ } else {
+ // merge mode is always overwrite
clearConfiguration(baseConfig);
copyConfigurationProperties(baseConfig, mergeConfig);
- } else {
- final Configuration newMergeConfig = new Configuration(mergeConfig.getPid(), mergeConfig.getFactoryPid());
- getProcessedConfiguration(newMergeConfig, mergeConfig);
- copyConfigurationProperties(baseConfig, newMergeConfig);
}
-
- // base is raw, but merge is not raw
- } else {
- // merge mode is always overwrite
- clearConfiguration(baseConfig);
- copyConfigurationProperties(baseConfig, mergeConfig);
}
}
diff --git a/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java b/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
index bfa682f..d5d18ef 100644
--- a/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
+++ b/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertArrayEquals;
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());
diff --git a/src/test/resources/merge/config-base.txt b/src/test/resources/merge/config-base.txt
index e5c0451..ce37955 100644
--- a/src/test/resources/merge/config-base.txt
+++ b/src/test/resources/merge/config-base.txt
@@ -41,4 +41,8 @@ org.apache.test.C
"3"
]
name="C"
+
+:bootstrap
+ uninstall bundle.a
+ uninstall bundle.b
\ No newline at end of file
diff --git a/src/test/resources/merge/config-merge.txt b/src/test/resources/merge/config-merge.txt
index b640577..ec5c6be 100644
--- a/src/test/resources/merge/config-merge.txt
+++ b/src/test/resources/merge/config-merge.txt
@@ -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
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.