You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2017/05/30 22:51:27 UTC

svn commit: r1796951 - in /sling/trunk/contrib/extensions/distribution/core: ./ src/main/java/org/apache/sling/distribution/queue/impl/simple/ src/main/java/org/apache/sling/distribution/servlet/ src/test/resources/

Author: pauls
Date: Tue May 30 22:51:27 2017
New Revision: 1796951

URL: http://svn.apache.org/viewvc?rev=1796951&view=rev
Log:
SLING-6892: Remove commons.json from Content Distribution Core.

Modified:
    sling/trunk/contrib/extensions/distribution/core/pom.xml
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueCheckpoint.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java
    sling/trunk/contrib/extensions/distribution/core/src/test/resources/dummy-agent-checkpoint

Modified: sling/trunk/contrib/extensions/distribution/core/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/pom.xml?rev=1796951&r1=1796950&r2=1796951&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/core/pom.xml Tue May 30 22:51:27 2017
@@ -139,6 +139,12 @@
             <version>1.1.16</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.johnzon</artifactId>
+            <version>1.0.0</version>
+            <scope>test</scope>
+        </dependency>
         <!-- Sling Mock -->
         <dependency>
             <groupId>org.apache.sling</groupId>
@@ -199,16 +205,16 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.json</artifactId>
-            <version>2.0.8</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.event.dea</artifactId>
             <version>1.0.0</version>
             <scope>provided</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>
         <!-- LOGGING -->
         <dependency>
             <groupId>org.slf4j</groupId>

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueCheckpoint.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueCheckpoint.java?rev=1796951&r1=1796950&r2=1796951&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueCheckpoint.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueCheckpoint.java Tue May 30 22:51:27 2017
@@ -26,8 +26,10 @@ import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Map;
 
+import javax.json.Json;
+import javax.json.stream.JsonGenerator;
+
 import org.apache.commons.io.IOUtils;
-import org.apache.sling.commons.json.io.JSONWriter;
 import org.apache.sling.distribution.queue.DistributionQueue;
 import org.apache.sling.distribution.queue.DistributionQueueEntry;
 import org.apache.sling.distribution.queue.DistributionQueueItem;
@@ -66,23 +68,24 @@ class SimpleDistributionQueueCheckpoint
                 DistributionQueueItem item = queueEntry.getItem();
                 String packageId = item.getPackageId();
                 StringWriter w = new StringWriter();
-                JSONWriter jsonWriter = new JSONWriter(w);
-                jsonWriter.object();
+                JsonGenerator jsonWriter = Json.createGenerator(w);
+                jsonWriter.writeStartObject();
                 for (Map.Entry<String, Object> entry : item.entrySet()) {
-                    jsonWriter.key(entry.getKey());
+                    
                     Object value = entry.getValue();
                     boolean isArray = value instanceof String[];
                     if (isArray) {
-                        jsonWriter.array();
+                        jsonWriter.writeStartArray(entry.getKey());
                         for (String s : ((String[]) value)) {
-                            jsonWriter.value(s);
+                            jsonWriter.write(s);
                         }
-                        jsonWriter.endArray();
+                        jsonWriter.writeEnd();
                     } else {
-                        jsonWriter.value(value);
+                        jsonWriter.write(entry.getKey(), (String) value);
                     }
                 }
-                jsonWriter.endObject();
+                jsonWriter.writeEnd();
+                jsonWriter.close();
                 lines.add(packageId + " " + w.toString());
             }
             log.debug("parsed {} items", lines.size());

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java?rev=1796951&r1=1796950&r2=1796951&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java Tue May 30 22:51:27 2017
@@ -19,22 +19,26 @@
 package org.apache.sling.distribution.queue.impl.simple;
 
 import javax.annotation.Nonnull;
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonException;
+import javax.json.JsonObject;
+import javax.json.JsonReader;
+import javax.json.JsonString;
+import javax.json.JsonValue;
+
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FilenameFilter;
+import java.io.StringReader;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.LineIterator;
-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.commons.scheduler.ScheduleOptions;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.distribution.queue.DistributionQueue;
@@ -133,20 +137,24 @@ public class SimpleDistributionQueueProv
                             String id = split[0];
                             String infoString = split[1];
                             Map<String, Object> info = new HashMap<String, Object>();
-                            JSONTokener jsonTokener = new JSONTokener(infoString);
-                            JSONObject jsonObject = new JSONObject(jsonTokener);
-                            Iterator<String> keys = jsonObject.keys();
-                            while (keys.hasNext()) {
-                                String key = keys.next();
-                                JSONArray v = jsonObject.optJSONArray(key);
-                                if (v != null) {
-                                    String[] a = new String[v.length()];
+                            JsonReader reader = Json.createReader(new StringReader(infoString));
+                            JsonObject jsonObject = reader.readObject();
+                            for (Map.Entry<String, JsonValue> entry : jsonObject.entrySet()) {
+                                if (entry.getValue().getValueType().equals(JsonValue.ValueType.ARRAY))
+                                {
+                                    JsonArray value = jsonObject.getJsonArray(entry.getKey());
+                                    String[] a = new String[value.size()];
                                     for (int i = 0; i < a.length; i++) {
-                                        a[i] = v.getString(i);
+                                        a[i] = value.getString(i);
                                     }
-                                    info.put(key, a);
-                                } else {
-                                    info.put(key, jsonObject.getString(key));
+                                    info.put(entry.getKey(), a);
+                                }
+                                else if (JsonValue.NULL.equals(entry.getValue())) {
+                                    info.put(entry.getKey(), null);
+                                }
+                                else
+                                {
+                                    info.put(entry.getKey(), ((JsonString) entry.getValue()).getString());
                                 }
                             }
                             queue.add(new DistributionQueueItem(id, info));
@@ -154,7 +162,7 @@ public class SimpleDistributionQueueProv
                         log.info("recovered {} items from queue {}", queue.getStatus().getItemsCount(), queueName);
                     } catch (FileNotFoundException e) {
                         log.warn("could not read checkpoint file {}", qf.getAbsolutePath());
-                    } catch (JSONException e) {
+                    } catch (JsonException e) {
                         log.warn("could not parse info from checkpoint file {}", qf.getAbsolutePath());
                     }
                 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java?rev=1796951&r1=1796950&r2=1796951&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java Tue May 30 22:51:27 2017
@@ -20,12 +20,17 @@
 package org.apache.sling.distribution.servlet;
 
 import javax.annotation.Nullable;
+import javax.json.Json;
+import javax.json.JsonException;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+
 import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
 import java.util.Map;
 
 import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.distribution.DistributionResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,13 +43,13 @@ class ServletJsonUtils {
     private final static Logger log = LoggerFactory.getLogger(ServletJsonUtils.class);
 
     public static void writeJson(SlingHttpServletResponse response, DistributionResponse distributionResponse) throws IOException {
-        JSONObject json = new JSONObject();
+        JsonObjectBuilder json = Json.createObjectBuilder();
         try {
-            json.put("success", distributionResponse.isSuccessful());
-            json.put("state", distributionResponse.getState().name());
-            json.put("message", distributionResponse.getMessage());
+            json.add("success", distributionResponse.isSuccessful());
+            json.add("state", distributionResponse.getState().name());
+            json.add("message", distributionResponse.getMessage());
 
-        } catch (JSONException e) {
+        } catch (JsonException e) {
             log.error("Cannot write json", e);
         }
 
@@ -62,24 +67,30 @@ class ServletJsonUtils {
                 // TODO
                 break;
         }
-        response.getWriter().append(json.toString());
+        append(json.build(), response.getWriter());
     }
 
     public static void writeJson(SlingHttpServletResponse response, int status, String message,
                                  @Nullable Map<String, String> kv) throws IOException {
-        JSONObject json = new JSONObject();
+        JsonObjectBuilder json = Json.createObjectBuilder();
         try {
-            json.put("message", message);
+            json.add("message", message);
             if (kv != null && kv.size() > 0) {
                 for (Map.Entry<String, String> entry : kv.entrySet()) {
-                    json.put(entry.getKey(), entry.getValue());
+                    json.add(entry.getKey(), entry.getValue());
                 }
             }
-        } catch (JSONException e) {
+        } catch (JsonException e) {
             log.error("Cannot write json", e);
         }
         response.setStatus(status);
 
-        response.getWriter().append(json.toString());
+        append(json.build(), response.getWriter());
+    }
+    
+    private static void append(JsonObject json, Writer writer) throws IOException {
+        StringWriter buffer = new StringWriter();
+        Json.createWriter(buffer).writeObject(json);
+        writer.append(buffer.toString());
     }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/resources/dummy-agent-checkpoint
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/resources/dummy-agent-checkpoint?rev=1796951&r1=1796950&r2=1796951&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/resources/dummy-agent-checkpoint (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/resources/dummy-agent-checkpoint Tue May 30 22:51:27 2017
@@ -1 +1 @@
-/var/sling/distribution/packages/default/data/dstrpck-1464090256589-70a3fc84-9568-4aeb-ba1d-ffc5affc4332 {"internal.request.startTime":"1464090250095","request.type":"ADD","request.deepPaths":["/foo"],"internal.request.id":"DSTRQ1","request.paths":["/foo","bar"],"internal.request.user":"admin","package.type":"default"}UTF-8
\ No newline at end of file
+/var/sling/distribution/packages/default/data/dstrpck-1464090256589-70a3fc84-9568-4aeb-ba1d-ffc5affc4332 {"internal.request.startTime":"1464090250095","request.type":"ADD","request.deepPaths":["/foo"],"internal.request.id":"DSTRQ1","request.paths":["/foo","bar"],"internal.request.user":"admin","package.type":"default"} UTF-8
\ No newline at end of file