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>