Author: olli
Date: Sat Jan 2 19:58:01 2016
New Revision: 1722658
URL: http://svn.apache.org/viewvc?rev=1722658&view=rev
Log:
SLING-5362 Default output should be truncated
patch from Nicolas Peltier
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PlumberServlet.java
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PlumberServlet.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PlumberServlet.java?rev=1722658&r1=1722657&r2=1722658&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PlumberServlet.java
(original)
+++
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PlumberServlet.java
Sat Jan 2 19:58:01 2016
@@ -60,6 +60,14 @@ public class PlumberServlet extends Slin
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 Slin
}
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 Slin
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
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PlumberServletTest.java?rev=1722658&r1=1722657&r2=1722658&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
(original)
+++
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PlumberServletTest.java
Sat Jan 2 19:58:01 2016
@@ -77,8 +77,9 @@ public class PlumberServletTest extends
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
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);