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 af1b512 SLING-7249 add csv output
af1b512 is described below
commit af1b512139845e4f18a405ed3d5568a655989dfe
Author: npeltier <[email protected]>
AuthorDate: Sat Nov 18 10:28:23 2017 +0100
SLING-7249 add csv output
- simplify output writers hierarchy,
- add csv writer
---
.../org/apache/sling/pipes/CustomOutputWriter.java | 39 +++++++++
.../java/org/apache/sling/pipes/OutputWriter.java | 32 ++++++-
.../org/apache/sling/pipes/internal/CsvWriter.java | 93 +++++++++++++++++++++
.../sling/pipes/internal/CustomJsonWriter.java | 97 ----------------------
.../{DefaultJsonWriter.java => JsonWriter.java} | 32 +++++--
.../sling/pipes/internal/PipeBuilderImpl.java | 5 +-
.../sling/pipes/internal/PlumberServlet.java | 5 +-
.../sling/pipes/internal/PlumberServletTest.java | 28 ++++---
.../apache/sling/pipes/it/PlumberServletIT.java | 11 +--
9 files changed, 217 insertions(+), 125 deletions(-)
diff --git a/src/main/java/org/apache/sling/pipes/CustomOutputWriter.java
b/src/main/java/org/apache/sling/pipes/CustomOutputWriter.java
new file mode 100644
index 0000000..b618aff
--- /dev/null
+++ b/src/main/java/org/apache/sling/pipes/CustomOutputWriter.java
@@ -0,0 +1,39 @@
+/*
+ * 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.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.Resource;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+public abstract class CustomOutputWriter extends OutputWriter {
+
+ @Override
+ public void init(SlingHttpServletRequest request, SlingHttpServletResponse
response) throws IOException {
+ super.init(request, response);
+
+ }
+
+ @Override
+ public void setPipe(Pipe pipe) {
+ super.setPipe(pipe);
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/pipes/OutputWriter.java
b/src/main/java/org/apache/sling/pipes/OutputWriter.java
index 090413a..a6df8fd 100644
--- a/src/main/java/org/apache/sling/pipes/OutputWriter.java
+++ b/src/main/java/org/apache/sling/pipes/OutputWriter.java
@@ -16,17 +16,24 @@
*/
package org.apache.sling.pipes;
+import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.internal.JsonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
/**
* defines how pipe's output get written to a servlet response or output stream
*/
public abstract class OutputWriter {
+ Logger log = LoggerFactory.getLogger(CustomOutputWriter.class);
public static final String KEY_SIZE = "size";
@@ -44,6 +51,13 @@ public abstract class OutputWriter {
protected Writer writer;
+ public static final String PATH_KEY = "path";
+
+ public static final String PARAM_WRITER = "writer";
+
+ protected Map<String, Object> customOutputs;
+
+
/**
*
* @param request current request
@@ -61,6 +75,14 @@ public abstract class OutputWriter {
if (request.getParameter(PARAM_SIZE) != null) {
setMax(Integer.parseInt(request.getParameter(PARAM_SIZE)));
}
+ String writerParam = request.getParameter(PARAM_WRITER);
+ if (StringUtils.isNotBlank(writerParam)){
+ try {
+ customOutputs =
JsonUtil.unbox(JsonUtil.parseObject(writerParam));
+ } catch(Exception e){
+ log.error("requested attributes can't be parsed", e);
+ }
+ }
setWriter(response.getWriter());
initResponse(response);
starts();
@@ -88,7 +110,7 @@ public abstract class OutputWriter {
}
}
- /**
+ /**x
* Set the writer
* @param writer writer on which to write output
*/
@@ -124,6 +146,14 @@ public abstract class OutputWriter {
*/
public void setPipe(Pipe pipe) {
this.pipe = pipe;
+ Resource outputs = pipe.getResource().getChild(PARAM_WRITER);
+ if (customOutputs == null && outputs != null ){
+ customOutputs = new HashMap<>();
+ customOutputs.putAll(outputs.getValueMap());
+ for (String ignoredKey : BasePipe.IGNORED_PROPERTIES) {
+ customOutputs.remove(ignoredKey);
+ }
+ }
}
@Override
diff --git a/src/main/java/org/apache/sling/pipes/internal/CsvWriter.java
b/src/main/java/org/apache/sling/pipes/internal/CsvWriter.java
new file mode 100644
index 0000000..7ca5f38
--- /dev/null
+++ b/src/main/java/org/apache/sling/pipes/internal/CsvWriter.java
@@ -0,0 +1,93 @@
+/*
+ * 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.internal;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.pipes.CustomOutputWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class CsvWriter extends CustomOutputWriter {
+ private static final Logger LOG = LoggerFactory.getLogger(CsvWriter.class);
+
+ private static final String CSV_EXTENSION = "csv";
+
+ private static final String SEPARATOR = ",";
+
+ private static final String NEW_LINE = "\n";
+
+ List<String> headers;
+
+ @Override
+ public boolean handleRequest(SlingHttpServletRequest request) {
+ return
request.getRequestPathInfo().getExtension().equals(CSV_EXTENSION);
+ }
+
+ @Override
+ protected void initResponse(SlingHttpServletResponse response) {
+ response.setCharacterEncoding("utf-8");
+ response.setContentType("plain/text");
+ }
+
+ @Override
+ public void starts() {
+
+ }
+
+ @Override
+ protected void writeItem(Resource resource) {
+ if (headers == null) {
+ headers = new ArrayList<>();
+ headers.add(PATH_KEY);
+ if (customOutputs != null) {
+ headers.addAll(customOutputs.keySet());
+ }
+ try {
+
writer.write(headers.stream().collect(Collectors.joining(SEPARATOR)) +
NEW_LINE);
+ } catch (IOException e) {
+ LOG.error("unable to write header");
+ }
+ }
+ if (headers != null){
+ try {
+ String line = headers.stream().map(key -> key.equals(PATH_KEY)
?
+ resource.getPath()
+ :
(String)pipe.getBindings().instantiateObject((String)customOutputs.get(key)))
+ .collect(Collectors.joining(SEPARATOR));
+ writer.write(line + NEW_LINE);
+ } catch (IOException e) {
+ LOG.error("unable to write header", e);
+ }
+ }
+ }
+
+ @Override
+ public void ends() {
+ try {
+ writer.flush();
+ } catch (IOException e) {
+ LOG.error("unable to flush", e);
+ }
+ }
+}
\ No newline at end of file
diff --git
a/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java
b/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java
deleted file mode 100644
index 62df138..0000000
--- a/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.internal;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.pipes.BasePipe;
-import org.apache.sling.pipes.Pipe;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.json.JsonValue;
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * writes current resource, dubbing a eventual parameter or given child
resource "writer" property/value pairs, allowing
- * expressions
- */
-public class CustomJsonWriter extends DefaultJsonWriter {
- Logger log = LoggerFactory.getLogger(CustomJsonWriter.class);
-
- public static final String PATH_KEY = "path";
-
- public static final String PARAM_WRITER = "writer";
-
- Map<String, Object> customOutputs;
-
- CustomJsonWriter() {
- }
-
- CustomJsonWriter(Writer writer) {
- super(writer);
- }
-
- @Override
- public boolean handleRequest(SlingHttpServletRequest request) {
- String writerParam = request.getParameter(PARAM_WRITER);
- if (StringUtils.isNotBlank(writerParam)){
- try {
- customOutputs =
JsonUtil.unbox(JsonUtil.parseObject(writerParam));
- return true;
- } catch(Exception e){
- log.error("requested json writer can't be parsed", e);
- }
- } else {
- Resource resource = request.getResource().getChild(PARAM_WRITER);
- return resource != null;
- }
- return false;
- }
-
- @Override
- public void setPipe(Pipe pipe) {
- super.setPipe(pipe);
- if (customOutputs == null){
- customOutputs = new HashMap<>();
-
customOutputs.putAll(pipe.getResource().getChild(PARAM_WRITER).adaptTo(ValueMap.class));
- for (String ignoredKey : BasePipe.IGNORED_PROPERTIES) {
- customOutputs.remove(ignoredKey);
- }
- }
- }
-
- @Override
- public void writeItem(Resource resource) {
- jsonWriter.writeStartObject();
- jsonWriter.write(PATH_KEY,resource.getPath());
- for (Map.Entry<String, Object> entry : customOutputs.entrySet()){
- Object o =
pipe.getBindings().instantiateObject((String)entry.getValue());
- if ( o instanceof JsonValue ) {
- jsonWriter.write(entry.getKey(),(JsonValue) o);
- }
- else {
- jsonWriter.write(entry.getKey(), o.toString());
- }
- }
- jsonWriter.writeEnd();
- }
-}
\ No newline at end of file
diff --git
a/src/main/java/org/apache/sling/pipes/internal/DefaultJsonWriter.java
b/src/main/java/org/apache/sling/pipes/internal/JsonWriter.java
similarity index 66%
rename from src/main/java/org/apache/sling/pipes/internal/DefaultJsonWriter.java
rename to src/main/java/org/apache/sling/pipes/internal/JsonWriter.java
index 3a614f7..8a69294 100644
--- a/src/main/java/org/apache/sling/pipes/internal/DefaultJsonWriter.java
+++ b/src/main/java/org/apache/sling/pipes/internal/JsonWriter.java
@@ -19,29 +19,33 @@ package org.apache.sling.pipes.internal;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
-import org.apache.sling.pipes.OutputWriter;
+import org.apache.sling.pipes.CustomOutputWriter;
import javax.json.Json;
+import javax.json.JsonValue;
import javax.json.stream.JsonGenerator;
import java.io.Writer;
+import java.util.Map;
/**
* default output writer, that outputs JSON with size and output resources'
path
*/
-public class DefaultJsonWriter extends OutputWriter {
+public class JsonWriter extends CustomOutputWriter {
protected JsonGenerator jsonWriter;
- DefaultJsonWriter(){
+ public static final String JSON_EXTENSION = "json";
+
+ JsonWriter(){
}
- DefaultJsonWriter(Writer writer){
+ JsonWriter(Writer writer){
setWriter(writer);
}
@Override
public boolean handleRequest(SlingHttpServletRequest request) {
- return true;
+ return
request.getRequestPathInfo().getExtension().equals(JSON_EXTENSION);
}
@Override
@@ -59,7 +63,21 @@ public class DefaultJsonWriter extends OutputWriter {
@Override
public void writeItem(Resource resource) {
- jsonWriter.write(resource.getPath());
+ if (customOutputs == null) {
+ jsonWriter.write(resource.getPath());
+ } else {
+ jsonWriter.writeStartObject();
+ jsonWriter.write(PATH_KEY, resource.getPath());
+ for (Map.Entry<String, Object> entry : customOutputs.entrySet()) {
+ Object o = pipe.getBindings().instantiateObject((String)
entry.getValue());
+ if (o instanceof JsonValue) {
+ jsonWriter.write(entry.getKey(), (JsonValue) o);
+ } else {
+ jsonWriter.write(entry.getKey(), o.toString());
+ }
+ }
+ jsonWriter.writeEnd();
+ }
}
@Override
@@ -69,4 +87,4 @@ public class DefaultJsonWriter extends OutputWriter {
jsonWriter.writeEnd();
jsonWriter.flush();
}
-}
+}
\ No newline at end of file
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 a108b13..68e929f 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
@@ -24,6 +24,7 @@ import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.event.jobs.Job;
import org.apache.sling.pipes.BasePipe;
import org.apache.sling.pipes.ContainerPipe;
+import org.apache.sling.pipes.CustomOutputWriter;
import org.apache.sling.pipes.ExecutionResult;
import org.apache.sling.pipes.Pipe;
import org.apache.sling.pipes.PipeBuilder;
@@ -335,7 +336,7 @@ public class PipeBuilderImpl implements PipeBuilder {
public Pipe build(String path) throws PersistenceException {
Resource pipeResource = persistStep(path, NT_SLING_FOLDER,
containerStep);
if (outputs != null){
- ResourceUtil.getOrCreateResource(resolver, path + "/" +
CustomJsonWriter.PARAM_WRITER, outputs, NT_SLING_FOLDER, false);
+ ResourceUtil.getOrCreateResource(resolver, path + "/" +
CustomOutputWriter.PARAM_WRITER, outputs, NT_SLING_FOLDER, false);
}
int index = 0;
for (Step step : steps){
@@ -364,7 +365,7 @@ public class PipeBuilderImpl implements PipeBuilder {
@Override
public ExecutionResult run(Map bindings) throws Exception {
StringWriter stringWriter = new StringWriter();
- DefaultJsonWriter writer = outputs != null ? new
CustomJsonWriter(stringWriter) : new DefaultJsonWriter(stringWriter);
+ JsonWriter writer = new JsonWriter(stringWriter);
writer.starts();
Pipe pipe = this.build();
return plumber.execute(resolver, pipe, bindings, writer , true);
diff --git a/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
b/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
index 22f3fd8..a59ce8f 100644
--- a/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
+++ b/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java
@@ -54,7 +54,8 @@ import java.util.Map;
ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES + "=" +
ChildrenPipe.RESOURCE_TYPE,
ServletResolverConstants.SLING_SERVLET_METHODS + "=GET",
ServletResolverConstants.SLING_SERVLET_METHODS + "=POST",
- ServletResolverConstants.SLING_SERVLET_EXTENSIONS + "=json"
+ ServletResolverConstants.SLING_SERVLET_EXTENSIONS + "=json",
+ ServletResolverConstants.SLING_SERVLET_EXTENSIONS + "=csv"
})
public class PlumberServlet extends SlingAllMethodsServlet {
Logger log = LoggerFactory.getLogger(this.getClass());
@@ -154,7 +155,7 @@ public class PlumberServlet extends SlingAllMethodsServlet {
* @throws IOException bad handling of I/O streams,
*/
OutputWriter getWriter(SlingHttpServletRequest request,
SlingHttpServletResponse response) throws IOException {
- OutputWriter[] candidates = new OutputWriter[]{new CustomJsonWriter(),
new DefaultJsonWriter()};
+ OutputWriter[] candidates = new OutputWriter[]{new CsvWriter(), new
JsonWriter()};
for (OutputWriter candidate : candidates) {
if (candidate.handleRequest(request)) {
candidate.init(request, response);
diff --git
a/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
b/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
index 1f9d08f..fa9564e 100644
--- a/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
+++ b/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java
@@ -36,6 +36,7 @@ import javax.servlet.ServletException;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.request.RequestPathInfo;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
@@ -43,6 +44,7 @@ import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.pipes.AbstractPipeTest;
import org.apache.sling.pipes.BasePipe;
import org.apache.sling.pipes.ContainerPipeTest;
+import org.apache.sling.pipes.CustomOutputWriter;
import org.apache.sling.pipes.OutputWriter;
import org.junit.Before;
import org.junit.Test;
@@ -97,21 +99,21 @@ public class PlumberServletTest extends AbstractPipeTest {
@Test
public void testDummyTreeThroughRT() throws Exception {
- SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), dummyTreePath, null,
null, null, null, null);
+ SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), "json", dummyTreePath,
null, null, null, null, null);
servlet.execute(request, response, false);
assertDummyTree();
}
@Test
public void testDummyTreeThroughPlumber() throws Exception {
- SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), PATH_PIPE, dummyTreePath,
null, null, null, null);
+ SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), "json", PATH_PIPE,
dummyTreePath, null, null, null, null);
servlet.execute(request, response, false);
assertDummyTree();
}
@Test
public void testWriteExecute() throws ServletException {
- SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), pipedWritePath, null,
null, null, null, null);
+ SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), "json", pipedWritePath,
null, null, null, null, null);
servlet.execute(request, response, true);
String finalResponse = stringResponse.toString();
assertFalse("There should be a response",
StringUtils.isBlank(finalResponse));
@@ -124,7 +126,7 @@ public class PlumberServletTest extends AbstractPipeTest {
*/
@Test
public void testGetOnWriteExecute() throws ServletException {
- SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), pipedWritePath, null,
null, null, null, null);
+ SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), "json", pipedWritePath,
null, null, null, null, null);
boolean hasFailed = true;
try {
servlet.execute(request, response, false);
@@ -144,7 +146,7 @@ public class PlumberServletTest extends AbstractPipeTest {
String bindings = "{\"" + testBinding + "\":\"" + bindingValue + "\"}";
String respObject = "{\"" + pathLengthParam +
"\":\"${path.get(\\\"dummyGrandChild\\\").length}\",\"" + testBindingLength +
"\":\"${" + testBinding + ".length}\"}";
SlingHttpServletRequest request =
- mockPlumberServletRequest(context.resourceResolver(),
dummyTreePath, null, bindings.toString(), respObject.toString(), null, null);
+ mockPlumberServletRequest(context.resourceResolver(), "json",
dummyTreePath, null, bindings.toString(), respObject.toString(), null, null);
servlet.execute(request, response, false);
assertDummyTree();
JsonObject response = Json.createReader(new
StringReader(stringResponse.toString())).readObject();
@@ -152,7 +154,7 @@ public class PlumberServletTest extends AbstractPipeTest {
for (int i = 0; i < array.size(); i++) {
JsonObject object = array.getJsonObject(i);
assertNotNull("there should be an object returned at each time",
object);
- String path = object.getString(CustomJsonWriter.PATH_KEY);
+ String path = object.getString(CustomOutputWriter.PATH_KEY);
assertNotNull("the string path should be returned for each item,
containing the path of the resource");
String pathLength = object.getString(pathLengthParam);
assertNotNull("there should be a pathLength param, as specified in
the writer", pathLength);
@@ -167,32 +169,33 @@ public class PlumberServletTest extends AbstractPipeTest {
@Test
public void testDryRun() throws Exception {
SlingHttpServletRequest dryRunRequest =
- mockPlumberServletRequest(context.resourceResolver(),
pipedWritePath, null, null, null, "true", null);
+ mockPlumberServletRequest(context.resourceResolver(), "json",
pipedWritePath, null, null, null, "true", null);
servlet.execute(dryRunRequest, response, true);
Resource resource =
context.resourceResolver().getResource("/content/fruits");
ValueMap properties = resource.adaptTo(ValueMap.class);
assertFalse("property fruits shouldn't have been written",
properties.containsKey("fruits"));
SlingHttpServletRequest request =
- mockPlumberServletRequest(context.resourceResolver(),
pipedWritePath, null, null, null, "false", null);
+ mockPlumberServletRequest(context.resourceResolver(), "json",
pipedWritePath, null, null, null, "false", null);
servlet.execute(request, response, true);
WritePipeTest.assertPiped(resource);
}
@Test
public void testDummyTreeSizeLimit() throws Exception {
- SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), dummyTreePath, null,
null, null, null, "2");
+ SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), "json", dummyTreePath,
null, null, null, null, "2");
servlet.execute(request, response, false);
assertDummyTree(2);
}
@Test
public void testDummyTreeInfiniteSize() throws Exception {
- SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), dummyTreePath, null,
null, null, null, "-1");
+ SlingHttpServletRequest request =
mockPlumberServletRequest(context.resourceResolver(), "json", dummyTreePath,
null, null, null, null, "-1");
servlet.execute(request, response, false);
assertDummyTree(DUMMYTREE_TEST_SIZE);
}
public static SlingHttpServletRequest
mockPlumberServletRequest(ResourceResolver resolver,
+ String
extension,
String
path,
String
pathParam,
String
bindings,
@@ -200,12 +203,15 @@ public class PlumberServletTest extends AbstractPipeTest {
String
dryRun,
String
size) {
SlingHttpServletRequest request = mock(SlingHttpServletRequest.class);
+ RequestPathInfo pathInfo = mock(RequestPathInfo.class);
+ when(pathInfo.getExtension()).thenReturn(extension);
+ when(request.getRequestPathInfo()).thenReturn(pathInfo);
Resource resource = resolver.getResource(path);
when(request.getResourceResolver()).thenReturn(resolver);
when(request.getResource()).thenReturn(resource);
when(request.getParameter(PlumberServlet.PARAM_PATH)).thenReturn(pathParam);
when(request.getParameter(PlumberServlet.PARAM_BINDINGS)).thenReturn(bindings);
-
when(request.getParameter(CustomJsonWriter.PARAM_WRITER)).thenReturn(writer);
+
when(request.getParameter(CustomOutputWriter.PARAM_WRITER)).thenReturn(writer);
when(request.getParameter(BasePipe.DRYRUN_KEY)).thenReturn(dryRun);
when(request.getParameter(OutputWriter.PARAM_SIZE)).thenReturn(size);
return request;
diff --git a/src/test/java/org/apache/sling/pipes/it/PlumberServletIT.java
b/src/test/java/org/apache/sling/pipes/it/PlumberServletIT.java
index 5ceb269..46b1fec 100644
--- a/src/test/java/org/apache/sling/pipes/it/PlumberServletIT.java
+++ b/src/test/java/org/apache/sling/pipes/it/PlumberServletIT.java
@@ -17,7 +17,7 @@
package org.apache.sling.pipes.it;
import org.apache.commons.io.IOUtils;
-import org.apache.sling.pipes.internal.DefaultJsonWriter;
+import org.apache.sling.pipes.internal.JsonWriter;
import org.apache.sling.pipes.internal.JsonUtil;
import org.junit.Ignore;
import org.junit.Test;
@@ -44,7 +44,7 @@ public class PlumberServletIT extends PipesTestSupport {
@Test
@Ignore
- public void testListComponent() throws IOException {
+ public void testListComponentJson() throws IOException {
final String urlString =
String.format("http://localhost:%s/etc/pipes-it/another-list.json", httpPort());
LOGGER.info("fetching {}", urlString);
URL url = new URL(urlString);
@@ -53,9 +53,10 @@ public class PlumberServletIT extends PipesTestSupport {
String response = writer.toString();
LOGGER.info("retrieved following response {}", response);
JsonObject main = JsonUtil.parseObject(response);
- assertTrue("there should be an items key",
main.containsKey(DefaultJsonWriter.KEY_ITEMS));
- assertTrue("there should be a size key",
main.containsKey(DefaultJsonWriter.KEY_SIZE));
- assertEquals("there should be 2 elements", 2,
main.getInt(DefaultJsonWriter.KEY_SIZE));
+ assertTrue("there should be an items key",
main.containsKey(JsonWriter.KEY_ITEMS));
+ assertTrue("there should be a size key",
main.containsKey(JsonWriter.KEY_SIZE));
+ assertEquals("there should be 2 elements", 2,
main.getInt(JsonWriter.KEY_SIZE));
}
+
}
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].