SLING-4126 : Provide a mechanism to merge configurations
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1684190 13f79535-47bb-0310-9956-ffa450edef68
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 aa64ed9..cfeea1f 100644
--- a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
+++ b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
@@ -147,6 +147,14 @@
*/
private static void mergeConfiguration(final Configuration baseConfig, final Configuration mergeConfig) {
// check for merge mode
+ final boolean isNew = baseConfig.getProperties().isEmpty();
+ if ( isNew ) {
+ copyConfigurationProperties(baseConfig, mergeConfig);
+ final Object mode = mergeConfig.getProperties().get(ModelConstants.CFG_UNPROCESSED_MODE);
+ 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
diff --git a/src/test/java/org/apache/sling/provisioning/model/U.java b/src/test/java/org/apache/sling/provisioning/model/U.java
index a7924ad..65576de 100644
--- a/src/test/java/org/apache/sling/provisioning/model/U.java
+++ b/src/test/java/org/apache/sling/provisioning/model/U.java
@@ -52,7 +52,7 @@
/** Read the complete model from that names */
public static Model readCompleteTestModel(final String[] names) throws Exception {
- Model result = null;
+ final Model result = new Model();
for(final String name : names) {
final Reader reader = new InputStreamReader(U.class.getResourceAsStream("/" + name), "UTF-8");
@@ -62,11 +62,7 @@
if (errors != null ) {
throw new Exception("Invalid model at " + name + " : " + errors);
}
- if ( result == null ) {
- result = current;
- } else {
- ModelUtility.merge(result, current);
- }
+ ModelUtility.merge(result, current);
} finally {
reader.close();
}