SLING-8109 Replace KeyValueMap with Map<String,String>
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 47b089c..aaef888 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
@@ -16,6 +16,26 @@
  */
 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;
@@ -40,27 +60,6 @@
 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.KeyValueMap;
-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 {
@@ -120,7 +119,7 @@
         return FeatureBuilder.assemble(feature, bc);
     }
 
-    private static void convert(Feature f, KeyValueMap variables, Bundles bundles, Configurations configurations, KeyValueMap frameworkProps,
+    private static void convert(Feature f, Map<String,String> variables, Bundles bundles, Configurations configurations, Map<String,String> frameworkProps,
             Extensions extensions, String outputFile, String [] runModes) {
         final Map<String, Feature> additionalFeatures = new HashMap<>();
 
@@ -128,7 +127,7 @@
             runModes = null;
         }
         org.apache.sling.provisioning.model.KeyValueMap<String> vars = f.getVariables();
-        for (Map.Entry<String, String> entry : variables) {
+        for (Map.Entry<String, String> entry : variables.entrySet()) {
             vars.put(entry.getKey(), entry.getValue());
         }
 
@@ -148,7 +147,7 @@
                 }
             }
 
-            for(final Map.Entry<String, String> prop : bundle.getMetadata()) {
+            for(final Map.Entry<String, String> prop : bundle.getMetadata().entrySet()) {
                 switch (prop.getKey()) {
                     // these are handled separately
                     case "start-level":
@@ -222,7 +221,7 @@
         }
 
         // framework properties
-        for(final Map.Entry<String, String> prop : frameworkProps) {
+        for(final Map.Entry<String, String> prop : frameworkProps.entrySet()) {
             String key = prop.getKey();
             int idx = key.indexOf(".runmodes:");
 
@@ -243,7 +242,7 @@
                     String[] extRunModes = runModes;
                     final ArtifactId id = cp.getId();
                     final Artifact newCP = new Artifact(id.getGroupId(), id.getArtifactId(), id.getVersion(), id.getClassifier(), id.getType());
-                    for(final Map.Entry<String, String> prop : cp.getMetadata()) {
+                    for(final Map.Entry<String, String> prop : cp.getMetadata().entrySet()) {
                         if (prop.getKey().equals("runmodes")) {
                             if (extRunModes == null) {
                                 extRunModes = prop.getValue().split(",");
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 0c94ea1..148bcc6 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
@@ -16,21 +16,6 @@
  */
 package org.apache.sling.feature.modelconverter;
 
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Bundles;
 import org.apache.sling.feature.Configurations;
@@ -38,7 +23,6 @@
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.FeatureConstants;
-import org.apache.sling.feature.KeyValueMap;
 import org.apache.sling.feature.io.file.ArtifactHandler;
 import org.apache.sling.feature.io.file.ArtifactManager;
 import org.apache.sling.feature.io.file.ArtifactManagerConfig;
@@ -60,6 +44,21 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
 /** Converter that converts the provisioning model to the feature model.
  */
 public class ProvisioningToFeature {
@@ -294,11 +293,11 @@
     }
 
     private static void buildFromFeature(final Feature feature,
-            final KeyValueMap variables,
+            final Map<String,String> variables,
             final Bundles bundles,
             final Configurations configurations,
             final Extensions extensions,
-            final KeyValueMap properties) {
+            final Map<String,String> properties) {
         for (Iterator<Map.Entry<String, String>> it = feature.getVariables().iterator(); it.hasNext(); ) {
             Entry<String, String> entry = it.next();
             variables.put(entry.getKey(), entry.getValue());
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 50cfe88..580997e 100644
--- a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
@@ -16,35 +16,6 @@
  */
 package org.apache.sling.feature.modelconverter;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.UncheckedIOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Bundles;
 import org.apache.sling.feature.Configurations;
 import org.apache.sling.feature.Extension;
@@ -76,6 +47,34 @@
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.UncheckedIOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 public class ModelConverterTest {
     private Path tempDir;
     private ArtifactManager artifactManager;
@@ -463,10 +462,10 @@
         assertEquals(expected.getVendor(), actual.getVendor());
         assertEquals(expected.getLicense(), actual.getLicense());
 
-        assertFeatureKVMapEquals(expected.getVariables(), actual.getVariables());
+        assertEquals(expected.getVariables(), actual.getVariables());
         assertBundlesEqual(expected.getBundles(), actual.getBundles());
         assertConfigurationsEqual(expected.getConfigurations(), actual.getConfigurations(), expected.getBundles(), actual.getBundles());
-        assertFeatureKVMapEquals(expected.getFrameworkProperties(), actual.getFrameworkProperties());
+        assertEquals(expected.getFrameworkProperties(), actual.getFrameworkProperties());
         assertExtensionEqual(expected.getExtensions(), actual.getExtensions());
 
         // Ignore caps and reqs, includes and here since they cannot come from the prov model.
@@ -481,7 +480,7 @@
                 org.apache.sling.feature.Artifact ac = it2.next();
                 if (ac.getId().equals(ex.getId())) {
                     found = true;
-                    assertFeatureKVMapEquals(ex.getMetadata(), ac.getMetadata());
+                    assertEquals(ex.getMetadata(), ac.getMetadata());
                     break;
                 }
             }
@@ -658,16 +657,6 @@
         return m;
     }
 
-    private Map<String, String> featureKvToMap(org.apache.sling.feature.KeyValueMap kvm) {
-        Map<String, String> m = new HashMap<>();
-
-        for (Map.Entry<String, String> entry : kvm) {
-            m.put(entry.getKey(), entry.getValue());
-        }
-
-        return m;
-    }
-
     private boolean artifactGroupsEquals(String featureName, ArtifactGroup g1, ArtifactGroup g2) {
         int sl1 = effectiveStartLevel(featureName, g1.getStartLevel());
         int sl2 = effectiveStartLevel(featureName, g2.getStartLevel());
@@ -714,11 +703,6 @@
         assertEquals(kvToMap(expected), kvToMap(actual));
     }
 
-    private void assertFeatureKVMapEquals(org.apache.sling.feature.KeyValueMap expected,
-            org.apache.sling.feature.KeyValueMap actual) {
-        assertEquals(featureKvToMap(expected), featureKvToMap(actual));
-    }
-
     private void assertExtensionEqual(Extensions expected, Extensions actual) {
         assertEquals(expected.size(), actual.size());