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

Reply via email to