Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 99158200D11 for ; Mon, 2 Oct 2017 21:42:03 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 976B91609EF; Mon, 2 Oct 2017 19:42:03 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B5D661609C0 for ; Mon, 2 Oct 2017 21:42:02 +0200 (CEST) Received: (qmail 52663 invoked by uid 500); 2 Oct 2017 19:42:01 -0000 Mailing-List: contact notifications-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list notifications@asterixdb.apache.org Received: (qmail 52654 invoked by uid 99); 2 Oct 2017 19:42:01 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Oct 2017 19:42:01 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 2DBC5DE9C7 for ; Mon, 2 Oct 2017 19:42:01 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.126 X-Spam-Level: ** X-Spam-Status: No, score=2.126 tagged_above=-999 required=6.31 tests=[MISSING_HEADERS=1.207, SPF_FAIL=0.919] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id Ra8dHQMaK3Mz for ; Mon, 2 Oct 2017 19:42:00 +0000 (UTC) Received: from vitalstatistix.ics.uci.edu (vitalstatistix.ics.uci.edu [128.195.52.38]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id DFA4B5FD41 for ; Mon, 2 Oct 2017 19:41:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vitalstatistix.ics.uci.edu (Postfix) with ESMTP id 774E4100B83; Mon, 2 Oct 2017 12:41:59 -0700 (PDT) Date: Mon, 2 Oct 2017 12:41:59 -0700 From: "Michael Blow (Code Review)" CC: Ian Maxon , Jenkins , Xikui Wang , Till Westmann , Murtadha Hubail Reply-To: mblow@apache.org X-Gerrit-MessageType: merged Subject: Change in asterixdb[master]: [NO ISSUE] JSONUtil minor improvement X-Gerrit-Change-Id: I7795890eec2d65ad9a286dd1a11713b350a1bdc5 X-Gerrit-ChangeURL: X-Gerrit-Commit: f3ce45c9df7fbd9e78f574ebf9aca5f3987fc0ca In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-Disposition: inline User-Agent: Gerrit/2.12.7 Message-Id: <20171002194159.774E4100B83@vitalstatistix.ics.uci.edu> archived-at: Mon, 02 Oct 2017 19:42:03 -0000 Michael Blow has submitted this change and it was merged. Change subject: [NO ISSUE] JSONUtil minor improvement ...................................................................... [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 Tested-by: Jenkins Reviewed-by: Xikui Wang Contrib: Jenkins Integration-Tests: Jenkins Reviewed-by: Ian Maxon --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java M hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java 4 files changed, 12 insertions(+), 5 deletions(-) Approvals: Anon. E. Moose #1000171: Jenkins: Verified; No violations found; ; Verified Xikui Wang: Looks good to me, approved Ian Maxon: Looks good to me, approved 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 @@ 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) { 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 @@ 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 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 @@ } 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(); 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.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 @@ 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 @@ 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) { -- To view, visit https://asterix-gerrit.ics.uci.edu/2041 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7795890eec2d65ad9a286dd1a11713b350a1bdc5 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Ian Maxon Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Michael Blow Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Xikui Wang