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

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

commit 5c7c5e7358760e3e4c139c99d50a6cbbc9ff0891
Author: David Bosschaert <[email protected]>
AuthorDate: Mon Oct 1 21:44:41 2018 +0100

    Initial content for features service
---
 .../apache/sling/feature/builder/BuilderUtil.java  | 28 ++++++++++++----------
 .../feature/builder/FeatureExtensionHandler.java   |  8 +++++--
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java 
b/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java
index c9bd756..d56502c 100644
--- a/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java
+++ b/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java
@@ -16,8 +16,19 @@
  */
 package org.apache.sling.feature.builder;
 
+import org.apache.sling.feature.Artifact;
+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.Feature;
+import org.apache.sling.feature.KeyValueMap;
+import org.osgi.resource.Capability;
+import org.osgi.resource.Requirement;
+
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
@@ -33,16 +44,6 @@ import javax.json.JsonValue;
 import javax.json.JsonValue.ValueType;
 import javax.json.JsonWriter;
 
-import org.apache.sling.feature.Artifact;
-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.Feature;
-import org.apache.sling.feature.KeyValueMap;
-import org.osgi.resource.Capability;
-import org.osgi.resource.Requirement;
-
 /**
  * Utility methods for the builders
  */
@@ -280,10 +281,13 @@ class BuilderUtil {
                 target.getExtensions().add(ext);
             }
         }
+
         // post processing
-        for(final Extension ext : target.getExtensions()) {
+        List<Extension> extensions = new ArrayList<>(target.getExtensions());
+        extensions.add(null); // Add the 'null' extension, which is always 
there.
+        for(final Extension ext : extensions) {
             for(final FeatureExtensionHandler fem : 
context.getFeatureExtensionHandlers()) {
-                fem.postProcess(target, ext);
+                fem.postProcess(target, source, ext);
             }
         }
     }
diff --git 
a/src/main/java/org/apache/sling/feature/builder/FeatureExtensionHandler.java 
b/src/main/java/org/apache/sling/feature/builder/FeatureExtensionHandler.java
index 8434b5a..028f774 100644
--- 
a/src/main/java/org/apache/sling/feature/builder/FeatureExtensionHandler.java
+++ 
b/src/main/java/org/apache/sling/feature/builder/FeatureExtensionHandler.java
@@ -52,9 +52,13 @@ public interface FeatureExtensionHandler {
      * Post process the feature with respect to the extension.
      * Post processing is invoked after all extensions have been merged.
      * This method is called regardless whether {@link #canMerge(Extension)} 
returned {@code true} or not.
-     * @param feature The feature
+     * @param target The target feature
+     * @param source The source feature
      * @param extension The extension
      * @throws IllegalStateException If post processing failed
      */
-    void postProcess(Feature feature, Extension extension);
+    void postProcess(Feature target, Feature source, Extension extension);
+
+    // TODO how to make this type strong? ArtifactManager is only known to 
io...
+    void initialize(ArtifactResolver artifactResolver);
 }

Reply via email to