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>();