SLING-8119 : Improve configuration handling
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
index aaef888..823b247 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
@@ -16,26 +16,6 @@
  */
 package org.apache.sling.feature.modelconverter;
 
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Bundles;
-import org.apache.sling.feature.Configurations;
-import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
-import org.apache.sling.feature.Extensions;
-import org.apache.sling.feature.FeatureConstants;
-import org.apache.sling.feature.builder.BuilderContext;
-import org.apache.sling.feature.builder.FeatureBuilder;
-import org.apache.sling.feature.builder.FeatureProvider;
-import org.apache.sling.feature.io.json.FeatureJSONReader;
-import org.apache.sling.provisioning.model.Artifact;
-import org.apache.sling.provisioning.model.Configuration;
-import org.apache.sling.provisioning.model.Feature;
-import org.apache.sling.provisioning.model.Model;
-import org.apache.sling.provisioning.model.Section;
-import org.apache.sling.provisioning.model.io.ModelWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
@@ -60,6 +40,26 @@
 import javax.json.JsonString;
 import javax.json.JsonValue;
 
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Bundles;
+import org.apache.sling.feature.Configurations;
+import org.apache.sling.feature.Extension;
+import org.apache.sling.feature.ExtensionType;
+import org.apache.sling.feature.Extensions;
+import org.apache.sling.feature.FeatureConstants;
+import org.apache.sling.feature.builder.BuilderContext;
+import org.apache.sling.feature.builder.FeatureBuilder;
+import org.apache.sling.feature.builder.FeatureProvider;
+import org.apache.sling.feature.io.json.FeatureJSONReader;
+import org.apache.sling.provisioning.model.Artifact;
+import org.apache.sling.provisioning.model.Configuration;
+import org.apache.sling.provisioning.model.Feature;
+import org.apache.sling.provisioning.model.Model;
+import org.apache.sling.provisioning.model.Section;
+import org.apache.sling.provisioning.model.io.ModelWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /** Converter that converts the feature model to the provisioning model.
  */
 public class FeatureToProvisioning {
@@ -194,14 +194,14 @@
             final Configuration c;
 
             List<String> runModeList = new ArrayList<>();
-            if ( cfg.isFactoryConfiguration() ) {
-                String name = decodeRunModes(cfg.getName(), runModeList);
-                c = new Configuration(name, cfg.getFactoryPid());
+            if (org.apache.sling.feature.Configuration.isFactoryConfiguration(cfg.getPid())) {
+                String name = decodeRunModes(org.apache.sling.feature.Configuration.getName(cfg.getPid()), runModeList);
+                c = new Configuration(name, org.apache.sling.feature.Configuration.getFactoryPid(cfg.getPid()));
             } else {
                 String pid = decodeRunModes(cfg.getPid(), runModeList);
                 c = new Configuration(pid, null);
             }
-            final Enumeration<String> keys = cfg.getProperties().keys();
+            final Enumeration<String> keys = cfg.getConfigurationProperties().keys();
             while ( keys.hasMoreElements() ) {
                 String key = keys.nextElement();
                 Object val = cfg.getProperties().get(key);
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
index 148bcc6..57cc85c 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
@@ -351,7 +351,7 @@
 
                 final org.apache.sling.feature.Configuration newCfg;
                 if ( cfg.getFactoryPid() != null ) {
-                    newCfg = new org.apache.sling.feature.Configuration(cfg.getFactoryPid(), pid);
+                    newCfg = new org.apache.sling.feature.Configuration(cfg.getFactoryPid() + '~' + pid);
                 } else {
                     newCfg = new org.apache.sling.feature.Configuration(pid);
                 }
diff --git a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
index 580997e..cc8cdec 100644
--- a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
@@ -495,17 +495,9 @@
             boolean found = false;
             for (Iterator<org.apache.sling.feature.Configuration> it2 = actual.iterator(); it2.hasNext(); ) {
                 org.apache.sling.feature.Configuration ac = it2.next();
-                if (ex.getPid() != null) {
-                    if (ex.getPid().equals(ac.getPid())) {
-                        found = true;
-                        assertConfigProps(ex, ac, exBundles, acBundles);
-                    }
-                } else {
-                    if (ex.getFactoryPid().equals(ac.getFactoryPid()) &&
-                            ex.getName().equals(ac.getName())) {
-                        found = true;
-                        assertConfigProps(ex, ac, exBundles, acBundles);
-                    }
+                if (ex.getPid().equals(ac.getPid())) {
+                    found = true;
+                    assertConfigProps(ex, ac, exBundles, acBundles);
                 }
             }
             assertTrue(found);