SLING-8119 : Improve configuration handling
diff --git a/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java b/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java
index 4081a01..e063c39 100644
--- a/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java
+++ b/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java
@@ -278,19 +278,11 @@
         }
 
         for(final Config c : configs) {
-            final int pos = c.getPid().indexOf('~');
-            final Configuration config;
-            if ( pos != -1 ) {
-                config = new Configuration(c.getPid().substring(0, pos), c.getPid().substring(pos + 1));
-            } else {
-                config = new Configuration(c.getPid());
-            }
+            final Configuration config = new Configuration(c.getPid());
+         
             final Enumeration<String> keyEnum = c.getProperties().keys();
             while ( keyEnum.hasMoreElements() ) {
                 final String key = keyEnum.nextElement();
-                if ( key.startsWith(":configurator:") ) {
-                    throw new IOException(exceptionPrefix + "Configuration must not define configurator property " + key);
-                }
                 final Object val = c.getProperties().get(key);
                 config.getProperties().put(key, val);
             }
diff --git a/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java b/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java
index 4f7d77f..969ef62 100644
--- a/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java
+++ b/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java
@@ -16,17 +16,6 @@
  */
 package org.apache.sling.feature.io.json;
 
-import org.apache.sling.feature.Artifact;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Bundles;
-import org.apache.sling.feature.Configuration;
-import org.apache.sling.feature.Configurations;
-import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
-import org.apache.sling.feature.Include;
-import org.osgi.resource.Capability;
-import org.osgi.resource.Requirement;
-
 import java.io.StringReader;
 import java.io.Writer;
 import java.lang.reflect.Array;
@@ -41,6 +30,17 @@
 import javax.json.stream.JsonGenerator;
 import javax.json.stream.JsonGeneratorFactory;
 
+import org.apache.sling.feature.Artifact;
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Bundles;
+import org.apache.sling.feature.Configuration;
+import org.apache.sling.feature.Configurations;
+import org.apache.sling.feature.Extension;
+import org.apache.sling.feature.ExtensionType;
+import org.apache.sling.feature.Include;
+import org.osgi.resource.Capability;
+import org.osgi.resource.Requirement;
+
 /**
  * Common functionality for writing JSON
  */
@@ -104,14 +104,7 @@
         generator.writeStartObject(JSONConstants.FEATURE_CONFIGURATIONS);
 
         for(final Configuration cfg : cfgs) {
-            final String key;
-            if ( cfg.isFactoryConfiguration() ) {
-                key = cfg.getFactoryPid() + "~" + cfg.getName();
-            } else {
-                key = cfg.getPid();
-            }
-
-            generator.writeStartObject(key);
+            generator.writeStartObject(cfg.getPid());
 
             final Enumeration<String> e = cfg.getProperties().keys();
             while ( e.hasMoreElements() ) {
diff --git a/src/test/java/org/apache/sling/feature/io/json/FeatureJSONReaderTest.java b/src/test/java/org/apache/sling/feature/io/json/FeatureJSONReaderTest.java
index 6c99042..ab30274 100644
--- a/src/test/java/org/apache/sling/feature/io/json/FeatureJSONReaderTest.java
+++ b/src/test/java/org/apache/sling/feature/io/json/FeatureJSONReaderTest.java
@@ -46,7 +46,7 @@
         assertEquals(2, feature.getConfigurations().size());
         final Configuration cfg1 = U.findConfiguration(feature.getConfigurations(), "my.pid");
         assertEquals(7, cfg1.getProperties().get("number"));
-        final Configuration cfg2 = U.findFactoryConfiguration(feature.getConfigurations(), "my.factory.pid", "name");
+        final Configuration cfg2 = U.findConfiguration(feature.getConfigurations(), "my.factory.pid~name");
         assertEquals("yeah", cfg2.getProperties().get("a.value"));
 
         assertEquals(3, feature.getCapabilities().size());
diff --git a/src/test/java/org/apache/sling/feature/io/json/U.java b/src/test/java/org/apache/sling/feature/io/json/U.java
index fa23b47..ee642c1 100644
--- a/src/test/java/org/apache/sling/feature/io/json/U.java
+++ b/src/test/java/org/apache/sling/feature/io/json/U.java
@@ -41,7 +41,7 @@
 
     public static Configuration findConfiguration(final List<Configuration> cfgs, final String pid) {
         for(final Configuration c : cfgs) {
-            if ( !c.isFactoryConfiguration() && pid.equals(c.getPid()) ) {
+            if (pid.equals(c.getPid())) {
                 return c;
             }
         }
@@ -49,16 +49,6 @@
         return null;
     }
 
-    public static Configuration findFactoryConfiguration(final List<Configuration> cfgs, final String factoryid, final String name) {
-        for(final Configuration c : cfgs) {
-            if ( c.isFactoryConfiguration() && factoryid.equals(c.getFactoryPid()) && name.equals(c.getName())) {
-                return c;
-            }
-        }
-        fail("Factory Configuration not found " + factoryid + "~" + name);
-        return null;
-    }
-
     public static Capability findCapability(List<Capability> capabilities, final String namespace) {
         for (Capability capability : capabilities) {
             if (capability.getNamespace().equals(namespace)) {