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