Author: npeltier
Date: Tue Oct 17 07:40:22 2017
New Revision: 1812362

URL: http://svn.apache.org/viewvc?rev=1812362&view=rev
Log:
SLING-7170 introducing PipeModel

- model that accepts pipes under pipes node of the current resource, and 
provide the outputs to the client script,
- model provides to each executed pipe bindings extracted from current resource,
- unit tests,
- integration test testing sightly integration

Added:
    
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/models/
    
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/models/PipeModel.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeModelIT.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/models/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/models/PipeModelTest.java
    sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/fruit/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/fruit/fruit.html
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/list/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/list/list.html
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/fruits.json
      - copied, changed from r1812300, 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/fruits.json
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/list-component.json
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/pipes-it/
    
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/pipes-it/fruit-list.json
    sling/trunk/contrib/extensions/sling-pipes/src/test/resources/logback.xml
Removed:
    sling/trunk/contrib/extensions/sling-pipes/src/test/resources/fruits.json
Modified:
    sling/trunk/contrib/extensions/sling-pipes/pom.xml
    
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.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/AbstractPipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/TraversePipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java
    
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipesTestSupport.java
    sling/trunk/contrib/extensions/sling-pipes/src/test/resources/container.json

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Oct 17 07:40:22 2017
@@ -61,28 +61,11 @@
             <Embed-Dependency>
               
org.apache.sling.jcr.contentparser;inline="org/apache/sling/jcr/contentparser/impl/JsonTicksConverter.class"
             </Embed-Dependency>
-          </instructions>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>integration-test</goal>
-              <goal>verify</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <redirectTestOutputToFile>true</redirectTestOutputToFile>
-          <systemProperties>
-            <property>
-              <name>bundle.filename</name>
-              <value>${basedir}/target/${project.build.finalName}.jar</value>
-            </property>
-          </systemProperties>
+            <Export-Package>!org.apache.sling.pipes.internal.*, 
org.apache.sling.pipes.*</Export-Package>
+                <Sling-Model-Packages>
+                  org.apache.sling.pipes.models
+                </Sling-Model-Packages>
+              </instructions>
         </configuration>
       </plugin>
       <plugin>
@@ -108,6 +91,36 @@
       </plugin>
     </plugins>
   </build>
+  <profiles>
+    <profile>
+      <id>integration-tests</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>integration-test</goal>
+                  <goal>verify</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <redirectTestOutputToFile>true</redirectTestOutputToFile>
+              <systemProperties>
+                <property>
+                  <name>bundle.filename</name>
+                  
<value>${basedir}/target/${project.build.finalName}.jar</value>
+                </property>
+              </systemProperties>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
   <dependencies>
     <dependency>
@@ -209,17 +222,15 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.commons.johnzon</artifactId>
-      <version>1.0.0</version>
-      <scope>test</scope>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>maven-sling-plugin</artifactId>
+        <version>2.1.0</version>
     </dependency>
-    <!-- Apache Felix -->
     <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.framework</artifactId>
-      <version>5.6.6</version>
-      <scope>test</scope>
+      <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.models.api</artifactId>
+      <version>1.3.2</version>
+      <scope>provided</scope>
     </dependency>
     <!-- testing -->
     <dependency>
@@ -240,6 +251,12 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.auth.core</artifactId>
+      <version>1.3.22</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.ops4j.pax.exam</groupId>
       <artifactId>pax-exam</artifactId>
       <version>${org.ops4j.pax.exam.version}</version>
@@ -275,6 +292,30 @@
       <version>0.0.4</version>
       <scope>test</scope>
     </dependency>
+    <!-- jsoup -->
+    <dependency>
+      <groupId>org.jsoup</groupId>
+      <artifactId>jsoup</artifactId>
+      <version>1.9.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicemix.bundles</groupId>
+      <artifactId>org.apache.servicemix.bundles.hamcrest</artifactId>
+      <version>1.3_1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.commons.johnzon</artifactId>
+      <version>1.0.0</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.framework</artifactId>
+      <version>5.6.6</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
-
-</project>
+</project>
\ No newline at end of file

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java
 Tue Oct 17 07:40:22 2017
@@ -161,11 +161,20 @@ public class PipeBindings {
      */
     public void updateBindings(Pipe pipe, Resource resource) {
         outputResources.put(pipe.getName(), resource);
+        updateStaticBindings(pipe.getName(), resource);
+        addBinding(pipe.getName(), pipe.getOutputBinding());
+    }
+
+    /**
+     * Update all the static bindings related to a given resource
+     * @param name name under which static bindings should be recorded
+     * @param resource resource from which static bindings will be built
+     */
+    public void updateStaticBindings(String name, Resource resource){
         if (resource != null) {
-            pathBindings.put(pipe.getName(), resource.getPath());
-            nameBindings.put(pipe.getName(), resource.getName());
+            pathBindings.put(name, resource.getPath());
+            nameBindings.put(name, resource.getName());
         }
-        addBinding(pipe.getName(), pipe.getOutputBinding());
     }
 
     /**

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/models/PipeModel.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/models/PipeModel.java?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/models/PipeModel.java
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/models/PipeModel.java
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,110 @@
+/*
+ * 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.pipes.models;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.OSGiService;
+import org.apache.sling.pipes.Pipe;
+import org.apache.sling.pipes.PipeBindings;
+import org.apache.sling.pipes.Plumber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Check for pipes presence under <code>pipes</code> node of the given 
resource, and make their output available as pipes
+ * to the script. Note that current resource is passed as a binding to the 
executed pipes, as a map of properties, plus
+ * the name and path, with the name <code>BINDING_CURRENTRESOURCE</code>
+ */
+@Model(adaptables = Resource.class)
+public class PipeModel {
+    Logger LOG = LoggerFactory.getLogger(PipeModel.class);
+
+    /**
+     * name of the child nodes under which we should look for pipes
+     */
+    protected static final String NN_PIPES = "pipes";
+
+    /**
+     * name of the binding in which we should register current resource 
bindings
+     */
+    protected static final String BINDING_CURRENTRESOURCE = "currentResource";
+
+    /**
+     * map of the found pipes outputs
+     */
+    protected Map<String, Iterator<Resource>> outputs;
+
+    /**
+     * Getter for outputs
+     * @return outputs of the model: pipe name as key, outputs as value
+     */
+    public Map<String, Iterator<Resource>> getOutputs() {
+        return outputs;
+    }
+
+    @OSGiService
+    protected Plumber plumber;
+
+    /**
+     * pipe root of the current resource
+     */
+    protected Resource root;
+
+    /**
+     * current resource
+     */
+    protected Resource currentResource;
+
+    /**
+     * Constructor
+     * @param resource resource upon which this model is constructed
+     */
+    public PipeModel(Resource resource) {
+        currentResource = resource;
+        LOG.debug("constructing Pipe Model with {}", 
currentResource.getPath());
+        root = resource.getChild(NN_PIPES);
+    }
+
+    @PostConstruct
+    protected void init(){
+        LOG.debug("initialising Pipe Model");
+        if (root != null){
+            outputs = new HashMap<>();
+            for (Iterator<Resource> pipeCandidates = root.listChildren(); 
pipeCandidates.hasNext();){
+                Resource candidate = pipeCandidates.next();
+                try {
+                    Pipe pipe = plumber.getPipe(candidate);
+                    pipe.getBindings().addBinding(BINDING_CURRENTRESOURCE, 
currentResource.adaptTo(ValueMap.class));
+                    
pipe.getBindings().updateStaticBindings(BINDING_CURRENTRESOURCE, 
currentResource);
+                    outputs.put(pipe.getName(), pipe.getOutput());
+                    LOG.debug("found and initialized {}", pipe.getName());
+                } catch(Exception e){
+                    LOG.error("unable to bind {} pipe", candidate.getPath(), 
e);
+                }
+            }
+        } else {
+            LOG.debug("no root node found");
+        }
+    }
+}

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=1812362&r1=1812361&r2=1812362&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
 Tue Oct 17 07:40:22 2017
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.1.0")
+@Version("1.2.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/AbstractPipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.when;
 
 import java.util.Iterator;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.dummies.DummyNull;
 import org.apache.sling.pipes.dummies.DummySearch;
@@ -53,7 +54,7 @@ public class AbstractPipeTest {
     public SlingContext context = new 
SlingContext(ResourceResolverType.JCR_MOCK);
 
     @Before
-    public void setup(){
+    public void setup() throws PersistenceException {
         PlumberImpl plumberImpl = new PlumberImpl();
         PlumberImpl.Configuration configuration = 
mock(PlumberImpl.Configuration.class);
         when(configuration.authorizedUsers()).thenReturn(new String[]{});
@@ -63,7 +64,7 @@ public class AbstractPipeTest {
         plumberImpl.registerPipe("slingPipes/dummyNull", DummyNull.class);
         plumberImpl.registerPipe("slingPipes/dummySearch", DummySearch.class);
         plumber = plumberImpl;
-        context.load().json("/fruits.json", PATH_FRUITS);
+        context.load().json("/SLING-INF/jcr_root/content/fruits.json", 
PATH_FRUITS);
     }
 
     protected Pipe getPipe(String path){

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru
 
 import java.util.Iterator;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.junit.Before;
 import org.junit.Test;
@@ -38,7 +39,7 @@ public class ContainerPipeTest extends A
     public static final String NN_ONEPIPE = "onePipeContainer";
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/container.json", PATH_PIPE);
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java
 Tue Oct 17 07:40:22 2017
@@ -27,6 +27,7 @@ import java.util.Map;
 
 import javax.script.ScriptException;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.junit.Before;
 import org.junit.Test;
@@ -39,7 +40,7 @@ public class PipeBindingsTest extends Ab
     private static final String NN_MOREBINDINGS = "moreBindings";
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/container.json", PATH_PIPE);
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -40,7 +40,8 @@ public class FilterPipeTest extends Abst
     public static final String NN_NOCHILDREN_FAILS = "noChildrenVoid";
     public static final String NN_TEST = "testPasses";
     public static final String NN_TEST_FAILS = "testFails";
-    public void setup() {
+
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/filter.json", PATH_PIPE);
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -22,15 +22,13 @@ import static org.junit.Assert.assertTru
 
 import java.util.Iterator;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.AbstractPipeTest;
-import org.apache.sling.pipes.PipeBuilder;
 import org.junit.Before;
 import org.junit.Test;
 
-import javax.json.JsonObject;
-
 /**
  * testing json pipe with anonymous yahoo meteo API
  */
@@ -38,11 +36,9 @@ public class JsonPipeTest extends Abstra
     public static final String CONTENT_JSON = "/content/json";
     public static final String CONF = CONTENT_JSON + "/conf/weather";
     public static final String ARRAY = CONTENT_JSON + "/conf/array";
-    public static final String JSON_DUMP = CONTENT_JSON + "/jsonDump";
-    public static final String CONTENT_ARRAY = CONTENT_JSON + "/array";
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/json.json", "/content/json");
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -20,6 +20,7 @@ import java.util.Iterator;
 
 import javax.jcr.Session;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.AbstractPipeTest;
 import org.junit.Assert;
@@ -38,7 +39,7 @@ public class MovePipeTest extends Abstra
     static final String MOVED_PROPERTY_PATH = "/indexFruits";
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/move.json", PATH_PIPE);
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertNot
 
 import java.util.Iterator;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.AbstractPipeTest;
 import org.apache.sling.pipes.Pipe;
@@ -34,7 +35,7 @@ import org.junit.Test;
 public class MultiPropertyPipeTest extends AbstractPipeTest {
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/multiProperty.json", PATH_PIPE);
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
 Tue Oct 17 07:40:22 2017
@@ -36,6 +36,7 @@ import javax.servlet.ServletException;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ValueMap;
@@ -68,7 +69,7 @@ public class PlumberServletTest extends
     PlumberServlet servlet = new PlumberServlet();
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/plumber.json", PATH_PIPE);
         context.load().json("/container.json", containersPath);

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -18,6 +18,7 @@ package org.apache.sling.pipes.internal;
 
 import static org.junit.Assert.assertTrue;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.pipes.AbstractPipeTest;
 import org.junit.Before;
 import org.junit.Test;
@@ -28,7 +29,7 @@ import org.junit.Test;
 public class SlingQueryPipeTest extends AbstractPipeTest {
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/users.json", "/content/users");
         context.load().json("/slingQuery.json", PATH_PIPE);

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/TraversePipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/TraversePipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/TraversePipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/TraversePipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -17,6 +17,7 @@
 package org.apache.sling.pipes.internal;
 
 import org.apache.commons.collections.IteratorUtils;
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.pipes.AbstractPipeTest;
 import org.junit.Before;
@@ -39,7 +40,7 @@ public class TraversePipeTest extends Ab
     public static final String CONF_ROOT = ROOT + "/pipes/";
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/traverse.json", ROOT);
     }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java
 Tue Oct 17 07:40:22 2017
@@ -27,6 +27,7 @@ import java.util.Iterator;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.pipes.AbstractPipeTest;
@@ -44,7 +45,7 @@ public class WritePipeTest extends Abstr
     public static final String NN_SIMPLETREE = "simpleTree";
 
     @Before
-    public void setup() {
+    public void setup() throws PersistenceException {
         super.setup();
         context.load().json("/write.json", PATH_PIPE);
     }

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeModelIT.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeModelIT.java?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeModelIT.java
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeModelIT.java
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,53 @@
+/*
+ * 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.pipes.it;
+
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.select.Elements;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Testing a pipe model in a sightly script
+ */
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class PipeModelIT extends PipesTestSupport {
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(PipeModelIT.class);
+
+    @Test
+    public void testListComponent() throws IOException {
+        final String url = 
String.format("http://localhost:%s/content/list-component.html";, httpPort());
+        LOGGER.info("fetching {}", url);
+        Document document = Jsoup.connect(url).get();
+        LOGGER.info("retrieved following response {}", document.toString());
+        Elements elements = document.getElementsByClass("fruit");
+        assertEquals("there should be 2 elements", 2, elements.size());
+    }
+}

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipesTestSupport.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipesTestSupport.java?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipesTestSupport.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipesTestSupport.java
 Tue Oct 17 07:40:22 2017
@@ -24,18 +24,27 @@ import org.apache.sling.api.resource.Log
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.pipes.Plumber;
+import org.apache.sling.testing.paxexam.SlingOptions;
 import org.apache.sling.testing.paxexam.TestSupport;
+import org.apache.sling.auth.core.AuthenticationSupport;
+
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.ProbeBuilder;
+import org.ops4j.pax.exam.TestProbeBuilder;
+import org.ops4j.pax.exam.util.PathUtils;
 
+import static org.apache.sling.testing.paxexam.SlingOptions.slingCommonsHtml;
 import static 
org.apache.sling.testing.paxexam.SlingOptions.slingExtensionDistribution;
 import static 
org.apache.sling.testing.paxexam.SlingOptions.slingExtensionEvent;
 import static 
org.apache.sling.testing.paxexam.SlingOptions.slingExtensionQuery;
 import static 
org.apache.sling.testing.paxexam.SlingOptions.slingLaunchpadOakTar;
+import static 
org.apache.sling.testing.paxexam.SlingOptions.slingScriptingSightly;
 import static org.ops4j.pax.exam.CoreOptions.composite;
 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.systemPackages;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
 import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
 
 public abstract class PipesTestSupport extends TestSupport {
@@ -46,8 +55,13 @@ public abstract class PipesTestSupport e
     protected Plumber plumber;
 
     @Inject
+    protected AuthenticationSupport authenticationSupport;
+
+    @Inject
     private ResourceResolverFactory resourceResolverFactory;
 
+    final protected int httpPort = findFreePort();
+
     @Configuration
     public Option[] configuration() {
         return new Option[]{
@@ -68,22 +82,49 @@ public abstract class PipesTestSupport e
     }
 
     protected Option launchpad() {
-        final int httpPort = findFreePort();
         final String workingDirectory = workingDirectory();
+        SlingOptions.versionResolver.setVersion("org.apache.sling", 
"org.apache.sling.xss", "1.0.18");
         return composite(
             slingLaunchpadOakTar(workingDirectory, httpPort),
             slingExtensionEvent(),
             slingExtensionDistribution(),
             slingExtensionQuery(),
+            slingCommonsHtml(),
+            
mavenBundle().groupId("javax.mail").artifactId("mail").version("1.5.0-b01"),
+            slingScriptingSightly(),
             // TODO remove johnzon bundle (should be part of sling in upcoming 
release of org.apache.sling.testing.paxexam)
             
mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.commons.johnzon").versionAsInProject(),
             // TODO required by Jackrabbit Vault (Sling Distribution)
+            
mavenBundle().groupId("org.jsoup").artifactId("jsoup").versionAsInProject(),
+            
mavenBundle().groupId("org.apache.servicemix.bundles").artifactId("org.apache.servicemix.bundles.hamcrest").versionAsInProject(),
             systemPackages(
                 "org.w3c.dom.css",
                 "org.w3c.dom.html",
                 "org.w3c.dom.ranges",
                 "org.w3c.dom.traversal"
-            )
+            ),
+            logging()
+        );
+    }
+
+    @ProbeBuilder
+    public TestProbeBuilder probeConfiguration(final TestProbeBuilder 
testProbeBuilder) {
+        testProbeBuilder.setHeader("Sling-Initial-Content",
+                
"SLING-INF/jcr_root/apps/pipes-it;path:=/apps/pipes-it;overwrite:=true," +
+                
"SLING-INF/jcr_root/etc/pipes-it;path:=/etc/pipes-it;overwrite:=true," +
+                "SLING-INF/jcr_root/content;path:=/content;overwrite:=true"
+        );
+        return testProbeBuilder;
+    }
+
+    protected Option logging() {
+        final String filename = 
String.format("file:%s/src/test/resources/logback.xml", PathUtils.getBaseDir());
+        return composite(
+                systemProperty("logback.configurationFile").value(filename),
+                
mavenBundle().groupId("org.slf4j").artifactId("slf4j-api").version("1.7.21"),
+                
mavenBundle().groupId("org.slf4j").artifactId("jcl-over-slf4j").version("1.7.21"),
+                
mavenBundle().groupId("ch.qos.logback").artifactId("logback-core").version("1.1.7"),
+                
mavenBundle().groupId("ch.qos.logback").artifactId("logback-classic").version("1.1.7")
         );
     }
 

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/models/PipeModelTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/models/PipeModelTest.java?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/models/PipeModelTest.java
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/models/PipeModelTest.java
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,76 @@
+/*
+ * 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.pipes.models;
+
+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.AbstractPipeTest;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+/**
+ * Testing model initialisation
+ */
+public class PipeModelTest extends AbstractPipeTest {
+    private static final String COMPONENT = "/content/component";
+    private static final String NN_CURRENTRESOURCEPIPE = "resourceBinding";
+    PipeModel model;
+
+    @Before
+    public void setup() throws PersistenceException {
+        super.setup();
+        Map map = new HashMap();
+        map.put("jcr:primaryType","sling:Folder");
+        map.put("test",PATH_APPLE);
+        ResourceUtil.getOrCreateResource(context.resourceResolver(), 
COMPONENT, map, "sling:Folder", true);
+        context.load().json("/container.json", COMPONENT + "/" + 
PipeModel.NN_PIPES);
+        model = new 
PipeModel(context.resourceResolver().getResource(COMPONENT));
+        model.plumber = plumber;
+        model.init();
+    }
+
+    @Test
+    /**
+     * we've loaded under NN_PIPES all the pipes from container json (direct 
children): all those pipes output should be mounted
+     * as outputs of the model
+     */
+    public void testInit(){
+        assertTrue("there should be pipes outputs", model.getOutputs().size() 
> 0);
+    }
+
+    @Test
+    /**
+     * we take a special child pipe, here, named 'currentResource' that is 
using ${currentResource.test} binding
+     * to set its input. It's a base pipe, so we expect output to be the same.
+     * Model is built upon a resource where test property is set to apple 
resource path.
+     *
+     * As a result, we expect the one & only output of 'currentResource' model 
item to be apple resource
+     */
+    public void testCurrentResourceBindings() throws PersistenceException {
+        Iterator<Resource> output = 
model.getOutputs().get(NN_CURRENTRESOURCEPIPE);
+        assertTrue("resource binding pipe should have output", 
output.hasNext());
+        assertEquals("output should be apple's resource", PATH_APPLE, 
output.next().getPath());
+        assertFalse("there should be no other resource", output.hasNext());
+    }
+}
\ No newline at end of file

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/fruit/fruit.html
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/fruit/fruit.html?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/fruit/fruit.html
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/fruit/fruit.html
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,21 @@
+<!--
+    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.
+-->
+<article class="fruit">
+    <h2>${properties.jcr:title}</h2>
+</article>
\ No newline at end of file

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/list/list.html
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/list/list.html?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/list/list.html
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/apps/pipes-it/list/list.html
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,32 @@
+<!--
+    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.
+-->
+<html>
+
+<head>
+    <title>${resource.path}</title>
+</head>
+<body>
+    <h1></h1>
+    <section class="fruits"
+             data-sly-use.pipe="org.apache.sling.pipes.models.PipeModel"
+             data-sly-list.fruit="${pipe.outputs.fruits}">
+        <sly data-sly-resource="${fruit.path}"></sly>
+    </section>
+</body>
+</html>

Copied: 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/fruits.json
 (from r1812300, 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/fruits.json)
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/fruits.json?p2=sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/fruits.json&p1=sling/trunk/contrib/extensions/sling-pipes/src/test/resources/fruits.json&r1=1812300&r2=1812362&rev=1812362&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/test/resources/fruits.json 
(original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/fruits.json
 Tue Oct 17 07:40:22 2017
@@ -3,6 +3,8 @@
   "index":["apple","banana"],
   "apple":{
     "jcr:primaryType":"nt:unstructured",
+    "sling:resourceType":"/apps/pipes-it/fruit",
+    "jcr:title":"Apple",
     "worm": true,
     "isnota":{
       "jcr:primaryType":"nt:unstructured",
@@ -23,6 +25,8 @@
   },
   "banana":{
     "jcr:primaryType":"nt:unstructured",
+    "jcr:title":"Banana",
+    "sling:resourceType":"/apps/pipes-it/fruit",
     "isnota":{
       "jcr:primaryType":"nt:unstructured",
       "pea":{

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/list-component.json
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/list-component.json?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/list-component.json
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/content/list-component.json
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,14 @@
+{
+  "jcr:primaryType":"nt:unstructured",
+  "sling:resourceType":"/apps/pipes-it/list",
+  "fruitsRootPath":"/content/fruits",
+  "pipes":{
+    "jcr:primaryType":"nt:unstructured",
+    "fruits": {
+      "jcr:primaryType":"nt:unstructured",
+      "sling:resourceType": "slingPipes/reference",
+      "jcr:description":"referencing a pipe located in 
/etc/pipes-it/fruit-list",
+      "expr":"/etc/pipes-it/fruit-list"
+    }
+  }
+}
\ No newline at end of file

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/pipes-it/fruit-list.json
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/pipes-it/fruit-list.json?rev=1812362&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/pipes-it/fruit-list.json
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/SLING-INF/jcr_root/etc/pipes-it/fruit-list.json
 Tue Oct 17 07:40:22 2017
@@ -0,0 +1,8 @@
+{
+  "jcr:primaryType":"nt:unstructured",
+  "jcr:description":"returns fruit list under /content/fruits",
+  "sling:resourceType":"slingPipes/slingQuery",
+  "name":"fruits",
+  "path":"${currentResource.fruitsRootPath}",
+  "expr":"nt:base"
+}
\ No newline at end of file

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/container.json
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/container.json?rev=1812362&r1=1812361&r2=1812362&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/container.json 
(original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/container.json 
Tue Oct 17 07:40:22 2017
@@ -122,5 +122,11 @@
         }
       }
     }
+  },
+  "resourceBinding": {
+    "jcr:primaryType": "nt:unstructured",
+    "jcr:description": "one pipe only, returning test value in the binding 
(expected to be valuemap) 'resourceUtil'",
+    "sling:resourceType": "slingPipes/base",
+    "path":"${currentResource.test}"
   }
 }
\ No newline at end of file

Added: sling/trunk/contrib/extensions/sling-pipes/src/test/resources/logback.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/resources/logback.xml?rev=1812362&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/test/resources/logback.xml 
(added)
+++ sling/trunk/contrib/extensions/sling-pipes/src/test/resources/logback.xml 
Tue Oct 17 07:40:22 2017
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<configuration>
+  <appender name="file" class="ch.qos.logback.core.FileAppender">
+    <file>target/testing.log</file>
+    <encoder>
+      <pattern>%date %level [%thread] %logger{10} [%file : %line] 
%msg%n</pattern>
+    </encoder>
+  </appender>
+  <root level="debug">
+    <appender-ref ref="file"/>
+  </root>
+</configuration>


Reply via email to