You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/04/27 09:51:33 UTC

[sling-org-apache-sling-feature] 13/22: Support the slinstart maven plugin by providing a model converter API

This is an automated email from the ASF dual-hosted git repository.

davidb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature.git

commit 6c70fe7bca7663dd5a2cf0c523761e9a6c90f577
Author: David Bosschaert <da...@gmail.com>
AuthorDate: Fri Mar 9 10:46:10 2018 +0000

    Support the slinstart maven plugin by providing a model converter API
---
 .../java/org/apache/sling/feature/KeyValueMap.java | 23 ++++++++++++++++++----
 .../sling/feature/process/ApplicationBuilder.java  | 21 +++++++++++++-------
 2 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/KeyValueMap.java b/src/main/java/org/apache/sling/feature/KeyValueMap.java
index ce8c1c8..675ee21 100644
--- a/src/main/java/org/apache/sling/feature/KeyValueMap.java
+++ b/src/main/java/org/apache/sling/feature/KeyValueMap.java
@@ -28,7 +28,7 @@ public class KeyValueMap
     implements Iterable<Map.Entry<String, String>> {
 
     /** The map holding the actual key value pairs. */
-    private final Map<String, String> properties = new TreeMap<>();
+    private final Map<String, Object> properties = new TreeMap<>();
 
     /**
      * Get an item from the map.
@@ -36,6 +36,14 @@ public class KeyValueMap
      * @return The item or {@code null}.
      */
     public String get(final String key) {
+        Object val = this.properties.get(key);
+        if (val instanceof String) {
+            return (String) val;
+        }
+        return null;
+    }
+
+    public Object getObject(final String key) {
         return this.properties.get(key);
     }
 
@@ -44,7 +52,7 @@ public class KeyValueMap
      * @param key The key of the item.
      * @param value The value
      */
-    public void put(final String key, final String value) {
+    public void put(final String key, final Object value) {
         this.properties.put(key, value);
     }
 
@@ -53,7 +61,7 @@ public class KeyValueMap
      * @param key The key of the item.
      * @return The previously stored value for the key or {@code null}.
      */
-    public String remove(final String key) {
+    public Object remove(final String key) {
         return this.properties.remove(key);
     }
 
@@ -67,7 +75,14 @@ public class KeyValueMap
 
     @Override
     public Iterator<Entry<String, String>> iterator() {
-        return this.properties.entrySet().iterator();
+        // TODO hack
+        Map<String, String> copied = new TreeMap<>();
+        for (Entry<String, Object> entry : properties.entrySet()) {
+            if (entry.getValue() instanceof String) {
+                copied.put(entry.getKey(), (String) entry.getValue());
+            }
+        }
+        return copied.entrySet().iterator();
     }
 
     /**
diff --git a/src/main/java/org/apache/sling/feature/process/ApplicationBuilder.java b/src/main/java/org/apache/sling/feature/process/ApplicationBuilder.java
index 2a9698a..71fc8b0 100644
--- a/src/main/java/org/apache/sling/feature/process/ApplicationBuilder.java
+++ b/src/main/java/org/apache/sling/feature/process/ApplicationBuilder.java
@@ -23,6 +23,7 @@ import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.FeatureResource;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -117,15 +118,21 @@ public class ApplicationBuilder {
             }
         }
 
-        // order by dependency chain
-        final List<FeatureResource> sortedResources = resolver.orderResources(featureList);
+        final List<Feature> sortedFeatures;
+        if (resolver != null) {
+            // order by dependency chain
+            final List<FeatureResource> sortedResources = resolver.orderResources(featureList);
 
-        final List<Feature> sortedFeatures = new ArrayList<>();
-        for (final FeatureResource fr : sortedResources) {
-            Feature f = fr.getFeature();
-            if (!sortedFeatures.contains(f)) {
-                sortedFeatures.add(f);
+            sortedFeatures = new ArrayList<>();
+            for (final FeatureResource fr : sortedResources) {
+                Feature f = fr.getFeature();
+                if (!sortedFeatures.contains(f)) {
+                    sortedFeatures.add(f);
+                }
             }
+        } else {
+            sortedFeatures = featureList;
+            Collections.sort(sortedFeatures);
         }
 
         // assemble

-- 
To stop receiving notification emails like this one, please contact
davidb@apache.org.