You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2017/03/30 20:41:33 UTC

svn commit: r1789579 - in /sling/trunk/testing/junit/core: pom.xml src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java

Author: sseifert
Date: Thu Mar 30 20:41:33 2017
New Revision: 1789579

URL: http://svn.apache.org/viewvc?rev=1789579&view=rev
Log:
SLING-6758 Replace commons.json usage in org.apache.sling.junit.core

Modified:
    sling/trunk/testing/junit/core/pom.xml
    sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java

Modified: sling/trunk/testing/junit/core/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/pom.xml?rev=1789579&r1=1789578&r2=1789579&view=diff
==============================================================================
--- sling/trunk/testing/junit/core/pom.xml (original)
+++ sling/trunk/testing/junit/core/pom.xml Thu Mar 30 20:41:33 2017
@@ -136,9 +136,16 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.json</artifactId>
-            <version>2.0.6</version>
+           <groupId>org.apache.geronimo.specs</groupId>
+           <artifactId>geronimo-json_1.0_spec</artifactId>
+           <version>1.0-alpha-1</version>
+           <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.johnzon</groupId>
+          <artifactId>johnzon-core</artifactId>
+          <version>1.0.0</version>
+          <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>

Modified: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java?rev=1789579&r1=1789578&r2=1789579&view=diff
==============================================================================
--- sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java (original)
+++ sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java Thu Mar 30 20:41:33 2017
@@ -21,12 +21,17 @@ import java.io.UnsupportedEncodingExcept
 import java.util.Collection;
 import java.util.Map;
 
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonBuilderFactory;
+import javax.json.JsonException;
+import javax.json.JsonValue;
+import javax.json.JsonWriter;
+import javax.json.stream.JsonGenerator;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.io.JSONWriter;
 import org.apache.sling.junit.Renderer;
 import org.apache.sling.junit.RendererFactory;
 import org.apache.sling.junit.SlingTestContextProvider;
@@ -38,7 +43,7 @@ import org.junit.runner.notification.Run
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/** JSON renderer for JUnit servlet */
+/** Json renderer for JUnit servlet */
 @Component(immediate=false)
 @Service
 public class JsonRenderer extends RunListener implements Renderer,RendererFactory {
@@ -48,7 +53,7 @@ public class JsonRenderer extends RunLis
     public static final String INFO_SUBTYPE_KEY = "INFO_SUBTYPE";
     public static final String TEST_METADATA = "test_metadata";
     private final Logger log = LoggerFactory.getLogger(getClass());
-    private JSONWriter writer;
+    private JsonGenerator writer;
     
     public Renderer createRenderer() { 
         return new JsonRenderer();
@@ -68,11 +73,10 @@ public class JsonRenderer extends RunLis
         }
         response.setContentType("application/json");
         response.setCharacterEncoding("UTF-8");
-        writer = new JSONWriter(response.getWriter());
-        writer.setTidy(true);
+        writer = Json.createGenerator(response.getWriter());
         try {
-            writer.array();
-        } catch(JSONException jex) {
+            writer.writeStartArray();
+        } catch(JsonException jex) {
             throw (IOException)new IOException().initCause(jex);
         }
     }
@@ -80,9 +84,9 @@ public class JsonRenderer extends RunLis
     public void cleanup() {
         if(writer != null) {
             try {
-                writer.endArray();
-            } catch(JSONException jex) {
-                log.warn("JSONException in cleanup()", jex);
+                writer.writeEnd();
+            } catch(JsonException jex) {
+                log.warn("JsonException in cleanup()", jex);
             }
         }
         writer = null;
@@ -91,43 +95,42 @@ public class JsonRenderer extends RunLis
     public void info(String cssClass, String info) {
         try {
             startItem("info");
-            writer.key(INFO_SUBTYPE_KEY).value(cssClass);
-            writer.key("info").value(info);
+            writer.write(INFO_SUBTYPE_KEY, cssClass);
+            writer.write("info", info);
             endItem();
-        } catch(JSONException jex) {
-            log.warn("JSONException in info()", jex);
+        } catch(JsonException jex) {
+            log.warn("JsonException in info()", jex);
         }
     }
 
     public void list(String cssClass, Collection<String> data) {
         try {
             startItem("list");
-            writer.key(INFO_SUBTYPE_KEY).value(cssClass);
-            writer.key("data");
-            writer.array();
+            writer.write(INFO_SUBTYPE_KEY, cssClass);
+            writer.writeStartArray("data");
             for(String str : data) {
-                writer.value(str);
+                writer.write(str);
             }
-            writer.endArray();
+            writer.writeEnd();
             endItem();
-        } catch(JSONException jex) {
-            log.warn("JSONException in list()", jex);
+        } catch(JsonException jex) {
+            log.warn("JsonException in list()", jex);
         }
     }
 
     public void title(int level, String title) {
-        // Titles are not needed in JSON
+        // Titles are not needed in Json
     }
     
     public void link(String info, String url, String method) {
         try {
             startItem("link");
-            writer.key("info").value(info);
-            writer.key("method").value(method);
-            writer.key("url").value(url);
+            writer.write("info",info);
+            writer.write("method",method);
+            writer.write("url",url);
             endItem();
-        } catch(JSONException jex) {
-            log.warn("JSONException in link()", jex);
+        } catch(JsonException jex) {
+            log.warn("JsonException in link()", jex);
         }
     }
 
@@ -139,7 +142,7 @@ public class JsonRenderer extends RunLis
     public void testStarted(Description description) throws Exception {
         super.testStarted(description);
         startItem("test");
-        writer.key("description").value(description.toString());
+        writer.write("description",description.toString());
     }
     
     @Override
@@ -154,8 +157,8 @@ public class JsonRenderer extends RunLis
     
     @Override
     public void testFailure(Failure failure) throws Exception {
-        writer.key("failure").value(failure.toString());
-        writer.key("trace").value(failure.getTrace());
+        writer.write("failure",failure.toString());
+        writer.write("trace",failure.getTrace());
     }
     
     @Override
@@ -163,25 +166,41 @@ public class JsonRenderer extends RunLis
         // Not needed, info is already present in the output
     }
     
-    void startItem(String name) throws JSONException {
-        writer.object();
-        writer.key(INFO_TYPE_KEY).value(name);
+    void startItem(String name) throws JsonException {
+        writer.writeStartObject();
+        writer.write(INFO_TYPE_KEY,name);
     }
     
-    void endItem() throws JSONException {
-        writer.endObject();
+    void endItem() throws JsonException {
+        writer.writeEnd();
     }
     
-    void outputContextMap(Map<String, Object> data) throws JSONException {
-        writer.key(TEST_METADATA);
-        writer.object();
+    void outputContextMap(Map<String, Object> data) throws JsonException {
+        writer.writeStartObject(TEST_METADATA);
         try {
             for(Map.Entry<String, Object> e : data.entrySet()) {
-                writer.key(e.getKey());
-                writer.value(e.getValue());
+                Object value = e.getValue();
+                if (value instanceof Long) {
+                    writer.write(e.getKey(), (Long)e.getValue());
+                }
+                else if (value instanceof Integer) {
+                    writer.write(e.getKey(), (Integer)e.getValue());
+                }
+                else if (value instanceof Double) {
+                    writer.write(e.getKey(), (Double)e.getValue());
+                }
+                else if (value instanceof Boolean) {
+                    writer.write(e.getKey(), (Boolean)e.getValue());
+                }
+                else if (value instanceof String) {
+                    writer.write(e.getKey(), (String)e.getValue());
+                }
+                else {
+                    throw new IllegalArgumentException("Unexpected value for JSON: " + value);
+                }
             }
         } finally {
-            writer.endObject();
+            writer.writeEnd();
         }
     }
 }
\ No newline at end of file