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

rombert pushed a commit to annotated tag org.apache.sling.pipes-0.0.10
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-pipes.git

commit bea5e38395eb138be6c1f6c688f045f82f025eaf
Author: Oliver Lietz <[email protected]>
AuthorDate: Sat Jan 2 19:58:01 2016 +0000

    SLING-5362 Default output should be truncated
    
    patch from Nicolas Peltier
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes@1722658
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../org/apache/sling/pipes/PlumberServlet.java     | 45 ++++++++++++++++------
 .../org/apache/sling/pipes/PlumberServletTest.java |  8 ++--
 2 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/apache/sling/pipes/PlumberServlet.java 
b/src/main/java/org/apache/sling/pipes/PlumberServlet.java
index 6fcf2c6..277a484 100644
--- a/src/main/java/org/apache/sling/pipes/PlumberServlet.java
+++ b/src/main/java/org/apache/sling/pipes/PlumberServlet.java
@@ -60,6 +60,14 @@ public class PlumberServlet extends SlingAllMethodsServlet {
 
     protected static final String PARAM_WRITER = "writer";
 
+    protected static final String PARAM_SIZE = "size";
+
+    public static final int NB_MAX = 10;
+
+    public static final String KEY_SIZE = PARAM_SIZE;
+
+    public static final String KEY_ITEMS = "items";
+
     @Reference
     Plumber plumber;
 
@@ -81,6 +89,7 @@ public class PlumberServlet extends SlingAllMethodsServlet {
             }
             String dryRun = request.getParameter(BasePipe.DRYRUN_KEY);
             String paramBindings = request.getParameter(PARAM_BINDINGS);
+            int size = request.getParameter(PARAM_SIZE) != null ? 
Integer.parseInt(request.getParameter(PARAM_SIZE)) : NB_MAX;
 
             Map additionalBindings = null;
             if (StringUtils.isNotBlank(dryRun) && 
dryRun.equals(Boolean.TRUE.toString())) {
@@ -118,31 +127,45 @@ public class PlumberServlet extends 
SlingAllMethodsServlet {
             if (!writeAllowed && pipe.modifiesContent()) {
                 throw new Exception("This pipe modifies content, you should 
use a POST request");
             }
-            writer.array();
+            writer.object();
+            int i = 0;
             if (writerObj != null) {
                 pipe.getBindings().addBindings(additionalBindings);
                 Iterator<Resource> resourceIterator = pipe.getOutput();
+                writer.key(KEY_ITEMS).array();
                 while (resourceIterator.hasNext()){
                     Resource resource = resourceIterator.next();
-                    writer.object();
-                    writer.key(PATH_KEY).value(resource.getPath());
-                    Iterator<String> keys = writerObj.keys();
-                    while (keys.hasNext()){
-                        String key = keys.next();
-                        
writer.key(key).value(pipe.getBindings().instantiateObject(writerObj.getString(key)));
+                    if (i ++ < NB_MAX) {
+                        writer.object();
+                        writer.key(PATH_KEY).value(resource.getPath());
+                        Iterator<String> keys = writerObj.keys();
+                        while (keys.hasNext()) {
+                            String key = keys.next();
+                            
writer.key(key).value(pipe.getBindings().instantiateObject(writerObj.getString(key)));
+                        }
+                        writer.endObject();
                     }
-                    writer.endObject();
                 }
+                writer.endArray();
+                writer.key(KEY_SIZE).value(i);
             } else {
                 Set<String> resources = plumber.execute(resolver, pipe, 
additionalBindings, true);
+                writer.key(KEY_SIZE).value(resources.size());
+                writer.key(KEY_ITEMS);
+                writer.array();
                 for (String resource : resources) {
-                    writer.value(resource);
+                    if (i ++ > NB_MAX){
+                        break;
+                    } else {
+                        writer.value(resource);
+                    }
                 }
+                writer.endArray();
             }
-            writer.endArray();
+            writer.endObject();
             response.flushBuffer();
         } catch (Exception e) {
             throw new ServletException(e);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/pipes/PlumberServletTest.java 
b/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
index 8f18b73..52ecf05 100644
--- a/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
+++ b/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
@@ -77,8 +77,9 @@ public class PlumberServletTest  extends AbstractPipeTest {
     private void assertDummyTree() throws JSONException {
         String finalResponse = stringResponse.toString();
         assertFalse("There should be a response", 
StringUtils.isBlank(finalResponse));
-        JSONArray array = new JSONArray(finalResponse);
-        assertEquals("response should be an array with 4 results", 4, 
array.length());
+        JSONObject object = new JSONObject(finalResponse);
+        assertEquals("response should be an obj with size value equals to 4", 
object.getInt(PlumberServlet.KEY_SIZE), 4);
+        assertEquals("response should be an obj with items value equals to a 4 
valued array", object.getJSONArray(PlumberServlet.KEY_ITEMS).length(), 4);
     }
 
     @Test
@@ -132,7 +133,8 @@ public class PlumberServletTest  extends AbstractPipeTest {
                 mockPlumberServletRequest(context.resourceResolver(), 
dummyTreePath, null, bindings.toString(), respObject.toString(), null);
         servlet.execute(request, response, false);
         assertDummyTree();
-        JSONArray array = new JSONArray(stringResponse.toString());
+        JSONObject response = new JSONObject(stringResponse.toString());
+        JSONArray array = response.getJSONArray(PlumberServlet.KEY_ITEMS);
         for (int i = 0; i < array.length(); i++) {
             JSONObject object = array.optJSONObject(i);
             assertNotNull("there should be an object returned at each time", 
object);

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to