Michael Blow has submitted this change and it was merged.

Change subject: [NO ISSUE] Minor refactoring/cleanup of nc detail servlets
......................................................................


[NO ISSUE] Minor refactoring/cleanup of nc detail servlets

Change-Id: Ib62cd5a6e193e61d52121f45be3ae6067b16f29e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2476
Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhub...@apache.org>
---
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/NodeControllerDetailsApiServlet.java
A 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsHelper.java
3 files changed, 97 insertions(+), 65 deletions(-)

Approvals:
  Anon. E. Moose #1000171: 
  Jenkins: Verified; No violations found; ; Verified
  Murtadha Hubail: Looks good to me, approved



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 992b85b..c4bd054 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
@@ -18,6 +18,7 @@
  */
 package org.apache.asterix.api.http.server;
 
+import static 
org.apache.asterix.api.http.server.NodeControllerDetailsHelper.fixupKeys;
 import static 
org.apache.asterix.api.http.server.ServletConstants.HYRACKS_CONNECTION_ATTR;
 
 import java.io.IOException;
@@ -135,7 +136,7 @@
         return result;
     }
 
-    protected void resolveFutures(Map<String, Future<JsonNode>> futureMap, 
Map<String, JsonNode> outputMap,
+    public static void resolveFutures(Map<String, Future<JsonNode>> futureMap, 
Map<String, JsonNode> outputMap,
             Map<String, JsonNode> errorMap) throws InterruptedException {
         for (Map.Entry<String, Future<JsonNode>> entry : futureMap.entrySet()) 
{
             try {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java
index 8cb8cb6..09a07a1 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java
@@ -18,13 +18,12 @@
  */
 package org.apache.asterix.api.http.server;
 
+import static 
org.apache.asterix.api.http.server.NodeControllerDetailsHelper.fixupKeys;
+import static 
org.apache.asterix.api.http.server.NodeControllerDetailsHelper.processNodeDetailsJSON;
 import static 
org.apache.asterix.api.http.server.ServletConstants.HYRACKS_CONNECTION_ATTR;
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 import java.util.concurrent.ConcurrentMap;
 
 import org.apache.asterix.common.cluster.ClusterPartition;
@@ -38,7 +37,6 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import io.netty.handler.codec.http.HttpResponseStatus;
@@ -124,68 +122,9 @@
         }
     }
 
-    protected ObjectNode fixupKeys(ObjectNode json) {
-        // TODO (mblow): generate the keys with _ to begin with
-        List<String> keys = new ArrayList<>();
-        for (Iterator<String> iter = json.fieldNames(); iter.hasNext();) {
-            keys.add(iter.next());
-        }
-        for (String key : keys) {
-            String newKey = key.replace('-', '_');
-            if (!newKey.equals(key)) {
-                json.set(newKey, json.remove(key));
-            }
-        }
-        return json;
-    }
-
     protected ObjectNode processNodeStats(IHyracksClientConnection hcc, String 
node) throws Exception {
         final String details = checkNullDetail(node, 
hcc.getNodeDetailsJSON(node, true, false));
-        return processNodeDetailsJSON((ObjectNode) 
OBJECT_MAPPER.readTree(details));
-    }
-
-    protected ObjectNode processNodeDetailsJSON(ObjectNode json) {
-        int index = json.get("rrd-ptr").asInt() - 1;
-        json.remove("rrd-ptr");
-
-        List<String> keys = new ArrayList<>();
-        for (Iterator<String> iter = json.fieldNames(); iter.hasNext();) {
-            keys.add(iter.next());
-        }
-        final ArrayNode gcNames = (ArrayNode) json.get("gc-names");
-        final ArrayNode gcCollectionTimes = (ArrayNode) 
json.get("gc-collection-times");
-        final ArrayNode gcCollectionCounts = (ArrayNode) 
json.get("gc-collection-counts");
-
-        for (String key : keys) {
-            if (key.startsWith("gc-")) {
-                json.remove(key);
-            } else {
-                final JsonNode keyNode = json.get(key);
-                if (keyNode instanceof ArrayNode) {
-                    final ArrayNode valueArray = (ArrayNode) keyNode;
-                    // fixup an index of -1 to the final element in the array 
(i.e. RRD_SIZE)
-                    if (index == -1) {
-                        index = valueArray.size() - 1;
-                    }
-                    final JsonNode value = valueArray.get(index);
-                    json.remove(key);
-                    json.set(key.replaceAll("s$", ""), value);
-                }
-            }
-        }
-        ArrayNode gcs = OBJECT_MAPPER.createArrayNode();
-
-        for (int i = 0; i < gcNames.size(); i++) {
-            ObjectNode gc = OBJECT_MAPPER.createObjectNode();
-            gc.set("name", gcNames.get(i));
-            gc.set("collection-time", gcCollectionTimes.get(i).get(index));
-            gc.set("collection-count", gcCollectionCounts.get(i).get(index));
-            fixupKeys(gc);
-            gcs.add(gc);
-        }
-        json.set("gcs", gcs);
-
-        return json;
+        return processNodeDetailsJSON((ObjectNode) 
OBJECT_MAPPER.readTree(details), OBJECT_MAPPER);
     }
 
     private ObjectNode processNodeConfig(IHyracksClientConnection hcc, String 
node) throws Exception {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsHelper.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsHelper.java
new file mode 100644
index 0000000..83aa496
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsHelper.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.api.http.server;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class NodeControllerDetailsHelper {
+    private NodeControllerDetailsHelper() {
+    }
+
+    public static ObjectNode fixupKeys(ObjectNode json) {
+        // TODO (mblow): generate the keys with _ to begin with
+        List<String> keys = new ArrayList<>();
+        for (Iterator<String> iter = json.fieldNames(); iter.hasNext();) {
+            keys.add(iter.next());
+        }
+        for (String key : keys) {
+            String newKey = key.replace('-', '_');
+            if (!newKey.equals(key)) {
+                json.set(newKey, json.remove(key));
+            }
+        }
+        return json;
+    }
+
+    public static ObjectNode processNodeDetailsJSON(ObjectNode json, 
ObjectMapper om) {
+        int index = json.get("rrd-ptr").asInt() - 1;
+        json.remove("rrd-ptr");
+
+        List<String> keys = new ArrayList<>();
+        for (Iterator<String> iter = json.fieldNames(); iter.hasNext();) {
+            keys.add(iter.next());
+        }
+        final ArrayNode gcNames = (ArrayNode) json.get("gc-names");
+        final ArrayNode gcCollectionTimes = (ArrayNode) 
json.get("gc-collection-times");
+        final ArrayNode gcCollectionCounts = (ArrayNode) 
json.get("gc-collection-counts");
+
+        for (String key : keys) {
+            if (key.startsWith("gc-")) {
+                json.remove(key);
+            } else {
+                final JsonNode keyNode = json.get(key);
+                if (keyNode instanceof ArrayNode) {
+                    final ArrayNode valueArray = (ArrayNode) keyNode;
+                    // fixup an index of -1 to the final element in the array 
(i.e. RRD_SIZE)
+                    if (index == -1) {
+                        index = valueArray.size() - 1;
+                    }
+                    final JsonNode value = valueArray.get(index);
+                    json.remove(key);
+                    json.set(key.replaceAll("s$", ""), value);
+                }
+            }
+        }
+        ArrayNode gcs = om.createArrayNode();
+
+        for (int i = 0; i < gcNames.size(); i++) {
+            ObjectNode gc = om.createObjectNode();
+            gc.set("name", gcNames.get(i));
+            gc.set("collection-time", gcCollectionTimes.get(i).get(index));
+            gc.set("collection-count", gcCollectionCounts.get(i).get(index));
+            fixupKeys(gc);
+            gcs.add(gc);
+        }
+        json.set("gcs", gcs);
+
+        return json;
+    }
+}

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2476
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib62cd5a6e193e61d52121f45be3ae6067b16f29e
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mhub...@apache.org>

Reply via email to