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]>.
