You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:24:44 UTC

[sling-org-apache-sling-tracer] 02/04: SLING-6900: Remove commons.json from Log Tracer

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.tracer-1.0.4
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-tracer.git

commit d1df17a19cbd1067bc8cf2b6426816f904e3e6cb
Author: Karl Pauls <pa...@apache.org>
AuthorDate: Wed May 31 21:30:28 2017 +0000

    SLING-6900: Remove commons.json from Log Tracer
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/tracer@1797116 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 22 ++++++++----
 .../sling/tracer/internal/JSONRecording.java       | 20 +++++------
 .../sling/tracer/internal/TracerLogServlet.java    |  5 ++-
 .../sling/tracer/internal/JSONRecordingTest.java   | 42 +++++++++++-----------
 .../sling/tracer/internal/LogTracerTest.java       | 22 ++++++------
 .../tracer/internal/TracerLogServletTest.java      | 14 ++++----
 6 files changed, 68 insertions(+), 57 deletions(-)

diff --git a/pom.xml b/pom.xml
index d5a2fd6..ac754f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,6 +59,9 @@
             <Bundle-DocURL>
               https://sling.apache.org/documentation/bundles/log-tracers.html
             </Bundle-DocURL>
+            <Embed-Dependency>
+                    org.apache.felix.utils;inline=org/apache/felix/utils/json/JSONWriter.class
+            </Embed-Dependency>
           </instructions>
         </configuration>
       </plugin>
@@ -109,6 +112,12 @@
       <version>4.3.1</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.utils</artifactId>
+        <version>1.9.0</version>
+        <scope>provided</scope>
+    </dependency>
     <!-- TODO Inline just the cache related classes -->
     <dependency>
       <groupId>com.google.guava</groupId>
@@ -127,11 +136,6 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.commons.json</artifactId>
-      <version>2.0.6</version>
-    </dependency>
-    <dependency>
       <groupId>com.google.code.findbugs</groupId>
       <artifactId>jsr305</artifactId>
       <version>3.0.0</version>
@@ -157,7 +161,7 @@
     <dependency>
       <groupId>org.apache.sling</groupId>
       <artifactId>org.apache.sling.testing.sling-mock</artifactId>
-      <version>1.3.0</version>
+      <version>2.2.11-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -166,6 +170,12 @@
       <version>1.10.19</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>
 
   </dependencies>
 </project>
diff --git a/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java b/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
index 56c1804..b7355ca 100644
--- a/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
+++ b/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
@@ -46,9 +46,8 @@ import javax.servlet.http.HttpServletRequest;
 import ch.qos.logback.classic.Level;
 import com.google.common.primitives.Longs;
 import org.apache.commons.io.IOUtils;
+import org.apache.felix.utils.json.JSONWriter;
 import org.apache.sling.api.request.RequestProgressTracker;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.io.JSONWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.helpers.FormattingTuple;
@@ -158,8 +157,6 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
                 queries.clear();
                 logs.clear();
             }
-        } catch (JSONException e) {
-            log.warn("Error occurred while converting the log data for request {} to JSON", requestId, e);
         } catch (UnsupportedEncodingException e) {
             log.warn("Error occurred while converting the log data for request {} to JSON", requestId, e);
         } catch (IOException e) {
@@ -167,7 +164,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         }
     }
 
-    private byte[] toJSON() throws JSONException, IOException {
+    private byte[] toJSON() throws IOException {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         OutputStream os = baos;
         if (compress) {
@@ -175,7 +172,6 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         }
         OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
         JSONWriter jw = new JSONWriter(osw);
-        jw.setTidy(true);
         jw.object();
         jw.key("method").value(method);
 
@@ -196,7 +192,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         return baos.toByteArray();
     }
 
-    private void addLoggerNames(JSONWriter jw) throws JSONException {
+    private void addLoggerNames(JSONWriter jw) throws IOException {
         List<String> sortedNames = new ArrayList<String>(loggerNames);
         Collections.sort(sortedNames);
         jw.key("loggerNames");
@@ -207,7 +203,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         jw.endArray();
     }
 
-    private void addRequestProgressLogs(JSONWriter jw) throws JSONException {
+    private void addRequestProgressLogs(JSONWriter jw) throws IOException {
         if (tracker != null) {
             jw.key("requestProgressLogs");
             jw.array();
@@ -223,7 +219,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         }
     }
 
-    private void addJson(JSONWriter jw, String name, List<? extends JsonEntry> entries) throws JSONException {
+    private void addJson(JSONWriter jw, String name, List<? extends JsonEntry> entries) throws IOException {
         jw.key(name);
         jw.array();
         for (JsonEntry je : entries) {
@@ -254,7 +250,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
     }
 
     private interface JsonEntry {
-        void toJson(JSONWriter jw) throws JSONException;
+        void toJson(JSONWriter jw) throws IOException;
     }
 
     private static class LogEntry implements JsonEntry {
@@ -306,7 +302,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         }
 
         @Override
-        public void toJson(JSONWriter jw) throws JSONException {
+        public void toJson(JSONWriter jw) throws IOException {
             jw.key("timestamp").value(timestamp);
             jw.key("level").value(level.levelStr);
             jw.key("logger").value(logger);
@@ -351,7 +347,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> {
         }
 
         @Override
-        public void toJson(JSONWriter jw) throws JSONException {
+        public void toJson(JSONWriter jw) throws IOException {
             jw.key("query").value(query);
             jw.key("plan").value(plan);
             jw.key("caller").value(caller);
diff --git a/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java b/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java
index b8081e5..da2feaa 100644
--- a/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java
+++ b/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java
@@ -38,9 +38,8 @@ import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.Weigher;
 import org.apache.commons.io.FileUtils;
+import org.apache.felix.utils.json.JSONWriter;
 import org.apache.felix.webconsole.SimpleWebConsolePlugin;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.io.JSONWriter;
 import org.osgi.framework.BundleContext;
 
 class TracerLogServlet extends SimpleWebConsolePlugin implements TraceLogRecorder {
@@ -142,7 +141,7 @@ class TracerLogServlet extends SimpleWebConsolePlugin implements TraceLogRecorde
                     jw.key("error").value("Not found");
                     jw.endObject();
                 }
-            } catch (JSONException e) {
+            } catch (IOException e) {
                 throw new ServletException(e);
             }
         }
diff --git a/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java b/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java
index 8daf2b4..81660aa 100644
--- a/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java
+++ b/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java
@@ -19,12 +19,14 @@
 
 package org.apache.sling.tracer.internal;
 
+import java.io.StringReader;
 import java.io.StringWriter;
 
+import javax.json.Json;
+import javax.json.JsonObject;
 import javax.servlet.http.HttpServletRequest;
 
 import ch.qos.logback.classic.Level;
-import org.apache.sling.commons.json.JSONObject;
 import org.junit.Test;
 import org.slf4j.MDC;
 import org.slf4j.helpers.FormattingTuple;
@@ -59,11 +61,11 @@ public class JSONRecordingTest {
         r.done();
         r.render(sw);
 
-        JSONObject json = new JSONObject(sw.toString());
-        assertEquals("GET", json.get("method"));
-        assertTrue(json.has("time"));
-        assertTrue(json.has("timestamp"));
-        assertEquals(1, json.getJSONArray("queries").length());
+        JsonObject json = Json.createReader(new StringReader(sw.toString())).readObject();
+        assertEquals("GET", json.getString("method"));
+        assertTrue(json.containsKey("time"));
+        assertTrue(json.containsKey("timestamp"));
+        assertEquals(1, json.getJsonArray("queries").size());
     }
 
     @Test
@@ -76,8 +78,8 @@ public class JSONRecordingTest {
         r.done();
         r.render(sw);
 
-        JSONObject json = new JSONObject(sw.toString());
-        assertEquals(2, json.getJSONArray("requestProgressLogs").length());
+        JsonObject json = Json.createReader(new StringReader(sw.toString())).readObject();
+        assertEquals(2, json.getJsonArray("requestProgressLogs").size());
     }
 
     @Test
@@ -94,19 +96,19 @@ public class JSONRecordingTest {
         r.done();
         r.render(sw);
 
-        JSONObject json = new JSONObject(sw.toString());
-        assertEquals(3, json.getJSONArray("logs").length());
+        JsonObject json = Json.createReader(new StringReader(sw.toString())).readObject();
+        assertEquals(3, json.getJsonArray("logs").size());
 
-        JSONObject l1 = json.getJSONArray("logs").getJSONObject(0);
+        JsonObject l1 = json.getJsonArray("logs").getJsonObject(0);
         assertEquals("INFO", l1.getString("level"));
         assertEquals("foo", l1.getString("logger"));
         assertEquals(tp1.getMessage(), l1.getString("message"));
-        assertEquals(1, l1.getJSONArray("params").length());
-        assertFalse(l1.has("exception"));
-        assertFalse(l1.has("caller"));
-        assertTrue(l1.has("timestamp"));
+        assertEquals(1, l1.getJsonArray("params").size());
+        assertFalse(l1.containsKey("exception"));
+        assertFalse(l1.containsKey("caller"));
+        assertTrue(l1.containsKey("timestamp"));
 
-        JSONObject l3 = json.getJSONArray("logs").getJSONObject(2);
+        JsonObject l3 = json.getJsonArray("logs").getJsonObject(2);
         assertNotNull(l3.get("exception"));
     }
 
@@ -122,10 +124,10 @@ public class JSONRecordingTest {
         r.done();
         r.render(sw);
 
-        JSONObject json = new JSONObject(sw.toString());
-        JSONObject l1 = json.getJSONArray("logs").getJSONObject(0);
-        assertTrue(l1.has("caller"));
-        assertTrue(l1.getJSONArray("caller").length() > 0);
+        JsonObject json = Json.createReader(new StringReader(sw.toString())).readObject();
+        JsonObject l1 = json.getJsonArray("logs").getJsonObject(0);
+        assertTrue(l1.containsKey("caller"));
+        assertTrue(l1.getJsonArray("caller").size() > 0);
     }
 
     private static FormattingTuple tuple(String msg){
diff --git a/src/test/java/org/apache/sling/tracer/internal/LogTracerTest.java b/src/test/java/org/apache/sling/tracer/internal/LogTracerTest.java
index da7b200..6961509 100644
--- a/src/test/java/org/apache/sling/tracer/internal/LogTracerTest.java
+++ b/src/test/java/org/apache/sling/tracer/internal/LogTracerTest.java
@@ -20,10 +20,13 @@
 package org.apache.sling.tracer.internal;
 
 import java.io.IOException;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Collection;
 import java.util.List;
 
+import javax.json.Json;
+import javax.json.JsonObject;
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.Servlet;
@@ -42,7 +45,6 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.request.RequestProgressTracker;
-import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.testing.mock.osgi.MockOsgi;
 import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
 import org.apache.sling.testing.mock.osgi.junit.OsgiContextCallback;
@@ -276,7 +278,7 @@ public class LogTracerTest {
     @Test
     public void recordingWithoutTracing() throws Exception{
         activateTracerAndServlet();
-        MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(){
+        MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(context.bundleContext()){
             @Override
             public RequestProgressTracker getRequestProgressTracker() {
                 return createTracker("x", "y");
@@ -310,15 +312,15 @@ public class LogTracerTest {
 
         StringWriter sw = new StringWriter();
         jr.render(sw);
-        JSONObject json = new JSONObject(sw.toString());
-
-        assertEquals(2, json.getJSONArray("requestProgressLogs").length());
+        JsonObject json = Json.createReader(new StringReader(sw.toString())).readObject();
+        
+        assertEquals(2, json.getJsonArray("requestProgressLogs").size());
     }
 
     @Test
     public void recordingWithTracing() throws Exception{
         activateTracerAndServlet();
-        MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(){
+        MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(context.bundleContext()){
             @Override
             public RequestProgressTracker getRequestProgressTracker() {
                 return createTracker("x", "y");
@@ -354,10 +356,10 @@ public class LogTracerTest {
 
         StringWriter sw = new StringWriter();
         jr.render(sw);
-        JSONObject json = new JSONObject(sw.toString());
-
-        assertEquals(2, json.getJSONArray("requestProgressLogs").length());
-        assertEquals(1, json.getJSONArray("logs").length());
+        JsonObject json = Json.createReader(new StringReader(sw.toString())).readObject();
+        
+        assertEquals(2, json.getJsonArray("requestProgressLogs").size());
+        assertEquals(1, json.getJsonArray("logs").size());
     }
 
 
diff --git a/src/test/java/org/apache/sling/tracer/internal/TracerLogServletTest.java b/src/test/java/org/apache/sling/tracer/internal/TracerLogServletTest.java
index 546a406..988c208 100644
--- a/src/test/java/org/apache/sling/tracer/internal/TracerLogServletTest.java
+++ b/src/test/java/org/apache/sling/tracer/internal/TracerLogServletTest.java
@@ -23,16 +23,18 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.zip.GZIPInputStream;
 
 import javax.annotation.Nonnull;
+import javax.json.Json;
+import javax.json.JsonObject;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
 import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
 import org.junit.Rule;
@@ -74,7 +76,7 @@ public class TracerLogServletTest {
     @Test
     public void recordingWhenRequested() throws Exception{
         TracerLogServlet logServlet = new TracerLogServlet(context.bundleContext());
-        request = new MockSlingHttpServletRequest();
+        request = new MockSlingHttpServletRequest(context.bundleContext());
 
         Recording recording = logServlet.startRecording(request, response);
         assertNotNull(recording);
@@ -114,9 +116,9 @@ public class TracerLogServletTest {
         when(request.getRequestURI()).thenReturn("/system/console/" + requestIdCaptor.getValue() + ".json" );
 
         logServlet.renderContent(request, response);
-        JSONObject json = new JSONObject(sos.baos.toString("UTF-8"));
+        JsonObject json = Json.createReader(new StringReader(sos.baos.toString("UTF-8"))).readObject();
         assertEquals("GET", json.getString("method"));
-        assertEquals(2, json.getJSONArray("requestProgressLogs").length());
+        assertEquals(2, json.getJsonArray("requestProgressLogs").size());
     }
 
     @Test
@@ -141,9 +143,9 @@ public class TracerLogServletTest {
 
         logServlet.renderContent(request, response);
         byte[] data = IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(sos.baos.toByteArray())));
-        JSONObject json = new JSONObject(new String(data, "UTF-8"));
+        JsonObject json = Json.createReader(new StringReader(new String(data, "UTF-8"))).readObject();
         assertEquals("GET", json.getString("method"));
-        assertEquals(2, json.getJSONArray("requestProgressLogs").length());
+        assertEquals(2, json.getJsonArray("requestProgressLogs").size());
 
         verify(response).setHeader("Content-Encoding" , "gzip");
     }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.