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 2018/06/08 13:44:26 UTC

[sling-org-apache-sling-pipes] branch master updated: SLING-7718 add PipeBinding in the constructor

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8185051  SLING-7718 add PipeBinding in the constructor
8185051 is described below

commit 818505125983fc3135a64bf7b0d1ee6608ecfaa3
Author: Nicolas Peltier <pe...@gmail.com>
AuthorDate: Fri Jun 8 15:43:53 2018 +0200

    SLING-7718 add PipeBinding in the constructor
    
    - creates it in base pipe only if it's null,
    - use that constructor in plumber API with new method getPipe(resource, bindings),
    - use that new API in Container & Reference pipes
---
 pom.xml                                                  |  2 +-
 .../org/apache/sling/pipes/AbstractInputStreamPipe.java  |  4 ++--
 src/main/java/org/apache/sling/pipes/BasePipe.java       | 10 +++-------
 src/main/java/org/apache/sling/pipes/ContainerPipe.java  | 16 ++++------------
 src/main/java/org/apache/sling/pipes/Pipe.java           |  6 ------
 src/main/java/org/apache/sling/pipes/Plumber.java        | 10 ++++++++++
 src/main/java/org/apache/sling/pipes/ReferencePipe.java  | 10 +++-------
 .../apache/sling/pipes/internal/AuthorizablePipe.java    |  5 +++--
 .../java/org/apache/sling/pipes/internal/FilterPipe.java |  5 +++--
 .../java/org/apache/sling/pipes/internal/MovePipe.java   |  5 +++--
 .../apache/sling/pipes/internal/MultiPropertyPipe.java   |  5 +++--
 .../java/org/apache/sling/pipes/internal/NotPipe.java    |  5 +++--
 .../org/apache/sling/pipes/internal/PackagePipe.java     |  5 +++--
 .../java/org/apache/sling/pipes/internal/PathPipe.java   |  5 +++--
 .../org/apache/sling/pipes/internal/PlumberImpl.java     |  7 ++++++-
 .../java/org/apache/sling/pipes/internal/RemovePipe.java |  5 +++--
 .../org/apache/sling/pipes/internal/TraversePipe.java    |  5 +++--
 .../java/org/apache/sling/pipes/internal/WritePipe.java  |  5 +++--
 .../java/org/apache/sling/pipes/internal/XPathPipe.java  |  5 +++--
 .../apache/sling/pipes/internal/inputstream/CsvPipe.java |  5 +++--
 .../sling/pipes/internal/inputstream/JsonPipe.java       |  5 +++--
 .../sling/pipes/internal/inputstream/RegexpPipe.java     |  5 +++--
 .../slingquery/AbstractExpressionSlingQueryPipe.java     |  5 +++--
 .../internal/slingquery/AbstractSlingQueryPipe.java      |  5 +++--
 .../sling/pipes/internal/slingquery/ChildrenPipe.java    |  5 +++--
 .../sling/pipes/internal/slingquery/ClosestPipe.java     |  5 +++--
 .../apache/sling/pipes/internal/slingquery/FindPipe.java |  5 +++--
 .../sling/pipes/internal/slingquery/ParentPipe.java      |  5 +++--
 .../sling/pipes/internal/slingquery/ParentsPipe.java     |  5 +++--
 .../sling/pipes/internal/slingquery/SiblingsPipe.java    |  5 +++--
 .../java/org/apache/sling/pipes/dummies/DummyNull.java   |  5 +++--
 .../java/org/apache/sling/pipes/dummies/DummySearch.java |  5 +++--
 .../apache/sling/pipes/internal/ReferencePipeTest.java   |  3 +--
 .../sling/pipes/internal/inputstream/RegexpPipeTest.java |  2 +-
 34 files changed, 103 insertions(+), 87 deletions(-)

diff --git a/pom.xml b/pom.xml
index fa138d6..68054a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -245,7 +245,7 @@
     <dependency>
       <groupId>org.apache.sling</groupId>
       <artifactId>org.apache.sling.testing.jcr-mock</artifactId>
-      <version>1.3.3-SNAPSHOT</version>
+      <version>1.3.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java b/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
index a2eff74..0150a3b 100644
--- a/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
+++ b/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
@@ -57,8 +57,8 @@ public abstract class AbstractInputStreamPipe extends BasePipe {
 
     InputStream is;
 
-    public AbstractInputStreamPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public AbstractInputStreamPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
         configureHttpClient();
         binding = null;
     }
diff --git a/src/main/java/org/apache/sling/pipes/BasePipe.java b/src/main/java/org/apache/sling/pipes/BasePipe.java
index c648cb6..d797e9b 100644
--- a/src/main/java/org/apache/sling/pipes/BasePipe.java
+++ b/src/main/java/org/apache/sling/pipes/BasePipe.java
@@ -82,16 +82,17 @@ public class BasePipe implements Pipe {
      * Pipe Constructor
      * @param plumber plumber
      * @param resource configuration resource
+     * @param upperBindings already set bindings, can be null
      * @throws Exception in case configuration is not working
      */
-    public BasePipe(Plumber plumber, Resource resource) throws Exception {
+    public BasePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
         this.resource = resource;
         properties = resource.adaptTo(ValueMap.class);
         resolver = resource.getResourceResolver();
         this.plumber = plumber;
         name = properties.get(PN_NAME, resource.getName());
         distributionAgent = properties.get(PN_DISTRIBUTION_AGENT, String.class);
-        bindings = new PipeBindings(resource);
+        bindings = upperBindings == null ? new PipeBindings(resource) : upperBindings;
     }
 
     @Override
@@ -226,11 +227,6 @@ public class BasePipe implements Pipe {
         return bindings;
     }
 
-    @Override
-    public void setBindings(PipeBindings bindings) {
-        this.bindings = bindings;
-    }
-
     /**
      * default execution, just returns current resource
      * @return output of this pipe, which is here the input resource
diff --git a/src/main/java/org/apache/sling/pipes/ContainerPipe.java b/src/main/java/org/apache/sling/pipes/ContainerPipe.java
index d8900f9..edc9fab 100644
--- a/src/main/java/org/apache/sling/pipes/ContainerPipe.java
+++ b/src/main/java/org/apache/sling/pipes/ContainerPipe.java
@@ -49,19 +49,19 @@ public class ContainerPipe extends BasePipe {
      * Constructor
      * @param plumber plumber
      * @param resource container's configuration resource
+     * @param upperBindings pipe bindings
      * @throws Exception bad configuration handling
      */
-    public ContainerPipe(Plumber plumber, Resource resource) throws Exception{
-        super(plumber, resource);
+    public ContainerPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception{
+        super(plumber, resource, upperBindings);
         sleep = properties.get(PN_SLEEP, 0L);
         for (Iterator<Resource> childPipeResources = getConfiguration().listChildren(); childPipeResources.hasNext();){
             Resource pipeResource = childPipeResources.next();
-            Pipe pipe = plumber.getPipe(pipeResource);
+            Pipe pipe = plumber.getPipe(pipeResource, bindings);
             if (pipe == null) {
                 log.error("configured pipe {} is either not registered, or not computable by the plumber", pipeResource.getPath());
             } else {
                 pipe.setParent(this);
-                pipe.setBindings(bindings);
                 pipes.put(pipe.getName(), pipe);
                 pipeList.add(pipe);
             }
@@ -79,14 +79,6 @@ public class ContainerPipe extends BasePipe {
     }
 
     @Override
-    public void setBindings(PipeBindings bindings) {
-        this.bindings = bindings;
-        for (Pipe pipe : pipeList){
-            pipe.setBindings(bindings);
-        }
-    }
-
-    @Override
     public Iterator<Resource> getOutput()  {
         return new ContainerResourceIterator(this, sleep);
     }
diff --git a/src/main/java/org/apache/sling/pipes/Pipe.java b/src/main/java/org/apache/sling/pipes/Pipe.java
index b1f8a74..652814d 100644
--- a/src/main/java/org/apache/sling/pipes/Pipe.java
+++ b/src/main/java/org/apache/sling/pipes/Pipe.java
@@ -115,12 +115,6 @@ public interface Pipe {
     PipeBindings getBindings();
 
     /**
-     * set the pipe's bindings
-     * @param bindings bindings to set
-     */
-    void setBindings(PipeBindings bindings);
-
-    /**
      * Executes the pipe, can be contained in a parent or not
      * @return iterator of resource resulting from execution of this pipe
      */
diff --git a/src/main/java/org/apache/sling/pipes/Plumber.java b/src/main/java/org/apache/sling/pipes/Plumber.java
index c0a1a4d..421bf66 100644
--- a/src/main/java/org/apache/sling/pipes/Plumber.java
+++ b/src/main/java/org/apache/sling/pipes/Plumber.java
@@ -38,6 +38,16 @@ public interface Plumber {
      */
     Pipe getPipe(Resource resource);
 
+
+    /**
+     * Instantiate a pipe from the given resource and returns it
+     * @param resource configuration resource
+     * @param upperBindings already set binding we want to initiate our pipe with
+     * @return pipe instantiated from the resource, null otherwise
+     */
+    Pipe getPipe(Resource resource, PipeBindings upperBindings);
+
+
     /**
      * executes in a background thread
      * @param resolver resolver used for registering the execution (id will be checked against the configuration)
diff --git a/src/main/java/org/apache/sling/pipes/ReferencePipe.java b/src/main/java/org/apache/sling/pipes/ReferencePipe.java
index a7814d5..3429205 100644
--- a/src/main/java/org/apache/sling/pipes/ReferencePipe.java
+++ b/src/main/java/org/apache/sling/pipes/ReferencePipe.java
@@ -39,8 +39,8 @@ public class ReferencePipe extends BasePipe {
      */
     String referencePath;
 
-    public ReferencePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public ReferencePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
@@ -57,7 +57,7 @@ public class ReferencePipe extends BasePipe {
         if (pipeResource == null) {
             throw new Exception("Reference configuration error: There is no resource at " + getExpr());
         }
-        reference = plumber.getPipe(pipeResource);
+        reference = plumber.getPipe(pipeResource, bindings);
         if (reference == null) {
             throw new Exception("Unable to build out pipe out of " + getPath());
         }
@@ -68,10 +68,6 @@ public class ReferencePipe extends BasePipe {
         if (parent != null) {
             reference.setParent(parent);
         }
-        //set reference's bindings
-        if (bindings != null) {
-            reference.setBindings(bindings);
-        }
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java b/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java
index f7fb73a..2522223 100644
--- a/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java
@@ -24,6 +24,7 @@ import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -72,8 +73,8 @@ public class AuthorizablePipe extends BasePipe {
      * @param resource configuration resource
      * @throws Exception bad configuration handling
      */
-    public AuthorizablePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public AuthorizablePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
         resolver = resource.getResourceResolver();
         userManager = resolver.adaptTo(UserManager.class);
         if (getConfiguration() != null) {
diff --git a/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java b/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java
index 53deda8..8b7ff47 100644
--- a/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java
@@ -19,6 +19,7 @@ package org.apache.sling.pipes.internal;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,8 +42,8 @@ public class FilterPipe extends BasePipe {
     public static final String PN_NOCHILDREN = PREFIX_FILTER + "noChildren";
     public static final String PN_TEST = PREFIX_FILTER + "test";
 
-    public FilterPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public FilterPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     boolean propertiesPass(ValueMap current, ValueMap filter) throws ScriptException {
diff --git a/src/main/java/org/apache/sling/pipes/internal/MovePipe.java b/src/main/java/org/apache/sling/pipes/internal/MovePipe.java
index ad61df1..f131998 100644
--- a/src/main/java/org/apache/sling/pipes/internal/MovePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/MovePipe.java
@@ -18,6 +18,7 @@ package org.apache.sling.pipes.internal;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,8 +39,8 @@ public class MovePipe extends BasePipe {
 
     public static final String RESOURCE_TYPE = RT_PREFIX + "mv";
 
-    public MovePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public MovePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java b/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java
index 06bbbf8..57590b7 100644
--- a/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java
@@ -18,6 +18,7 @@ package org.apache.sling.pipes.internal;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,8 +39,8 @@ public class MultiPropertyPipe extends BasePipe {
     private static Logger logger = LoggerFactory.getLogger(MultiPropertyPipe.class);
     public static final String RESOURCE_TYPE = RT_PREFIX + "multiProperty";
 
-    public MultiPropertyPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public MultiPropertyPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     MVResourceIterator iterator;
diff --git a/src/main/java/org/apache/sling/pipes/internal/NotPipe.java b/src/main/java/org/apache/sling/pipes/internal/NotPipe.java
index 02a5355..76e4e18 100644
--- a/src/main/java/org/apache/sling/pipes/internal/NotPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/NotPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.pipes.ReferencePipe;
 
@@ -31,8 +32,8 @@ public class NotPipe extends ReferencePipe {
 
     public static final String RESOURCE_TYPE = RT_PREFIX + "not";
 
-    public NotPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public NotPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/PackagePipe.java b/src/main/java/org/apache/sling/pipes/internal/PackagePipe.java
index 4214ad2..29aef52 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PackagePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PackagePipe.java
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.vault.packaging.PackagingService;
 import org.apache.jackrabbit.vault.util.Text;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,8 +59,8 @@ public class PackagePipe extends BasePipe {
      *
      * @throws Exception in case configuration is not working
      */
-    public PackagePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public PackagePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/PathPipe.java b/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
index 7e94414..c5e9f94 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
@@ -21,6 +21,7 @@ import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,8 +60,8 @@ public class PathPipe extends BasePipe {
 
     private final Logger logger = LoggerFactory.getLogger(PathPipe.class);
 
-    public PathPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public PathPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
         nodeType = properties.get(PN_NODETYPE, String.class);
         resourceType = properties.get(PN_RESOURCETYPE, NT_SLING_FOLDER);
         jcr = StringUtils.isNotBlank(nodeType);
diff --git a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
index f7149e1..075957c 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
@@ -204,12 +204,17 @@ public class PlumberImpl implements Plumber, JobConsumer, PlumberMXBean {
 
     @Override
     public Pipe getPipe(Resource resource) {
+        return getPipe(resource, null);
+    }
+
+    @Override
+    public Pipe getPipe(Resource resource, PipeBindings upperBindings) {
         if ((resource == null) || !registry.containsKey(resource.getResourceType())) {
             log.error("Pipe configuration resource is either null, or its type is not registered");
         } else {
             try {
                 Class<? extends Pipe> pipeClass = registry.get(resource.getResourceType());
-                return pipeClass.getDeclaredConstructor(Plumber.class, Resource.class).newInstance(this, resource);
+                return pipeClass.getDeclaredConstructor(Plumber.class, Resource.class, PipeBindings.class).newInstance(this, resource, upperBindings);
             } catch (Exception e) {
                 log.error("Unable to properly instantiate the pipe configured in {}", resource.getPath(), e);
             }
diff --git a/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java b/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java
index 0ed0a6d..84ba509 100644
--- a/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java
@@ -19,6 +19,7 @@ package org.apache.sling.pipes.internal;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,8 +45,8 @@ public class RemovePipe extends BasePipe {
      */
     Resource filter;
 
-    public RemovePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public RemovePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
         filter = getConfiguration();
     }
 
diff --git a/src/main/java/org/apache/sling/pipes/internal/TraversePipe.java b/src/main/java/org/apache/sling/pipes/internal/TraversePipe.java
index 179325a..96ea1b5 100644
--- a/src/main/java/org/apache/sling/pipes/internal/TraversePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/TraversePipe.java
@@ -20,6 +20,7 @@ import org.apache.commons.collections.IteratorUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,8 +47,8 @@ public class TraversePipe extends BasePipe {
      * @param resource configuration resource
      * @throws Exception in case configuration is not working
      */
-    public TraversePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public TraversePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
 
diff --git a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
index 3dd749c..15644c0 100644
--- a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
@@ -21,6 +21,7 @@ import org.apache.sling.api.resource.ModifiableValueMap;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,8 +57,8 @@ public class WritePipe extends BasePipe {
      * @param resource configuration resource
      * @throws Exception bad configuration handling
      */
-    public WritePipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public WritePipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
         if (getConfiguration() == null){
             String pathCandidate = getExpr();
             if (StringUtils.isNotBlank(pathCandidate) && resolver.getResource(pathCandidate) != null){
diff --git a/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java b/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java
index 9b962df..80f77ba 100644
--- a/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java
@@ -19,6 +19,7 @@ package org.apache.sling.pipes.internal;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,8 +36,8 @@ public class XPathPipe extends BasePipe {
     private static final Logger logger = LoggerFactory.getLogger(XPathPipe.class);
     public static final String RESOURCE_TYPE = RT_PREFIX + "xpath";
 
-    public XPathPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public XPathPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/inputstream/CsvPipe.java b/src/main/java/org/apache/sling/pipes/internal/inputstream/CsvPipe.java
index 3a7bef8..5201999 100644
--- a/src/main/java/org/apache/sling/pipes/internal/inputstream/CsvPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/inputstream/CsvPipe.java
@@ -19,6 +19,7 @@ package org.apache.sling.pipes.internal.inputstream;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.AbstractInputStreamPipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,8 +50,8 @@ public class CsvPipe extends AbstractInputStreamPipe {
 
     int index = 0;
 
-    public CsvPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public CsvPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/inputstream/JsonPipe.java b/src/main/java/org/apache/sling/pipes/internal/inputstream/JsonPipe.java
index a739b72..d641d5b 100644
--- a/src/main/java/org/apache/sling/pipes/internal/inputstream/JsonPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/inputstream/JsonPipe.java
@@ -20,6 +20,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.AbstractInputStreamPipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.pipes.internal.JsonUtil;
 import org.slf4j.Logger;
@@ -60,8 +61,8 @@ public class JsonPipe extends AbstractInputStreamPipe {
     JsonArray array;
     int index = -1;
 
-    public JsonPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public JsonPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     /**
diff --git a/src/main/java/org/apache/sling/pipes/internal/inputstream/RegexpPipe.java b/src/main/java/org/apache/sling/pipes/internal/inputstream/RegexpPipe.java
index 441d26c..da812d1 100644
--- a/src/main/java/org/apache/sling/pipes/internal/inputstream/RegexpPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/inputstream/RegexpPipe.java
@@ -19,6 +19,7 @@ package org.apache.sling.pipes.internal.inputstream;
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.AbstractInputStreamPipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,8 +47,8 @@ public class RegexpPipe extends AbstractInputStreamPipe {
     private static final Pattern PATTERN_NAME = Pattern.compile("\\?<([\\w]+)>");
     private static final short PATTERN_IDX_NAME = 1;
 
-    public RegexpPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public RegexpPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractExpressionSlingQueryPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractExpressionSlingQueryPipe.java
index 55d94e2..c79d06d 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractExpressionSlingQueryPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractExpressionSlingQueryPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 import org.slf4j.Logger;
@@ -29,8 +30,8 @@ import javax.script.ScriptException;
  */
 public abstract class AbstractExpressionSlingQueryPipe extends AbstractSlingQueryPipe {
     Logger logger = LoggerFactory.getLogger(AbstractExpressionSlingQueryPipe.class);
-    public AbstractExpressionSlingQueryPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public AbstractExpressionSlingQueryPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     /**
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractSlingQueryPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractSlingQueryPipe.java
index a1cb4ea..421630f 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractSlingQueryPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/AbstractSlingQueryPipe.java
@@ -18,6 +18,7 @@ package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 import java.util.Iterator;
@@ -27,8 +28,8 @@ import java.util.Iterator;
  */
 public abstract class AbstractSlingQueryPipe extends BasePipe {
 
-    public AbstractSlingQueryPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public AbstractSlingQueryPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
     @Override
     public boolean modifiesContent() {
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/ChildrenPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/ChildrenPipe.java
index d1bddfb..45b8e5e 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/ChildrenPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/ChildrenPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 
@@ -28,8 +29,8 @@ import static org.apache.sling.query.SlingQuery.$;
 public class ChildrenPipe extends AbstractExpressionSlingQueryPipe {
     public final static String RESOURCE_TYPE = RT_PREFIX + "children";
 
-    public ChildrenPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public ChildrenPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/ClosestPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/ClosestPipe.java
index d418df1..1a68f90 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/ClosestPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/ClosestPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 
@@ -25,8 +26,8 @@ import static org.apache.sling.query.SlingQuery.$;
 public class ClosestPipe extends AbstractExpressionSlingQueryPipe {
     public static final String RESOURCE_TYPE = RT_PREFIX + "closest";
 
-    public ClosestPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public ClosestPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/FindPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/FindPipe.java
index 687cee3..e8cdd02 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/FindPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/FindPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 
@@ -25,8 +26,8 @@ import static org.apache.sling.query.SlingQuery.$;
 public class FindPipe extends AbstractExpressionSlingQueryPipe {
     public static final String RESOURCE_TYPE = RT_PREFIX + "find";
 
-    public FindPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public FindPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentPipe.java
index 8823596..0399c8a 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 
@@ -28,8 +29,8 @@ import static org.apache.sling.query.SlingQuery.$;
 public class ParentPipe extends AbstractSlingQueryPipe {
     public static final String RESOURCE_TYPE = RT_PREFIX + "parent";
 
-    public ParentPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public ParentPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentsPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentsPipe.java
index f1eb6a8..056ffb9 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentsPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/ParentsPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 
@@ -28,8 +29,8 @@ import static org.apache.sling.query.SlingQuery.$;
 public class ParentsPipe extends AbstractExpressionSlingQueryPipe {
     public static final String RESOURCE_TYPE = RT_PREFIX + "parents";
 
-    public ParentsPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public ParentsPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/slingquery/SiblingsPipe.java b/src/main/java/org/apache/sling/pipes/internal/slingquery/SiblingsPipe.java
index 7cbc8c8..ee47eb5 100644
--- a/src/main/java/org/apache/sling/pipes/internal/slingquery/SiblingsPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/slingquery/SiblingsPipe.java
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal.slingquery;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 import org.apache.sling.query.SlingQuery;
 
@@ -26,8 +27,8 @@ public class SiblingsPipe extends AbstractExpressionSlingQueryPipe {
 
     public static final String RESOURCE_TYPE = RT_PREFIX + "siblings";
 
-    public SiblingsPipe(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public SiblingsPipe(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java b/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java
index bd32bcc..edcfba3 100644
--- a/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java
+++ b/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java
@@ -21,14 +21,15 @@ import java.util.Iterator;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 
 /**
  * this pipe has nothing in output
  */
 public class DummyNull extends BasePipe {
-    public DummyNull(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public DummyNull(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java b/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java
index 8163d2c..8b09423 100644
--- a/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java
+++ b/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java
@@ -24,6 +24,7 @@ import javax.jcr.NodeIterator;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.BasePipe;
+import org.apache.sling.pipes.PipeBindings;
 import org.apache.sling.pipes.Plumber;
 
 /**
@@ -31,8 +32,8 @@ import org.apache.sling.pipes.Plumber;
  */
 public class DummySearch extends BasePipe {
 
-    public DummySearch(Plumber plumber, Resource resource) throws Exception {
-        super(plumber, resource);
+    public DummySearch(Plumber plumber, Resource resource, PipeBindings upperBindings) throws Exception {
+        super(plumber, resource, upperBindings);
     }
 
     @Override
diff --git a/src/test/java/org/apache/sling/pipes/internal/ReferencePipeTest.java b/src/test/java/org/apache/sling/pipes/internal/ReferencePipeTest.java
index 9df9a9d..c506566 100644
--- a/src/test/java/org/apache/sling/pipes/internal/ReferencePipeTest.java
+++ b/src/test/java/org/apache/sling/pipes/internal/ReferencePipeTest.java
@@ -69,8 +69,7 @@ public class ReferencePipeTest  extends AbstractPipeTest {
         bindings.put("fruit", newFruit);
         Pipe pipe = plumber.newPipe(context.resourceResolver()).echo(PATH_FRUITS + "/${fruit}").build();
         Collection<String> paths = plumber.newPipe(context.resourceResolver())
-                .pipe(ReferencePipe.RESOURCE_TYPE)
-                .expr(pipe.getResource().getPath())
+                .ref(pipe.getResource().getPath())
                 .run(bindings).getCurrentPathSet();
         assertTrue("paths should contain new path", paths.contains(newPath));
     }
diff --git a/src/test/java/org/apache/sling/pipes/internal/inputstream/RegexpPipeTest.java b/src/test/java/org/apache/sling/pipes/internal/inputstream/RegexpPipeTest.java
index c21487c..7c156b9 100644
--- a/src/test/java/org/apache/sling/pipes/internal/inputstream/RegexpPipeTest.java
+++ b/src/test/java/org/apache/sling/pipes/internal/inputstream/RegexpPipeTest.java
@@ -33,7 +33,7 @@ import static org.junit.Assert.*;
 public class RegexpPipeTest extends AbstractPipeTest {
     @Test
     public void getGroupNames() throws Exception {
-        RegexpPipe pipe = new RegexpPipe(plumber, context.resourceResolver().getResource("/content"));
+        RegexpPipe pipe = new RegexpPipe(plumber, context.resourceResolver().getResource("/content"), null);
         Collection<String> names = pipe.getGroupNames("some (?<first>group) that uses (?<name>names)");
         assertEquals("there should be 2 names", 2, names.size());
         assertTrue("there should be first", names.contains("first"));

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