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/10/01 20:45:09 UTC
[sling-org-apache-sling-feature] 01/01: Initial content for
features service
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 <bo...@adobe.com>
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);
}