You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2017/10/02 19:42:18 UTC

asterixdb git commit: [NO ISSUE] JSONUtil minor improvement

Repository: asterixdb
Updated Branches:
  refs/heads/master 8a8014285 -> f3ce45c9d


[NO ISSUE] JSONUtil minor improvement

Avoid intermediate string representation when writing converted node.

Change-Id: I7795890eec2d65ad9a286dd1a11713b350a1bdc5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2041
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Xikui Wang <xk...@gmail.com>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <im...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/f3ce45c9
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/f3ce45c9
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/f3ce45c9

Branch: refs/heads/master
Commit: f3ce45c9df7fbd9e78f574ebf9aca5f3987fc0ca
Parents: 8a80142
Author: Michael Blow <mi...@couchbase.com>
Authored: Sun Oct 1 16:42:24 2017 -0400
Committer: Michael Blow <mb...@apache.org>
Committed: Mon Oct 2 12:41:58 2017 -0700

----------------------------------------------------------------------
 .../asterix/api/http/server/ClusterApiServlet.java       |  2 +-
 .../asterix/api/http/server/DiagnosticsApiServlet.java   |  2 +-
 .../asterix/api/http/server/ShutdownApiServlet.java      |  2 +-
 .../src/main/java/org/apache/hyracks/util/JSONUtil.java  | 11 +++++++++--
 4 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f3ce45c9/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
index 3f065ee..165c104 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
@@ -80,7 +80,7 @@ public class ClusterApiServlet extends AbstractServlet {
                 default:
                     throw new IllegalArgumentException();
             }
-            responseWriter.write(JSONUtil.convertNode(json));
+            JSONUtil.writeNode(responseWriter, json);
         } catch (IllegalArgumentException e) { // NOSONAR - exception not logged or rethrown
             response.setStatus(HttpResponseStatus.NOT_FOUND);
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f3ce45c9/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
index 3c58f30..3fe591f 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
@@ -67,7 +67,7 @@ public class DiagnosticsApiServlet extends NodeControllerDetailsApiServlet {
             if (!"".equals(localPath(request))) {
                 throw new IllegalArgumentException();
             }
-            responseWriter.write(JSONUtil.convertNode(getClusterDiagnosticsJSON()));
+            JSONUtil.writeNode(responseWriter, getClusterDiagnosticsJSON());
         } catch (IllegalStateException e) { // NOSONAR - exception not logged or rethrown
             response.setStatus(HttpResponseStatus.SERVICE_UNAVAILABLE);
         } catch (IllegalArgumentException e) { // NOSONAR - exception not logged or rethrown

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f3ce45c9/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java
index 1731697..ddd0f1f 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java
@@ -94,7 +94,7 @@ public class ShutdownApiServlet extends AbstractServlet {
             }
             jsonObject.set("cluster", clusterState);
             final PrintWriter writer = response.writer();
-            writer.print(JSONUtil.convertNode(jsonObject));
+            JSONUtil.writeNode(writer, jsonObject);
             // accept no further queries once this servlet returns
             csm.setState(SHUTTING_DOWN);
             writer.close();

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f3ce45c9/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
index 51855c6..dcdf140 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
@@ -19,6 +19,7 @@
 package org.apache.hyracks.util;
 
 import java.io.IOException;
+import java.io.Writer;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -28,6 +29,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.MapperFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
 import com.fasterxml.jackson.databind.SerializationFeature;
 
 public class JSONUtil {
@@ -37,6 +39,7 @@ public class JSONUtil {
     private static final String INDENT = "\t";
 
     private static final ObjectMapper SORTED_MAPPER = new ObjectMapper();
+    private static final ObjectWriter PRETTY_SORTED_WRITER;
 
     private JSONUtil() {
     }
@@ -44,11 +47,15 @@ public class JSONUtil {
     static {
         SORTED_MAPPER.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
         SORTED_MAPPER.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true);
+        PRETTY_SORTED_WRITER = SORTED_MAPPER.writerWithDefaultPrettyPrinter();
     }
 
     public static String convertNode(final JsonNode node) throws JsonProcessingException {
-        final Object obj = SORTED_MAPPER.treeToValue(node, Object.class);
-        return SORTED_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
+        return PRETTY_SORTED_WRITER.writeValueAsString(SORTED_MAPPER.treeToValue(node, Object.class));
+    }
+
+    public static void writeNode(final Writer writer, final JsonNode node) throws IOException {
+        PRETTY_SORTED_WRITER.writeValue(writer, SORTED_MAPPER.treeToValue(node, Object.class));
     }
 
     public static String indent(String str, int initialIndent) {