You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ch...@apache.org on 2016/02/09 11:39:13 UTC

svn commit: r1729352 - in /sling/trunk/contrib/extensions/tracer/src: main/java/org/apache/sling/tracer/internal/ test/java/org/apache/sling/tracer/internal/

Author: chetanm
Date: Tue Feb  9 10:39:12 2016
New Revision: 1729352

URL: http://svn.apache.org/viewvc?rev=1729352&view=rev
Log:
SLING-5459 - Recording of tracer logs

Move JSON rendering logic to recording

Modified:
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java
    sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java

Modified: sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java?rev=1729352&r1=1729351&r2=1729352&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java Tue Feb  9 10:39:12 2016
@@ -19,6 +19,7 @@
 
 package org.apache.sling.tracer.internal;
 
+import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -38,14 +39,18 @@ class JSONRecording implements Recording
         this.method = r.getMethod();
     }
 
-    public void render(JSONWriter jw) throws JSONException {
+    public void render(Writer pw) throws JSONException {
+        JSONWriter jw = new JSONWriter(pw);
+        jw.setTidy(true);
+        jw.object();
         jw.key("method").value(method);
 
         if (tracker != null) {
             jw.key("logs");
             jw.array();
             Iterator<String> it = tracker.getMessages();
-            while (it.hasNext()) {
+            //Per docs iterator can be null
+            while (it != null && it.hasNext()) {
                 jw.value(it.next());
             }
             jw.endArray();
@@ -57,6 +62,7 @@ class JSONRecording implements Recording
             jw.value(q);
         }
         jw.endArray();
+        jw.endObject();
     }
 
     //~---------------------------------------< Recording >

Modified: sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java?rev=1729352&r1=1729351&r2=1729352&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerLogServlet.java Tue Feb  9 10:39:12 2016
@@ -74,14 +74,22 @@ class TracerLogServlet extends SimpleWeb
         } else {
             String requestId = getRequestId(request);
             prepareJSONResponse(response);
-            JSONWriter jw = new JSONWriter(pw);
             try {
-                jw.setTidy(true);
-                jw.object();
+                boolean responseDone = false;
                 if (requestId != null) {
-                    renderRequestData(requestId, jw);
+                    JSONRecording recording = cache.getIfPresent(requestId);
+                    if (recording != null){
+                        recording.render(pw);
+                        responseDone = true;
+                    }
+                }
+
+                if (!responseDone) {
+                    JSONWriter jw = new JSONWriter(pw);
+                    jw.object();
+                    jw.key("error").value("Not found");
+                    jw.endObject();
                 }
-                jw.endObject();
             } catch (JSONException e) {
                 throw new ServletException(e);
             }
@@ -107,15 +115,6 @@ class TracerLogServlet extends SimpleWeb
         response.setCharacterEncoding("UTF-8");
     }
 
-    private void renderRequestData(String requestId, JSONWriter jw) throws JSONException {
-        JSONRecording recording = cache.getIfPresent(requestId);
-        if (recording == null){
-            jw.key("error").value("Not found");
-            return;
-        }
-        recording.render(jw);
-    }
-
     private void renderStatus(PrintWriter pw) {
         pw.printf("<p class='statline'>Log Tracer Recordings: %d recordings</p>%n", cache.size());
 

Modified: sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java?rev=1729352&r1=1729351&r2=1729352&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java Tue Feb  9 10:39:12 2016
@@ -24,7 +24,6 @@ import java.io.StringWriter;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.sling.commons.json.JSONObject;
-import org.apache.sling.commons.json.io.JSONWriter;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -44,9 +43,7 @@ public class JSONRecordingTest {
         r.log(TracerContext.QUERY_LOGGER, "foo bar", new Object[]{"x" , "y"});
         r.log(TracerContext.QUERY_LOGGER, "foo bar", new Object[]{"x" , "z"});
 
-        JSONWriter jw = new JSONWriter(sw).object();
-        r.render(jw);
-        jw.endObject();
+        r.render(sw);
 
         JSONObject json = new JSONObject(sw.toString());
         assertEquals("GET", json.get("method"));
@@ -60,9 +57,7 @@ public class JSONRecordingTest {
 
         r.registerTracker(TestUtil.createTracker("x", "y"));
 
-        JSONWriter jw = new JSONWriter(sw).object();
-        r.render(jw);
-        jw.endObject();
+        r.render(sw);
 
         JSONObject json = new JSONObject(sw.toString());
         assertEquals(2, json.getJSONArray("logs").length());