You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2018/04/18 07:10:18 UTC

[sling-whiteboard] branch master updated: Update javadoc

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

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


The following commit(s) were added to refs/heads/master by this push:
     new b4852ce  Update javadoc
b4852ce is described below

commit b4852ceb3265a598b740e445df7560a9a37074c5
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Apr 18 09:09:58 2018 +0200

    Update javadoc
---
 .../feature/support/process/BuilderContext.java    | 40 +++++++++++++++-------
 .../sling/feature/support/process/BuilderUtil.java |  6 ++++
 .../support/process/FeatureExtensionHandler.java   |  4 ++-
 3 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderContext.java b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderContext.java
index f44ad3b..baf04ae 100644
--- a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderContext.java
+++ b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderContext.java
@@ -16,8 +16,8 @@
  */
 package org.apache.sling.feature.support.process;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * Builder context holds services used by {@link ApplicationBuilder}
@@ -27,17 +27,13 @@ public class BuilderContext {
 
     private final FeatureProvider provider;
 
-    private final List<FeatureExtensionHandler> featureExtensionHandlers = new ArrayList<>();
+    private final List<FeatureExtensionHandler> featureExtensionHandlers = new CopyOnWriteArrayList<>();
 
     /**
-     * Assemble the full feature by processing all includes.
+     * Create a new context
      *
-     * @param feature The feature to start
      * @param provider A provider providing the included features
-     * @param extensionMergers Optional feature mergers
-     * @return The assembled feature.
-     * @throws IllegalArgumentException If feature or provider is {@code null}
-     * @throws IllegalStateException If an included feature can't be provided or merged.
+     * @throws IllegalArgumentException If feature provider is {@code null}
      */
     public BuilderContext(final FeatureProvider provider) {
         if ( provider == null ) {
@@ -46,19 +42,37 @@ public class BuilderContext {
         this.provider = provider;
     }
 
+    /**
+     * Add a feature extension handler
+     * @param handler A handler
+     * @return This instance
+     */
+    public BuilderContext add(final FeatureExtensionHandler handler) {
+        featureExtensionHandlers.add(handler);
+        return this;
+    }
+
+    /**
+     * Get the feature provider.
+     * @return The feature provider
+     */
     FeatureProvider getFeatureProvider() {
         return this.provider;
     }
 
+    /**
+     * Get the list of extension handlers
+     * @return The list of handlers
+     */
     List<FeatureExtensionHandler> getFeatureExtensionHandlers() {
         return this.featureExtensionHandlers;
     }
 
-    public BuilderContext add(final FeatureExtensionHandler handler) {
-        featureExtensionHandlers.add(handler);
-        return this;
-    }
-
+    /**
+     * Clone the context and replace the feature provider
+     * @param featureProvider The new feature provider
+     * @return Cloned context
+     */
     BuilderContext clone(final FeatureProvider featureProvider) {
         final BuilderContext ctx = new BuilderContext(featureProvider);
         ctx.featureExtensionHandlers.addAll(featureExtensionHandlers);
diff --git a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderUtil.java b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderUtil.java
index d3943e9..87f5f86 100644
--- a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderUtil.java
+++ b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/BuilderUtil.java
@@ -210,6 +210,12 @@ class BuilderUtil {
                 target.getExtensions().add(ext);
             }
         }
+        // post processing
+        for(final Extension ext : target.getExtensions()) {
+            for(final FeatureExtensionHandler fem : context.getFeatureExtensionHandlers()) {
+                fem.postProcess(target, ext.getName());
+            }
+        }
     }
 
     static void mergeExtensions(final Application target,
diff --git a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/FeatureExtensionHandler.java b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/FeatureExtensionHandler.java
index 297f5c3..df3497d 100644
--- a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/FeatureExtensionHandler.java
+++ b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/process/FeatureExtensionHandler.java
@@ -46,7 +46,9 @@ public interface FeatureExtensionHandler {
     void merge(Feature target, Feature source, String extensionName);
 
     /**
-     * Post process the feature with respect to the extension
+     * 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(String)} returned {@code true} or not.
      * @param feature The feature
      * @param extensionName The extension name
      * @throws IllegalStateException If post processing failed

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