You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by np...@apache.org on 2017/10/17 17:07:58 UTC
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
Author: npeltier
Date: Tue Oct 17 17:07:57 2017
New Revision: 1812428
URL: http://svn.apache.org/viewvc?rev=1812428&view=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&r1=1812427&r2=1812428&view=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<Pipe> pipeList = new ArrayList<>();
List<Pipe> 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<Resource> 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<Resource> 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&r1=1812427&r2=1812428&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java Tue Oct 17 17:07:57 2017
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru
import java.util.Iterator;
+import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.junit.Before;
@@ -46,9 +47,7 @@ public class ContainerPipeTest extends A
@Test
public void testDummyTree() throws Exception {
- ContainerPipe pipe = (ContainerPipe)getPipe(PATH_PIPE + "/" + NN_DUMMYTREE);
- assertNotNull("A container pipe should be built out from the given configuration", pipe);
- Iterator<Resource> resourceIterator = pipe.getOutput();
+ Iterator<Resource> resourceIterator = getOutput(PATH_PIPE + "/" + NN_DUMMYTREE);
assertTrue("There should be some results", resourceIterator.hasNext());
Resource firstResource = resourceIterator.next();
assertNotNull("First resource should not be null", firstResource);
@@ -78,8 +77,7 @@ public class ContainerPipeTest extends A
@Test
public void testOtherTree() throws Exception {
- ContainerPipe pipe = (ContainerPipe)getPipe(PATH_PIPE + "/" + NN_OTHERTREE);
- Iterator<Resource> resourceIterator = pipe.getOutput();
+ Iterator<Resource> resourceIterator = getOutput(PATH_PIPE + "/" + NN_OTHERTREE);
assertTrue("There should be some results", resourceIterator.hasNext());
Resource firstResource = resourceIterator.next();
assertNotNull("First resource should not be null", firstResource);
@@ -104,4 +102,16 @@ public class ContainerPipeTest extends A
public void testOnePipe() throws Exception {
assertTrue("There should be children", getOutput(PATH_PIPE + "/" + NN_ONEPIPE).hasNext());
}
+
+ @Test
+ public void testSleep() throws Exception {
+ long interval = 100L;
+ String path = PATH_PIPE + "/" + NN_DUMMYTREE;
+ context.resourceResolver().getResource(path).adaptTo(ModifiableValueMap.class).put(ContainerPipe.PN_SLEEP, interval);
+ context.resourceResolver().commit();
+ Iterator<Resource> outputs = getOutput(path);
+ long start = System.currentTimeMillis();
+ outputs.next();
+ assertTrue("time spent should be bigger than interval", System.currentTimeMillis() - start > interval);
+ }
}
\ No newline at end of file