You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2016/02/23 23:06:09 UTC

[04/10] incubator-geode git commit: GEODE-907: Converted core functionality to use jackson

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterRegionsService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterRegionsService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterRegionsService.java
index 5d47d3f..ff94b20 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterRegionsService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterRegionsService.java
@@ -19,30 +19,26 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
+import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
-
 /**
  * Class ClusterRegionsService
  * 
@@ -57,43 +53,36 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class ClusterRegionsService implements PulseService {
 
+  private final ObjectMapper mapper = new ObjectMapper();
+
   // String constants used for forming a json response
   private final String ENTRY_SIZE = "entrySize";
 
   // Comparator based upon regions entry count
-  private static Comparator<Cluster.Region> regionEntryCountComparator = new Comparator<Cluster.Region>() {
-    @Override
-    public int compare(Cluster.Region r1, Cluster.Region r2) {
-      long r1Cnt = r1.getSystemRegionEntryCount();
-      long r2Cnt = r2.getSystemRegionEntryCount();
-      if (r1Cnt < r2Cnt) {
-        return -1;
-      } else if (r1Cnt > r2Cnt) {
-        return 1;
-      } else {
-        return 0;
-      }
+  private static Comparator<Cluster.Region> regionEntryCountComparator = (r1, r2) -> {
+    long r1Cnt = r1.getSystemRegionEntryCount();
+    long r2Cnt = r2.getSystemRegionEntryCount();
+    if (r1Cnt < r2Cnt) {
+      return -1;
+    } else if (r1Cnt > r2Cnt) {
+      return 1;
+    } else {
+      return 0;
     }
   };
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
-
-    String userName = request.getUserPrincipal().getName();
-
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-
-    try {
-      // getting cluster's Regions
-      responseJSON.put("regions", getRegionJson(cluster));
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
-    }
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    // getting cluster's Regions
+    responseJSON.put("regions", getRegionJson(cluster));
+
+    // Send json response
+    return responseJSON;
   }
 
   /**
@@ -104,7 +93,7 @@ public class ClusterRegionsService implements PulseService {
    * @param cluster
    * @return JSONObject Array List
    */
-  private List<JSONObject> getRegionJson(Cluster cluster) throws JSONException {
+  private ArrayNode getRegionJson(Cluster cluster) {
 
     Long totalHeapSize = cluster.getTotalHeapSize();
     Long totalDiskUsage = cluster.getTotalBytesOnDisk();
@@ -116,10 +105,10 @@ public class ClusterRegionsService implements PulseService {
 
     Collections.sort(clusterRegionsList, regionEntryCountComparator);
 
-    List<JSONObject> regionListJson = new ArrayList<JSONObject>();
+    ArrayNode regionListJson = mapper.createArrayNode();
     for (int count = 0; count < clusterRegionsList.size(); count++) {
       Cluster.Region reg = clusterRegionsList.get(count);
-      JSONObject regionJSON = new JSONObject();
+      ObjectNode regionJSON = mapper.createObjectNode();
 
       regionJSON.put("name", reg.getName());
       regionJSON.put("totalMemory", totalHeapSize);
@@ -133,7 +122,7 @@ public class ClusterRegionsService implements PulseService {
 
       Cluster.Member[] clusterMembersList = cluster.getMembers();
 
-      JSONArray memberNameArray = new JSONArray();
+      ArrayNode memberNameArray = mapper.createArrayNode();
       for (String memberName : reg.getMemberName()) {
         for (Cluster.Member member : clusterMembersList) {
           String name = member.getName();
@@ -142,10 +131,10 @@ public class ClusterRegionsService implements PulseService {
           id = id.replace(":", "-");
 
           if ((memberName.equals(id)) || (memberName.equals(name))) {
-            JSONObject regionMember = new JSONObject();
+            ObjectNode regionMember = mapper.createObjectNode();
             regionMember.put("id", member.getId());
             regionMember.put("name", member.getName());
-            memberNameArray.put(regionMember);
+            memberNameArray.add(regionMember);
             break;
           }
         }
@@ -186,8 +175,7 @@ public class ClusterRegionsService implements PulseService {
         regionJSON.put("compressionCodec", this.VALUE_NA);
       }
 
-      if (PulseConstants.PRODUCT_NAME_SQLFIRE.equalsIgnoreCase(PulseController
-          .getPulseProductSupport())) {
+      if (PulseConstants.PRODUCT_NAME_SQLFIRE.equalsIgnoreCase(PulseController.getPulseProductSupport())) {
         // Convert region path to dot separated region path
         regionJSON.put("regionPath",
             StringUtils.getTableNameFromRegionName(reg.getFullPath()));
@@ -198,30 +186,17 @@ public class ClusterRegionsService implements PulseService {
         regionJSON.put("id", reg.getFullPath());
       }
 
-      regionJSON
-          .put(
-              "memoryReadsTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_GETS_PER_SEC_TREND)));
-      regionJSON
-          .put(
-              "memoryWritesTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_PUTS_PER_SEC_TREND)));
-      regionJSON
-          .put(
-              "diskReadsTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_READS_PER_SEC_TREND)));
-      regionJSON
-          .put(
-              "diskWritesTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_WRITES_PER_SEC_TREND)));
+      regionJSON.put("memoryReadsTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_GETS_PER_SEC_TREND)));
+      regionJSON.put("memoryWritesTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_PUTS_PER_SEC_TREND)));
+      regionJSON.put("diskReadsTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_READS_PER_SEC_TREND)));
+      regionJSON.put("diskWritesTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_WRITES_PER_SEC_TREND)));
       regionJSON.put("emptyNodes", reg.getEmptyNode());
       Long entrySize = reg.getEntrySize();
-      DecimalFormat form = new DecimalFormat(
-          PulseConstants.DECIMAL_FORMAT_PATTERN_2);
+      DecimalFormat form = new DecimalFormat(PulseConstants.DECIMAL_FORMAT_PATTERN_2);
       String entrySizeInMB = form.format(entrySize / (1024f * 1024f));
 
       if (entrySize < 0) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionService.java
index f19e78b..5c4fa0c 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionService.java
@@ -19,28 +19,27 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
+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;
 import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
 import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants;
 import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 import com.vmware.gemfire.tools.pulse.internal.log.PulseLogWriter;
 import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import com.vmware.gemfire.tools.pulse.internal.util.TimeUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 
 /**
  * Class ClusterSelectedRegionService
@@ -56,65 +55,61 @@ import com.vmware.gemfire.tools.pulse.internal.util.TimeUtils;
 @Scope("singleton")
 public class ClusterSelectedRegionService implements PulseService {
 
+  private final ObjectMapper mapper = new ObjectMapper();
+
   // String constants used for forming a json response
   private final String ENTRY_SIZE = "entrySize";
 
   // Comparator based upon regions entry count
-  private static Comparator<Cluster.Member> memberCurrentHeapUsageComparator = new Comparator<Cluster.Member>() {
-    @Override
-    public int compare(Cluster.Member m1, Cluster.Member m2) {
-      long m1HeapUsage = m1.getCurrentHeapSize();
-      long m2HeapUsage = m2.getCurrentHeapSize();
-      if (m1HeapUsage < m2HeapUsage) {
-        return -1;
-      } else if (m1HeapUsage > m2HeapUsage) {
-        return 1;
-      } else {
-        return 0;
-      }
+  private static Comparator<Cluster.Member> memberCurrentHeapUsageComparator = (m1, m2) -> {
+    long m1HeapUsage = m1.getCurrentHeapSize();
+    long m2HeapUsage = m2.getCurrentHeapSize();
+    if (m1HeapUsage < m2HeapUsage) {
+      return -1;
+    } else if (m1HeapUsage > m2HeapUsage) {
+      return 1;
+    } else {
+      return 0;
     }
   };
 
   @Override
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     String userName = request.getUserPrincipal().getName();
     String pulseData = request.getParameter("pulseData");
-    JSONObject parameterMap = new JSONObject(pulseData);
-    String selectedRegionFullPath = parameterMap.getJSONObject("ClusterSelectedRegion").getString("regionFullPath");
+    JsonNode parameterMap = mapper.readTree(pulseData);
+    String selectedRegionFullPath = parameterMap.get("ClusterSelectedRegion").get("regionFullPath").textValue();
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-
-    try {
-      // getting cluster's Regions
-      responseJSON.put("clusterName", cluster.getServerName());
-      responseJSON.put("userName", userName);
-      responseJSON.put("selectedRegion", getSelectedRegionJson(cluster, selectedRegionFullPath));
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
-    }
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    // getting cluster's Regions
+    responseJSON.put("clusterName", cluster.getServerName());
+    responseJSON.put("userName", userName);
+    responseJSON.put("selectedRegion", getSelectedRegionJson(cluster, selectedRegionFullPath));
+
+    // Send json response
+    return responseJSON;
   }
 
   /**
    * Create JSON for selected cluster region
    *
    * @param cluster
-   * @return JSONObject Array List
+   * @return ObjectNode Array List
    */
-  private JSONObject getSelectedRegionJson(Cluster cluster, String selectedRegionFullPath) throws JSONException {
+  private ObjectNode getSelectedRegionJson(Cluster cluster, String selectedRegionFullPath) {
     PulseLogWriter LOGGER = PulseLogWriter.getLogger();
     Long totalHeapSize = cluster.getTotalHeapSize();
     Long totalDiskUsage = cluster.getTotalBytesOnDisk();
 
     Cluster.Region reg = cluster.getClusterRegion(selectedRegionFullPath);
-    if(reg != null){
-      JSONObject regionJSON = new JSONObject();
+    if (reg != null){
+      ObjectNode regionJSON = mapper.createObjectNode();
 
       regionJSON.put("name", reg.getName());
       regionJSON.put("path", reg.getFullPath());
@@ -128,8 +123,7 @@ public class ClusterSelectedRegionService implements PulseService {
       regionJSON.put("putsRate", reg.getPutsRate());
       regionJSON.put("lruEvictionRate", reg.getLruEvictionRate());
 
-      DecimalFormat df2 = new DecimalFormat(
-          PulseConstants.DECIMAL_FORMAT_PATTERN);
+      DecimalFormat df2 = new DecimalFormat(PulseConstants.DECIMAL_FORMAT_PATTERN);
       Cluster.Member[] clusterMembersList = cluster.getMembers();
 
       // collect members of this region
@@ -149,11 +143,11 @@ public class ClusterSelectedRegionService implements PulseService {
 
       // sort members of this region
       Collections.sort(clusterMembersL, memberCurrentHeapUsageComparator);
+
       // return sorted member list by heap usage
-      JSONArray memberArray = new JSONArray();
+      ArrayNode memberArray = mapper.createArrayNode();
       for (Cluster.Member member : clusterMembersL) {
-
-          JSONObject regionMember = new JSONObject();
+          ObjectNode regionMember = mapper.createObjectNode();
           regionMember.put("memberId", member.getId());
           regionMember.put("name", member.getName());
           regionMember.put("host", member.getHost());
@@ -184,33 +178,18 @@ public class ClusterSelectedRegionService implements PulseService {
             regionMember.put("clients", member.getMemberClientsHMap().size());
           }
           regionMember.put("queues", member.getQueueBacklog());
-          memberArray.put(regionMember);
+          memberArray.add(regionMember);
       }
 
       regionJSON.put("members", memberArray);
       regionJSON.put("entryCount", reg.getSystemRegionEntryCount());
 
-      Boolean persistent = reg.getPersistentEnabled();
-      if (persistent) {
-        regionJSON.put("persistence", PulseService.VALUE_ON);
-      } else {
-        regionJSON.put("persistence", PulseService.VALUE_OFF);
-      }
+      regionJSON.put("persistence", reg.getPersistentEnabled() ? PulseService.VALUE_ON : PulseService.VALUE_OFF);
 
-      Boolean isEnableOffHeapMemory = reg.isEnableOffHeapMemory();
-      if (isEnableOffHeapMemory) {
-        regionJSON.put("isEnableOffHeapMemory", PulseService.VALUE_ON);
-      } else {
-        regionJSON.put("isEnableOffHeapMemory", PulseService.VALUE_OFF);
-      }
+      regionJSON.put("isEnableOffHeapMemory", reg.isEnableOffHeapMemory() ? PulseService.VALUE_ON : PulseService.VALUE_OFF);
 
-      Boolean isHDFSWriteOnly = reg.isHdfsWriteOnly();
       if (regionType.startsWith("HDFS")) {
-        if (isHDFSWriteOnly) {
-          regionJSON.put("isHDFSWriteOnly", PulseService.VALUE_ON);
-        } else {
-          regionJSON.put("isHDFSWriteOnly", PulseService.VALUE_OFF);
-        }
+        regionJSON.put("isHDFSWriteOnly", reg.isHdfsWriteOnly() ? PulseService.VALUE_ON : PulseService.VALUE_OFF);
       } else {
         regionJSON.put("isHDFSWriteOnly", PulseService.VALUE_NA);
       }
@@ -222,35 +201,22 @@ public class ClusterSelectedRegionService implements PulseService {
         regionJSON.put("compressionCodec", PulseService.VALUE_NA);
       }
 
-      if (PulseConstants.PRODUCT_NAME_SQLFIRE.equalsIgnoreCase(PulseController
-          .getPulseProductSupport())) {
+      if (PulseConstants.PRODUCT_NAME_SQLFIRE.equalsIgnoreCase(PulseController.getPulseProductSupport())) {
         // Convert region path to dot separated region path
-        regionJSON.put("regionPath",
-            StringUtils.getTableNameFromRegionName(reg.getFullPath()));
+        regionJSON.put("regionPath", StringUtils.getTableNameFromRegionName(reg.getFullPath()));
       } else {
         regionJSON.put("regionPath", reg.getFullPath());
       }
 
-      regionJSON
-          .put(
-              "memoryReadsTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_GETS_PER_SEC_TREND)));
-      regionJSON
-          .put(
-              "memoryWritesTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_PUTS_PER_SEC_TREND)));
-      regionJSON
-          .put(
-              "diskReadsTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_READS_PER_SEC_TREND)));
-      regionJSON
-          .put(
-              "diskWritesTrend",
-              new JSONArray(
-                  reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_WRITES_PER_SEC_TREND)));
+      regionJSON.put("memoryReadsTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_GETS_PER_SEC_TREND)));
+      regionJSON.put("memoryWritesTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_PUTS_PER_SEC_TREND)));
+      regionJSON.put("diskReadsTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_READS_PER_SEC_TREND)));
+      regionJSON.put("diskWritesTrend",
+          mapper.valueToTree(reg.getRegionStatisticTrend(Cluster.Region.REGION_STAT_DISK_WRITES_PER_SEC_TREND)));
+
       regionJSON.put("emptyNodes", reg.getEmptyNode());
       Long entrySize = reg.getEntrySize();
       DecimalFormat form = new DecimalFormat(
@@ -269,9 +235,8 @@ public class ClusterSelectedRegionService implements PulseService {
       LOGGER.fine("calling getSelectedRegionJson :: regionJSON = " + regionJSON);
       return regionJSON;
     } else {
-      JSONObject responseJSON = new JSONObject();
-      responseJSON.put("errorOnRegion", "Region [" + selectedRegionFullPath
-          + "] is not available");
+      ObjectNode responseJSON = mapper.createObjectNode();
+      responseJSON.put("errorOnRegion", "Region [" + selectedRegionFullPath + "] is not available");
       return responseJSON;
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionsMemberService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionsMemberService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionsMemberService.java
index f4430d5..ecdd14e 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionsMemberService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterSelectedRegionsMemberService.java
@@ -19,24 +19,22 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster.RegionOnMember;
 import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 import com.vmware.gemfire.tools.pulse.internal.log.PulseLogWriter;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 
 /**
  * Class ClusterSelectedRegionsMemberService
@@ -53,57 +51,53 @@ import com.vmware.gemfire.tools.pulse.internal.log.PulseLogWriter;
 @Scope("singleton")
 public class ClusterSelectedRegionsMemberService implements PulseService {
 
+  private final ObjectMapper mapper = new ObjectMapper();
+
   //Comparator based upon regions entry count
-  private static Comparator<Cluster.RegionOnMember> romEntryCountComparator = new Comparator<Cluster.RegionOnMember>() {
-   @Override
-     public int compare(Cluster.RegionOnMember m1, Cluster.RegionOnMember m2) {
-       long m1EntryCount = m1.getEntryCount();
-       long m2EntryCount = m2.getEntryCount();
-       if (m1EntryCount < m2EntryCount) {
-         return -1;
-       } else if (m1EntryCount > m2EntryCount) {
-         return 1;
-       } else {
-         return 0;
-       }
-     }
-  };
+  private static Comparator<Cluster.RegionOnMember> romEntryCountComparator = (m1, m2) -> {
+      long m1EntryCount = m1.getEntryCount();
+      long m2EntryCount = m2.getEntryCount();
+      if (m1EntryCount < m2EntryCount) {
+        return -1;
+      } else if (m1EntryCount > m2EntryCount) {
+        return 1;
+      } else {
+        return 0;
+      }
+    };
 
   @Override
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
     PulseLogWriter LOGGER = PulseLogWriter.getLogger();
     String userName = request.getUserPrincipal().getName();
     String pulseData = request.getParameter("pulseData");
-    JSONObject parameterMap = new JSONObject(pulseData);
-    String selectedRegionFullPath = parameterMap.getJSONObject("ClusterSelectedRegionsMember").getString("regionFullPath");
+    JsonNode parameterMap = mapper.readTree(pulseData);
+    String selectedRegionFullPath = parameterMap.get("ClusterSelectedRegionsMember").get("regionFullPath").textValue();
     LOGGER.finest("ClusterSelectedRegionsMemberService selectedRegionFullPath = " + selectedRegionFullPath);
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-
-    try {
-      // getting cluster's Regions
-      responseJSON.put("clusterName", cluster.getServerName());
-      responseJSON.put("userName", userName);
-      responseJSON.put("selectedRegionsMembers", getSelectedRegionsMembersJson(cluster, selectedRegionFullPath));
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
-    }
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    // getting cluster's Regions
+    responseJSON.put("clusterName", cluster.getServerName());
+    responseJSON.put("userName", userName);
+    responseJSON.put("selectedRegionsMembers", getSelectedRegionsMembersJson(cluster, selectedRegionFullPath));
+    // Send json response
+    return responseJSON;
   }
 
   /**
    * Create JSON for selected cluster region's all members
    */
-  private JSONObject getSelectedRegionsMembersJson(Cluster cluster, String selectedRegionFullPath) throws JSONException {
+  private ObjectNode getSelectedRegionsMembersJson(Cluster cluster, String selectedRegionFullPath) {
     PulseLogWriter LOGGER = PulseLogWriter.getLogger();
     Cluster.Region reg = cluster.getClusterRegion(selectedRegionFullPath);
-    if(reg != null){
-      JSONObject regionMemberJSON = new JSONObject();
+
+    if (reg != null){
+      ObjectNode regionMemberJSON = mapper.createObjectNode();
       RegionOnMember[] regionOnMembers = reg.getRegionOnMembers();
 
       //sort on entry count
@@ -111,35 +105,39 @@ public class ClusterSelectedRegionsMemberService implements PulseService {
       Collections.sort(romList, romEntryCountComparator);
 
       for(RegionOnMember rom : romList) {
-
-        JSONObject memberJSON = new JSONObject();
+        ObjectNode memberJSON = mapper.createObjectNode();
         memberJSON.put("memberName", rom.getMemberName());
         memberJSON.put("regionFullPath", rom.getRegionFullPath());
         memberJSON.put("entryCount", rom.getEntryCount());
         memberJSON.put("entrySize", rom.getEntrySize());
+
         memberJSON.put("accessor", ((rom.getLocalMaxMemory() == 0) ? "True" : "False"));
         LOGGER.finest("calling getSelectedRegionsMembersJson :: rom.getLocalMaxMemory() = " + rom.getLocalMaxMemory());
-        memberJSON.put(
-            "memoryReadsTrend", new JSONArray(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_GETS_PER_SEC_TREND)));
+
+        memberJSON.put("memoryReadsTrend",
+            mapper.valueToTree(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_GETS_PER_SEC_TREND)));
         LOGGER.finest("memoryReadsTrend = " + rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_GETS_PER_SEC_TREND).length);
-        memberJSON.put(
-            "memoryWritesTrend", new JSONArray(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_PUTS_PER_SEC_TREND)));
+
+        memberJSON.put("memoryWritesTrend",
+            mapper.valueToTree(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_PUTS_PER_SEC_TREND)));
         LOGGER.finest("memoryWritesTrend = " + rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_PUTS_PER_SEC_TREND).length);
-        memberJSON.put(
-            "diskReadsTrend", new JSONArray(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_DISK_READS_PER_SEC_TREND)));
+
+        memberJSON.put("diskReadsTrend",
+            mapper.valueToTree(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_DISK_READS_PER_SEC_TREND)));
         LOGGER.finest("diskReadsTrend = " + rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_DISK_READS_PER_SEC_TREND).length);
-        memberJSON.put(
-            "diskWritesTrend", new JSONArray(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_DISK_WRITES_PER_SEC_TREND)));
+
+        memberJSON.put("diskWritesTrend",
+            mapper.valueToTree(rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_DISK_WRITES_PER_SEC_TREND)));
         LOGGER.finest("diskWritesTrend = " + rom.getRegionOnMemberStatisticTrend(RegionOnMember.REGION_ON_MEMBER_STAT_DISK_WRITES_PER_SEC_TREND).length);
+
         regionMemberJSON.put(rom.getMemberName(), memberJSON);
       }
 
       LOGGER.fine("calling getSelectedRegionsMembersJson :: regionJSON = " + regionMemberJSON);
       return regionMemberJSON;
     } else {
-      JSONObject responseJSON = new JSONObject();
-      responseJSON.put("errorOnRegion", "Region [" + selectedRegionFullPath
-          + "] is not available");
+      ObjectNode responseJSON = mapper.createObjectNode();
+      responseJSON.put("errorOnRegion", "Region [" + selectedRegionFullPath + "] is not available");
       return responseJSON;
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterWANInfoService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterWANInfoService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterWANInfoService.java
index 57172bd..21d93a7 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterWANInfoService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/ClusterWANInfoService.java
@@ -19,19 +19,17 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
  * Class ClusterWANInfoService
@@ -47,36 +45,32 @@ import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 @Scope("singleton")
 public class ClusterWANInfoService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
+    ObjectNode responseJSON = mapper.createObjectNode();
 
     // members list
-    // ArrayList<Cluster> connectedClusters = cluster.getConnectedClusterList();
-    JSONArray connectedClusterListJson = new JSONArray();
-
-    try {
+    ArrayNode connectedClusterListJson = mapper.createArrayNode();
 
-      for (Map.Entry<String, Boolean> entry : cluster.getWanInformation()
-          .entrySet()) {
-        JSONObject clusterJSON = new JSONObject();
-        clusterJSON.put("clusterId", entry.getKey());
-        clusterJSON.put("name", entry.getKey());
-        clusterJSON.put("status", entry.getValue());
+    for (Map.Entry<String, Boolean> entry : cluster.getWanInformation()
+        .entrySet()) {
+      ObjectNode clusterJSON = mapper.createObjectNode();
+      clusterJSON.put("clusterId", entry.getKey());
+      clusterJSON.put("name", entry.getKey());
+      clusterJSON.put("status", entry.getValue());
 
-        connectedClusterListJson.put(clusterJSON);
-      }
-      // Response JSON
-      responseJSON.put("connectedClusters", connectedClusterListJson);
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+      connectedClusterListJson.add(clusterJSON);
     }
+    // Response JSON
+    responseJSON.put("connectedClusters", connectedClusterListJson);
+    // Send json response
+    return responseJSON;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberAsynchEventQueuesService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberAsynchEventQueuesService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberAsynchEventQueuesService.java
index 70be387..190fc6d 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberAsynchEventQueuesService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberAsynchEventQueuesService.java
@@ -19,18 +19,18 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import javax.servlet.http.HttpServletRequest;
-
+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;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
+import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Class MemberAsynchEventQueuesService
@@ -46,62 +46,55 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class MemberAsynchEventQueuesService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-
-    try {
-
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject(
-          "MemberAsynchEventQueues").getString("memberName");
-
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-
-      if (clusterMember != null) {
-        // response
-        Cluster.AsyncEventQueue[] asyncEventQueues = clusterMember
-            .getMemberAsyncEventQueueList();
-        JSONArray asyncEventQueueJsonList = new JSONArray();
-
-        if (asyncEventQueues != null && asyncEventQueues.length > 0) {
-
-          responseJSON.put("isAsyncEventQueuesPresent", true);
-
-          for (Cluster.AsyncEventQueue asyncEventQueue : asyncEventQueues) {
-            JSONObject asyncEventQueueJSON = new JSONObject();
-            asyncEventQueueJSON.put("id", asyncEventQueue.getId());
-            asyncEventQueueJSON.put("primary", asyncEventQueue.getPrimary());
-            asyncEventQueueJSON.put("senderType", asyncEventQueue.isParallel());
-            asyncEventQueueJSON
-                .put("batchSize", asyncEventQueue.getBatchSize());
-            asyncEventQueueJSON.put("batchTimeInterval",
-                asyncEventQueue.getBatchTimeInterval());
-            asyncEventQueueJSON.put("batchConflationEnabled",
-                asyncEventQueue.isBatchConflationEnabled());
-            asyncEventQueueJSON.put("asyncEventListener",
-                asyncEventQueue.getAsyncEventListener());
-            asyncEventQueueJSON.put("queueSize",
-                asyncEventQueue.getEventQueueSize());
-
-            asyncEventQueueJsonList.put(asyncEventQueueJSON);
-          }
-          responseJSON.put("asyncEventQueues", asyncEventQueueJsonList);
-        } else {
-          responseJSON.put("isAsyncEventQueuesPresent", false);
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberAsynchEventQueues").get("memberName").textValue();
+
+    Cluster.Member clusterMember = cluster.getMember(StringUtils.makeCompliantName(memberName));
+
+    if (clusterMember != null) {
+      // response
+      Cluster.AsyncEventQueue[] asyncEventQueues = clusterMember
+          .getMemberAsyncEventQueueList();
+      ArrayNode asyncEventQueueJsonList = mapper.createArrayNode();
+
+      if (asyncEventQueues != null && asyncEventQueues.length > 0) {
+        responseJSON.put("isAsyncEventQueuesPresent", true);
+
+        for (Cluster.AsyncEventQueue asyncEventQueue : asyncEventQueues) {
+          ObjectNode asyncEventQueueJSON = mapper.createObjectNode();
+          asyncEventQueueJSON.put("id", asyncEventQueue.getId());
+          asyncEventQueueJSON.put("primary", asyncEventQueue.getPrimary());
+          asyncEventQueueJSON.put("senderType", asyncEventQueue.isParallel());
+          asyncEventQueueJSON
+              .put("batchSize", asyncEventQueue.getBatchSize());
+          asyncEventQueueJSON.put("batchTimeInterval",
+              asyncEventQueue.getBatchTimeInterval());
+          asyncEventQueueJSON.put("batchConflationEnabled",
+              asyncEventQueue.isBatchConflationEnabled());
+          asyncEventQueueJSON.put("asyncEventListener",
+              asyncEventQueue.getAsyncEventListener());
+          asyncEventQueueJSON.put("queueSize",
+              asyncEventQueue.getEventQueueSize());
+
+          asyncEventQueueJsonList.add(asyncEventQueueJSON);
         }
-
+        responseJSON.put("asyncEventQueues", asyncEventQueueJsonList);
+      } else {
+        responseJSON.put("isAsyncEventQueuesPresent", false);
       }
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+
     }
+    // Send json response
+    return responseJSON;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberClientsService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberClientsService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberClientsService.java
index cb4a9e0..a2b5819 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberClientsService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberClientsService.java
@@ -19,21 +19,19 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import java.util.Formatter;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
+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;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
 import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import com.vmware.gemfire.tools.pulse.internal.util.TimeUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Class MemberClientsService
@@ -48,76 +46,57 @@ import com.vmware.gemfire.tools.pulse.internal.util.TimeUtils;
 @Scope("singleton")
 public class MemberClientsService implements PulseService {
 
+  private final ObjectMapper mapper = new ObjectMapper();
+
   // String constants used for forming a json response
   private final String NAME = "name";
   private final String HOST = "host";
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-
-    try {
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberClients")
-          .getString("memberName");
-
-      JSONArray clientListJson = new JSONArray();
-
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-      if (clusterMember != null) {
-        responseJSON.put("memberId", clusterMember.getId());
-        responseJSON.put(this.NAME, clusterMember.getName());
-        responseJSON.put(this.HOST, clusterMember.getHost());
-
-        // member's clients
-
-        Cluster.Client[] memberClients = clusterMember.getMemberClients();
-        for (Cluster.Client memberClient : memberClients) {
-          JSONObject regionJSON = new JSONObject();
-          regionJSON.put("clientId", memberClient.getId());
-          regionJSON.put(this.NAME, memberClient.getName());
-          regionJSON.put(this.HOST, memberClient.getHost());
-          regionJSON.put("queueSize", memberClient.getQueueSize());
-          regionJSON.put("clientCQCount", memberClient.getClientCQCount()); 
-          if(memberClient.isConnected()){
-            regionJSON.put("isConnected", "Yes");
-          }else{
-            regionJSON.put("isConnected", "No");
-          }
-          
-          if(memberClient.isSubscriptionEnabled()){ 
-            regionJSON.put("isSubscriptionEnabled", "Yes"); 
-          }else{ 
-            regionJSON.put("isSubscriptionEnabled", "No"); 
-          } 
-
-          regionJSON.put("uptime",
-              TimeUtils.convertTimeSecondsToHMS(memberClient.getUptime()));
-          Formatter fmt = new Formatter();
-          regionJSON.put("cpuUsage",
-              fmt.format("%.4f", memberClient.getCpuUsage()).toString());
-          // regionJSON.put("cpuUsage", memberClient.getCpuUsage());
-          regionJSON.put("threads", memberClient.getThreads());
-          regionJSON.put("gets", memberClient.getGets());
-          regionJSON.put("puts", memberClient.getPuts());
-
-          clientListJson.put(regionJSON);
-          fmt.close();
-
-        }
-        responseJSON.put("memberClients", clientListJson);
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberClients").get("memberName").textValue();
+
+    ArrayNode clientListJson = mapper.createArrayNode();
+
+    Cluster.Member clusterMember = cluster.getMember(StringUtils.makeCompliantName(memberName));
+    if (clusterMember != null) {
+      responseJSON.put("memberId", clusterMember.getId());
+      responseJSON.put(this.NAME, clusterMember.getName());
+      responseJSON.put(this.HOST, clusterMember.getHost());
+
+      // member's clients
+
+      Cluster.Client[] memberClients = clusterMember.getMemberClients();
+      for (Cluster.Client memberClient : memberClients) {
+        ObjectNode regionJSON = mapper.createObjectNode();
+        regionJSON.put("clientId", memberClient.getId());
+        regionJSON.put(this.NAME, memberClient.getName());
+        regionJSON.put(this.HOST, memberClient.getHost());
+        regionJSON.put("queueSize", memberClient.getQueueSize());
+        regionJSON.put("clientCQCount", memberClient.getClientCQCount());
+        regionJSON.put("isConnected", memberClient.isConnected() ? "Yes" : "No");
+        regionJSON.put("isSubscriptionEnabled", memberClient.isSubscriptionEnabled() ? "Yes" : "No");
+        regionJSON.put("uptime", TimeUtils.convertTimeSecondsToHMS(memberClient.getUptime()));
+
+        regionJSON.put("cpuUsage", String.format("%.4f", memberClient.getCpuUsage()).toString());
+        // regionJSON.put("cpuUsage", memberClient.getCpuUsage());
+        regionJSON.put("threads", memberClient.getThreads());
+        regionJSON.put("gets", memberClient.getGets());
+        regionJSON.put("puts", memberClient.getPuts());
+
+        clientListJson.add(regionJSON);
       }
-      // Send json response
-      return responseJSON;
-
-    } catch (JSONException e) {
-      throw new Exception(e);
+      responseJSON.put("memberClients", clientListJson);
     }
+    // Send json response
+    return responseJSON;
+
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDetailsService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDetailsService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDetailsService.java
index 7e55712..9a227a2 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDetailsService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDetailsService.java
@@ -19,12 +19,13 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
 import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants;
 import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
@@ -46,7 +47,9 @@ import java.text.DecimalFormat;
 @Scope("singleton")
 public class MemberDetailsService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     String userName = request.getUserPrincipal().getName();
 
@@ -54,75 +57,66 @@ public class MemberDetailsService implements PulseService {
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-    try {
-
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberDetails")
-          .getString("memberName");
-
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-      if (clusterMember != null) {
-        responseJSON.put("memberId", clusterMember.getId());
-        responseJSON.put("name", clusterMember.getName());
-        responseJSON.put("host", clusterMember.getHost());
-        responseJSON.put("hostnameForClients", clusterMember.getHostnameForClients());
-        responseJSON.put("clusterId", cluster.getId());
-        responseJSON.put("clusterName", cluster.getServerName());
-        responseJSON.put("userName", userName);
-        responseJSON.put("loadAverage", clusterMember.getLoadAverage());
-        responseJSON.put("sockets", clusterMember.getTotalFileDescriptorOpen());
-        responseJSON.put("threads", clusterMember.getNumThreads());
-        responseJSON.put("offHeapFreeSize", clusterMember.getOffHeapFreeSize());
-        responseJSON.put("offHeapUsedSize", clusterMember.getOffHeapUsedSize());
-        responseJSON.put("regionsCount", clusterMember.getMemberRegionsList().length);
-
-        // Number of member clients
-        if (PulseController.getPulseProductSupport().equalsIgnoreCase(
-            PulseConstants.PRODUCT_NAME_SQLFIRE)){
-          responseJSON.put("numClients", clusterMember.getNumSqlfireClients());
-        }else{
-          responseJSON.put("numClients", clusterMember.getMemberClientsHMap().size());
-        }
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberDetails").get("memberName").textValue();
+
+    Cluster.Member clusterMember = cluster.getMember(StringUtils
+        .makeCompliantName(memberName));
+    if (clusterMember != null) {
+      responseJSON.put("memberId", clusterMember.getId());
+      responseJSON.put("name", clusterMember.getName());
+      responseJSON.put("host", clusterMember.getHost());
+      responseJSON.put("clusterId", cluster.getId());
+      responseJSON.put("clusterName", cluster.getServerName());
+      responseJSON.put("userName", userName);
+      responseJSON.put("loadAverage", clusterMember.getLoadAverage());
+      responseJSON.put("sockets", clusterMember.getTotalFileDescriptorOpen());
+      responseJSON.put("threads", clusterMember.getNumThreads());
+      responseJSON.put("offHeapFreeSize", clusterMember.getOffHeapFreeSize());
+      responseJSON.put("offHeapUsedSize", clusterMember.getOffHeapUsedSize());
+      responseJSON.put("regionsCount", clusterMember.getMemberRegionsList().length);
+
+      // Number of member clients
+      if (PulseController.getPulseProductSupport().equalsIgnoreCase(
+          PulseConstants.PRODUCT_NAME_SQLFIRE)){
+        responseJSON.put("numClients", clusterMember.getNumSqlfireClients());
+      } else {
+        responseJSON.put("numClients", clusterMember.getMemberClientsHMap().size());
+      }
 
-        DecimalFormat df2 = new DecimalFormat(
-            PulseConstants.DECIMAL_FORMAT_PATTERN);
-        Long diskUsageVal = clusterMember.getTotalDiskUsage();
-        Double diskUsage = diskUsageVal.doubleValue() / 1024;
+      DecimalFormat df2 = new DecimalFormat(PulseConstants.DECIMAL_FORMAT_PATTERN);
+      Long diskUsageVal = clusterMember.getTotalDiskUsage();
+      Double diskUsage = diskUsageVal.doubleValue() / 1024;
 
-        responseJSON.put("diskStorageUsed",
-            Double.valueOf(df2.format(diskUsage)));
+      responseJSON.put("diskStorageUsed", Double.valueOf(df2.format(diskUsage)));
 
-        Cluster.Alert[] alertsList = cluster.getAlertsList();
+      Cluster.Alert[] alertsList = cluster.getAlertsList();
 
-        String status = "Normal";
+      String status = "Normal";
 
-        for (Cluster.Alert alert : alertsList) {
-          if (clusterMember.getName().equals(alert.getMemberName())) {
-            if (alert.getSeverity() == Cluster.Alert.SEVERE) {
-              status = "Severe";
-              break;
-            } else if (alert.getSeverity() == Cluster.Alert.ERROR) {
-              status = "Error";
-            } else if (alert.getSeverity() == Cluster.Alert.WARNING) {
-              status = "Warning";
-            }
+      for (Cluster.Alert alert : alertsList) {
+        if (clusterMember.getName().equals(alert.getMemberName())) {
+          if (alert.getSeverity() == Cluster.Alert.SEVERE) {
+            status = "Severe";
+            break;
+          } else if (alert.getSeverity() == Cluster.Alert.ERROR) {
+            status = "Error";
+          } else if (alert.getSeverity() == Cluster.Alert.WARNING) {
+            status = "Warning";
           }
         }
-
-        responseJSON.put("status", status);
-
-      } else {
-        responseJSON.put("errorOnMember", "Member [" + memberName
-            + "] is not available");
       }
 
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+      responseJSON.put("status", status);
+
+    } else {
+      responseJSON.put("errorOnMember", "Member [" + memberName
+          + "] is not available");
     }
+
+    // Send json response
+    return responseJSON;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDiskThroughputService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDiskThroughputService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDiskThroughputService.java
index ce9fb59..f75479c 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDiskThroughputService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberDiskThroughputService.java
@@ -19,18 +19,18 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
 import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
 import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Class MemberDiskThroughputService
@@ -46,48 +46,33 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class MemberDiskThroughputService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception, JSONException {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
+    ObjectNode responseJSON = mapper.createObjectNode();
 
     // members list
-    try {
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberDiskThroughput")
-          .getString("memberName");
-
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberDiskThroughput").get("memberName").textValue();
 
-      if (clusterMember != null) {
-        // response
-        responseJSON.put("throughputWrites",
-            clusterMember.getThroughputWrites());
-        responseJSON
-            .put(
-                "throughputWritesTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_THROUGHPUT_WRITES)));
-        responseJSON
-            .put("throughputReads", clusterMember.getThroughputWrites());
-        responseJSON
-            .put(
-                "throughputReadsTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_THROUGHPUT_READS)));
-      }
+    Cluster.Member clusterMember = cluster.getMember(StringUtils.makeCompliantName(memberName));
 
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+    if (clusterMember != null) {
+      // response
+      responseJSON.put("throughputWrites", clusterMember.getThroughputWrites());
+      responseJSON.put("throughputWritesTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_THROUGHPUT_WRITES)));
+      responseJSON.put("throughputReads", clusterMember.getThroughputWrites());
+      responseJSON.put("throughputReadsTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_THROUGHPUT_READS)));
     }
+
+    // Send json response
+    return responseJSON;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGCPausesService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGCPausesService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGCPausesService.java
index adc01e1..77792d5 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGCPausesService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGCPausesService.java
@@ -19,18 +19,17 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import javax.servlet.http.HttpServletRequest;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
+import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Class MemberGCPausesService
@@ -47,39 +46,29 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class MemberGCPausesService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
+    ObjectNode responseJSON = mapper.createObjectNode();
 
     // members list
-    try {
-
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberGCPauses")
-          .getString("memberName");
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-      if (clusterMember != null) {
-        // response
-        responseJSON
-            .put(
-                "gcPausesTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_GARBAGE_COLLECTION)));
-        responseJSON.put("gcPausesCount",
-            clusterMember.getGarbageCollectionCount());
-      }
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberGCPauses").get("memberName").textValue();
+    Cluster.Member clusterMember = cluster.getMember(StringUtils.makeCompliantName(memberName));
 
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+    if (clusterMember != null) {
+      // response
+      responseJSON.put("gcPausesTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_GARBAGE_COLLECTION)));
+      responseJSON.put("gcPausesCount", clusterMember.getGarbageCollectionCount());
     }
+
+    // Send json response
+    return responseJSON;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
index f1efd55..2f7b717 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
@@ -19,22 +19,21 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
+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;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
+import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Class MemberGatewayHubService
@@ -50,114 +49,102 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class MemberGatewayHubService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
-
-    try {
-
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberGatewayHub")
-          .getString("memberName");
-
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-
-      if (clusterMember != null) {
-        // response
-        // get gateway receiver
-        Cluster.GatewayReceiver gatewayReceiver = clusterMember
-            .getGatewayReceiver();
-
-        Boolean isGateway = false;
-
-        if (gatewayReceiver != null) {
-          responseJSON.put("isGatewayReceiver", true);
-          responseJSON.put("listeningPort", gatewayReceiver.getListeningPort());
-          responseJSON
-              .put("linkTroughput", gatewayReceiver.getLinkThroughput());
-          responseJSON.put("avgBatchLatency",
-              gatewayReceiver.getAvgBatchProcessingTime());
-        } else {
-          responseJSON.put("isGatewayReceiver", false);
-        }
+    ObjectNode responseJSON = mapper.createObjectNode();
 
-        // get gateway senders
-        Cluster.GatewaySender[] gatewaySenders = clusterMember
-            .getMemberGatewaySenders();
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberGatewayHub").get("memberName").textValue();
 
-        if (gatewaySenders.length > 0) {
-          isGateway = true;
-        }
-        responseJSON.put("isGatewaySender", isGateway);
-        // Senders
-        JSONArray gatewaySendersJsonList = new JSONArray();
-
-        for (Cluster.GatewaySender gatewaySender : gatewaySenders) {
-          JSONObject gatewaySenderJSON = new JSONObject();
-          gatewaySenderJSON.put("id", gatewaySender.getId());
-          gatewaySenderJSON.put("queueSize", gatewaySender.getQueueSize());
-          gatewaySenderJSON.put("status", gatewaySender.getStatus());
-          gatewaySenderJSON.put("primary", gatewaySender.getPrimary());
-          gatewaySenderJSON.put("senderType", gatewaySender.getSenderType());
-          gatewaySenderJSON.put("batchSize", gatewaySender.getBatchSize());
-          gatewaySenderJSON.put("PersistenceEnabled",
-              gatewaySender.getPersistenceEnabled());
-          gatewaySenderJSON.put("remoteDSId",
-              gatewaySender.getRemoteDSId());
-          gatewaySenderJSON.put("eventsExceedingAlertThreshold",
-              gatewaySender.getEventsExceedingAlertThreshold());
-
-          gatewaySendersJsonList.put(gatewaySenderJSON);
-        }
-        // senders response
-        responseJSON.put("gatewaySenders", gatewaySendersJsonList);
-
-        // async event queues
-        Cluster.AsyncEventQueue[] asyncEventQueues = clusterMember.getMemberAsyncEventQueueList();
-        JSONArray asyncEventQueueJsonList = new JSONArray();
-
-        for (Cluster.AsyncEventQueue asyncEventQueue : asyncEventQueues) {
-          JSONObject asyncEventQueueJSON = new JSONObject();
-          asyncEventQueueJSON.put("id", asyncEventQueue.getId());
-          asyncEventQueueJSON.put("primary", asyncEventQueue.getPrimary());
-          asyncEventQueueJSON.put("senderType", asyncEventQueue.isParallel());
-          asyncEventQueueJSON.put("batchSize", asyncEventQueue.getBatchSize());
-          asyncEventQueueJSON.put("batchTimeInterval", asyncEventQueue.getBatchTimeInterval());
-          asyncEventQueueJSON.put("batchConflationEnabled", asyncEventQueue.isBatchConflationEnabled());
-          asyncEventQueueJSON.put("asyncEventListener", asyncEventQueue.getAsyncEventListener());
-          asyncEventQueueJSON.put("queueSize", asyncEventQueue.getEventQueueSize());
-
-          asyncEventQueueJsonList.put(asyncEventQueueJSON);
-        }
-        responseJSON.put("asyncEventQueues", asyncEventQueueJsonList);
+    Cluster.Member clusterMember = cluster.getMember(StringUtils
+        .makeCompliantName(memberName));
+
+    if (clusterMember != null) {
+      // response
+      // get gateway receiver
+      Cluster.GatewayReceiver gatewayReceiver = clusterMember.getGatewayReceiver();
 
+      Boolean isGateway = false;
 
-        Map<String,Cluster.Region> clusterRegions = cluster.getClusterRegions();
+      if (gatewayReceiver != null) {
+        responseJSON.put("isGatewayReceiver", true);
+        responseJSON.put("listeningPort", gatewayReceiver.getListeningPort());
+        responseJSON.put("linkTroughput", gatewayReceiver.getLinkThroughput());
+        responseJSON.put("avgBatchLatency", gatewayReceiver.getAvgBatchProcessingTime());
+      } else {
+        responseJSON.put("isGatewayReceiver", false);
+      }
 
-        List<Cluster.Region> clusterRegionsList = new ArrayList<Cluster.Region>();
-        clusterRegionsList.addAll(clusterRegions.values());
-        
-        JSONArray regionsList = new JSONArray();
+      // get gateway senders
+      Cluster.GatewaySender[] gatewaySenders = clusterMember.getMemberGatewaySenders();
 
-        for (Cluster.Region region : clusterRegionsList) {
-          if (region.getWanEnabled()) {
-            JSONObject regionJSON = new JSONObject();
-            regionJSON.put("name", region.getName());
-            regionsList.put(regionJSON);
-          }
+      if (gatewaySenders.length > 0) {
+        isGateway = true;
+      }
+      responseJSON.put("isGatewaySender", isGateway);
+      // Senders
+      ArrayNode gatewaySendersJsonList = mapper.createArrayNode();
+
+      for (Cluster.GatewaySender gatewaySender : gatewaySenders) {
+        ObjectNode gatewaySenderJSON = mapper.createObjectNode();
+        gatewaySenderJSON.put("id", gatewaySender.getId());
+        gatewaySenderJSON.put("queueSize", gatewaySender.getQueueSize());
+        gatewaySenderJSON.put("status", gatewaySender.getStatus());
+        gatewaySenderJSON.put("primary", gatewaySender.getPrimary());
+        gatewaySenderJSON.put("senderType", gatewaySender.getSenderType());
+        gatewaySenderJSON.put("batchSize", gatewaySender.getBatchSize());
+        gatewaySenderJSON.put("PersistenceEnabled", gatewaySender.getPersistenceEnabled());
+        gatewaySenderJSON.put("remoteDSId", gatewaySender.getRemoteDSId());
+        gatewaySenderJSON.put("eventsExceedingAlertThreshold", gatewaySender.getEventsExceedingAlertThreshold());
+
+        gatewaySendersJsonList.add(gatewaySenderJSON);
+      }
+      // senders response
+      responseJSON.put("gatewaySenders", gatewaySendersJsonList);
+
+      // async event queues
+      Cluster.AsyncEventQueue[] asyncEventQueues = clusterMember.getMemberAsyncEventQueueList();
+      ArrayNode asyncEventQueueJsonList = mapper.createArrayNode();
+
+      for (Cluster.AsyncEventQueue asyncEventQueue : asyncEventQueues) {
+        ObjectNode asyncEventQueueJSON = mapper.createObjectNode();
+        asyncEventQueueJSON.put("id", asyncEventQueue.getId());
+        asyncEventQueueJSON.put("primary", asyncEventQueue.getPrimary());
+        asyncEventQueueJSON.put("senderType", asyncEventQueue.isParallel());
+        asyncEventQueueJSON.put("batchSize", asyncEventQueue.getBatchSize());
+        asyncEventQueueJSON.put("batchTimeInterval", asyncEventQueue.getBatchTimeInterval());
+        asyncEventQueueJSON.put("batchConflationEnabled", asyncEventQueue.isBatchConflationEnabled());
+        asyncEventQueueJSON.put("asyncEventListener", asyncEventQueue.getAsyncEventListener());
+        asyncEventQueueJSON.put("queueSize", asyncEventQueue.getEventQueueSize());
+
+        asyncEventQueueJsonList.add(asyncEventQueueJSON);
+      }
+      responseJSON.put("asyncEventQueues", asyncEventQueueJsonList);
+
+      Map<String,Cluster.Region> clusterRegions = cluster.getClusterRegions();
+
+      List<Cluster.Region> clusterRegionsList = new ArrayList<Cluster.Region>();
+      clusterRegionsList.addAll(clusterRegions.values());
+
+      ArrayNode regionsList = mapper.createArrayNode();
+
+      for (Cluster.Region region : clusterRegionsList) {
+        if (region.getWanEnabled()) {
+          ObjectNode regionJSON = mapper.createObjectNode();
+          regionJSON.put("name", region.getName());
+          regionsList.add(regionJSON);
         }
-        responseJSON.put("regionsInvolved", regionsList);
       }
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+      responseJSON.put("regionsInvolved", regionsList);
     }
+
+    // Send json response
+    return responseJSON;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
index 0073881..914b053 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
@@ -19,18 +19,17 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import javax.servlet.http.HttpServletRequest;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
+import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Class MemberHeapUsageService
@@ -46,40 +45,30 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class MemberHeapUsageService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
+    ObjectNode responseJSON = mapper.createObjectNode();
 
     // members list
-    try {
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberHeapUsage")
-          .getString("memberName");
-
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-      if (clusterMember != null) {
-        // response
-        responseJSON
-            .put(
-                "heapUsageTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE)));
-        responseJSON
-            .put("currentHeapUsage", clusterMember.getCurrentHeapSize());
-      }
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberHeapUsage").get("memberName").textValue();
 
-      // Send json response
-      return responseJSON;
+    Cluster.Member clusterMember = cluster.getMember(StringUtils.makeCompliantName(memberName));
 
-    } catch (JSONException e) {
-      throw new Exception(e);
+    if (clusterMember != null) {
+      // response
+      responseJSON.put("heapUsageTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE)));
+      responseJSON.put("currentHeapUsage", clusterMember.getCurrentHeapSize());
     }
+
+    // Send json response
+    return responseJSON;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6d3f5560/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
index 9dc6126..4509918 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
@@ -19,18 +19,18 @@
 
 package com.vmware.gemfire.tools.pulse.internal.service;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
 import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
 import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
-import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
 import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Class MemberKeyStatisticsService
@@ -46,53 +46,33 @@ import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
 @Scope("singleton")
 public class MemberKeyStatisticsService implements PulseService {
 
-  public JSONObject execute(final HttpServletRequest request) throws Exception {
+  private final ObjectMapper mapper = new ObjectMapper();
+
+  public ObjectNode tempExecute(final HttpServletRequest request) throws Exception, JSONException {
 
     // get cluster object
     Cluster cluster = Repository.get().getCluster();
 
     // json object to be sent as response
-    JSONObject responseJSON = new JSONObject();
+    ObjectNode responseJSON = mapper.createObjectNode();
+
+    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
+    String memberName = requestDataJSON.get("MemberKeyStatistics").get("memberName").textValue();
 
-    try {
-      JSONObject requestDataJSON = new JSONObject(
-          request.getParameter("pulseData"));
-      String memberName = requestDataJSON.getJSONObject("MemberKeyStatistics")
-          .getString("memberName");
+    Cluster.Member clusterMember = cluster.getMember(StringUtils.makeCompliantName(memberName));
 
-      Cluster.Member clusterMember = cluster.getMember(StringUtils
-          .makeCompliantName(memberName));
-      if (clusterMember != null) {
-        // response
-        responseJSON
-            .put(
-                "cpuUsageTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_CPU_USAGE_SAMPLE)));
-        responseJSON
-            .put(
-                "memoryUsageTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE)));
-        responseJSON
-            .put(
-                "readPerSecTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_GETS_PER_SECOND)));
-        responseJSON
-            .put(
-                "writePerSecTrend",
-                new JSONArray(
-                    clusterMember
-                        .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_PUTS_PER_SECOND)));
-      }
-      // Send json response
-      return responseJSON;
-    } catch (JSONException e) {
-      throw new Exception(e);
+    if (clusterMember != null) {
+      // response
+      responseJSON.put("cpuUsageTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_CPU_USAGE_SAMPLE)));
+      responseJSON.put("memoryUsageTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE)));
+      responseJSON.put("readPerSecTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_GETS_PER_SECOND)));
+      responseJSON.put("writePerSecTrend",
+          mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_PUTS_PER_SECOND)));
     }
+    // Send json response
+    return responseJSON;
   }
 }