You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by np...@apache.org on 2017/09/08 20:41:49 UTC

svn commit: r1807819 - in /sling/trunk/contrib/extensions/sling-pipes/src: main/java/org/apache/sling/pipes/ main/java/org/apache/sling/pipes/internal/ test/java/org/apache/sling/pipes/

Author: npeltier
Date: Fri Sep  8 20:41:49 2017
New Revision: 1807819

URL: http://svn.apache.org/viewvc?rev=1807819&view=rev
Log:
SLING-7110 allow configuration of the container

Modified:
    sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
    sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
    sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java
    sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java

Modified: sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java Fri Sep  8 20:41:49 2017
@@ -121,7 +121,7 @@ public interface PipeBuilder {
      * parameterized current pipe in the context
      * @param params key value pair of parameters
      * @return updated instance of PipeBuilder
-     * @throws IllegalAccessException in case it's called before a pipe is configured, or with wrong # of arguments
+     * @throws IllegalAccessException in case it's called with wrong # of arguments
      */
     PipeBuilder with(Object... params) throws IllegalAccessException;
 

Modified: sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java Fri Sep  8 20:41:49 2017
@@ -44,7 +44,9 @@ public class PipeBuilderImpl implements
 
     List<Step> steps;
 
-    Step currentStep;
+    Step containerStep = new Step(ContainerPipe.RESOURCE_TYPE);
+
+    Step currentStep = containerStep;
 
     Plumber plumber;
 
@@ -153,16 +155,6 @@ public class PipeBuilderImpl implements
         return pipe(ParentPipe.RESOURCE_TYPE);
     }
 
-    /**
-     * check of presence of a current step, fails loudly if it's not the case
-     * @throws IllegalAccessException exception thrown if current step is not present
-     */
-    protected void checkCurrentStep() throws IllegalAccessException {
-        if (currentStep == null){
-            throw new IllegalAccessException("A pipe should have been configured first");
-        }
-    }
-
     @Override
     public PipeBuilder with(Object... params) throws IllegalAccessException {
         return writeToCurrentStep(null, params);
@@ -181,7 +173,6 @@ public class PipeBuilderImpl implements
      * @throws IllegalAccessException in case configuration is wrong
      */
     protected PipeBuilder writeToCurrentStep(String name, Object... params) throws IllegalAccessException {
-        checkCurrentStep();
         if (params.length % 2 > 0){
             throw new IllegalArgumentException("there should be an even number of arguments");
         }
@@ -210,7 +201,6 @@ public class PipeBuilderImpl implements
 
     @Override
     public PipeBuilder name(String name) throws IllegalAccessException {
-        checkCurrentStep();
         currentStep.name = name;
         return this;
     }
@@ -233,8 +223,8 @@ public class PipeBuilderImpl implements
      * @param data map of properties to add
      * @throws PersistenceException in case configuration resource couldn't be persisted
      */
-    protected void createResource(ResourceResolver resolver, String path, String type, Map data) throws PersistenceException {
-        ResourceUtil.getOrCreateResource(resolver, path, data, type, false);
+    protected Resource createResource(ResourceResolver resolver, String path, String type, Map data) throws PersistenceException {
+        return ResourceUtil.getOrCreateResource(resolver, path, data, type, false);
     }
 
     @Override
@@ -242,20 +232,30 @@ public class PipeBuilderImpl implements
         return build(buildRandomPipePath());
     }
 
+    /**
+     * Persist a step at a given path
+     * @param path
+     * @param step
+     * @return created resource
+     * @throws PersistenceException
+     */
+    protected Resource persistStep(String path, String parentType, Step step) throws PersistenceException {
+        Resource resource = createResource(resolver, path, parentType, step.properties);
+        for (Map.Entry<String, Map> entry : step.confs.entrySet()){
+            createResource(resolver, path + "/" + entry.getKey(), NT_SLING_FOLDER, entry.getValue());
+            logger.debug("built pipe {}'s {} node", path, entry.getKey());
+        }
+        return resource;
+    }
+
     @Override
     public Pipe build(String path) throws PersistenceException {
-        Resource pipeResource = ResourceUtil.getOrCreateResource(resolver, path, ContainerPipe.RESOURCE_TYPE, NT_SLING_FOLDER, true);
+        Resource pipeResource = persistStep(path, NT_SLING_FOLDER, containerStep);
         int index = 0;
         for (Step step : steps){
             String name = StringUtils.isNotBlank(step.name) ? step.name : DEFAULT_NAMES.length > index ? DEFAULT_NAMES[index] : Integer.toString(index);
             index++;
-            String subPipePath = path + "/" + Pipe.NN_CONF + "/" + name;
-            createResource(resolver, subPipePath, NT_SLING_ORDERED_FOLDER, step.properties);
-            logger.debug("built subpipe {}", subPipePath);
-            for (Map.Entry<String, Map> entry : step.confs.entrySet()){
-                createResource(resolver, subPipePath + "/" + entry.getKey(), NT_SLING_FOLDER, entry.getValue());
-                logger.debug("built subpipe {}'s {} node", subPipePath, entry.getKey());
-            }
+            persistStep(path + "/" + Pipe.NN_CONF + "/" + name, NT_SLING_ORDERED_FOLDER, step);
         }
         resolver.commit();
         logger.debug("built pipe under {}", path);

Modified: sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java Fri Sep  8 20:41:49 2017
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.0.0")
+@Version("1.1.0")
 package org.apache.sling.pipes;
 
 import org.osgi.annotation.versioning.Version;

Modified: sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java Fri Sep  8 20:41:49 2017
@@ -53,6 +53,16 @@ public class PipeBuilderTest extends Abs
     }
 
     @Test
+    public void confContainerProperties() throws Exception {
+        PipeBuilder containerBuilder = plumber.newPipe(context.resourceResolver());
+        containerBuilder.with("test",true);
+        String specialPath = "/content/testedContainer";
+        containerBuilder.echo(PATH_APPLE).write("tested", true, "working", true).build(specialPath);
+        ValueMap properties = context.resourceResolver().getResource(specialPath).adaptTo(ValueMap.class);
+        assertTrue("property should have been written", properties.get("test", false));
+    }
+
+    @Test
     public void bindings() throws Exception {
         PipeBuilder defaultNames = plumber.newPipe(context.resourceResolver());
         Set<String> paths = defaultNames