SLING-6313 - Sling installer can duplicate factory configurations if an
invalid RegisteredResourceList.ser is found
Reinstate the behaviour of adding a
'org.apache.sling.installer.osgi.factoryaliaspid' property to factory
configs to prevent duplicate factory configurations from being
generated.
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1785938 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
index 1e397d7..932d741 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
@@ -18,6 +18,8 @@
*/
package org.apache.sling.installer.factories.configuration.impl;
+import java.util.Dictionary;
+
import org.apache.sling.installer.api.tasks.InstallationContext;
import org.apache.sling.installer.api.tasks.ResourceState;
import org.apache.sling.installer.api.tasks.TaskResourceGroup;
@@ -72,7 +74,11 @@
}
if (config != null) {
- config.update(getDictionary());
+ Dictionary<String, Object> dictionary = getDictionary();
+ if ( this.factoryPid != null && this.configPid != null ) {
+ dictionary.put(ConfigUtil.ALIAS_KEY, this.configPid);
+ }
+ config.update(dictionary);
ctx.log("Installed configuration {} from resource {}", config.getPid(), getResource());
if ( this.factoryPid != null ) {
this.aliasPid = config.getPid();
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
index 981d590..ec4abb8 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
@@ -48,10 +48,9 @@
private static final String CONFIG_PATH_KEY = "org.apache.sling.installer.osgi.path";
/**
- * This property has been used in older versions to keep track of factory
- * configurations.
+ * This property is used to keep track of factory configurations.
*/
- private static final String ALIAS_KEY = "org.apache.sling.installer.osgi.factoryaliaspid";
+ static final String ALIAS_KEY = "org.apache.sling.installer.osgi.factoryaliaspid";
/** Configuration properties to ignore when comparing configs */
private static final Set<String> IGNORED_PROPERTIES = new HashSet<String>();