Author: cziegeler
Date: Fri Sep  1 15:14:42 2017
New Revision: 1806976

URL: http://svn.apache.org/viewvc?rev=1806976&view=rev
Log:
Introduce builder context

Added:
    
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java
   (with props)

Added: 
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java?rev=1806976&view=auto
==============================================================================
--- 
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java
 (added)
+++ 
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java
 Fri Sep  1 15:14:42 2017
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.feature.process;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BuilderContext {
+
+    private final FeatureProvider provider;
+
+    private final List<FeatureExtensionHandler> featureExtensionHandlers = new 
ArrayList<>();
+
+    /**
+     * Assemble the full feature by processing all includes.
+     *
+     * @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.
+     */
+    public BuilderContext(final FeatureProvider provider) {
+        if ( provider == null ) {
+            throw new IllegalArgumentException("Provider must not be null");
+        }
+        this.provider = provider;
+    }
+
+    FeatureProvider getFeatureProvider() {
+        return this.provider;
+    }
+
+    List<FeatureExtensionHandler> getFeatureExtensionHandlers() {
+        return this.featureExtensionHandlers;
+    }
+
+    public BuilderContext add(final FeatureExtensionHandler handler) {
+        featureExtensionHandlers.add(handler);
+        return this;
+    }
+
+    BuilderContext clone(final FeatureProvider featureProvider) {
+        final BuilderContext ctx = new BuilderContext(featureProvider);
+        ctx.featureExtensionHandlers.addAll(featureExtensionHandlers);
+        return ctx;
+    }
+}

Propchange: 
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/process/BuilderContext.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url


Reply via email to