[sling-org-apache-sling-pipes] branch master updated: SLING-7171 add osgi sleep capability after each persistence

2017-10-24 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new 1586c3e  SLING-7171 add osgi sleep capability after each persistence
1586c3e is described below

commit 1586c3e23a20f084cffda33978b461984962af26
Author: npeltier <peltier.nico...@gmail.com>
AuthorDate: Tue Oct 24 18:50:26 2017 +0200

SLING-7171 add osgi sleep capability after each persistence
---
 .../java/org/apache/sling/pipes/internal/PlumberImpl.java   | 13 ++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java 
b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
index 7135a42..2d6f0c8 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
@@ -86,6 +86,9 @@ public class PlumberImpl implements Plumber, JobConsumer {
 @AttributeDefinition(description="Number of iterations after which 
plumber should saves a pipe execution")
 int bufferSize() default PlumberImpl.DEFAULT_BUFFER_SIZE;
 
+@AttributeDefinition(description="Number of milliseconds of sleep 
after each persistence")
+long sleep() default 0L;
+
 @AttributeDefinition(description="Name of service user, with 
appropriate rights, that will be used for async execution")
 String serviceUser();
 
@@ -97,7 +100,7 @@ public class PlumberImpl implements Plumber, JobConsumer {
 
 public static final String SLING_EVENT_TOPIC = 
"org/apache/sling/pipes/topic";
 
-private int bufferSize;
+private Configuration configuration;
 
 private Map serviceUser;
 
@@ -105,7 +108,7 @@ public class PlumberImpl implements Plumber, JobConsumer {
 
 @Activate
 public void activate(Configuration configuration){
-bufferSize = configuration.bufferSize();
+this.configuration = configuration;
 serviceUser = Collections.singletonMap(SUBSERVICE, 
configuration.serviceUser());
 allowedUsers = Arrays.asList(configuration.authorizedUsers());
 registry = new HashMap<>();
@@ -229,10 +232,14 @@ public class PlumberImpl implements Plumber, JobConsumer {
  */
 protected void persist(ResourceResolver resolver, Pipe pipe, Set 
paths, Resource currentResource) throws Exception {
 if  (pipe.modifiesContent() && resolver.hasChanges() && 
!pipe.isDryRun()){
-if (currentResource == null || paths.size() % bufferSize == 0){
+if (currentResource == null || paths.size() % 
configuration.bufferSize() == 0){
 log.info("[{}] saving changes...", pipe.getName());
 writeStatus(pipe, currentResource == null ? STATUS_FINISHED : 
currentResource.getPath());
 resolver.commit();
+if (configuration.sleep() > 0){
+log.debug("sleeping for {}ms", configuration.sleep());
+Thread.sleep(configuration.sleep());
+}
 }
 if (currentResource == null && distributor != null && 
StringUtils.isNotBlank(pipe.getDistributionAgent())) {
 log.info("a distribution agent is configured, will try to 
distribute the changes");

-- 
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <commits@sling.apache.org>'].


[sling-org-apache-sling-pipes] branch master updated: SLING-7217 change to use find

2017-10-24 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new a1b1c72  SLING-7217 change to use find
 new ab1f421  Merge branch 'master' of 
github.com:apache/sling-org-apache-sling-pipes
a1b1c72 is described below

commit a1b1c72e413b8cd93a6a020ff9130c237a285c62
Author: npeltier <peltier.nico...@gmail.com>
AuthorDate: Tue Oct 24 18:42:28 2017 +0200

SLING-7217 change to use find

and added failing unit test
---
 .../java/org/apache/sling/pipes/internal/FilterPipe.java   |  2 +-
 .../org/apache/sling/pipes/internal/FilterPipeTest.java| 14 ++
 src/test/resources/SLING-INF/jcr_root/content/fruits.json  |  1 +
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java 
b/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java
index 5a8f97c..5748ab3 100644
--- a/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java
@@ -57,7 +57,7 @@ public class FilterPipe extends BasePipe {
 for (String key : filter.keySet()){
 if (! IGNORED_PROPERTIES.contains(key) && 
!key.startsWith(PREFIX_FILTER)){
 Pattern pattern = Pattern.compile(filter.get(key, 
String.class));
-if (!pattern.matcher(current.get(key, 
String.class)).matches()){
+if (!pattern.matcher(current.get(key, String.class)).find()){
 return false;
 }
 }
diff --git a/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java 
b/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
index dfdffe8..26fd634 100644
--- a/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
+++ b/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Iterator;
+import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.ModifiableValueMap;
@@ -103,4 +104,17 @@ public class FilterPipeTest extends AbstractPipeTest {
 assertFalse("output has no resource...", resourceIterator.hasNext());
 }
 
+@Test
+public void testPropertyRegexp() throws Exception {
+Set outputs = plumber.newPipe(context.resourceResolver())
+.echo(PATH_APPLE)
+.grep("jcr:description","https://en.wikipedia.org;).run();
+assertEquals("there should be an item", 1, outputs.size());
+outputs = plumber.newPipe(context.resourceResolver())
+.echo(PATH_APPLE)
+.grep("jcr:description",".*https://en.wikipedia.org.*;).run();
+assertEquals("there should be an item", 1, outputs.size());
+
+}
+
 }
diff --git a/src/test/resources/SLING-INF/jcr_root/content/fruits.json 
b/src/test/resources/SLING-INF/jcr_root/content/fruits.json
index c9b2c71..eb53e89 100644
--- a/src/test/resources/SLING-INF/jcr_root/content/fruits.json
+++ b/src/test/resources/SLING-INF/jcr_root/content/fruits.json
@@ -5,6 +5,7 @@
 "jcr:primaryType":"nt:unstructured",
 "sling:resourceType":"/apps/pipes-it/fruit",
 "jcr:title":"Apple",
+"jcr:description":"This is an apple",
 "color":"green",
 "worm": true,
 "isnota":{

-- 
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <commits@sling.apache.org>'].


[sling-org-apache-sling-pipes] 04/04: Merge branch 'master' of github.com:apache/sling-org-apache-sling-pipes

2017-10-20 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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

commit 17d88e43d3a372e50c80abfb66e6c18353937804
Merge: 07befc6 51194e6
Author: npeltier <npelt...@adobe.com>
AuthorDate: Fri Oct 20 22:36:54 2017 +0200

Merge branch 'master' of github.com:apache/sling-org-apache-sling-pipes

 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <commits@sling.apache.org>.


[sling-org-apache-sling-pipes] branch master updated (51194e6 -> 17d88e4)

2017-10-20 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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


from 51194e6  SLING-7162 - Update SCM information in all POM files to 
reference Git
 new 3ce5caa  SLING-7172 move $ to children pipe
 new af8e64e  SLING-7172 add parent(s) pipes
 new 07befc6  SLING-7172 introduce siblings pipe
 new 17d88e4  Merge branch 'master' of 
github.com:apache/sling-org-apache-sling-pipes

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md  | 18 +-
 .../java/org/apache/sling/pipes/PipeBuilder.java   | 23 +
 .../sling/pipes/internal/PipeBuilderImpl.java  | 26 +++
 .../apache/sling/pipes/internal/PlumberImpl.java   | 10 --
 .../sling/pipes/internal/PlumberServlet.java   |  3 +-
 .../AbstractExpressionSlingQueryPipe.java} | 39 ++
 .../AbstractSlingQueryPipe.java}   | 39 +++---
 .../pipes/internal/slingQuery/ChildrenPipe.java}   | 28 +++-
 .../internal/{ => slingQuery}/ParentPipe.java  | 21 +---
 .../ParentsPipe.java}  | 25 ++
 .../pipes/internal/slingQuery/SiblingsPipe.java}   | 30 +++--
 .../java/org/apache/sling/pipes/package-info.java  |  2 +-
 .../org/apache/sling/pipes/AbstractPipeTest.java   |  3 ++
 .../org/apache/sling/pipes/PipeBuilderTest.java|  8 ++---
 .../ChildrenPipeTest.java} |  6 ++--
 .../ParentPipeTest.java}   | 29 ++--
 .../ParentsPipeTest.java}  | 32 --
 .../SiblingsPipeTest.java} | 30 +++--
 .../SLING-INF/jcr_root/content/fruits.json |  5 +++
 .../jcr_root/etc/pipes-it/fruit-list.json  |  2 +-
 .../resources/{slingQuery.json => children.json}   |  2 +-
 21 files changed, 192 insertions(+), 189 deletions(-)
 copy src/main/java/org/apache/sling/pipes/internal/{XPathPipe.java => 
slingQuery/AbstractExpressionSlingQueryPipe.java} (51%)
 rename src/main/java/org/apache/sling/pipes/internal/{SlingQueryPipe.java => 
slingQuery/AbstractSlingQueryPipe.java} (62%)
 copy src/{test/java/org/apache/sling/pipes/dummies/DummyNull.java => 
main/java/org/apache/sling/pipes/internal/slingQuery/ChildrenPipe.java} (60%)
 copy src/main/java/org/apache/sling/pipes/internal/{ => 
slingQuery}/ParentPipe.java (73%)
 rename src/main/java/org/apache/sling/pipes/internal/{ParentPipe.java => 
slingQuery/ParentsPipe.java} (67%)
 copy src/{test/java/org/apache/sling/pipes/dummies/DummyNull.java => 
main/java/org/apache/sling/pipes/internal/slingQuery/SiblingsPipe.java} (66%)
 copy src/test/java/org/apache/sling/pipes/internal/{SlingQueryPipeTest.java => 
slingQuery/ChildrenPipeTest.java} (89%)
 copy src/test/java/org/apache/sling/pipes/internal/{SlingQueryPipeTest.java => 
slingQuery/ParentPipeTest.java} (58%)
 copy src/test/java/org/apache/sling/pipes/internal/{SlingQueryPipeTest.java => 
slingQuery/ParentsPipeTest.java} (61%)
 rename src/test/java/org/apache/sling/pipes/internal/{SlingQueryPipeTest.java 
=> slingQuery/SiblingsPipeTest.java} (58%)
 rename src/test/resources/{slingQuery.json => children.json} (75%)

-- 
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <commits@sling.apache.org>'].


[sling-org-apache-sling-pipes] 03/04: SLING-7172 introduce siblings pipe

2017-10-20 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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

commit 07befc6da634874f926659f70c5967f82c7facbe
Author: npeltier <npelt...@adobe.com>
AuthorDate: Fri Oct 20 22:31:59 2017 +0200

SLING-7172 introduce siblings pipe
---
 .../java/org/apache/sling/pipes/PipeBuilder.java   | 16 ++
 .../sling/pipes/internal/PipeBuilderImpl.java  | 18 +++
 .../apache/sling/pipes/internal/PlumberImpl.java   |  2 ++
 .../pipes/internal/slingQuery/SiblingsPipe.java| 37 ++
 .../org/apache/sling/pipes/AbstractPipeTest.java   |  1 +
 .../org/apache/sling/pipes/PipeBuilderTest.java|  2 +-
 .../internal/slingQuery/SiblingsPipeTest.java  | 36 +
 .../SLING-INF/jcr_root/content/fruits.json |  4 +++
 8 files changed, 103 insertions(+), 13 deletions(-)

diff --git a/src/main/java/org/apache/sling/pipes/PipeBuilder.java 
b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
index 3fe25c2..8033a3a 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBuilder.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
@@ -81,6 +81,13 @@ public interface PipeBuilder {
 PipeBuilder children(String expr);
 
 /**
+ * attach a sling query siblings pipe to the current context
+ * @param expr sling query expression
+ * @return updated instance of PipeBuilder
+ */
+PipeBuilder siblings(String expr);
+
+/**
  * attach a rm pipe to the current context
  * @return updated instance of PipeBuilder
  */
@@ -130,26 +137,23 @@ public interface PipeBuilder {
  * attach a parents pipe to the current context
  * @param expr expression
  * @return updated instance of PipeBuilder
- * @throws IllegalAccessException in case it's called with wrong # of 
arguments
  */
-PipeBuilder parents(String expr) throws IllegalAccessException;
+PipeBuilder parents(String expr);
 
 /**
  * attach a reference pipe to the current context
  * @param expr reference
  * @return updated instance of PipeBuilder
- * @throws IllegalAccessException in case it's called with wrong # of 
arguments
  */
-PipeBuilder ref(String expr)throws IllegalAccessException;
+PipeBuilder ref(String expr);
 
 
 /**
  * attach a not pipe to the current context
  * @param expr reference
  * @return updated instance of PipeBuilder
- * @throws IllegalAccessException in case it's called with wrong # of 
arguments
  */
-PipeBuilder not(String expr)throws IllegalAccessException;
+PipeBuilder not(String expr);
 
 /**
  * parameterized current pipe in the context
diff --git a/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java 
b/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
index 85e78e5..87a4227 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
@@ -26,6 +26,7 @@ import org.apache.sling.pipes.*;
 import org.apache.sling.pipes.internal.slingQuery.ChildrenPipe;
 import org.apache.sling.pipes.internal.slingQuery.ParentPipe;
 import org.apache.sling.pipes.internal.slingQuery.ParentsPipe;
+import org.apache.sling.pipes.internal.slingQuery.SiblingsPipe;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -165,18 +166,23 @@ public class PipeBuilderImpl implements PipeBuilder {
 }
 
 @Override
-public PipeBuilder parents(String expr) throws IllegalAccessException {
-return pipe(ParentsPipe.RESOURCE_TYPE).expr(expr);
+public PipeBuilder parents(String expr) {
+return pipeWithExpr(ParentsPipe.RESOURCE_TYPE, expr);
 }
 
 @Override
-public PipeBuilder ref(String expr) throws IllegalAccessException {
-return pipe(ReferencePipe.RESOURCE_TYPE).expr(expr);
+public PipeBuilder siblings(String expr) {
+return pipeWithExpr(SiblingsPipe.RESOURCE_TYPE, expr);
 }
 
 @Override
-public PipeBuilder not(String expr) throws IllegalAccessException {
-return pipe(NotPipe.RESOURCE_TYPE).expr(expr);
+public PipeBuilder ref(String expr) {
+return pipeWithExpr(ReferencePipe.RESOURCE_TYPE, expr);
+}
+
+@Override
+public PipeBuilder not(String expr) {
+return pipeWithExpr(NotPipe.RESOURCE_TYPE, expr);
 }
 
 @Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java 
b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
index 31d4840..a1e43be 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
@@ -56,6 +56,7 @@ import org.apache.sling.pipes.*;
 import org.apache.sling.pipes.internal.slingQuery.ChildrenPipe;
 import org.apache.sling.pipes.internal.slingQuery.ParentPipe;
 

[sling-org-apache-sling-pipes] 02/04: SLING-7172 add parent(s) pipes

2017-10-20 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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

commit af8e64ef6c7391490a9df483a58dea1e1ae923b3
Author: npeltier <npelt...@adobe.com>
AuthorDate: Fri Oct 20 21:23:53 2017 +0200

SLING-7172 add parent(s) pipes

- move parent pipe to be a sling query pipe,
- added abstract sling query pipe to avoid duplications,
- added parents pipe,
- added unit tests for both parent and parents pipe
---
 .../java/org/apache/sling/pipes/PipeBuilder.java   |  7 
 .../sling/pipes/internal/PipeBuilderImpl.java  |  8 
 .../apache/sling/pipes/internal/PlumberImpl.java   |  6 ++-
 .../sling/pipes/internal/PlumberServlet.java   |  1 +
 .../AbstractExpressionSlingQueryPipe.java} | 44 +-
 .../AbstractSlingQueryPipe.java}   | 39 ++-
 .../internal/{ => slingQuery}/ChildrenPipe.java| 29 +++---
 .../internal/{ => slingQuery}/ParentPipe.java  | 21 +--
 .../ParentsPipe.java}  | 25 ++--
 .../org/apache/sling/pipes/AbstractPipeTest.java   |  2 +
 .../{ => slingQuery}/ChildrenPipeTest.java |  2 +-
 .../ParentPipeTest.java}   | 29 ++
 .../ParentsPipeTest.java}  | 32 +++-
 .../SLING-INF/jcr_root/content/fruits.json |  1 +
 14 files changed, 111 insertions(+), 135 deletions(-)

diff --git a/src/main/java/org/apache/sling/pipes/PipeBuilder.java 
b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
index 2082f23..3fe25c2 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBuilder.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
@@ -126,6 +126,13 @@ public interface PipeBuilder {
  */
 PipeBuilder parent();
 
+/**
+ * attach a parents pipe to the current context
+ * @param expr expression
+ * @return updated instance of PipeBuilder
+ * @throws IllegalAccessException in case it's called with wrong # of 
arguments
+ */
+PipeBuilder parents(String expr) throws IllegalAccessException;
 
 /**
  * attach a reference pipe to the current context
diff --git a/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java 
b/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
index 15e70f2..85e78e5 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
@@ -23,6 +23,9 @@ import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.event.jobs.Job;
 import org.apache.sling.pipes.*;
+import org.apache.sling.pipes.internal.slingQuery.ChildrenPipe;
+import org.apache.sling.pipes.internal.slingQuery.ParentPipe;
+import org.apache.sling.pipes.internal.slingQuery.ParentsPipe;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -162,6 +165,11 @@ public class PipeBuilderImpl implements PipeBuilder {
 }
 
 @Override
+public PipeBuilder parents(String expr) throws IllegalAccessException {
+return pipe(ParentsPipe.RESOURCE_TYPE).expr(expr);
+}
+
+@Override
 public PipeBuilder ref(String expr) throws IllegalAccessException {
 return pipe(ReferencePipe.RESOURCE_TYPE).expr(expr);
 }
diff --git a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java 
b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
index c6002fc..31d4840 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
@@ -53,6 +53,9 @@ import org.apache.sling.event.jobs.Job;
 import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.event.jobs.consumer.JobConsumer;
 import org.apache.sling.pipes.*;
+import org.apache.sling.pipes.internal.slingQuery.ChildrenPipe;
+import org.apache.sling.pipes.internal.slingQuery.ParentPipe;
+import org.apache.sling.pipes.internal.slingQuery.ParentsPipe;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
@@ -113,13 +116,14 @@ public class PlumberImpl implements Plumber, JobConsumer {
 registerPipe(XPathPipe.RESOURCE_TYPE, XPathPipe.class);
 registerPipe(ReferencePipe.RESOURCE_TYPE, ReferencePipe.class);
 registerPipe(RemovePipe.RESOURCE_TYPE, RemovePipe.class);
-registerPipe(ParentPipe.RESOURCE_TYPE, ParentPipe.class);
+registerPipe(ParentsPipe.RESOURCE_TYPE, ParentsPipe.class);
 registerPipe(MovePipe.RESOURCE_TYPE, MovePipe.class);
 registerPipe(PathPipe.RESOURCE_TYPE, PathPipe.class);
 registerPipe(FilterPipe.RESOURCE_TYPE, FilterPipe.class);
  

[sling-org-apache-sling-pipes] 01/04: SLING-7172 move $ to children pipe

2017-10-20 Thread npeltier
This is an automated email from the ASF dual-hosted git repository.

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

commit 3ce5caa8302616036874f01267f690682a02d4b1
Author: npeltier <npelt...@adobe.com>
AuthorDate: Fri Oct 20 17:57:58 2017 +0200

SLING-7172 move $ to children pipe
---
 README.md  | 18 +-
 src/main/java/org/apache/sling/pipes/PipeBuilder.java  |  4 ++--
 .../{SlingQueryPipe.java => ChildrenPipe.java} | 10 +-
 .../apache/sling/pipes/internal/PipeBuilderImpl.java   |  4 ++--
 .../org/apache/sling/pipes/internal/PlumberImpl.java   |  2 +-
 .../apache/sling/pipes/internal/PlumberServlet.java|  2 +-
 src/main/java/org/apache/sling/pipes/package-info.java |  2 +-
 .../java/org/apache/sling/pipes/PipeBuilderTest.java   |  6 +++---
 .../{SlingQueryPipeTest.java => ChildrenPipeTest.java} |  4 ++--
 .../SLING-INF/jcr_root/etc/pipes-it/fruit-list.json|  2 +-
 src/test/resources/{slingQuery.json => children.json}  |  2 +-
 11 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/README.md b/README.md
index 2105803..badffb4 100644
--- a/README.md
+++ b/README.md
@@ -47,10 +47,10 @@ a pipe configuration is a jcr node, with:
 rather dummy pipe, outputs what is in input (so what is configured in path). 
Handy for doing some test mostly, and giving basic functionalities to others 
that inherit from it
 * `sling:resourceType` is `slingPipes/base`
 
- SlingQuery Pipe
+ children Pipe
 executes $(getInput()).children(expression)
-* `sling:resourceType` is `slingPipes/slingQuery`
-* `expr` mandatory property, contains slingQuery expression through which 
getInput()'s children will be computed to getOutput()
+* `sling:resourceType` is `slingPipes/children`
+* `expr` mandatory property, contains children expression through which 
getInput()'s children will be computed to getOutput()
 
  JsonPipe
 feeds bindings with remote json
@@ -110,7 +110,7 @@ execute the pipe referenced in path property
 
  Write Pipe
 writes given properties to current input
-* `sling:resourceType` is `slingPipes/slingQuery`
+* `sling:resourceType` is `slingPipes/children`
 * `conf` node tree that will be copied to the current input of the pipe, each 
node's properties 
 names and value will be written to the input resource. Input resource will be 
outputed. 
 
@@ -201,7 +201,7 @@ if parameter dryRun is set to true, and the executed pipe 
is supposed to modify
 
 ## sample configurations 
 
-### slingQuery | write
+### children | write
 this pipe parse all profile nodes, and 
 ```
 {
@@ -210,7 +210,7 @@ this pipe parse all profile nodes, and
   "jcr:description":"prefix all full names of profile with "Mr" or "Ms" 
depending on gender",
   "conf":{
 "profile": {
-"sling:resourceType":"slingPipes/slingQuery",
+"sling:resourceType":"slingPipes/children",
 "expr":"nt:unstructured#profile",
 "path":"/home/users"
 },
@@ -225,7 +225,7 @@ this pipe parse all profile nodes, and
 }
 ```
 
-### slingQuery | multiProperty | authorizable | write
+### children | multiProperty | authorizable | write
 ```
 {
   "jcr:primaryType": "sling:Folder",
@@ -239,7 +239,7 @@ this pipe parse all profile nodes, and
   "jcr:description": "outputs all badge component resources",
   "expr": "[sling:resourceType=myApp/components/badge]",
   "path": "/etc/badges/badges-admin/jcr:content",
-  "sling:resourceType": "slingPipes/slingQuery"
+  "sling:resourceType": "slingPipes/children"
   },
 "profile": {
   "jcr:primaryType": "sling:Folder",
@@ -343,5 +343,5 @@ some other samples are in 
https://github.com/npeltier/sling-pipes/tree/master/sr
 # Compatibility
 For running this tool on a sling instance you need:
 - java 8 (Nashorn is used for expression)
-- slingQuery (3.0.0) (used in SlingQueryPipe)
+- children (3.0.0) (used in childrenPipe)
 - jackrabbit api (2.7.5+) (used in AuthorizablePipe)
diff --git a/src/main/java/org/apache/sling/pipes/PipeBuilder.java 
b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
index 17089a3..2082f23 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBuilder.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
@@ -74,11 +74,11 @@ public interface PipeBuilder {
 PipeBuilder xpath(String expr);
 
 /**
- * attach a sling query pipe to the current context
+ * attach a sling query children pipe to the current context
  * @param expr sling query expression
  * @return updated instance of PipeBuilder
  */
-PipeBuilder $(String expr);
+  

svn commit: r1812428 - in /sling/trunk/contrib/extensions/sling-pipes/src: main/java/org/apache/sling/pipes/ContainerPipe.java test/java/org/apache/sling/pipes/ContainerPipeTest.java

2017-10-17 Thread npeltier
Author: npeltier
Date: Tue Oct 17 17:07:57 2017
New Revision: 1812428

URL: http://svn.apache.org/viewvc?rev=1812428=rev
Log:
SLING-7171 set sleep for container pipe

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java?rev=1812428=1812427=1812428=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java
 Tue Oct 17 17:07:57 2017
@@ -36,12 +36,18 @@ public class ContainerPipe extends BaseP
 
 public static final String RESOURCE_TYPE = "slingPipes/container";
 
+/**
+ * Sleep time, in ms, after each resource returned
+ */
+public static final String PN_SLEEP = "sleep";
+
 Map<String, Pipe> pipes = new HashMap<>();
 
 List pipeList = new ArrayList<>();
 
 List reversePipeList = new ArrayList<>();
 
+long sleep = 0L;
 /**
  * Constructor
  * @param plumber plumber
@@ -50,6 +56,7 @@ public class ContainerPipe extends BaseP
  */
 public ContainerPipe(Plumber plumber, Resource resource) throws Exception{
 super(plumber, resource);
+sleep = properties.get(PN_SLEEP, 0L);
 for (Iterator childPipeResources = 
getConfiguration().listChildren(); childPipeResources.hasNext();){
 Resource pipeResource = childPipeResources.next();
 Pipe pipe = plumber.getPipe(pipeResource);
@@ -86,7 +93,7 @@ public class ContainerPipe extends BaseP
 
 @Override
 public Iterator getOutput()  {
-return new ContainerResourceIterator(this);
+return new ContainerResourceIterator(this, sleep);
 }
 
 /**
@@ -148,17 +155,19 @@ public class ContainerPipe extends BaseP
 
 boolean computedCursor = false;
 boolean hasNext = false;
+long sleep = 0L;
 int cursor = 0;
 
 /**
  * Constructor
  * @param containerPipe corresponding container pipe
  */
-ContainerResourceIterator(ContainerPipe containerPipe) {
+ContainerResourceIterator(ContainerPipe containerPipe, long sleep) {
 container = containerPipe;
 bindings = container.bindings;
 iterators = new HashMap<>();
 Pipe firstPipe = container.getFirstPipe();
+this.sleep = sleep;
 //we initialize the first iterator the only one not to be updated
 iterators.put(firstPipe, firstPipe.getOutput());
 }
@@ -214,13 +223,20 @@ public class ContainerPipe extends BaseP
 
 @Override
 public Resource next() {
-hasNext = computedCursor && hasNext || hasNext();
-if (hasNext) {
-computedCursor = false;
-hasNext = false;
-Resource resource =  
iterators.get(container.getLastPipe()).next();
-bindings.updateBindings(container.getLastPipe(), resource);
-return resource;
+try {
+hasNext = computedCursor && hasNext || hasNext();
+if (hasNext) {
+computedCursor = false;
+hasNext = false;
+Resource resource = 
iterators.get(container.getLastPipe()).next();
+bindings.updateBindings(container.getLastPipe(), resource);
+if (sleep > 0) {
+Thread.sleep(sleep);
+}
+return resource;
+}
+} catch (InterruptedException e){
+log.error("interrupted while sleeping", e);
 }
 return null;
 }

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=1812428=1812427=1812428=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 17:07:57 2017
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru
 
 import java.uti

svn commit: r1812362 - in /sling/trunk/contrib/extensions/sling-pipes: ./ src/main/java/org/apache/sling/pipes/ src/main/java/org/apache/sling/pipes/models/ src/test/java/org/apache/sling/pipes/ src/t

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

URL: http://svn.apache.org/viewvc?rev=1812362=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=1812361=1812362=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 @@
 
   
org.apache.sling.jcr.contentparser;inline="org/apache/sling/jcr/contentparser/impl/JsonTicksConverter.class"
 
-  
-
-  
-  
-org.apache.mav

svn commit: r1018791 - /websites/production/sling/content/

2017-09-27 Thread npeltier
Author: npeltier
Date: Wed Sep 27 10:41:32 2017
New Revision: 1018791

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1018790, websites/staging/sling/trunk/content/



svn commit: r1809827 - /sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

2017-09-27 Thread npeltier
Author: npeltier
Date: Wed Sep 27 10:40:34 2017
New Revision: 1809827

URL: http://svn.apache.org/viewvc?rev=1809827=rev
Log:
sling pipes doc update

Modified:
sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

Modified: sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext?rev=1809827=1809826=1809827=diff
==
--- sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext (original)
+++ sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext Wed Sep 
27 10:40:34 2017
@@ -141,6 +141,7 @@ In that case you can monitor the pipes p
 ## Registered Pipes
 
 ### readers
+those are pipes that will spit out resources, without modifying them
 
 # Base pipe `echo(path)`
 outputs what is in input (so what is configured in path)
@@ -174,19 +175,10 @@ traverse current input resource's tree,
 - `properties` is a flag mentioning the pipe should traverse node's property,
 - `nameGlobs` filters the property that should get outputed
 
-# JsonPipe (`json(expr)`)
-feeds bindings with remote json
-
-- `sling:resourceType` is `slingPipes/json`
-- `expr` mandatory property contains url that will be called, the json be sent 
to the output bindings, getOutput = getInput.
-An empty url or a failing url will block the pipe at that given place.
-
-In case the json is an array, the pipe will loop over
-the array elements, and output each one in the binding. Output resource 
remains each time the input one.
-
 # AuthorizablePipe (`auth(conf)`)
 retrieve authorizable resource corresponding to the id passed in expression, 
or if not found (or void expression),
 from the input path, output the found authorizable's resource
+caution this pipe **can modify content** in case additional configuration is 
added (see below)
 
 - `sling:resourceType` is `slingPipes/authorizable`
 - `expr` should be an authorizable id, or void (but then input should be an 
authorizable)
@@ -222,6 +214,46 @@ not containing `@foo=bar`
 
 is an equivalent
 
+
+### InputStream reader pipes
+
+those are specific reader pipes, that read information an input stream from 
defined in expr configuration,
+that can be:
+
+- a remote located file (starting with http),
+- a file located in the repository (existing file stored in the repository),
+- a file passed as request parameter with `pipes_inputFile` as parameter name 
(in that case, expr can be empty)
+- direct data stream in the expression
+
+# JsonPipe (`json(expr)`)
+feeds bindings with json stream
+
+- `sling:resourceType` is `slingPipes/json`
+- `expr` see above
+- `valuePath` json path like expression that defines where the json value we 
care about is. E.g. `$.items[2]` considers root is an object and that we want 
the 3rd item of items array, located at `items` key of the root object.
+
+In case the json value is an array, the pipe will loop over
+the array elements, and output each one in the binding. 
+Output resource remains each time the input one.
+
+
json('{items:[{val:1},{val:2},{val:3}]}').with('valuePath','$.items').name('demo')
+mkdir('/content/${demo.val}.run()
+
+should create a tree of 3 resources /content/1, /content/2 and /content/3
+
+# CsvPipe (`csv(expr)`)
+feeds bindings with csv stream
+
+- `sling:resourceType` is `slingPipes/csv`
+- `expr` see above
+- `separator` separator character, default being comma `,`
+
+json('idx,val\n1,1\n2,2\n3,3').name('demo')
+.mkdir('/content/${demo.val}.run()
+
+should create a tree of 3 resources /content/1, /content/2 and /content/3
+
+
 ### containers
 # Container Pipe
 assemble a sequence of pipes
@@ -232,11 +264,17 @@ assemble a sequence of pipes
 Note that pipe builder api automatically creates one for you to chain the 
subpipe you are configuring
 
 # ReferencePipe
-execute the pipe referenced in path property
+executes the pipe referenced in path property
 
 - `sling:resourceType` is `slingPipes/reference`
 - `path` path of the referenced pipe
 
+# NotPipe
+executes the pipe referenced in path property, passes input only if referenced 
pipe doesn't return any resource
+
+- `sling:resourceType` is `slingPipes/not`
+- `path` path of the referenced pipe
+
 ### writers
 
 # Write Pipe (`write(conf)`)




svn commit: r1018677 - /websites/production/sling/content/

2017-09-25 Thread npeltier
Author: npeltier
Date: Mon Sep 25 10:18:25 2017
New Revision: 1018677

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1018676, websites/staging/sling/trunk/content/



svn commit: r1809598 - /sling/site/trunk/content/news.mdtext

2017-09-25 Thread npeltier
Author: npeltier
Date: Mon Sep 25 10:17:37 2017
New Revision: 1809598

URL: http://svn.apache.org/viewvc?rev=1809598=rev
Log:
add pipes 1.1.0 release entry

Modified:
sling/site/trunk/content/news.mdtext

Modified: sling/site/trunk/content/news.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/news.mdtext?rev=1809598=1809597=1809598=diff
==
--- sling/site/trunk/content/news.mdtext (original)
+++ sling/site/trunk/content/news.mdtext Mon Sep 25 10:17:37 2017
@@ -1,4 +1,6 @@
 Title: News
+
+* New Release: Apache Sling Pipes 1.1.0 (September 24th, 2017)
 * New Release: Apache Sling Maven Sling Plugin 2.3.2 (September 23th, 2017)
 * New Release: Apache Sling Repoinit JCR version 1.1.6, Apache Sling Repoinit 
Parser version 1.2.0 (September 22th, 2017)
 * New Release: Apache Sling Context-Aware Configuration Impl 1.4.4 (September 
22th, 2017)




svn commit: r1809085 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-09-20 Thread npeltier
Author: npeltier
Date: Wed Sep 20 21:14:13 2017
New Revision: 1809085

URL: http://svn.apache.org/viewvc?rev=1809085=rev
Log:
[maven-release-plugin] prepare for next development iteration

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1809085=1809084=1809085=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Wed Sep 20 21:14:13 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.1.0
+  1.1.1-SNAPSHOT
 
   Apache Sling Pipes
   bulk content changes tool
@@ -41,9 +41,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.1.0
-
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.1.0
-
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.1.0
+
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
   
 
   




svn commit: r1809084 - /sling/tags/org.apache.sling.pipes-1.1.0/

2017-09-20 Thread npeltier
Author: npeltier
Date: Wed Sep 20 21:14:11 2017
New Revision: 1809084

URL: http://svn.apache.org/viewvc?rev=1809084=rev
Log:
[maven-release-plugin] copy for tag org.apache.sling.pipes-1.1.0

Added:
sling/tags/org.apache.sling.pipes-1.1.0/
  - copied from r1809083, sling/trunk/contrib/extensions/sling-pipes/



svn commit: r1809083 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-09-20 Thread npeltier
Author: npeltier
Date: Wed Sep 20 21:13:56 2017
New Revision: 1809083

URL: http://svn.apache.org/viewvc?rev=1809083=rev
Log:
[maven-release-plugin] prepare release org.apache.sling.pipes-1.1.0

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1809083=1809082=1809083=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Wed Sep 20 21:13:56 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.5-SNAPSHOT
+  1.1.0
 
   Apache Sling Pipes
   bulk content changes tool
@@ -41,9 +41,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.1.0
+
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.1.0
+
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.1.0
   
 
   




svn commit: r1809079 - in /sling/trunk/contrib/extensions/sling-pipes/src: main/java/org/apache/sling/pipes/internal/JsonPipe.java test/java/org/apache/sling/pipes/internal/JsonPipeTest.java

2017-09-20 Thread npeltier
Author: npeltier
Date: Wed Sep 20 20:46:35 2017
New Revision: 1809079

URL: http://svn.apache.org/viewvc?rev=1809079=rev
Log:
SLING-7117 add JsonPath configuration

not full json path support even though it could be interesting, as it would 
need an external library

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java?rev=1809079=1809078=1809079=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java
 Wed Sep 20 20:46:35 2017
@@ -16,16 +16,6 @@
  */
 package org.apache.sling.pipes.internal;
 
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.Iterator;
-
-import javax.json.JsonArray;
-import javax.json.JsonException;
-import javax.json.JsonStructure;
-import javax.json.JsonValue.ValueType;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.Resource;
@@ -34,12 +24,38 @@ import org.apache.sling.pipes.Plumber;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonException;
+import javax.json.JsonObject;
+import javax.json.JsonStructure;
+import javax.json.JsonValue.ValueType;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  * Pipe outputting binding related to a json stream: either an object
  */
 public class JsonPipe extends AbstractInputStreamPipe {
 private static Logger logger = LoggerFactory.getLogger(JsonPipe.class);
-public static final String RESOURCE_TYPE = RT_PREFIX + "json";
+public final static String RESOURCE_TYPE = RT_PREFIX + "json";
+
+/**
+ * property specifying the json path where to fetched the used value
+ */
+protected static final String PN_VALUEPATH = "valuePath";
+
+protected static final String JSONPATH_ROOT = "$";
+
+protected static final String ARRAY_START = "[";
+
+protected static final String OBJ_START = ".";
+
+protected static final Pattern JSONPATH_FIRSTTOKEN = Pattern.compile("^\\" 
+ JSONPATH_ROOT + "([\\" + OBJ_START + "\\" + ARRAY_START + "])([^\\" + 
OBJ_START + "\\]\\" + ARRAY_START + "]+)\\]?");
 
 JsonArray array;
 int index = -1;
@@ -63,35 +79,42 @@ public class JsonPipe extends AbstractIn
 JsonStructure json;
 try {
 json = JsonUtil.parse(jsonString);
+
 } catch (JsonException ex) {
 json = null;
 }
 if (json == null) {
 binding = jsonString.trim();
 output = inputSingletonIterator;
-} else if (json.getValueType() != ValueType.ARRAY) {
-binding = JsonUtil.unbox(json);
-output = inputSingletonIterator;
 } else {
-binding = array = (JsonArray) json;
-index = 0;
-output = new Iterator() {
-@Override
-public boolean hasNext() {
-return index < array.size();
-}
-
-@Override
-public Resource next() {
-try {
-binding = JsonUtil.unbox(array.get(index));
-} catch (Exception e) {
-logger.error("Unable to retrieve {}nth item of 
jsonarray", index, e);
+String valuePath = properties.get(PN_VALUEPATH, 
String.class);
+if (StringUtils.isNotBlank(valuePath)){
+json = getValue(json, valuePath);
+}
+if (json.getValueType() != ValueType.ARRAY) {
+binding = JsonUtil.unbox(json);
+output = inputSingletonIterator;
+} else {
+binding = array = (JsonArray) json;
+index = 0;

svn commit: r1808470 - in /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes: PipeBuilder.java internal/PipeBuilderImpl.java

2017-09-15 Thread npeltier
Author: npeltier
Date: Fri Sep 15 17:33:07 2017
New Revision: 1808470

URL: http://svn.apache.org/viewvc?rev=1808470=rev
Log:
SLING-7126 add not pipe in pipe builder

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1808470=1808469=1808470=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Fri Sep 15 17:33:07 2017
@@ -135,6 +135,15 @@ public interface PipeBuilder {
  */
 PipeBuilder ref(String expr)throws IllegalAccessException;
 
+
+/**
+ * attach a not pipe to the current context
+ * @param expr reference
+ * @return updated instance of PipeBuilder
+ * @throws IllegalAccessException in case it's called with wrong # of 
arguments
+ */
+PipeBuilder not(String expr)throws IllegalAccessException;
+
 /**
  * parameterized current pipe in the context
  * @param params key value pair of parameters

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1808470=1808469=1808470=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 Fri Sep 15 17:33:07 2017
@@ -167,6 +167,11 @@ public class PipeBuilderImpl implements
 }
 
 @Override
+public PipeBuilder not(String expr) throws IllegalAccessException {
+return pipe(NotPipe.RESOURCE_TYPE).expr(expr);
+}
+
+@Override
 public PipeBuilder with(Object... params) throws IllegalAccessException {
 return writeToCurrentStep(null, params);
 }




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

2017-09-12 Thread npeltier
Author: npeltier
Date: Tue Sep 12 09:31:49 2017
New Revision: 1808090

URL: http://svn.apache.org/viewvc?rev=1808090=rev
Log:
SLING-7099 split JsonPipe and inputstream capabilities

Added:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.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/resources/json.json

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java?rev=1808090=auto
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
 (added)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
 Tue Sep 12 09:31:49 2017
@@ -0,0 +1,126 @@
+/*
+ * 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;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.HttpState;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.api.resource.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Iterator;
+import java.util.regex.Pattern;
+
+/**
+ * Input Stream based pipe, coming from web, from request, resource tree, web
+ */
+public abstract class AbstractInputStreamPipe extends BasePipe {
+private static Logger LOGGER = 
LoggerFactory.getLogger(AbstractInputStreamPipe.class);
+
+public final String REMOTE_START = "http";
+
+protected final Pattern VALID_PATH = 
Pattern.compile("/([\\w\\d]+/)+[\\w\\d]+");
+
+public static final Object BINDING_IS = 
"org.apache.sling.pipes.RequestInputStream";
+
+HttpClient client;
+
+protected Object binding;
+
+GetMethod method = null;
+
+InputStream is;
+
+public AbstractInputStreamPipe(Plumber plumber, Resource resource) throws 
Exception {
+super(plumber, resource);
+configureHttpClient();
+binding = null;
+}
+
+/**
+ * Configure http client
+ */
+private void configureHttpClient(){
+HttpConnectionManager manager = new 
MultiThreadedHttpConnectionManager();
+HttpConnectionManagerParams params = new HttpConnectionManagerParams();
+manager.setParams(params);
+client = new HttpClient(manager);
+client.getParams().setAuthenticationPreemptive(false);
+}
+
+InputStream getInputStream() throws IOException {
+String expr = getExpr();
+if (expr.startsWith(REMOTE_START)) {
+//first look at
+HttpState httpState = new HttpState();
+String url = getExpr();
+if (StringUtils.isNotBlank(url)) {
+method = new GetMethod(url);
+LOGGER.debug("Executing GET {}", url);
+int status = client.executeMethod(null, method, httpState);
+if (status == HttpStatus.SC_OK) {
+LOGGER.debug("200 received, streaming content");
+return method.getRes

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

2017-09-12 Thread npeltier
Author: npeltier
Date: Tue Sep 12 09:32:00 2017
New Revision: 1808091

URL: http://svn.apache.org/viewvc?rev=1808091=rev
Log:
SLING-7099 introducing csv pipe

- adding also unit test (using repository based input stream for now),
- adding PipeBuilder api, and fixing javadoc issues

Added:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/CsvPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/CsvPipeTest.java

sling/trunk/contrib/extensions/sling-pipes/src/test/resources/standardTest.csv
Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1808091=1808090=1808091=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Sep 12 09:32:00 2017
@@ -96,6 +96,16 @@
   
 
   
+  
+org.apache.rat
+apache-rat-plugin
+
+  
+
+src/test/resources/**/*.csv
+  
+
+  
 
   
 

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java?rev=1808091=1808090=1808091=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java
 Tue Sep 12 09:32:00 2017
@@ -30,8 +30,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
@@ -40,13 +38,14 @@ import java.util.regex.Pattern;
 
 /**
  * Input Stream based pipe, coming from web, from request, resource tree, web
+ * binding is updated by the returned iterator
  */
 public abstract class AbstractInputStreamPipe extends BasePipe {
 private static Logger LOGGER = 
LoggerFactory.getLogger(AbstractInputStreamPipe.class);
 
 public final String REMOTE_START = "http";
 
-protected final Pattern VALID_PATH = 
Pattern.compile("/([\\w\\d]+/)+[\\w\\d]+");
+protected final Pattern VALID_PATH = 
Pattern.compile("/([\\w\\d\\.-_]+/)+[\\w\\d\\.-_]+");
 
 public static final Object BINDING_IS = 
"org.apache.sling.pipes.RequestInputStream";
 
@@ -92,15 +91,14 @@ public abstract class AbstractInputStrea
 }
 } else if (VALID_PATH.matcher(expr).find()
 && resolver.getResource(expr) != null
-&& resolver.getResource(expr).adaptTo(File.class) != null) {
-return new 
FileInputStream(resolver.getResource(expr).adaptTo(File.class));
+&& resolver.getResource(expr).adaptTo(InputStream.class) != 
null) {
+return resolver.getResource(expr).adaptTo(InputStream.class);
 } else if (getBindings().getBindings().get(BINDING_IS) != null){
 return (InputStream)getBindings().getBindings().get(BINDING_IS);
 }
 return new ByteArrayInputStream(expr.getBytes(StandardCharsets.UTF_8));
 }
 
-
 @Override
 public Object getOutputBinding() {
 return binding;

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1808091=1808090=1808091=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Tue Sep 12 09:32:00 2017
@@ -87,8 +87,15 @@ public interface PipeBuild

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

2017-09-08 Thread npeltier
Author: npeltier
Date: Fri Sep  8 20:42:06 2017
New Revision: 1807821

URL: http://svn.apache.org/viewvc?rev=1807821=rev
Log:
SLING-7110 add PipeBuilder.runWith

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeBuilderIT.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1807821=1807820=1807821=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Fri Sep  8 20:42:06 2017
@@ -196,6 +196,14 @@ public interface PipeBuilder {
 Set run(Map bindings) throws Exception;
 
 /**
+ * allow execution of a pipe, with more parameter
+ * @param bindings additional bindings, should be key/value format
+ * @return set of resource path, output of the pipe execution
+ * @throws Exception in case something goes wrong with pipe execution
+ */
+Set runWith(Object... bindings) throws Exception;
+
+/**
  * run a pipe asynchronously
  * @param bindings additional bindings for the execution (can be null)
  * @return registered job for the pipe execution

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1807821=1807820=1807821=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 Fri Sep  8 20:42:06 2017
@@ -171,6 +171,28 @@ public class PipeBuilderImpl implements
 }
 
 /**
+ * Checks arguments and throws exception if there is an issue
+ * @param params
+ * @throws IllegalArgumentException
+ */
+protected void checkArguments(Object... params) throws 
IllegalArgumentException {
+if (params.length % 2 > 0){
+throw new IllegalArgumentException("there should be an even number 
of arguments");
+}
+}
+
+/**
+ * write key/value pairs into a map
+ * @param map
+ * @param params
+ */
+protected void writeToMap(Map map, Object... params){
+for (int i = 0; i < params.length; i += 2){
+map.put(params[i], params[i + 1]);
+}
+}
+
+/**
  * Add some configurations to current's Step node defined by name (if 
null, will be step's properties)
  * @param name name of the configuration node, can be null in which case 
it's the subpipe itself
  * @param params key/value pair list of configuration
@@ -178,9 +200,7 @@ public class PipeBuilderImpl implements
  * @throws IllegalAccessException in case configuration is wrong
  */
 protected PipeBuilder writeToCurrentStep(String name, Object... params) 
throws IllegalAccessException {
-if (params.length % 2 > 0){
-throw new IllegalArgumentException("there should be an even number 
of arguments");
-}
+checkArguments(params);
 Map props = name != null ? currentStep.confs.get(name) : 
currentStep.properties;
 if (props == null){
 props = new HashMap();
@@ -188,9 +208,7 @@ public class PipeBuilderImpl implements
 currentStep.confs.put(name, props);
 }
 }
-for (int i = 0; i < params.length; i += 2){
-props.put(params[i], params[i + 1]);
-}
+writeToMap(props, params);
 return this;
 }
 
@@ -273,6 +291,14 @@ public class PipeBuilderImpl implements
 }
 
 @Override
+public Set runWith(Object... bindings) throws Exception {
+checkArguments(bindings);
+Map bindingsMap = new HashMap();
+writeToMap(bindingsMap, bindings);
+return run(bindingsMap);
+}
+
+@Override
 public Set run(Map bindings) throws Exception {
 Pipe pipe = this.build();
 return plumber.execute(resolver, pipe, bindings,  new NopWriter() , 
true);

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/

svn commit: r1807820 - in /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes: PipeBuilder.java internal/PipeBuilderImpl.java

2017-09-08 Thread npeltier
Author: npeltier
Date: Fri Sep  8 20:41:56 2017
New Revision: 1807820

URL: http://svn.apache.org/viewvc?rev=1807820=rev
Log:
SLING-7110 add ref->reference pipe

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1807820=1807819=1807820=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Fri Sep  8 20:41:56 2017
@@ -117,6 +117,14 @@ public interface PipeBuilder {
  */
 PipeBuilder parent();
 
+
+/**
+ * attach a reference pipe to the current context
+ * @param expr reference
+ * @return updated instance of PipeBuilder
+ */
+PipeBuilder ref(String expr) throws IllegalAccessException;
+
 /**
  * parameterized current pipe in the context
  * @param params key value pair of parameters

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1807820=1807819=1807820=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 Fri Sep  8 20:41:56 2017
@@ -156,6 +156,11 @@ public class PipeBuilderImpl implements
 }
 
 @Override
+public PipeBuilder ref(String expr) throws IllegalAccessException {
+return pipe(ReferencePipe.RESOURCE_TYPE).expr(expr);
+}
+
+@Override
 public PipeBuilder with(Object... params) throws IllegalAccessException {
 return writeToCurrentStep(null, params);
 }




svn commit: r1807818 - in /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes: PipeBuilder.java internal/PipeBuilderImpl.java

2017-09-08 Thread npeltier
Author: npeltier
Date: Fri Sep  8 20:41:39 2017
New Revision: 1807818

URL: http://svn.apache.org/viewvc?rev=1807818=rev
Log:
SLING-7110 add build(path) api

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1807818=1807817=1807818=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Fri Sep  8 20:41:39 2017
@@ -158,13 +158,21 @@ public interface PipeBuilder {
 PipeBuilder conf(Object... properties) throws IllegalAccessException;
 
 /**
- * builds a configured pipe
- * @return Created (not executed) Pipe instance
+ * builds a configured pipe. The configuration will be placed in a 
balanced tree under /var/pipes
+ * @return Created (not executed) Pipe instance.
  * @throws PersistenceException error occuring when saving the pipe 
configuration
  */
 Pipe build() throws PersistenceException;
 
 /**
+ * builds a configured pipe. The configuration will be placed under 
path
+ * @param path path under which the generated configuration should be 
stored
+ * @return Created (not executed) Pipe instance
+ * @throws PersistenceException error occuring when saving the pipe 
configuration
+ */
+Pipe build(String path) throws PersistenceException;
+
+/**
  * builds and run configured pipe
  * @return set of resource path, output of the pipe execution
  * @throws Exception exceptions thrown by the build or the pipe execution 
itself

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1807818=1807817=1807818=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 Fri Sep  8 20:41:39 2017
@@ -219,7 +219,7 @@ public class PipeBuilderImpl implements
  * build a time + random based path under /var/pipes
  * @return full path of future Pipe
  */
-protected String buildPipePath() {
+protected String buildRandomPipePath() {
 final Calendar now = Calendar.getInstance();
 return PIPES_REPOSITORY_PATH + '/' + now.get(Calendar.YEAR) + '/' + 
now.get(Calendar.MONTH) + '/' + now.get(Calendar.DAY_OF_MONTH) + "/"
 + UUID.randomUUID().toString();
@@ -239,13 +239,17 @@ public class PipeBuilderImpl implements
 
 @Override
 public Pipe build() throws PersistenceException {
-String rootPath = buildPipePath();
-Resource pipeResource = ResourceUtil.getOrCreateResource(resolver, 
rootPath, ContainerPipe.RESOURCE_TYPE, NT_SLING_FOLDER, true);
+return build(buildRandomPipePath());
+}
+
+@Override
+public Pipe build(String path) throws PersistenceException {
+Resource pipeResource = ResourceUtil.getOrCreateResource(resolver, 
path, ContainerPipe.RESOURCE_TYPE, NT_SLING_FOLDER, true);
 int index = 0;
 for (Step step : steps){
 String name = StringUtils.isNotBlank(step.name) ? step.name : 
DEFAULT_NAMES.length > index ? DEFAULT_NAMES[index] : Integer.toString(index);
 index++;
-String subPipePath = rootPath + "/" + Pipe.NN_CONF + "/" + name;
+String subPipePath = path + "/" + Pipe.NN_CONF + "/" + name;
 createResource(resolver, subPipePath, NT_SLING_ORDERED_FOLDER, 
step.properties);
 logger.debug("built subpipe {}", subPipePath);
 for (Map.Entry<String, Map> entry : step.confs.entrySet()){
@@ -254,7 +258,7 @@ public class PipeBuilderImpl implements
 }
 }
 resolver.commit();
-logger.debug("built pipe under {}", rootPath);
+logger.debug("built pipe under {}", path);
 return plumber.getPipe(pipeResource);
 }
 




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

2017-09-08 Thread npeltier
Author: npeltier
Date: Fri Sep  8 20:41:49 2017
New Revision: 1807819

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

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java

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

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

svn commit: r1807809 - /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java

2017-09-08 Thread npeltier
Author: npeltier
Date: Fri Sep  8 19:36:21 2017
New Revision: 1807809

URL: http://svn.apache.org/viewvc?rev=1807809=rev
Log:
SLING-7100 only dryRun=false (or no dryRun param) for dry run

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java?rev=1807809=1807808=1807809=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
 Fri Sep  8 19:36:21 2017
@@ -123,7 +123,7 @@ public class PlumberServlet extends Slin
 protected Map getBindingsFromRequest(SlingHttpServletRequest request, 
boolean writeAllowed){
 Map bindings = new HashMap<>();
 String dryRun = request.getParameter(BasePipe.DRYRUN_KEY);
-if (StringUtils.isNotBlank(dryRun) && 
dryRun.equals(Boolean.TRUE.toString())) {
+if (StringUtils.isNotBlank(dryRun) && 
!dryRun.equals(Boolean.FALSE.toString())) {
 bindings.put(BasePipe.DRYRUN_KEY, true);
 }
 String paramBindings = request.getParameter(PARAM_BINDINGS);




svn commit: r1807808 - /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java

2017-09-08 Thread npeltier
Author: npeltier
Date: Fri Sep  8 19:25:55 2017
New Revision: 1807808

URL: http://svn.apache.org/viewvc?rev=1807808=rev
Log:
SLING-7115 filter null values out of maps

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java?rev=1807808=1807807=1807808=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java
 Fri Sep  8 19:25:55 2017
@@ -80,6 +80,7 @@ public class JsonUtil {
 :
 ((JsonObject) json).entrySet().stream()
 .map(entry -> new 
AbstractMap.SimpleEntry<>(entry.getKey(),unbox(entry.getValue(
+.filter(entry -> entry.getValue() != null)
 .collect(Collectors.toMap(Entry::getKey, 
Entry::getValue)));
 }
 




svn commit: r1017705 - /websites/production/sling/content/

2017-09-04 Thread npeltier
Author: npeltier
Date: Mon Sep  4 19:49:36 2017
New Revision: 1017705

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1017704, websites/staging/sling/trunk/content/



svn commit: r1807296 - /sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

2017-09-04 Thread npeltier
Author: npeltier
Date: Mon Sep  4 19:48:33 2017
New Revision: 1807296

URL: http://svn.apache.org/viewvc?rev=1807296=rev
Log:
[sling pipes] update curl & status documentation

Modified:
sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

Modified: sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext?rev=1807296=1807295=1807296=diff
==
--- sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext (original)
+++ sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext Mon Sep  
4 19:48:33 2017
@@ -98,7 +98,7 @@ which will return you the path of the re
 
 In the eventuality of a long execution (synchronous or asynchronous), you can 
retrieve the status of a pipe, by executing
 
-GET /etc/pipes/mySamplePipe**.status**.json
+GET /etc/pipes/mySamplePipe.status.json
 
 # Request Parameter `binding`
 
@@ -136,6 +136,7 @@ default response is truncated to 10 item
 # Request Parameter `async`
 allow asynchronous execution of the given type. This is advised in case you 
plan your pipe execution to last longer than the session of your HTTP client.
 If used, the returned value will be id of the created sling Job.
+In that case you can monitor the pipes path with `status` selector as 
described above until it has the value `finished`.
 
 ## Registered Pipes
 
@@ -217,7 +218,7 @@ as an example,
 will either return `/content/foo` either nothing depending on it
 not containing `@foo=bar`
 
-echo('content/foo').name('FOO').grep('slingPipesFilter_test','${FOO.foo == 
"bar"}'
+echo('content/foo').name('FOO').grep('slingPipesFilter_test','${FOO.foo == 
"bar"}').run()
 
 is an equivalent
 




svn commit: r1807293 - /sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

2017-09-04 Thread npeltier
Author: npeltier
Date: Mon Sep  4 19:37:23 2017
New Revision: 1807293

URL: http://svn.apache.org/viewvc?rev=1807293=rev
Log:
Yet another change for sling fitler pipe

Modified:
sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

Modified: sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext?rev=1807293=1807292=1807293=diff
==
--- sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext (original)
+++ sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext Mon Sep  
4 19:37:23 2017
@@ -209,6 +209,9 @@ property is there with the value instant
 - `slingPipesFilter_test='${...}'` evaluates the property value, and filters 
out the stream if the expression is not a boolean or false
 - `slingPipesFilter_not='true'` inverts the expected result of the filter
 
+
+as an example,
+
 echo('/content/foo').grep('foo','bar','slingPipesFilter_not',true).run()
 
 will either return `/content/foo` either nothing depending on it




svn commit: r1807292 - /sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

2017-09-04 Thread npeltier
Author: npeltier
Date: Mon Sep  4 19:34:02 2017
New Revision: 1807292

URL: http://svn.apache.org/viewvc?rev=1807292=rev
Log:
enhance filter pipe documentation

Modified:
sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

Modified: sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext?rev=1807292=1807291=1807292=diff
==
--- sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext (original)
+++ sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext Mon Sep  
4 19:34:02 2017
@@ -206,11 +206,18 @@ outputs the input resource if its matche
 - `conf` node tree that will be tested against the current input of the pipe, 
each `/conf/sub@prop=value` will triggers a test
 on `./sub@prop` property of the current input, testing if its value matches 
`value` regex. If the special `slingPipesFilter_noChildren=${true}`
 property is there with the value instantiated as a true boolean, then filter 
will pass if corresponding node has no children.
+- `slingPipesFilter_test='${...}'` evaluates the property value, and filters 
out the stream if the expression is not a boolean or false
 - `slingPipesFilter_not='true'` inverts the expected result of the filter
 
-`echo('/content/foo').grep('foo','bar','slingPipesFilter_not',true).run()` 
will either return `/content/foo` either nothing depending on it
+echo('/content/foo').grep('foo','bar','slingPipesFilter_not',true).run()
+
+will either return `/content/foo` either nothing depending on it
 not containing `@foo=bar`
 
+echo('content/foo').name('FOO').grep('slingPipesFilter_test','${FOO.foo == 
"bar"}'
+
+is an equivalent
+
 ### containers
 # Container Pipe
 assemble a sequence of pipes




svn commit: r1017566 - /websites/production/sling/content/

2017-09-01 Thread npeltier
Author: npeltier
Date: Fri Sep  1 15:17:06 2017
New Revision: 1017566

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1017565, websites/staging/sling/trunk/content/



svn commit: r1806970 - /sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

2017-09-01 Thread npeltier
Author: npeltier
Date: Fri Sep  1 14:59:54 2017
New Revision: 1806970

URL: http://svn.apache.org/viewvc?rev=1806970=rev
Log:
[sling pipes] update samples & formatting

Modified:
sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

Modified: sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext?rev=1806970=1806969=1806970=diff
==
--- sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext (original)
+++ sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext Fri Sep  
1 14:59:54 2017
@@ -56,7 +56,7 @@ Plumber can provider a PipeBuilder with
 API to quickly configure and run pipes.
 e.g. 
 
-
`plumber.newPipe(resolver).xpath('//element(*,nt:unstructured)[@sling:resourceType='to/delete']").rm().run();`
+
plumber.newPipe(resolver).xpath('//element(*,nt:unstructured)[@sling:resourceType='to/delete']").rm().run();
 
 will search for resource of type `to/delete` and remove them.
 
@@ -72,7 +72,7 @@ PipeBuilder basically will automatically
 
 note that that configuration part has shortcuts for some pipes. Typically, 
above sample is a shorter equivalent of 
 
-`plumber.newPipe(resolver).pipe('slingPipes/xpath').expr('//element(*,nt:unstructured)[@sling:resourceType='to/delete']").pipe('slingPipes/rm').run();`
+
plumber.newPipe(resolver).pipe('slingPipes/xpath').expr('//element(*,nt:unstructured)[@sling:resourceType='to/delete']").pipe('slingPipes/rm').run();
 
 when available, shortcuts will be specified next to each pipe type 
documentation.
 
@@ -98,7 +98,7 @@ which will return you the path of the re
 
 In the eventuality of a long execution (synchronous or asynchronous), you can 
retrieve the status of a pipe, by executing
 
-GET /etc/pipes/mySamplePipe**.status**.json
+GET /etc/pipes/mySamplePipe**.status**.json
 
 # Request Parameter `binding`
 
@@ -125,7 +125,7 @@ e.g.
 
 will returns something similar to
 
-{"size":2, "items":[{'user':'John 
Smith','path':'/home/users/q/q123jk1UAZS'},{'user':'John 
Doe','path':'/home/users/q/q153jk1UAZS'}]}
+{"size":2, "items":[{'user':'John 
Smith','path':'/home/users/q/q123jk1UAZS'},{'user':'John 
Doe','path':'/home/users/q/q153jk1UAZS'}]}
 
 # Request Parameter `dryRun`
 if parameter dryRun is set to true, and the executed pipe is supposed to 
modify content, it will log (at best it can) the change it *would* have done, 
without doing anything
@@ -282,7 +282,7 @@ global bindings can be set at pipe execu
 # slingQuery | write
 write repository user prefix Ms/Mr depending on gender
 
-  .newPipe(resolver).xpath('/jcr:root/home/users//element(*,rep:Users)')
+  
plumber.newPipe(resolver).xpath('/jcr:root/home/users//element(*,rep:Users)')
   .$('nt:unstructured#profile')
   .write("fullName","${(profile.gender === 'female' ? 'Ms ' + 
profile.fullName : 'Mr ' + profile.fullName)}")
   .run()
@@ -290,7 +290,7 @@ write repository user prefix Ms/Mr depen
 # slingQuery | multiProperty | authorizable | write
 move badge<->user relation ship from badge->users MV property to a 
user->badges MV property
 
- .newPipe(resolver).echo('/etc/badges/jcr:content/par')
+ plumber.newPipe(resolver).echo('/etc/badges/jcr:content/par')
  .$('[sling:resourceType=myApp/components/badge]').name('badge')
  
.pipe('slingPipes/multiProperty').path('${path.badge}/profiles').name('profile')
  .auth('${profile}').name('user')
@@ -299,72 +299,37 @@ move badge<->user relation ship from bad
  .run()
 
 
-### xpath | json | write
-this use case is for completing repository profiles with external system's 
data (that has an json api)
+# echo | $ | $ | echo | json | write
+this use case is for completing repository website with external system's data 
(that has an json api),
+it does 
 
-{
-  "jcr:primaryType": "nt:unstructured",
-  "jcr:description": "this pipe retrieves json info from an external 
system and writes them to the user profile, uses moment.js, it
-  distributes modified resources using publish distribution agent",
-  "sling:resourceType": "slingPipes/container",
-  "distribution.agent": "publish",
-  "additionalScripts": "/etc/source/moment.js",
-  "conf": {
-"jcr:primaryType": "sling:OrderedFolder",
-"profile": {
-  "jcr:primaryType": "sling:OrderedFolder",
-  "expr": 
"/jcr:root/home/users//element(profile,nt:unstructured)[@uid]",
-  "jcr:description": "query all user profile nodes",
-  "sling:resourc

svn commit: r1017482 - /websites/production/sling/content/

2017-08-30 Thread npeltier
Author: npeltier
Date: Wed Aug 30 14:06:12 2017
New Revision: 1017482

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1017481, websites/staging/sling/trunk/content/



svn commit: r1806694 - /sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

2017-08-30 Thread npeltier
Author: npeltier
Date: Wed Aug 30 13:59:44 2017
New Revision: 1806694

URL: http://svn.apache.org/viewvc?rev=1806694=rev
Log:
Update documentation to match release Apache Sling 1.0.4

Modified:
sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext

Modified: sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext?rev=1806694=1806693=1806694=diff
==
--- sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext (original)
+++ sling/site/trunk/content/documentation/bundles/sling-pipes.mdtext Wed Aug 
30 13:59:44 2017
@@ -1,12 +1,13 @@
 Title: Sling Pipes
 
-tool for doing extract - transform - load operations through a resource tree 
configuration.
+tool set for doing extract - transform - load operations by chaining proven 
code bits.
 
 often one-shot data transformations need sample code to be written & executed. 
This tiny tool set intends to provide ability to do such transformations with 
proven & reusable blocks called pipes, streaming resources from one to the 
other.
 
 ## What is a pipe
 
  getOutputBinding
+
^
|
  getInput  +---+---+   getOutput
@@ -17,21 +18,22 @@ often one-shot data transformations need
 
 A sling pipe is essentially a sling resource stream:
 
-- it provides an output as a sling resource iterator
-- it gets its input either from a configured path, either, if its chained (see 
container pipes below), from another pipe's output
-- each pipe can have additional dynamic inputs using other's bindings, and 
outputing its own bindings
+- it provides an output as a sling resource iterator,
+- it gets its input either from a configured path, either from former pipe's 
output,
+- each pipe can have contextual inputs using any other pipe's bindings, and 
outputting its own bindings
 
 At this moment, there are 3 types of pipes to consider:
 
 - "reader" pipes, that will just output a set of resource depending on the 
input
-- "writer" pipes, that write to the repository, depending on configuration and 
output
+- "writer" pipes, that modify the repository, depending on configuration and 
input
 - "container" pipes, that contains pipes, and whose job is to chain their 
execution : input is the input of their first pipe,
  output is the output of the last pipe it contains.
 
-A `Plumber` osgi service is provided to help getting & executing pipes.
+A `Plumber` osgi service is provided to help getting, building & executing 
pipes.
 
-## Registered Pipes
-a pipe configuration is a jcr node, with:
+## How to configure & execute a pipe
+
+A pipe configuration is ultimately a jcr node, with properties (varying a lot 
depending on the pipe type):
 
 - `sling:resourceType` property, which must be a pipe type registered by the 
plumber 
 - `name` property, that will be used in bindings as an id, and will be the key 
for the output bindings (default value being a value map of the current output 
resource). Note that the node name will be used in case no name is provided.
@@ -41,46 +43,147 @@ a pipe configuration is a jcr node, with
 - `additionalScripts` is a multi value property to declare scripts that can be 
reused in expressions
 - `conf` optional child node that contains addition configuration of the pipe 
(depending on the type)
 
+This configuration can be generated quickly through Pipe Builder API.
+
+Once configuration is done, it's possible to execute Pipes 
+
+- through plain java, with configured pipe resource as parameter,
+- through PipeBuilder API,
+- through HTTP API with GET (read) or POST (read/write) methods against 
configured pipe resource
+
+### Pipe Builder API
+Plumber can provider a PipeBuilder with `newPipe(ResourceResolver resolver)` 
API, that gives a fluent 
+API to quickly configure and run pipes.
+e.g. 
+
+
`plumber.newPipe(resolver).xpath('//element(*,nt:unstructured)[@sling:resourceType='to/delete']").rm().run();`
+
+will search for resource of type `to/delete` and remove them.
+
+PipeBuilder basically will automatically configure a container pipe, chaining 
pipes you can configure
+ with a fluent API:
+
+- `pipe(type)` generate a new subpipe,
+- `with(Object...)` add to actual subpipe configuration node key/value 
configurations,
+- `expr(String)` add an expression configuration
+- `path(String)` add an input path,
+- `name(String)` specify a name (there would be a default one, named 'one', 
'two', ... depending on the position otherwise),
+- `conf(Object...)` add an extra configuration node with key/value 
properties/values
+
+note that that configuration part has shortcuts for some pipes. Typically, 
above sample is a shorter equivalent of 
+
+`plumber.newPipe(resolver).pipe('slingPipes/xpath').expr('//element(*,nt:unstructured)[@sling:

svn commit: r1806643 - /sling/tags/org.apache.sling.pipes-1.0.4/

2017-08-29 Thread npeltier
Author: npeltier
Date: Tue Aug 29 20:23:19 2017
New Revision: 1806643

URL: http://svn.apache.org/viewvc?rev=1806643=rev
Log:
[maven-release-plugin] copy for tag org.apache.sling.pipes-1.0.4

Added:
sling/tags/org.apache.sling.pipes-1.0.4/
  - copied from r1806641, sling/trunk/contrib/extensions/sling-pipes/



svn commit: r1806641 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-08-29 Thread npeltier
Author: npeltier
Date: Tue Aug 29 20:23:05 2017
New Revision: 1806641

URL: http://svn.apache.org/viewvc?rev=1806641=rev
Log:
[maven-release-plugin] prepare release org.apache.sling.pipes-1.0.4

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1806641=1806640=1806641=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Aug 29 20:23:05 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.3-SNAPSHOT
+  1.0.4
 
   Apache Sling Pipes
   bulk content changes tool
@@ -41,9 +41,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.4
+
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.4
+
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.0.4
   
 
   




svn commit: r1806644 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-08-29 Thread npeltier
Author: npeltier
Date: Tue Aug 29 20:23:22 2017
New Revision: 1806644

URL: http://svn.apache.org/viewvc?rev=1806644=rev
Log:
[maven-release-plugin] prepare for next development iteration

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1806644=1806643=1806644=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Aug 29 20:23:22 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.4
+  1.0.5-SNAPSHOT
 
   Apache Sling Pipes
   bulk content changes tool
@@ -41,9 +41,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.4
-
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.4
-
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.0.4
+
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
   
 
   




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

2017-08-29 Thread npeltier
Author: npeltier
Date: Tue Aug 29 19:55:37 2017
New Revision: 1806636

URL: http://svn.apache.org/viewvc?rev=1806636=rev
Log:
SLING-7013 pipe builder api updates

- make with extensible,
- add async run & binding run,
- move filter api to grep,
- remove exception throwing from the api, when it will never happen,
- add some integration tests,
- fix a specific case of reference call through pipebuilder (container -> 
reference -> container -> pipe)

Added:

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/ReferencePipeTest.java
  - copied, changed from r1806595, 
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ReferencePipeTest.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PipeBuilderIT.java
Removed:

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ReferencePipeTest.java
Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Plumber.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ReferencePipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PathPipeTest.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/java/org/apache/sling/pipes/it/PlumberTestIT.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java?rev=1806636=1806635=1806636=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/ContainerPipe.java
 Tue Aug 29 19:55:37 2017
@@ -77,6 +77,14 @@ public class ContainerPipe extends BaseP
 }
 
 @Override
+public void setBindings(PipeBindings bindings) {
+this.bindings = bindings;
+for (Pipe pipe : pipeList){
+pipe.setBindings(bindings);
+}
+}
+
+@Override
 public Iterator getOutput()  {
 return new ContainerResourceIterator(this);
 }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1806636=1806635=1806636=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Tue Aug 29 19:55:37 2017
@@ -17,7 +17,9 @@
 package org.apache.sling.pipes;
 
 import org.apache.sling.api.resource.PersistenceException;
+import org.apache.sling.event.jobs.Job;
 
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -42,7 +44,7 @@ public interface PipeBuilder {
  * attach a write pipe to the current context
  * @param conf configuration parameters
  * @return updated instance of PipeBuilder
- * @throws IllegalAccessException in case it's called in a bad time
+ * @throws IllegalAccessException in case it's called with bad 
configuration
  */
 PipeBuilder write(Object... conf) throws IllegalAccessException;
 
@@ -50,15 +52,15 @@ public interface PipeBuilder {
  * attach a filter pipe to the current context
  * @param conf configuration parameters
  * @return updated instance of PipeBuilder
- * @throws IllegalAccessException in case it's called in a bad time
+ * @throws IllegalAccessException in case it's called with bad 
configuration
  */
-PipeBuilder filter(Object... conf) throws IllegalAccessException;
+PipeBuilder grep(Object... conf) throws IllegalAccessException;
 
 /**
  * attach an authorizable pipe to the current context
  * @param conf configuration key value pairs for authorizable (see pipe's 
doc)
  * @return updated instance of PipeBuilder
- * @throws IllegalAccessException

svn commit: r1806595 - in /sling/trunk/testing/mocks/jcr-mock/src: main/java/org/apache/sling/testing/mock/jcr/MockNode.java test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java

2017-08-29 Thread npeltier
Author: npeltier
Date: Tue Aug 29 14:02:30 2017
New Revision: 1806595

URL: http://svn.apache.org/viewvc?rev=1806595=rev
Log:
SLING-7089 support for MockNode.get* with globs

Modified:

sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java

sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java

Modified: 
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java?rev=1806595=1806594=1806595=diff
==
--- 
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
 (original)
+++ 
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
 Tue Aug 29 14:02:30 2017
@@ -42,6 +42,7 @@ import javax.jcr.version.VersionHistory;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.commons.ItemNameMatcher;
 import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
 import org.apache.jackrabbit.commons.iterator.PropertyIteratorAdapter;
 
@@ -106,6 +107,18 @@ class MockNode extends AbstractItem impl
 }
 
 @Override
+public NodeIterator getNodes(final String[] nameGlobs) throws 
RepositoryException {
+RangeIterator items = getMockedSession().listChildren(getPath(), new 
ItemFilter() {
+@Override
+public boolean accept(final ItemData item) throws 
RepositoryException {
+return item.isNode() && 
ItemNameMatcher.matches(item.getName(), nameGlobs);
+}
+});
+return new NodeIteratorAdapter(items, items.getSize());
+}
+
+
+@Override
 public PropertyIterator getProperties() throws RepositoryException {
 RangeIterator items = getMockedSession().listChildren(getPath(), new 
ItemFilter() {
 @Override
@@ -129,6 +142,17 @@ class MockNode extends AbstractItem impl
 }
 
 @Override
+public PropertyIterator getProperties(final String[] nameGlobs) throws 
RepositoryException {
+RangeIterator items = getMockedSession().listChildren(getPath(), new 
ItemFilter() {
+@Override
+public boolean accept(final ItemData item) throws 
RepositoryException {
+return item.isProperty() && 
ItemNameMatcher.matches(item.getName(), nameGlobs);
+}
+});
+return new PropertyIteratorAdapter(items, items.getSize());
+}
+
+@Override
 public Property getProperty(final String relPath) throws 
RepositoryException {
 String path = makeAbsolutePath(relPath);
 return getSession().getProperty(path);
@@ -494,16 +518,6 @@ class MockNode extends AbstractItem impl
 throw new UnsupportedOperationException();
 }
 
-@Override
-public NodeIterator getNodes(final String[] nameGlobs) throws 
RepositoryException {
-throw new UnsupportedOperationException();
-}
-
-@Override
-public PropertyIterator getProperties(final String[] nameGlobs) throws 
RepositoryException {
-throw new UnsupportedOperationException();
-}
-
 @Override
 public PropertyIterator getReferences(final String name) throws 
RepositoryException {
 throw new UnsupportedOperationException();

Modified: 
sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java?rev=1806595=1806594=1806595=diff
==
--- 
sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
 (original)
+++ 
sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
 Tue Aug 29 14:02:30 2017
@@ -45,6 +45,7 @@ public class MockNodeTest {
 private Node rootNode;
 private Node node1;
 private Property prop1;
+private Property prop2;
 private Node node11;
 
 @Before
@@ -72,6 +73,10 @@ public class MockNodeTest {
 assertEquals(1, nodes.getSize());
 assertEquals(this.node11, nodes.nextNode());
 
+nodes = this.node1.getNodes(new String[]{"node*"});
+assertEquals(1, nodes.getSize());
+assertEquals(this.node11, nodes.nextNode());
+
 nodes = this.node1.getNodes("unknown?");
 assertEquals(0, nodes.getSize());
 }
@@ -90,6 +95,10 @@ public class MockNodeTest {
 assertEquals(1, properties.getSize());
 assertEquals(this.prop1, properties.next());
 
+properties = this.node1.getProperties(new String[

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

2017-08-29 Thread npeltier
Author: npeltier
Date: Tue Aug 29 13:22:11 2017
New Revision: 1806590

URL: http://svn.apache.org/viewvc?rev=1806590=rev
Log:
SLING-7076 introducing traverse pipe

- pipe,
- integration in pipe builder,
- unit test,
- integration test

Added:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/TraversePipe.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/resources/traverse.json
Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/it/PlumberTestIT.java

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1806590=1806589=1806590=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Aug 29 13:22:11 2017
@@ -163,6 +163,12 @@
   provided
 
 
+  commons-collections
+  commons-collections
+  3.2.2
+  provided
+
+
   commons-httpclient
   commons-httpclient
   3.1

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1806590=1806589=1806590=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Tue Aug 29 13:22:11 2017
@@ -109,6 +109,13 @@ public interface PipeBuilder {
 PipeBuilder echo(String path) throws IllegalAccessException;
 
 /**
+ * attach a traverse pipe to the current context
+ * @return
+ * @throws IllegalAccessException
+ */
+PipeBuilder traverse() throws IllegalAccessException;
+
+/**
  * attach a parent pipe to the current context
  * @return updated instance of PipeBuilder
  */

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1806590=1806589=1806590=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 Tue Aug 29 13:22:11 2017
@@ -108,6 +108,11 @@ public class PipeBuilderImpl implements
 }
 
 @Override
+public PipeBuilder traverse() {
+return pipe(TraversePipe.RESOURCE_TYPE);
+}
+
+@Override
 public PipeBuilder json(String expr) throws IllegalAccessException {
 return pipe(JsonPipe.RESOURCE_TYPE).expr(expr);
 }

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java?rev=1806590=1806589=1806590=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java
 Tue Aug 29 13:22:11 2017
@@ -118,6 +118,7 @@ public class PlumberImpl implements Plum
 registerPipe(PathPipe.RESOURCE_TYPE, PathPipe.class);
 registerPipe(FilterPipe.RESOURCE_TYPE, FilterPipe.class);
 registerPipe(NotPipe.RESOURCE_TYPE, NotPipe.class);
+registerPipe(TraversePipe.RESOURCE_TYPE, TraversePipe.class);
 }
 
 @Reference(policy= ReferencePolicy.DYNAMIC, cardinality= 
ReferenceCardinality.OPTIONAL)

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/TraversePipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/TraversePipe.java?rev=1806590=auto

svn commit: r1801865 - in /sling/trunk/contrib/extensions/sling-pipes: pom.xml src/main/java/org/apache/sling/pipes/internal/PathPipe.java

2017-07-13 Thread npeltier
Author: npeltier
Date: Thu Jul 13 18:58:29 2017
New Revision: 1801865

URL: http://svn.apache.org/viewvc?rev=1801865=rev
Log:
SLING-7008 remove private package import

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1801865=1801864=1801865=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Thu Jul 13 18:58:29 2017
@@ -55,7 +55,6 @@
   
 
   org.apache.sling.distribution;resolution:=optional,
-  org.apache.sling.query;version=3.0.0,
   *
 
 

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java?rev=1801865=1801864=1801865=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
 Thu Jul 13 18:58:29 2017
@@ -24,7 +24,6 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.pipes.BasePipe;
 import org.apache.sling.pipes.Plumber;
-import org.apache.sling.query.util.IteratorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -71,7 +70,7 @@ public class PathPipe extends BasePipe {
 String expression = getExpr();
 try {
 String path = expression.startsWith(SLASH) ? expression : 
getInput().getPath() + SLASH + expression;
-output = 
IteratorUtils.singleElementIterator(ResourceUtil.getOrCreateResource(resolver, 
path, resourceType, intermediateType, autosave));
+output = 
Collections.singleton(ResourceUtil.getOrCreateResource(resolver, path, 
resourceType, intermediateType, autosave)).iterator();
 } catch (PersistenceException e){
 logger.error ("Not able to create path {}", expression, e);
 }




svn commit: r1801807 - /sling/tags/org.apache.sling.pipes-1.0.2/

2017-07-13 Thread npeltier
Author: npeltier
Date: Thu Jul 13 07:55:43 2017
New Revision: 1801807

URL: http://svn.apache.org/viewvc?rev=1801807=rev
Log:
cancelling the release

Removed:
sling/tags/org.apache.sling.pipes-1.0.2/



svn commit: r1015249 - /websites/production/sling/content/

2017-07-11 Thread npeltier
Author: npeltier
Date: Tue Jul 11 09:18:46 2017
New Revision: 1015249

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1015248, websites/staging/sling/trunk/content/



svn commit: r1801579 - /sling/site/trunk/content/documentation/development/release-management.mdtext

2017-07-11 Thread npeltier
Author: npeltier
Date: Tue Jul 11 09:17:41 2017
New Revision: 1801579

URL: http://svn.apache.org/viewvc?rev=1801579=rev
Log:
Adding instructions in case releaser hit MGPG-59

Modified:
sling/site/trunk/content/documentation/development/release-management.mdtext

Modified: 
sling/site/trunk/content/documentation/development/release-management.mdtext
URL: 
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/development/release-management.mdtext?rev=1801579=1801578=1801579=diff
==
--- 
sling/site/trunk/content/documentation/development/release-management.mdtext 
(original)
+++ 
sling/site/trunk/content/documentation/development/release-management.mdtext 
Tue Jul 11 09:17:41 2017
@@ -66,6 +66,7 @@ First prepare your POMs for release:
 ...
 
 * If you experience an error during deployment like a HTTP 401 check your 
settings for the required server entries as outlined in the *Prerequisites*
+* Depending on the OS & the gpg version you have, you might hit 
https://issues.apache.org/jira/browse/MGPG-59, in which case you need, before 
maven command, to run `gpg --use-agent --armor --detach-sign --output $(mktemp) 
pom.xml`
 * Make sure the generated artifacts respect the Apache release 
[rules](http://www.apache.org/dev/release.html): NOTICE and LICENSE files 
should be present in the META-INF directory within the jar. For \-sources 
artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 
which is broken. The recommended version at this time is 2.0.4
 * You should verify the deployment under the 
[snapshot](https://repository.apache.org/content/groups/snapshots/org/apache/sling)
 repository on Apache
 




svn commit: r1801576 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-07-11 Thread npeltier
Author: npeltier
Date: Tue Jul 11 08:48:57 2017
New Revision: 1801576

URL: http://svn.apache.org/viewvc?rev=1801576=rev
Log:
[maven-release-plugin] prepare for next development iteration

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1801576=1801575=1801576=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Jul 11 08:48:57 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.2
+  1.0.3-SNAPSHOT
 
   Apache Sling Pipes
   bulk content changes tool
@@ -40,9 +40,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.2
-
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.2
-
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.0.2
+
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
   
 
   




svn commit: r1801575 - /sling/tags/org.apache.sling.pipes-1.0.2/

2017-07-11 Thread npeltier
Author: npeltier
Date: Tue Jul 11 08:48:55 2017
New Revision: 1801575

URL: http://svn.apache.org/viewvc?rev=1801575=rev
Log:
[maven-release-plugin] copy for tag org.apache.sling.pipes-1.0.2

Added:
sling/tags/org.apache.sling.pipes-1.0.2/
  - copied from r1801574, sling/trunk/contrib/extensions/sling-pipes/



svn commit: r1801574 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-07-11 Thread npeltier
Author: npeltier
Date: Tue Jul 11 08:48:42 2017
New Revision: 1801574

URL: http://svn.apache.org/viewvc?rev=1801574=rev
Log:
[maven-release-plugin] prepare release org.apache.sling.pipes-1.0.2

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1801574=1801573=1801574=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Tue Jul 11 08:48:42 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.1-SNAPSHOT
+  1.0.2
 
   Apache Sling Pipes
   bulk content changes tool
@@ -40,9 +40,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.2
+
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.2
+
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.0.2
   
 
   




svn commit: r1801566 - in /sling/trunk/contrib/extensions/sling-pipes/src: main/java/org/apache/sling/pipes/internal/PathPipe.java test/java/org/apache/sling/pipes/internal/PathPipeTest.java

2017-07-11 Thread npeltier
Author: npeltier
Date: Tue Jul 11 08:24:55 2017
New Revision: 1801566

URL: http://svn.apache.org/viewvc?rev=1801566=rev
Log:
SLING-6998 use ResourceUtil for path creation

also added some unit tests for PathPipe

Added:

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/internal/PathPipeTest.java
Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java?rev=1801566=1801565=1801566=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java
 Tue Jul 11 08:24:55 2017
@@ -18,83 +18,61 @@ package org.apache.sling.pipes.internal;
 
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.StringTokenizer;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
 
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.pipes.BasePipe;
 import org.apache.sling.pipes.Plumber;
+import org.apache.sling.query.util.IteratorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static 
org.apache.sling.jcr.resource.JcrResourceConstants.NT_SLING_FOLDER;
+
 /**
  * creates or get given expression's path and returns corresponding resource
+ * this pipe can be configured with the following properties:
+ * 
+ * nodeType resource type with which the leaf node of the 
created path will be created
+ * intermediateType resource type with which intermediate 
nodse of the created path will be created
+ * autosave flag indicating wether this pipe should 
triggers a commit at the end of the execution
+ * 
  */
 public class PathPipe extends BasePipe {
 
 public static final String RESOURCE_TYPE = RT_PREFIX + "path";
-public static final String PN_NODETYPE = "nodeType";
+public static final String PN_RESOURCETYPE = "nodeType";
+public static final String PN_INTERMEDIATE = "intermediateType";
 public static final String PN_AUTOSAVE = "autosave";
+public static final String SLASH = "/";
 
-String nodeType;
-
+String resourceType;
+String intermediateType;
 boolean autosave;
 
 private final Logger logger = LoggerFactory.getLogger(PathPipe.class);
 
 public PathPipe(Plumber plumber, Resource resource) throws Exception {
 super(plumber, resource);
-nodeType = properties.get(PN_NODETYPE, "sling:Folder");
+resourceType = properties.get(PN_RESOURCETYPE, NT_SLING_FOLDER);
+intermediateType = properties.get(PN_INTERMEDIATE, NT_SLING_FOLDER);
 autosave = properties.get(PN_AUTOSAVE, true);
 }
 
 @Override
+public boolean modifiesContent() {
+return true;
+}
+
+@Override
 public Iterator getOutput() {
 Iterator output = Collections.emptyIterator();
 String expression = getExpr();
-Node leaf = null;
-boolean transientChange = false;
 try {
-String relativePath = expression.substring(1);
-Node parentNode = resolver.adaptTo(Session.class).getRootNode();
-if (!parentNode.hasNode(relativePath)) {
-Node node = parentNode;
-int pos = relativePath.lastIndexOf('/');
-if (pos != -1) {
-final StringTokenizer st = new 
StringTokenizer(relativePath.substring(0, pos), "/");
-while (st.hasMoreTokens()) {
-final String token = st.nextToken();
-if (!node.hasNode(token)) {
-try {
-node.addNode(token, nodeType);
-transientChange = true;
-} catch (RepositoryException re) {
-// we ignore this as this folder might be 
created from a different task
-node.getSession().refresh(false);
-}
-}
-node = node.getNode(token);
-}
-relativePath = relativePath.substring(pos + 1);
-}
-if (!node.hasNode(relativePath)) {
-node.addNode(relativePath, nodeType);
-transientChange = true;
-}
-   

svn commit: r1801516 - /sling/tags/org.apache.sling.pipes-1.0.0/

2017-07-10 Thread npeltier
Author: npeltier
Date: Mon Jul 10 18:54:29 2017
New Revision: 1801516

URL: http://svn.apache.org/viewvc?rev=1801516=rev
Log:
cancelling the release

Removed:
sling/tags/org.apache.sling.pipes-1.0.0/



svn commit: r1801506 - in /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes: PipeBuilder.java internal/PipeBuilderImpl.java

2017-07-10 Thread npeltier
Author: npeltier
Date: Mon Jul 10 17:39:14 2017
New Revision: 1801506

URL: http://svn.apache.org/viewvc?rev=1801506=rev
Log:
SLING-7002 fix PipeBuilder properties value

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1801506=1801505=1801506=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
 Mon Jul 10 17:39:14 2017
@@ -121,7 +121,7 @@ public interface PipeBuilder {
  * @return updated instance of PipeBuilder
  * @throws IllegalAccessException in case it's called in a bad time
  */
-PipeBuilder with(String param, String value) throws IllegalAccessException;
+PipeBuilder with(String param, Object value) throws IllegalAccessException;
 
 /**
  * set an expr configuration to the current pipe in the context

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1801506=1801505=1801506=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
 Mon Jul 10 17:39:14 2017
@@ -138,7 +138,7 @@ public class PipeBuilderImpl implements
 }
 
 @Override
-public PipeBuilder with(String param, String value) throws 
IllegalAccessException {
+public PipeBuilder with(String param, Object value) throws 
IllegalAccessException {
 checkCurrentStep();
 currentStep.properties.put(param, value);
 return this;




svn commit: r1801139 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-07-07 Thread npeltier
Author: npeltier
Date: Fri Jul  7 10:32:05 2017
New Revision: 1801139

URL: http://svn.apache.org/viewvc?rev=1801139=rev
Log:
[maven-release-plugin] prepare release org.apache.sling.pipes-1.0.0

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1801139=1801138=1801139=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Fri Jul  7 10:32:05 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.0-SNAPSHOT
+  1.0.0
 
   Apache Sling Pipes
   bulk content changes tool
@@ -40,9 +40,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
-
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.0
+
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.0
+
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.0.0
   
 
   




svn commit: r1801142 - /sling/trunk/contrib/extensions/sling-pipes/pom.xml

2017-07-07 Thread npeltier
Author: npeltier
Date: Fri Jul  7 10:32:21 2017
New Revision: 1801142

URL: http://svn.apache.org/viewvc?rev=1801142=rev
Log:
[maven-release-plugin] prepare for next development iteration

Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

Modified: sling/trunk/contrib/extensions/sling-pipes/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/pom.xml?rev=1801142=1801141=1801142=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Fri Jul  7 10:32:21 2017
@@ -30,7 +30,7 @@
 
   org.apache.sling.pipes
   bundle
-  1.0.0
+  1.0.1-SNAPSHOT
 
   Apache Sling Pipes
   bulk content changes tool
@@ -40,9 +40,9 @@
   
 
   
-
scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.0
-
scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.pipes-1.0.0
-
http://svn.apache.org/viewvc/sling/tags/org.apache.sling.pipes-1.0.0
+
scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes
+
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes
   
 
   




svn commit: r1801140 - /sling/tags/org.apache.sling.pipes-1.0.0/

2017-07-07 Thread npeltier
Author: npeltier
Date: Fri Jul  7 10:32:18 2017
New Revision: 1801140

URL: http://svn.apache.org/viewvc?rev=1801140=rev
Log:
[maven-release-plugin] copy for tag org.apache.sling.pipes-1.0.0

Added:
sling/tags/org.apache.sling.pipes-1.0.0/
  - copied from r1801139, sling/trunk/contrib/extensions/sling-pipes/



svn commit: r1801100 - in /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes: OutputWriter.java Pipe.java PipeBuilder.java Plumber.java internal/PipeBuilderImpl.java inte

2017-07-06 Thread npeltier
Author: npeltier
Date: Thu Jul  6 19:38:20 2017
New Revision: 1801100

URL: http://svn.apache.org/viewvc?rev=1801100=rev
Log:
Fix javadoc error

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/OutputWriter.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Pipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Plumber.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/OutputWriter.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/OutputWriter.java?rev=1801100=1801099=1801100=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/OutputWriter.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/OutputWriter.java
 Thu Jul  6 19:38:20 2017
@@ -55,7 +55,7 @@ public abstract class OutputWriter {
  * @param request request from which writer will output
  * @param response response on which writer will output
  * @throws IOException error handling streams
- * @throws JSONException in case invalid json is written
+ * @throws JsonException in case invalid json is written
  */
 public void init(SlingHttpServletRequest request, SlingHttpServletResponse 
response) throws IOException, JsonException {
 max = request.getParameter(PARAM_SIZE) != null ? 
Integer.parseInt(request.getParameter(PARAM_SIZE)) : NB_MAX;
@@ -70,14 +70,14 @@ public abstract class OutputWriter {
  * @param request request from which writer will output
  * @param response response on which writer will output
  * @throws IOException error handling streams
- * @throws JSONException in case invalid json is written
+ * @throws JsonException in case invalid json is written
  */
 protected abstract void initInternal(SlingHttpServletRequest request, 
SlingHttpServletResponse response) throws IOException, JsonException;
 
 /**
  * Write a given resource
  * @param resource resource that will be written
- * @throws JSONException in case write fails
+ * @throws JsonException in case write fails
  */
 public void write(Resource resource) throws JsonException {
 if (size++ < max) {
@@ -88,20 +88,20 @@ public abstract class OutputWriter {
 /**
  * Write a given resource
  * @param resource resource that will be written
- * @throws JSONException in case write fails
+ * @throws JsonException in case write fails
  */
 protected abstract void writeItem(Resource resource) throws JsonException;
 
 /**
  * writes the end of the output
- * @throws JSONException in case invalid json is written
+ * @throws JsonException in case invalid json is written
  */
 
 public abstract void ends() throws JsonException;
 
 /**
- *
- * @param pipe
+ * Setter
+ * @param pipe pipe this writer should be associated with
  */
 public void setPipe(Pipe pipe) {
 this.pipe = pipe;

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Pipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Pipe.java?rev=1801100=1801099=1801100=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Pipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Pipe.java
 Thu Jul  6 19:38:20 2017
@@ -44,10 +44,13 @@ public interface Pipe {
  */
 String NN_CONF = "conf";
 
+/**
+ * Distribution agent (for distributing output resources)
+ */
 String PN_DISTRIBUTION_AGENT = "distribution.agent";
 
 /**
- * returns true if that pipe will modify content during its execution
+ * returns true if that pipe modifies content during its execution
  * @return true for write / false for read
  */
 boolean modifiesContent();
@@ -92,7 +95,7 @@ public interface Pipe {
 
 /**
  * get the pipe configuration resource
- * @return
+ * @return Pipe configruation root resource
  */
 Resource getResource();
 

Modified: 
sling/trunk/contrib/extensions/sling-pipes/s

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

2017-07-06 Thread npeltier
Author: npeltier
Date: Thu Jul  6 10:04:52 2017
New Revision: 1801010

URL: http://svn.apache.org/viewvc?rev=1801010=rev
Log:
SLING-6078 sling pipes fluent API

- allow easy creation & run of pipes from script & java,
- added some tests

Added:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java
Modified:
sling/trunk/contrib/extensions/sling-pipes/pom.xml

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/BasePipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/Plumber.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/MovePipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/NotPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/ParentPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PathPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/SlingQueryPipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/XPathPipe.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/resources/fruits.json
sling/trunk/contrib/extensions/sling-pipes/src/test/resources/reference.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=1801010=1801009=1801010=diff
==
--- sling/trunk/contrib/extensions/sling-pipes/pom.xml (original)
+++ sling/trunk/contrib/extensions/sling-pipes/pom.xml Thu Jul  6 10:04:52 2017
@@ -150,6 +150,13 @@
   org.apache.sling
   org.apache.sling.event.api
   1.0.0
+  provided
+
+
+  org.apache.sling
+  org.apache.sling.jcr.resource
+  2.7.4
+  compile
 
 
 
@@ -167,15 +174,15 @@
 
   org.apache.sling
   org.apache.sling.testing.sling-mock
-  2.2.11-SNAPSHOT
+  2.2.12
   test
 
 
-org.apache.geronimo.specs
-geronimo-json_1.0_spec
-1.0-alpha-1
-provided
-
+  org.apache.geronimo.specs
+  geronimo-json_1.0_spec
+  1.0-alpha-1
+  provided
+
 
   org.apache.sling
   org.apache.sling.commons.johnzon

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/BasePipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/BasePipe.java?rev=1801010=1801009=1801010=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/BasePipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/BasePipe.java
 Thu Jul  6 10:04:52 2017
@@ -35,7 +35,8 @@ public class BasePipe implements Pipe {
 
 private final Logger logger = LoggerFactory.getLogger(BasePipe.class);
 
-public static final String RESOURCE_TYPE = "slingPipes/base";
+public static final String RT_PREFIX = "slingPipes/";
+public static final String RESOURCE_TYPE = RT_PREFIX + "base";
 public static final String DRYRUN_KEY = "dryRun";
 public static final String READ_ONLY = "readOnly";
 public static final String PN_STATUS = "status";

Added: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/sr

svn commit: r1800871 - in /sling/trunk/contrib/extensions/sling-pipes/src: main/java/org/apache/sling/pipes/PipeBindings.java test/java/org/apache/sling/pipes/PipeBindingsTest.java

2017-07-05 Thread npeltier
Author: npeltier
Date: Wed Jul  5 12:56:24 2017
New Revision: 1800871

URL: http://svn.apache.org/viewvc?rev=1800871=rev
Log:
SLING-6770 add resource names as bindings

- 'name' is a map referring resource names just as 'path'
- add some more comments,
- add a unit test based on a container pipe

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBindings.java

sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java

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=1800871=1800870=1800871=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
 Wed Jul  5 12:56:24 2017
@@ -55,10 +55,18 @@ public class PipeBindings {
 
 ScriptContext scriptContext = new SimpleScriptContext();
 
+/**
+ * add ${path.pipeName} binding allowing to retrieve pipeName's current 
resource path
+ */
 public static final String PATH_BINDING = "path";
-
 Map<String, String> pathBindings = new HashMap<>();
 
+/**
+ * add ${name.pipeName} binding allowing to retrieve pipeName's current 
resource name
+ */
+public static final String NAME_BINDING = "name";
+Map<String, String> nameBindings = new HashMap<>();
+
 Map<String, Resource> outputResources = new HashMap<>();
 
 private static final Pattern INJECTED_SCRIPT = 
Pattern.compile("\\$\\{(([^\\{^\\}]*(\\{[0-9,]+\\})?)*)\\}");
@@ -72,6 +80,9 @@ public class PipeBindings {
 //add path bindings where path.MyPipe will give MyPipe current 
resource path
 getBindings().put(PATH_BINDING, pathBindings);
 
+//add name bindings where name.MyPipe will give MyPipe current 
resource name
+getBindings().put(NAME_BINDING, nameBindings);
+
 //additional bindings (global variables to use in child pipes 
expressions)
 Resource additionalBindings = resource.getChild(NN_ADDITIONALBINDINGS);
 if (additionalBindings != null) {
@@ -152,6 +163,7 @@ public class PipeBindings {
 outputResources.put(pipe.getName(), resource);
 if (resource != null) {
 pathBindings.put(pipe.getName(), resource.getPath());
+nameBindings.put(pipe.getName(), resource.getName());
 }
 addBinding(pipe.getName(), pipe.getOutputBinding());
 }

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=1800871=1800870=1800871=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
 Wed Jul  5 12:56:24 2017
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertNul
 
 import java.util.Calendar;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 import javax.script.ScriptException;
@@ -123,4 +124,15 @@ public class PipeBindingsTest extends Ab
 Number expression = 
(Number)bindings.instantiateObject("${testSumFunction(1,2)}");
 assertEquals("computed expression have testSum script's 
functionavailable", 3, expression.intValue());
 }
+
+@Test
+public void testNameBinding() throws Exception {
+Pipe pipe = getPipe(PATH_PIPE + "/" + ContainerPipeTest.NN_ONEPIPE);
+Iterator output = pipe.getOutput();
+output.next();
+PipeBindings bindings = pipe.getBindings();
+assertEquals("first name binding should be apple", 
bindings.instantiateExpression("${name.dummyParent}"), "apple");
+output.next();
+assertEquals("second name binding should be banana", 
bindings.instantiateExpression("${name.dummyParent}"), "banana");
+}
 }
\ No newline at end of file




svn commit: r1800800 - /sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java

2017-07-04 Thread npeltier
Author: npeltier
Date: Tue Jul  4 15:21:03 2017
New Revision: 1800800

URL: http://svn.apache.org/viewvc?rev=1800800=rev
Log:
SLING-6997 remove useless resourceExpression

Modified:

sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java

Modified: 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java?rev=1800800=1800799=1800800=diff
==
--- 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
 Tue Jul  4 15:21:03 2017
@@ -45,7 +45,6 @@ public class WritePipe extends BasePipe
 private static final Logger logger = 
LoggerFactory.getLogger(WritePipe.class);
 public static final String RESOURCE_TYPE = "slingPipes/write";
 Node confTree;
-String resourceExpression;
 private List propertiesToRemove;
 Pattern addPatch = Pattern.compile("\\+\\[(.*)\\]");
 Pattern multi = Pattern.compile("\\[(.*)\\]");
@@ -62,7 +61,6 @@ public class WritePipe extends BasePipe
 throw new Exception("write pipe is misconfigured: it should have a 
configuration node");
 }
 confTree = getConfiguration().adaptTo(Node.class);
-resourceExpression = getPath();
 }
 
 




svn commit: r1013626 - in /websites/production/sling/content: ./ components/

2017-06-08 Thread npeltier
Author: npeltier
Date: Thu Jun  8 09:08:31 2017
New Revision: 1013626

Log:
Publishing svnmucc operation to sling site by npeltier

Added:
websites/production/sling/content/
  - copied from r1013625, websites/staging/sling/trunk/content/
websites/production/sling/content/components/
  - copied from r1013625, websites/production/sling/content/components/