This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.pipes-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-pipes.git
commit d558662a25156dfb9d7469b5afbef77219eb273e Author: Karl Pauls <pa...@apache.org> AuthorDate: Wed May 31 20:51:17 2017 +0000 SLING-6899: Remove commons.json from Sling Pipes git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-pipes@1797108 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 41 +++++++-- .../java/org/apache/sling/pipes/ContainerPipe.java | 8 +- .../java/org/apache/sling/pipes/OutputWriter.java | 17 ++-- src/main/java/org/apache/sling/pipes/Pipe.java | 4 +- .../java/org/apache/sling/pipes/PipeBindings.java | 29 ++++--- src/main/java/org/apache/sling/pipes/Plumber.java | 7 +- .../java/org/apache/sling/pipes/ReferencePipe.java | 4 +- .../sling/pipes/internal/AuthorizablePipe.java | 21 +++-- .../sling/pipes/internal/CustomJsonWriter.java | 11 +-- .../apache/sling/pipes/internal/CustomWriter.java | 19 +++-- .../sling/pipes/internal/DefaultOutputWriter.java | 31 +++---- .../apache/sling/pipes/internal/FilterPipe.java | 13 +-- .../org/apache/sling/pipes/internal/JsonPipe.java | 46 +++++----- .../org/apache/sling/pipes/internal/JsonUtil.java | 99 ++++++++++++++++++++++ .../org/apache/sling/pipes/internal/MovePipe.java | 15 ++-- .../sling/pipes/internal/MultiPropertyPipe.java | 15 ++-- .../org/apache/sling/pipes/internal/NopWriter.java | 11 ++- .../org/apache/sling/pipes/internal/NotPipe.java | 6 +- .../apache/sling/pipes/internal/ParentPipe.java | 6 +- .../apache/sling/pipes/internal/PlumberImpl.java | 41 +++++++-- .../sling/pipes/internal/PlumberServlet.java | 23 +++-- .../apache/sling/pipes/internal/RemovePipe.java | 15 ++-- .../sling/pipes/internal/SlingQueryPipe.java | 8 +- .../org/apache/sling/pipes/internal/WritePipe.java | 25 +++--- .../org/apache/sling/pipes/internal/XPathPipe.java | 8 +- .../org/apache/sling/pipes/AbstractPipeTest.java | 12 +-- .../org/apache/sling/pipes/ContainerPipeTest.java | 12 +-- .../org/apache/sling/pipes/PipeBindingsTest.java | 12 +-- .../org/apache/sling/pipes/ReferencePipeTest.java | 4 +- .../org/apache/sling/pipes/dummies/DummyNull.java | 6 +- .../apache/sling/pipes/dummies/DummySearch.java | 11 +-- .../sling/pipes/internal/FilterPipeTest.java | 8 +- .../apache/sling/pipes/internal/JsonPipeTest.java | 10 ++- .../apache/sling/pipes/internal/MovePipeTest.java | 7 +- .../pipes/internal/MultiPropertyPipeTest.java | 12 +-- .../apache/sling/pipes/internal/NotPipeTest.java | 4 +- .../sling/pipes/internal/PlumberServletTest.java | 47 +++++----- .../sling/pipes/internal/RemovePipeTest.java | 14 +-- .../sling/pipes/internal/SlingQueryPipeTest.java | 4 +- .../apache/sling/pipes/internal/WritePipeTest.java | 17 ++-- src/test/resources/filter.json | 2 +- src/test/resources/json.json | 2 +- 42 files changed, 442 insertions(+), 265 deletions(-) diff --git a/pom.xml b/pom.xml index 7911f35..8ca1764 100644 --- a/pom.xml +++ b/pom.xml @@ -58,6 +58,9 @@ org.apache.sling.query;version=3.0.0, * </Import-Package> + <Embed-Dependency> + org.apache.sling.jcr.contentparser;inline="org/apache/sling/jcr/contentparser/impl/JsonTicksConverter.class" + </Embed-Dependency> </instructions> </configuration> </plugin> @@ -66,6 +69,18 @@ <dependencies> <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.jcr.contentparser</artifactId> + <version>1.2.3-SNAPSHOT</version> + <scope>provided</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> @@ -133,12 +148,6 @@ </dependency> <dependency> <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.commons.json</artifactId> - <version>2.0.6</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.event.api</artifactId> <version>1.0.0</version> </dependency> @@ -158,7 +167,25 @@ <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.testing.sling-mock</artifactId> - <version>2.2.4</version> + <version>2.2.11-SNAPSHOT</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.commons.json</artifactId> + <version>2.0.6</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-json_1.0_spec</artifactId> + <version>1.0-alpha-1</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.commons.johnzon</artifactId> + <version>1.0.0</version> <scope>test</scope> </dependency> </dependencies> diff --git a/src/main/java/org/apache/sling/pipes/ContainerPipe.java b/src/main/java/org/apache/sling/pipes/ContainerPipe.java index 051abc6..074f935 100644 --- a/src/main/java/org/apache/sling/pipes/ContainerPipe.java +++ b/src/main/java/org/apache/sling/pipes/ContainerPipe.java @@ -16,10 +16,6 @@ */ package org.apache.sling.pipes; -import org.apache.sling.api.resource.Resource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -27,6 +23,10 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import org.apache.sling.api.resource.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * This pipe executes the pipes it has in its configuration, chaining their result, and * modifying each contained pipe's expression with its context diff --git a/src/main/java/org/apache/sling/pipes/OutputWriter.java b/src/main/java/org/apache/sling/pipes/OutputWriter.java index 13e1bc7..6893202 100644 --- a/src/main/java/org/apache/sling/pipes/OutputWriter.java +++ b/src/main/java/org/apache/sling/pipes/OutputWriter.java @@ -16,12 +16,13 @@ */ package org.apache.sling.pipes; +import java.io.IOException; + +import javax.json.JsonException; + import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; -import org.apache.sling.commons.json.JSONException; - -import java.io.IOException; /** * defines how pipe's output get written to a servlet response @@ -56,7 +57,7 @@ public abstract class OutputWriter { * @throws IOException error handling streams * @throws JSONException in case invalid json is written */ - public void init(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JSONException{ + public void init(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JsonException { max = request.getParameter(PARAM_SIZE) != null ? Integer.parseInt(request.getParameter(PARAM_SIZE)) : NB_MAX; if (max < 0) { max = Integer.MAX_VALUE; @@ -71,14 +72,14 @@ public abstract class OutputWriter { * @throws IOException error handling streams * @throws JSONException in case invalid json is written */ - protected abstract void initInternal(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JSONException; + protected abstract void initInternal(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JsonException; /** * Write a given resource * @param resource resource that will be written * @throws JSONException in case write fails */ - public void write(Resource resource) throws JSONException{ + public void write(Resource resource) throws JsonException { if (size++ < max) { writeItem(resource); } @@ -89,14 +90,14 @@ public abstract class OutputWriter { * @param resource resource that will be written * @throws JSONException in case write fails */ - protected abstract void writeItem(Resource resource) throws JSONException; + protected abstract void writeItem(Resource resource) throws JsonException; /** * writes the end of the output * @throws JSONException in case invalid json is written */ - public abstract void ends() throws JSONException; + public abstract void ends() throws JsonException; /** * diff --git a/src/main/java/org/apache/sling/pipes/Pipe.java b/src/main/java/org/apache/sling/pipes/Pipe.java index d650dbb..2c912db 100644 --- a/src/main/java/org/apache/sling/pipes/Pipe.java +++ b/src/main/java/org/apache/sling/pipes/Pipe.java @@ -16,10 +16,10 @@ */ package org.apache.sling.pipes; -import org.apache.sling.api.resource.Resource; - import java.util.Iterator; +import org.apache.sling.api.resource.Resource; + /** * Pipe interface */ diff --git a/src/main/java/org/apache/sling/pipes/PipeBindings.java b/src/main/java/org/apache/sling/pipes/PipeBindings.java index a898e72..a1b677b 100644 --- a/src/main/java/org/apache/sling/pipes/PipeBindings.java +++ b/src/main/java/org/apache/sling/pipes/PipeBindings.java @@ -16,20 +16,6 @@ */ package org.apache.sling.pipes; -import org.apache.commons.io.IOUtils; -import org.apache.sling.api.resource.Resource; -import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.api.resource.ValueMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.script.Bindings; -import javax.script.Invocable; -import javax.script.ScriptContext; -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; -import javax.script.ScriptException; -import javax.script.SimpleScriptContext; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; @@ -40,6 +26,21 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.script.Bindings; +import javax.script.Invocable; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import javax.script.SimpleScriptContext; + +import org.apache.commons.io.IOUtils; +import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ValueMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Execution bindings of a pipe, and all expression related */ diff --git a/src/main/java/org/apache/sling/pipes/Plumber.java b/src/main/java/org/apache/sling/pipes/Plumber.java index d831167..d3a1feb 100644 --- a/src/main/java/org/apache/sling/pipes/Plumber.java +++ b/src/main/java/org/apache/sling/pipes/Plumber.java @@ -16,14 +16,13 @@ */ package org.apache.sling.pipes; -import org.apache.sling.api.resource.PersistenceException; +import java.util.Map; +import java.util.Set; + import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.event.jobs.Job; -import java.util.Map; -import java.util.Set; - /** * Plumber is an osgi service aiming to make pipes available to the sling system, in order to */ diff --git a/src/main/java/org/apache/sling/pipes/ReferencePipe.java b/src/main/java/org/apache/sling/pipes/ReferencePipe.java index 7076bdd..81a190e 100644 --- a/src/main/java/org/apache/sling/pipes/ReferencePipe.java +++ b/src/main/java/org/apache/sling/pipes/ReferencePipe.java @@ -16,10 +16,10 @@ */ package org.apache.sling.pipes; -import org.apache.sling.api.resource.Resource; - import java.util.Iterator; +import org.apache.sling.api.resource.Resource; + /** * executes a pipe referred in the configuration */ diff --git a/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java b/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java index 20c2ad6..35210bc 100644 --- a/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/AuthorizablePipe.java @@ -16,6 +16,13 @@ */ package org.apache.sling.pipes.internal; +import java.util.Collections; +import java.util.Iterator; + +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonArrayBuilder; + import org.apache.commons.lang.StringUtils; import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.Group; @@ -23,15 +30,11 @@ import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.commons.json.JSONArray; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collections; -import java.util.Iterator; - /** * pipe that outputs an authorizable resource based on the id set in expr */ @@ -165,8 +168,8 @@ public class AuthorizablePipe extends BasePipe { if (auth.isGroup()) { Group group = (Group)auth; String uids = bindings.instantiateExpression(addMembers); - JSONArray array = new JSONArray(uids); - for (int index = 0; index < array.length(); index ++){ + JsonArray array = JsonUtil.parseArray(uids); + for (int index = 0; index < array.size(); index ++){ String uid = array.getString(index); Authorizable member = userManager.getAuthorizable(uid); if (member != null) { @@ -195,11 +198,11 @@ public class AuthorizablePipe extends BasePipe { if (auth.isGroup()){ Group group = (Group)auth; Iterator<Authorizable> memberIterator = group.getMembers(); - JSONArray array = new JSONArray(); + JsonArrayBuilder array = Json.createArrayBuilder(); while (memberIterator.hasNext()){ - array.put(memberIterator.next().getID()); + array.add(memberIterator.next().getID()); } - outputBinding = array.toString(); + outputBinding = JsonUtil.toString(array); } else { logger.error("{} is not a group, unable to bind members", auth.getID()); } diff --git a/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java b/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java index a2dcea8..5c41bdb 100644 --- a/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java +++ b/src/main/java/org/apache/sling/pipes/internal/CustomJsonWriter.java @@ -16,12 +16,8 @@ */ package org.apache.sling.pipes.internal; -import java.util.HashMap; -import java.util.Iterator; - import org.apache.commons.lang.StringUtils; import org.apache.sling.api.SlingHttpServletRequest; -import org.apache.sling.commons.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,12 +33,7 @@ public class CustomJsonWriter extends CustomWriter { String writerParam = request.getParameter(PARAM_WRITER); if (StringUtils.isNotBlank(writerParam)){ try { - JSONObject object = new JSONObject(writerParam); - customOutputs = new HashMap<>(); - for (Iterator<String> keys = object.keys(); keys.hasNext();){ - String key = keys.next(); - customOutputs.put(key, object.getString(key)); - } + customOutputs = JsonUtil.unbox(JsonUtil.parseObject(writerParam)); return true; } catch(Exception e){ log.error("requested json writer can't be parsed", e); diff --git a/src/main/java/org/apache/sling/pipes/internal/CustomWriter.java b/src/main/java/org/apache/sling/pipes/internal/CustomWriter.java index 9a15ac1..209e9a8 100644 --- a/src/main/java/org/apache/sling/pipes/internal/CustomWriter.java +++ b/src/main/java/org/apache/sling/pipes/internal/CustomWriter.java @@ -19,10 +19,12 @@ package org.apache.sling.pipes.internal; import java.util.HashMap; import java.util.Map; +import javax.json.JsonException; +import javax.json.JsonValue; + import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.commons.json.JSONException; import org.apache.sling.pipes.BasePipe; /** @@ -51,13 +53,18 @@ public class CustomWriter extends DefaultOutputWriter { } @Override - public void writeItem(Resource resource) throws JSONException { - writer.object(); - writer.key(PATH_KEY).value(resource.getPath()); + public void writeItem(Resource resource) throws JsonException { + writer.writeStartObject(); + writer.write(PATH_KEY,resource.getPath()); for (Map.Entry<String, Object> entry : customOutputs.entrySet()){ Object o = pipe.getBindings().instantiateObject((String)entry.getValue()); - writer.key(entry.getKey()).value(o); + if ( o instanceof JsonValue ) { + writer.write(entry.getKey(),(JsonValue) o); + } + else { + writer.write(entry.getKey(), o.toString()); + } } - writer.endObject(); + writer.writeEnd(); } } diff --git a/src/main/java/org/apache/sling/pipes/internal/DefaultOutputWriter.java b/src/main/java/org/apache/sling/pipes/internal/DefaultOutputWriter.java index 7005598..83e8d05 100644 --- a/src/main/java/org/apache/sling/pipes/internal/DefaultOutputWriter.java +++ b/src/main/java/org/apache/sling/pipes/internal/DefaultOutputWriter.java @@ -18,20 +18,21 @@ package org.apache.sling.pipes.internal; import java.io.IOException; +import javax.json.Json; +import javax.json.JsonException; +import javax.json.stream.JsonGenerator; + import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.io.JSONWriter; import org.apache.sling.pipes.OutputWriter; -import org.apache.sling.pipes.Pipe; /** * default output writer with size and output resources' path */ public class DefaultOutputWriter extends OutputWriter { - protected JSONWriter writer; + protected JsonGenerator writer; @Override public boolean handleRequest(SlingHttpServletRequest request) { @@ -39,24 +40,24 @@ public class DefaultOutputWriter extends OutputWriter { } @Override - protected void initInternal(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JSONException { + protected void initInternal(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JsonException { response.setCharacterEncoding("utf-8"); response.setContentType("application/json"); - writer = new JSONWriter(response.getWriter()); - writer.object(); - writer.key(KEY_ITEMS); - writer.array(); + writer = Json.createGenerator(response.getWriter()); + writer.writeStartObject(); + writer.writeStartArray(KEY_ITEMS); } @Override - public void writeItem(Resource resource) throws JSONException { - writer.value(resource.getPath()); + public void writeItem(Resource resource) throws JsonException { + writer.write(resource.getPath()); } @Override - public void ends() throws JSONException { - writer.endArray(); - writer.key(KEY_SIZE).value(size); - writer.endObject(); + public void ends() throws JsonException { + writer.writeEnd(); + writer.write(KEY_SIZE,size); + writer.writeEnd(); + writer.flush(); } } diff --git a/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java b/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java index 18687be..d1691fa 100644 --- a/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/FilterPipe.java @@ -16,6 +16,13 @@ */ package org.apache.sling.pipes.internal; +import java.util.Collections; +import java.util.Iterator; +import java.util.regex.Pattern; + +import javax.jcr.Node; +import javax.jcr.NodeIterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.pipes.BasePipe; @@ -23,12 +30,6 @@ import org.apache.sling.pipes.Plumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import java.util.Collections; -import java.util.Iterator; -import java.util.regex.Pattern; - /** * intends to output the input only if configured conditions are fulfilled */ diff --git a/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java b/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java index 5be05d2..e3324a3 100644 --- a/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/JsonPipe.java @@ -20,6 +20,11 @@ import java.io.InputStream; import java.io.StringWriter; import java.util.Iterator; +import javax.json.JsonArray; +import javax.json.JsonException; +import javax.json.JsonStructure; +import javax.json.JsonValue.ValueType; + import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpConnectionManager; import org.apache.commons.httpclient.HttpState; @@ -30,10 +35,6 @@ import org.apache.commons.httpclient.params.HttpConnectionManagerParams; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.sling.api.resource.Resource; -import org.apache.sling.commons.json.JSONArray; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.JSONObject; -import org.apache.sling.commons.json.JSONTokener; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; import org.slf4j.Logger; @@ -48,7 +49,7 @@ public class JsonPipe extends BasePipe { HttpClient client; - JSONArray array; + JsonArray array; Object binding; int index = -1; @@ -128,21 +129,33 @@ public class JsonPipe extends BasePipe { String jsonString = retrieveJSONString(); if (StringUtils.isNotBlank(jsonString)){ try { - JSONTokener tokener = new JSONTokener(jsonString); - char firstChar = tokener.next(); - if (firstChar == '[') { - binding = array = new JSONArray(jsonString); + JsonStructure json; + try { + json = JsonUtil.parse(jsonString); + } catch (JsonException ex) { + json = null; + } + if (json == null) { + binding = jsonString.trim(); + output = super.getOutput(); + } + else if (json.getValueType() != ValueType.ARRAY) { + binding = JsonUtil.unbox(json); + output = super.getOutput(); + } + else { + binding = array = (JsonArray) json; index = 0; output = new Iterator<Resource>() { @Override public boolean hasNext() { - return index < array.length(); + return index < array.size(); } @Override public Resource next() { try { - binding = array.get(index); + binding = JsonUtil.unbox(array.get(index)); } catch(Exception e){ logger.error("Unable to retrieve {}nth item of jsonarray", index, e); } @@ -150,15 +163,8 @@ public class JsonPipe extends BasePipe { return getInput(); } }; - } else if (firstChar == '{') { - binding = new JSONObject(jsonString); - output = super.getOutput(); - } else { - //simple string - binding = jsonString; - output = super.getOutput(); - } - } catch (JSONException e) { + } + } catch (JsonException e) { logger.error("unable to parse JSON {} ", jsonString, e); } } diff --git a/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java b/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java new file mode 100644 index 0000000..2d669a8 --- /dev/null +++ b/src/main/java/org/apache/sling/pipes/internal/JsonUtil.java @@ -0,0 +1,99 @@ +/* + * 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 java.io.StringReader; +import java.io.StringWriter; +import java.util.AbstractMap; +import java.util.Map.Entry; +import java.util.function.Function; +import java.util.stream.Collectors; + +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonArrayBuilder; +import javax.json.JsonException; +import javax.json.JsonNumber; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; +import javax.json.JsonString; +import javax.json.JsonStructure; +import javax.json.JsonValue; +import javax.json.JsonValue.ValueType; + +import org.apache.sling.jcr.contentparser.impl.JsonTicksConverter; + +public class JsonUtil { + public static JsonStructure parse(String input) throws JsonException { + return Json.createReader(new StringReader(JsonTicksConverter.tickToDoubleQuote(input))).read(); + } + + public static JsonObject parseObject(String input) throws JsonException{ + return (JsonObject) parse(input); + } + + public static JsonArray parseArray(String input) throws JsonException { + return (JsonArray) parse(input); + } + + public static Object unbox(JsonValue value, Function<JsonStructure, Object> convert) throws JsonException { + switch (value.getValueType()) { + case ARRAY: + case OBJECT: + return convert.apply((JsonStructure) value); + case FALSE: + return Boolean.FALSE; + case TRUE: + return Boolean.TRUE; + case NULL: + return null; + case NUMBER: + JsonNumber number = (JsonNumber) value; + return number.isIntegral() ? number.longValue() : number.doubleValue(); + case STRING: + return ((JsonString) value).getString(); + default: + throw new JsonException("Unknow value type"); + } + } + + @SuppressWarnings("unchecked") + public static <T> T unbox(JsonValue value) { + return (T) unbox(value, json -> json.getValueType() == ValueType.ARRAY ? + ((JsonArray) json).stream() + .map(JsonUtil::unbox) + .collect(Collectors.toList()) + : + ((JsonObject) json).entrySet().stream() + .map(entry -> new AbstractMap.SimpleEntry<>(entry.getKey(),unbox(entry.getValue()))) + .collect(Collectors.toMap(Entry::getKey, Entry::getValue))); + } + + public static String toString(JsonValue value) { + StringWriter writer = new StringWriter(); + Json.createGenerator(writer).write(value).close(); + return writer.toString(); + } + + public static String toString(JsonArrayBuilder builder) { + return toString(builder.build()); + } + + public static String toString(JsonObjectBuilder builder) { + return toString(builder.build()); + } +} diff --git a/src/main/java/org/apache/sling/pipes/internal/MovePipe.java b/src/main/java/org/apache/sling/pipes/internal/MovePipe.java index de952b5..b1ab978 100644 --- a/src/main/java/org/apache/sling/pipes/internal/MovePipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/MovePipe.java @@ -16,19 +16,20 @@ */ package org.apache.sling.pipes.internal; -import org.apache.sling.api.resource.Resource; -import org.apache.sling.pipes.BasePipe; -import org.apache.sling.pipes.Plumber; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.Collections; +import java.util.Iterator; import javax.jcr.Item; import javax.jcr.Node; import javax.jcr.Property; import javax.jcr.RepositoryException; import javax.jcr.Session; -import java.util.Collections; -import java.util.Iterator; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.pipes.BasePipe; +import org.apache.sling.pipes.Plumber; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Does a JCR Move of a node, returns the resource corresponding to the moved node diff --git a/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java b/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java index d8e671a..1266be2 100644 --- a/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/MultiPropertyPipe.java @@ -16,19 +16,20 @@ */ package org.apache.sling.pipes.internal; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; + +import javax.jcr.Property; +import javax.jcr.PropertyType; +import javax.jcr.Value; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.jcr.Property; -import javax.jcr.PropertyType; -import javax.jcr.Value; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; - /** * reads input MV property, outputs N times the input parent node resource, where N is the number of * values in the property, outputs each value in the bindings diff --git a/src/main/java/org/apache/sling/pipes/internal/NopWriter.java b/src/main/java/org/apache/sling/pipes/internal/NopWriter.java index cd26e70..ae44684 100644 --- a/src/main/java/org/apache/sling/pipes/internal/NopWriter.java +++ b/src/main/java/org/apache/sling/pipes/internal/NopWriter.java @@ -16,14 +16,13 @@ */ package org.apache.sling.pipes.internal; +import java.io.IOException; + import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; -import org.apache.sling.commons.json.JSONException; import org.apache.sling.pipes.OutputWriter; -import java.io.IOException; - public class NopWriter extends OutputWriter { @Override public boolean handleRequest(SlingHttpServletRequest request) { @@ -31,17 +30,17 @@ public class NopWriter extends OutputWriter { } @Override - protected void initInternal(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JSONException { + protected void initInternal(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException { //nop } @Override - protected void writeItem(Resource resource) throws JSONException { + protected void writeItem(Resource resource){ //nop } @Override - public void ends() throws JSONException { + public void ends() { //nop } } diff --git a/src/main/java/org/apache/sling/pipes/internal/NotPipe.java b/src/main/java/org/apache/sling/pipes/internal/NotPipe.java index 4d2ff01..84e43db 100644 --- a/src/main/java/org/apache/sling/pipes/internal/NotPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/NotPipe.java @@ -16,13 +16,13 @@ */ package org.apache.sling.pipes.internal; +import java.util.Collections; +import java.util.Iterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.Plumber; import org.apache.sling.pipes.ReferencePipe; -import java.util.Collections; -import java.util.Iterator; - /** * executes a pipe referred in the configuration, but invert output: * nothing if the pipe has something, input if the pipe has nothing diff --git a/src/main/java/org/apache/sling/pipes/internal/ParentPipe.java b/src/main/java/org/apache/sling/pipes/internal/ParentPipe.java index 43c5bf7..d7e49ac 100644 --- a/src/main/java/org/apache/sling/pipes/internal/ParentPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/ParentPipe.java @@ -16,13 +16,13 @@ */ package org.apache.sling.pipes.internal; +import java.util.Collections; +import java.util.Iterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; -import java.util.Collections; -import java.util.Iterator; - /** * very simple pipe, returning parent resource of input resource */ diff --git a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java index a10673c..ccab5cc 100644 --- a/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java +++ b/src/main/java/org/apache/sling/pipes/internal/PlumberImpl.java @@ -16,11 +16,34 @@ */ package org.apache.sling.pipes.internal; -import java.util.*; +import static org.apache.sling.api.resource.ResourceResolverFactory.SUBSERVICE; +import static org.apache.sling.pipes.BasePipe.PN_STATUS; +import static org.apache.sling.pipes.BasePipe.PN_STATUS_MODIFIED; +import static org.apache.sling.pipes.BasePipe.STATUS_FINISHED; +import static org.apache.sling.pipes.BasePipe.STATUS_STARTED; + +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.jcr.RepositoryException; import org.apache.commons.lang.StringUtils; import org.apache.sling.api.SlingConstants; -import org.apache.sling.api.resource.*; +import org.apache.sling.api.resource.LoginException; +import org.apache.sling.api.resource.ModifiableValueMap; +import org.apache.sling.api.resource.PersistenceException; +import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.distribution.DistributionRequest; import org.apache.sling.distribution.DistributionRequestType; import org.apache.sling.distribution.DistributionResponse; @@ -29,7 +52,13 @@ import org.apache.sling.distribution.SimpleDistributionRequest; import org.apache.sling.event.jobs.Job; import org.apache.sling.event.jobs.JobManager; import org.apache.sling.event.jobs.consumer.JobConsumer; -import org.apache.sling.pipes.*; +import org.apache.sling.pipes.BasePipe; +import org.apache.sling.pipes.ContainerPipe; +import org.apache.sling.pipes.OutputWriter; +import org.apache.sling.pipes.Pipe; +import org.apache.sling.pipes.PipeBindings; +import org.apache.sling.pipes.Plumber; +import org.apache.sling.pipes.ReferencePipe; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -41,12 +70,6 @@ import org.osgi.service.metatype.annotations.ObjectClassDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import javax.jcr.RepositoryException; - -import static org.apache.sling.api.resource.ResourceResolverFactory.SUBSERVICE; -import static org.apache.sling.pipes.BasePipe.*; - /** * implements plumber interface, registers default pipes, and provides execution facilities */ 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 1672840..6a33bc5 100644 --- a/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java +++ b/src/main/java/org/apache/sling/pipes/internal/PlumberServlet.java @@ -17,8 +17,11 @@ package org.apache.sling.pipes.internal; import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import javax.json.JsonException; import javax.servlet.Servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; @@ -26,15 +29,15 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; -import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.apache.sling.api.servlets.ServletResolverConstants; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.JSONObject; +import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.apache.sling.event.jobs.Job; -import org.apache.sling.pipes.*; +import org.apache.sling.pipes.BasePipe; +import org.apache.sling.pipes.ContainerPipe; +import org.apache.sling.pipes.OutputWriter; +import org.apache.sling.pipes.Plumber; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -118,11 +121,7 @@ public class PlumberServlet extends SlingAllMethodsServlet { String paramBindings = request.getParameter(PARAM_BINDINGS); if (StringUtils.isNotBlank(paramBindings)){ try { - JSONObject bindingJSON = new JSONObject(paramBindings); - for (Iterator<String> keys = bindingJSON.keys(); keys.hasNext();){ - String key = keys.next(); - bindings.put(key, bindingJSON.get(key)); - } + bindings.putAll(JsonUtil.unbox(JsonUtil.parseObject(paramBindings))); } catch (Exception e){ log.error("Unable to retrieve bindings information", e); } @@ -131,7 +130,7 @@ public class PlumberServlet extends SlingAllMethodsServlet { return bindings; } - OutputWriter getWriter(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JSONException { + OutputWriter getWriter(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, JsonException { OutputWriter[] candidates = new OutputWriter[]{new CustomJsonWriter(), new CustomWriter(), new DefaultOutputWriter()}; for (OutputWriter candidate : candidates) { if (candidate.handleRequest(request)) { diff --git a/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java b/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java index 22198bb..067effe 100644 --- a/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/RemovePipe.java @@ -16,6 +16,14 @@ */ package org.apache.sling.pipes.internal; +import java.util.Collections; +import java.util.Iterator; + +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.Property; +import javax.jcr.RepositoryException; + import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.pipes.BasePipe; @@ -23,13 +31,6 @@ import org.apache.sling.pipes.Plumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.Property; -import javax.jcr.RepositoryException; -import java.util.Collections; -import java.util.Iterator; - /** * this pipe tries to remove the input resource, abstracting its type, * returning parent of the input diff --git a/src/main/java/org/apache/sling/pipes/internal/SlingQueryPipe.java b/src/main/java/org/apache/sling/pipes/internal/SlingQueryPipe.java index 69a57fe..0be898e 100644 --- a/src/main/java/org/apache/sling/pipes/internal/SlingQueryPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/SlingQueryPipe.java @@ -16,6 +16,10 @@ */ package org.apache.sling.pipes.internal; +import static org.apache.sling.query.SlingQuery.$; + +import java.util.Iterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; @@ -23,10 +27,6 @@ import org.apache.sling.query.SlingQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.sling.query.SlingQuery.$; - -import java.util.Iterator; - /** * this pipe uses SlingQuery to filters children (filter defined in expr property) of * a resource (defined in the path property) diff --git a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java index 149803c..cee482d 100644 --- a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java @@ -16,18 +16,6 @@ */ package org.apache.sling.pipes.internal; -import org.apache.sling.api.resource.ModifiableValueMap; -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.Plumber; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.Property; -import javax.jcr.RepositoryException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -37,6 +25,19 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.Property; +import javax.jcr.RepositoryException; + +import org.apache.sling.api.resource.ModifiableValueMap; +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.Plumber; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * pipe that writes to configured resource */ diff --git a/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java b/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java index fd0dd28..75e2985 100644 --- a/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java +++ b/src/main/java/org/apache/sling/pipes/internal/XPathPipe.java @@ -16,17 +16,17 @@ */ package org.apache.sling.pipes.internal; +import java.util.Iterator; + +import javax.jcr.query.Query; + import org.apache.commons.lang.StringUtils; import org.apache.sling.api.resource.Resource; - import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.jcr.query.Query; -import java.util.Iterator; - /** * generates output based on an xpath query (no input is considered) */ diff --git a/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java b/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java index a6a1afb..3b9f238 100644 --- a/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/AbstractPipeTest.java @@ -16,6 +16,12 @@ */ package org.apache.sling.pipes; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.util.Iterator; import org.apache.sling.api.resource.Resource; @@ -27,12 +33,6 @@ import org.apache.sling.testing.mock.sling.junit.SlingContext; import org.junit.Before; import org.junit.Rule; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - /** * this abstract class for pipes implements a plumber with all registered pipes, plus some test ones, and give some paths, * it also provides a testing Sling Context, with some content. diff --git a/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java b/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java index 6d05881..3cee6c1 100644 --- a/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/ContainerPipeTest.java @@ -16,17 +16,17 @@ */ package org.apache.sling.pipes; -import org.apache.sling.api.resource.Resource; -import org.junit.Before; -import org.junit.Test; - -import java.util.Iterator; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.util.Iterator; + +import org.apache.sling.api.resource.Resource; +import org.junit.Before; +import org.junit.Test; + /** * testing container with dummy child pipes */ diff --git a/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java b/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java index 7423c65..4aa7254 100644 --- a/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java +++ b/src/test/java/org/apache/sling/pipes/PipeBindingsTest.java @@ -16,18 +16,20 @@ */ package org.apache.sling.pipes; -import org.apache.sling.api.resource.Resource; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import java.util.Calendar; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; - import javax.script.ScriptException; +import org.apache.sling.api.resource.Resource; +import org.junit.Before; +import org.junit.Test; + /** * testing binding's expressions instanciations */ diff --git a/src/test/java/org/apache/sling/pipes/ReferencePipeTest.java b/src/test/java/org/apache/sling/pipes/ReferencePipeTest.java index 9652719..73688b7 100644 --- a/src/test/java/org/apache/sling/pipes/ReferencePipeTest.java +++ b/src/test/java/org/apache/sling/pipes/ReferencePipeTest.java @@ -16,11 +16,11 @@ */ package org.apache.sling.pipes; +import static org.junit.Assert.assertFalse; + import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertFalse; - /** * testing references */ diff --git a/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java b/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java index e3a2891..bd32bcc 100644 --- a/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java +++ b/src/test/java/org/apache/sling/pipes/dummies/DummyNull.java @@ -16,13 +16,13 @@ */ package org.apache.sling.pipes.dummies; +import java.util.Collections; +import java.util.Iterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.Plumber; -import java.util.Collections; -import java.util.Iterator; - /** * this pipe has nothing in output */ diff --git a/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java b/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java index 7f87cc1..8163d2c 100644 --- a/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java +++ b/src/test/java/org/apache/sling/pipes/dummies/DummySearch.java @@ -16,14 +16,15 @@ */ package org.apache.sling.pipes.dummies; -import org.apache.sling.api.resource.Resource; -import org.apache.sling.pipes.BasePipe; -import org.apache.sling.pipes.Plumber; +import java.util.Collections; +import java.util.Iterator; import javax.jcr.Node; import javax.jcr.NodeIterator; -import java.util.Collections; -import java.util.Iterator; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.pipes.BasePipe; +import org.apache.sling.pipes.Plumber; /** * dummy search reads its conf node children and returns them. diff --git a/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java b/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java index f74a676..2058f60 100644 --- a/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/FilterPipeTest.java @@ -16,6 +16,10 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import java.util.Iterator; import org.apache.commons.lang3.StringUtils; @@ -27,10 +31,6 @@ import org.apache.sling.pipes.AbstractPipeTest; import org.apache.sling.pipes.Pipe; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - /** * testing different kind of filters */ diff --git a/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java b/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java index b1d5d48..eff56e9 100644 --- a/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/JsonPipeTest.java @@ -16,16 +16,18 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Iterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.pipes.AbstractPipeTest; import org.junit.Before; import org.junit.Test; -import java.util.Iterator; - -import static org.junit.Assert.*; - /** * testing json pipe with anonymous yahoo meteo API */ diff --git a/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java b/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java index 00ac561..16614e3 100644 --- a/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/MovePipeTest.java @@ -16,6 +16,10 @@ */ package org.apache.sling.pipes.internal; +import java.util.Iterator; + +import javax.jcr.Session; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.AbstractPipeTest; import org.junit.Assert; @@ -23,9 +27,6 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import javax.jcr.Session; -import java.util.Iterator; - /** * testing moving nodes & properties */ diff --git a/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java b/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java index 3e20a3a..cf936df 100644 --- a/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/MultiPropertyPipeTest.java @@ -16,18 +16,18 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +import java.util.Iterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.pipes.AbstractPipeTest; import org.apache.sling.pipes.Pipe; import org.junit.Before; import org.junit.Test; -import java.util.Iterator; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; - /** * testing normal case of MV Property Pipe */ diff --git a/src/test/java/org/apache/sling/pipes/internal/NotPipeTest.java b/src/test/java/org/apache/sling/pipes/internal/NotPipeTest.java index 85f2114..2501623 100644 --- a/src/test/java/org/apache/sling/pipes/internal/NotPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/NotPipeTest.java @@ -17,12 +17,12 @@ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertFalse; + import org.apache.sling.pipes.AbstractPipeTest; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertFalse; - public class NotPipeTest extends AbstractPipeTest { @Before 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 23d6775..b080f3d 100644 --- a/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/PlumberServletTest.java @@ -16,10 +16,21 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.io.IOException; import java.io.PrintWriter; +import java.io.StringReader; import java.io.StringWriter; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; import javax.servlet.ServletException; import org.apache.commons.lang3.StringUtils; @@ -28,9 +39,6 @@ import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.commons.json.JSONArray; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.JSONObject; import org.apache.sling.pipes.AbstractPipeTest; import org.apache.sling.pipes.BasePipe; import org.apache.sling.pipes.ContainerPipeTest; @@ -38,13 +46,6 @@ import org.apache.sling.pipes.OutputWriter; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - /** * testing the servlet logic (parameters & output) */ @@ -81,15 +82,15 @@ public class PlumberServletTest extends AbstractPipeTest { } } - private void assertDummyTree(int size) throws JSONException { + private void assertDummyTree(int size) { String finalResponse = stringResponse.toString(); assertFalse("There should be a response", StringUtils.isBlank(finalResponse)); - JSONObject object = new JSONObject(finalResponse); + JsonObject object = Json.createReader(new StringReader(finalResponse)).readObject(); assertEquals("response should be an obj with size value equals to " + DUMMYTREE_TEST_SIZE, object.getInt(OutputWriter.KEY_SIZE), DUMMYTREE_TEST_SIZE); - assertEquals("response should be an obj with items value equals to a " + size + " valued array", object.getJSONArray(OutputWriter.KEY_ITEMS).length(), size); + assertEquals("response should be an obj with items value equals to a " + size + " valued array", object.getJsonArray(OutputWriter.KEY_ITEMS).size(), size); } - private void assertDummyTree() throws JSONException { + private void assertDummyTree() { assertDummyTree(DUMMYTREE_TEST_SIZE); } @@ -139,23 +140,23 @@ public class PlumberServletTest extends AbstractPipeTest { String testBindingLength = testBinding + "Length"; String bindingValue = "testBindingValue"; String pathLengthParam = "pathLength"; - JSONObject bindings = new JSONObject("{'" + testBinding + "':'" + bindingValue + "'}"); - JSONObject respObject = new JSONObject("{'" + pathLengthParam + "':'${path.get(\"dummyGrandChild\").length}','" + testBindingLength + "':'${" + testBinding + ".length}'}"); + 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); servlet.execute(request, response, false); assertDummyTree(); - JSONObject response = new JSONObject(stringResponse.toString()); - JSONArray array = response.getJSONArray(OutputWriter.KEY_ITEMS); - for (int i = 0; i < array.length(); i++) { - JSONObject object = array.optJSONObject(i); + JsonObject response = Json.createReader(new StringReader(stringResponse.toString())).readObject(); + JsonArray array = response.getJsonArray(OutputWriter.KEY_ITEMS); + 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.optString(CustomWriter.PATH_KEY); + String path = object.getString(CustomWriter.PATH_KEY); assertNotNull("the string path should be returned for each item, containing the path of the resource"); - String pathLength = object.optString(pathLengthParam); + String pathLength = object.getString(pathLengthParam); assertNotNull("there should be a pathLength param, as specified in the writer", pathLength); assertEquals("Pathlength should be the string representation of the path length", path.length() + "", pathLength); - String testBindingLengthValue = object.optString(testBindingLength); + String testBindingLengthValue = object.getString(testBindingLength); assertNotNull("testBindingLength should be there", testBindingLengthValue); assertEquals("testBindingLength should be the string representation of the additional binding length", bindingValue.length() + "", testBindingLengthValue); diff --git a/src/test/java/org/apache/sling/pipes/internal/RemovePipeTest.java b/src/test/java/org/apache/sling/pipes/internal/RemovePipeTest.java index 5e63bbe..9b0611e 100644 --- a/src/test/java/org/apache/sling/pipes/internal/RemovePipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/RemovePipeTest.java @@ -16,6 +16,15 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Iterator; + +import javax.jcr.Node; + import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ValueMap; @@ -24,11 +33,6 @@ import org.apache.sling.pipes.Pipe; import org.junit.Before; import org.junit.Test; -import javax.jcr.Node; -import java.util.Iterator; - -import static org.junit.Assert.*; - /** * testing removal */ diff --git a/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java b/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java index c1287be..9aa9a0a 100644 --- a/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/SlingQueryPipeTest.java @@ -16,12 +16,12 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertTrue; + import org.apache.sling.pipes.AbstractPipeTest; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertTrue; - /** * test the sling query pipe */ diff --git a/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java b/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java index d464c96..9dcb52e 100644 --- a/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java +++ b/src/test/java/org/apache/sling/pipes/internal/WritePipeTest.java @@ -16,6 +16,17 @@ */ package org.apache.sling.pipes.internal; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.Iterator; + +import javax.jcr.Node; +import javax.jcr.NodeIterator; + import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.pipes.AbstractPipeTest; @@ -23,12 +34,6 @@ import org.apache.sling.pipes.Pipe; import org.junit.Before; import org.junit.Test; -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import java.util.Iterator; - -import static org.junit.Assert.*; - /** * test write */ diff --git a/src/test/resources/filter.json b/src/test/resources/filter.json index 18e3afe..f9abb18 100644 --- a/src/test/resources/filter.json +++ b/src/test/resources/filter.json @@ -75,5 +75,5 @@ "jcr:primaryType":"nt:unstructured", "slingPipesFilter_test":"${false}" } - }, + } } \ No newline at end of file diff --git a/src/test/resources/json.json b/src/test/resources/json.json index 9d765f2..413c87b 100644 --- a/src/test/resources/json.json +++ b/src/test/resources/json.json @@ -25,7 +25,7 @@ "weather": { "jcr:primaryType": "nt:unstructured", "sling:resourceType": "slingPipes/json", - "expr": "{'query':{'ro':{'city':'Bucharest','temp':'12°'}, 'fr':{'city':'Paris','temp':'13°'}}}}" + "expr": "{'query':{'ro':{'city':'Bucharest','temp':'12°'}, 'fr':{'city':'Paris','temp':'13°'}}}" }, "write": { "jcr:primaryType": "nt:unstructured", -- To stop receiving notification emails like this one, please contact "commits@sling.apache.org" <commits@sling.apache.org>.