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