You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by tu...@apache.org on 2015/11/03 12:25:57 UTC

[35/79] [partial] incubator-geode git commit: GEODE-12: Imported pulse from geode-1.0.0-SNAPSHOT-2.src.tar

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
new file mode 100644
index 0000000..29a533c
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
@@ -0,0 +1,88 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+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.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;
+
+/**
+ * Class MemberKeyStatisticsService
+ * 
+ * This class contains implementations of getting Member's CPU, Memory and Read
+ * Write details
+ * 
+ * @author Sachin K
+ * @since version 7.5
+ */
+@Component
+@Service("MemberKeyStatistics")
+@Scope("singleton")
+public class MemberKeyStatisticsService implements PulseService {
+
+  public JSONObject execute(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("MemberKeyStatistics")
+          .getString("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);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
new file mode 100644
index 0000000..2549eb9
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
@@ -0,0 +1,130 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.service;
+
+import java.text.DecimalFormat;
+
+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 MemberRegionsService
+ * 
+ * This class contains implementations of getting Memeber's Regions details.
+ * 
+ * @author Sachin K
+ * @since version 7.5
+ */
+
+@Component
+@Service("MemberRegions")
+@Scope("singleton")
+public class MemberRegionsService implements PulseService {
+
+  // String constants used for forming a json response
+  private final String NAME = "name";
+  private final String ENTRY_SIZE = "entrySize";
+  private final String DISC_STORE_NAME = "diskStoreName";
+  private final String DISC_SYNCHRONOUS = "diskSynchronous";
+
+  public JSONObject execute(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("MemberRegions")
+          .getString("memberName");
+
+      Cluster.Member clusterMember = cluster.getMember(StringUtils
+          .makeCompliantName(memberName));
+
+      if (clusterMember != null) {
+        responseJSON.put("memberId", clusterMember.getId());
+        responseJSON.put(this.NAME, clusterMember.getName());
+        responseJSON.put("host", clusterMember.getHost());
+
+        // member's regions
+        Cluster.Region[] memberRegions = clusterMember.getMemberRegionsList();
+        JSONArray regionsListJson = new JSONArray();
+        for (Cluster.Region memberRegion : memberRegions) {
+          JSONObject regionJSON = new JSONObject();
+          regionJSON.put(this.NAME, memberRegion.getName());
+
+          if (PulseConstants.PRODUCT_NAME_SQLFIRE
+              .equalsIgnoreCase(PulseController.getPulseProductSupport())) {
+            // Convert region path to dot separated region path
+            regionJSON.put("fullPath", StringUtils
+                .getTableNameFromRegionName(memberRegion.getFullPath()));
+          } else {
+            regionJSON.put("fullPath", memberRegion.getFullPath());
+          }
+
+          regionJSON.put("type", memberRegion.getRegionType());
+          regionJSON
+              .put("entryCount", memberRegion.getSystemRegionEntryCount());
+          Long entrySize = memberRegion.getEntrySize();
+
+          DecimalFormat form = new DecimalFormat(
+              PulseConstants.DECIMAL_FORMAT_PATTERN_2);
+          String entrySizeInMB = form.format(entrySize / (1024f * 1024f));
+
+          if (entrySize < 0) {
+            regionJSON.put(this.ENTRY_SIZE, this.VALUE_NA);
+          } else {
+            regionJSON.put(this.ENTRY_SIZE, entrySizeInMB);
+          }
+          regionJSON.put("scope", memberRegion.getScope());
+          String diskStoreName = memberRegion.getDiskStoreName();
+          if (StringUtils.isNotNullNotEmptyNotWhiteSpace(diskStoreName)) {
+            regionJSON.put(this.DISC_STORE_NAME, diskStoreName);
+            regionJSON.put(this.DISC_SYNCHRONOUS,
+                memberRegion.isDiskSynchronous());
+          } else {
+            regionJSON.put(this.DISC_SYNCHRONOUS, this.VALUE_NA);
+            regionJSON.put(this.DISC_STORE_NAME, "");
+          }
+          regionJSON.put("gatewayEnabled", memberRegion.getWanEnabled());
+
+          regionsListJson.put(regionJSON);
+        }
+        responseJSON.put("memberRegions", regionsListJson);
+
+        // response
+        responseJSON.put("status", "Normal");
+
+      }
+
+      // Send json response
+      return responseJSON;
+
+    } catch (JSONException e) {
+      throw new Exception(e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
new file mode 100644
index 0000000..67ff368
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
@@ -0,0 +1,68 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+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.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;
+
+/**
+ * Class MembersListService
+ * 
+ * This class contains implementations of getting list of Cluster Members.
+ * 
+ * @author Sachin K
+ * @since version 7.5
+ */
+@Component
+@Service("MembersList")
+@Scope("singleton")
+public class MembersListService implements PulseService {
+
+  public JSONObject execute(final HttpServletRequest request) throws Exception {
+
+    // get cluster object
+    Cluster cluster = Repository.get().getCluster();
+
+    // json object to be sent as response
+    JSONObject responseJSON = new JSONObject();
+
+    // members list
+    JSONArray memberListJson = new JSONArray();
+    Cluster.Member[] memberSet = cluster.getMembers();
+
+    try {
+      for (Cluster.Member member : memberSet) {
+        JSONObject memberJSON = new JSONObject();
+        memberJSON.put("memberId", member.getId());
+        memberJSON.put("name", member.getName());
+        memberJSON.put("host", member.getHost());
+
+        memberListJson.put(memberJSON);
+      }
+
+      // Response JSON
+      responseJSON.put("clusterMembers", memberListJson);
+      responseJSON.put("clusterName", cluster.getServerName());
+      // Send json response
+      return responseJSON;
+    } catch (JSONException e) {
+      throw new Exception(e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
new file mode 100644
index 0000000..e0cd5b3
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
@@ -0,0 +1,32 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.service;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
+
+/**
+ * Abstract class PulseService
+ * 
+ * This is a base class for all services in pulse.
+ * 
+ * @author azambare
+ * @since version 7.5
+ */
+public interface PulseService {
+
+  public final String VALUE_NA = "NA";
+  public final String VALUE_ON = "ON";
+  public final String VALUE_OFF = "OFF";
+
+  public JSONObject execute(HttpServletRequest httpServletRequest)
+      throws Exception;
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
new file mode 100644
index 0000000..08d12fe
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
@@ -0,0 +1,46 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.service;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+/**
+ * Class PulseServiceFactory
+ * 
+ * @author azambare
+ * @since version 7.5
+ */
+@Component
+@Scope("singleton")
+public class PulseServiceFactory implements ApplicationContextAware {
+
+  static final long serialVersionUID = 02L;
+  ApplicationContext applicationContext = null;
+
+  public PulseService getPulseServiceInstance(final String servicename) {
+
+    if (applicationContext != null
+        && applicationContext.containsBean(servicename)) {
+      return (PulseService) applicationContext.getBean(servicename);
+    }
+    return null;
+  }
+
+  @Override
+  public void setApplicationContext(final ApplicationContext applicationContext)
+      throws BeansException {
+
+    this.applicationContext = applicationContext;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
new file mode 100644
index 0000000..5b5ae57
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
@@ -0,0 +1,64 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+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.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
+import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
+import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
+
+/**
+ * Class PulseVersionService
+ * 
+ * This class contains implementations of getting Pulse Applications Version's
+ * details (like version details, build details, source details, etc) from
+ * properties file
+ * 
+ * @author Sachin K
+ * @since version 7.0.Beta
+ */
+
+@Component
+@Service("PulseVersion")
+@Scope("singleton")
+public class PulseVersionService implements PulseService {
+
+  public JSONObject execute(final HttpServletRequest request) throws Exception {
+
+    // json object to be sent as response
+    JSONObject responseJSON = new JSONObject();
+
+    try {
+      // Response
+      responseJSON.put("pulseVersion",
+          PulseController.pulseVersion.getPulseVersion());
+      responseJSON.put("buildId",
+          PulseController.pulseVersion.getPulseBuildId());
+      responseJSON.put("buildDate",
+          PulseController.pulseVersion.getPulseBuildDate());
+      responseJSON.put("sourceDate",
+          PulseController.pulseVersion.getPulseSourceDate());
+      responseJSON.put("sourceRevision",
+          PulseController.pulseVersion.getPulseSourceRevision());
+      responseJSON.put("sourceRepository",
+          PulseController.pulseVersion.getPulseSourceRepository());
+    } catch (JSONException e) {
+      throw new Exception(e);
+    }
+    // Send json response
+    return responseJSON;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
new file mode 100644
index 0000000..30ec856
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
@@ -0,0 +1,142 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+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.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;
+
+/**
+ * Class QueryStatisticsService
+ * 
+ * This class returns top N queries based on pagination and filtering criteria
+ * if any
+ * 
+ * @author Riya Bhandekar
+ * @since version 7.5
+ */
+@Component
+@Service("QueryStatistics")
+@Scope("singleton")
+public class QueryStatisticsService implements PulseService {
+
+  @Override
+  public JSONObject execute(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 {
+      Cluster.Statement[] stmts = cluster.getStatements();
+
+      JSONObject queryJSON;
+      JSONArray queryListJson = new JSONArray();
+      for (int i = 0; i < stmts.length; ++i) {
+        queryJSON = new JSONObject();
+        queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QUERYDEFINITION,
+            stmts[i].getQueryDefinition());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_NUMTIMESCOMPILED,
+            (stmts[i].getNumTimesCompiled() < 0) ? this.VALUE_NA : stmts[i]
+                .getNumTimesCompiled());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_NUMEXECUTION,
+            (stmts[i].getNumExecution() < 0) ? this.VALUE_NA : stmts[i]
+                .getNumExecution());
+        queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMEXECUTIONSINPROGRESS,
+            (stmts[i].getNumExecutionsInProgress() < 0) ? this.VALUE_NA
+                : stmts[i].getNumExecutionsInProgress());
+        queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMTIMESGLOBALINDEXLOOKUP,
+            (stmts[i].getNumTimesGlobalIndexLookup() < 0) ? this.VALUE_NA
+                : stmts[i].getNumTimesGlobalIndexLookup());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_NUMROWSMODIFIED,
+            (stmts[i].getNumRowsModified() < 0) ? this.VALUE_NA : stmts[i]
+                .getNumRowsModified());
+        queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_PARSETIME, (stmts[i]
+            .getParseTime() < 0) ? this.VALUE_NA : stmts[i].getParseTime());
+        queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_BINDTIME, (stmts[i]
+            .getBindTime() < 0) ? this.VALUE_NA : stmts[i].getBindTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_OPTIMIZETIME,
+            (stmts[i].getOptimizeTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getOptimizeTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_ROUTINGINFOTIME,
+            (stmts[i].getRoutingInfoTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getRoutingInfoTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_GENERATETIME,
+            (stmts[i].getGenerateTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getGenerateTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_TOTALCOMPILATIONTIME,
+            (stmts[i].getTotalCompilationTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getTotalCompilationTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_EXECUTIONTIME,
+            (stmts[i].getExecutionTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getExecutionTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_PROJECTIONTIME,
+            (stmts[i].getProjectionTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getProjectionTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_TOTALEXECUTIONTIME,
+            (stmts[i].getTotalExecutionTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getTotalExecutionTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_ROWSMODIFICATIONTIME,
+            (stmts[i].getRowsModificationTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getRowsModificationTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_QNNUMROWSSEEN,
+            (stmts[i].getqNNumRowsSeen() < 0) ? this.VALUE_NA : stmts[i]
+                .getqNNumRowsSeen());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_QNMSGSENDTIME,
+            (stmts[i].getqNMsgSendTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getqNMsgSendTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_QNMSGSERTIME,
+            (stmts[i].getqNMsgSerTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getqNMsgSerTime());
+        queryJSON.put(
+            PulseConstants.MBEAN_ATTRIBUTE_QNRESPDESERTIME,
+            (stmts[i].getqNRespDeSerTime() < 0) ? this.VALUE_NA : stmts[i]
+                .getqNRespDeSerTime());
+        queryListJson.put(queryJSON);
+      }
+      responseJSON.put("queriesList", queryListJson);
+
+      // return jmx status
+      responseJSON.put("connectedFlag", cluster.isConnectedFlag());
+      responseJSON.put("connectedErrorMsg", cluster.getConnectionErrorMsg());
+
+      // Send json response
+      return responseJSON;
+
+    } catch (JSONException e) {
+      throw new Exception(e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
new file mode 100644
index 0000000..2d089e4
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
@@ -0,0 +1,124 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+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.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;
+
+/**
+ * Class SystemAlertsService
+ * 
+ * This class contains implementations of getting system's alerts details (like
+ * errors, warnings and severe errors).
+ * 
+ * @author Anchal G
+ * @since version 7.5
+ */
+
+@Component
+@Service("SystemAlerts")
+@Scope("singleton")
+public class SystemAlertsService implements PulseService {
+
+  public JSONObject execute(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"));
+      int pageNumber = 1; // Default
+      String strPageNumber = requestDataJSON.getJSONObject("SystemAlerts")
+          .getString("pageNumber");
+      if (StringUtils.isNotNullNotEmptyNotWhiteSpace(strPageNumber)) {
+        try {
+          pageNumber = Integer.valueOf(strPageNumber);
+        } catch (NumberFormatException e) {
+        }
+      }
+
+      // clucter's Members
+      responseJSON.put("systemAlerts", getAlertsJson(cluster, pageNumber));
+      responseJSON.put("pageNumber", cluster.getNotificationPageNumber());
+      responseJSON.put("connectedFlag", cluster.isConnectedFlag());
+      responseJSON.put("connectedErrorMsg", cluster.getConnectionErrorMsg());
+
+    } catch (JSONException e) {
+      throw new Exception(e);
+    }
+
+    // Send json response
+    return responseJSON;
+  }
+
+  /**
+   * function used for getting all members details in format of JSON Object
+   * array defined under a cluster
+   * 
+   * @param cluster
+   * @return JSONObject Array list
+   */
+  public static JSONObject getAlertsJson(Cluster cluster, int pageNumber)
+      throws JSONException {
+    // getting list of all types of alerts
+    Cluster.Alert[] alertsList = cluster.getAlertsList();
+
+    // create alerts json
+    JSONObject alertsJsonObject = new JSONObject();
+
+    if ((alertsList != null) && (alertsList.length > 0)) {
+      JSONArray errorJsonArray = new JSONArray();
+      JSONArray severeJsonArray = new JSONArray();
+      JSONArray warningJsonArray = new JSONArray();
+      JSONArray infoJsonArray = new JSONArray();
+
+      cluster.setNotificationPageNumber(pageNumber);
+      for (Cluster.Alert alert : alertsList) {
+        JSONObject objAlertJson = new JSONObject();
+        objAlertJson.put("description", alert.getDescription());
+        objAlertJson.put("memberName", alert.getMemberName());
+        objAlertJson.put("severity", alert.getSeverity());
+        objAlertJson.put("isAcknowledged", alert.isAcknowledged());
+        objAlertJson.put("timestamp", alert.getTimestamp().toString());
+        objAlertJson.put("iso8601Ts", alert.getIso8601Ts());
+        objAlertJson.put("id", alert.getId());
+
+        if (alert.getSeverity() == Cluster.Alert.SEVERE) {
+          severeJsonArray.put(objAlertJson);
+        } else if (alert.getSeverity() == Cluster.Alert.ERROR) {
+          errorJsonArray.put(objAlertJson);
+        } else if (alert.getSeverity() == Cluster.Alert.WARNING) {
+          warningJsonArray.put(objAlertJson);
+        } else {
+          infoJsonArray.put(objAlertJson);
+        }
+      }
+      alertsJsonObject.put("info", infoJsonArray);
+      alertsJsonObject.put("warnings", warningJsonArray);
+      alertsJsonObject.put("errors", errorJsonArray);
+      alertsJsonObject.put("severe", severeJsonArray);
+    }
+    return alertsJsonObject;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
new file mode 100644
index 0000000..f1defe0
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
@@ -0,0 +1,36 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.internal.util;
+
+import java.io.IOException;
+
+import javax.net.SocketFactory;
+import javax.net.ssl.SSLSocketFactory;
+
+
+/**
+ * 
+ * @author rishim
+ *
+ */
+public class ConnectionUtil {
+
+  
+  
+  public static SocketFactory getSocketFactory(boolean usessl)
+    throws IOException
+  {
+    if(usessl){
+      return (SSLSocketFactory)SSLSocketFactory.getDefault();
+    }else{
+      return SocketFactory.getDefault();
+    }    
+  }
+  
+  
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
new file mode 100644
index 0000000..0c2b63e
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
@@ -0,0 +1,56 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.util;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+/* [ NOTE: 
+ * This class supposed to be removed, if required, after discussing with 
+ * VMware team ]
+ */
+/**
+ * Class IPAddressUtil This is utility class for checking whether ip address is
+ * versions i.e. IPv4 or IPv6 address
+ * 
+ * @author Sachin K
+ * 
+ * @since version 7.0.1
+ */
+public class IPAddressUtil {
+
+  private static Pattern VALID_IPV4_PATTERN = null;
+  private static Pattern VALID_IPV6_PATTERN = null;
+  private static final String ipv4Pattern = "(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])";
+  private static final String ipv6Pattern = "([0-9a-f]{1,4}:){7}([0-9a-f]){1,4}";
+
+  static {
+    try {
+      VALID_IPV4_PATTERN = Pattern.compile(ipv4Pattern,
+          Pattern.CASE_INSENSITIVE);
+      VALID_IPV6_PATTERN = Pattern.compile(ipv6Pattern,
+          Pattern.CASE_INSENSITIVE);
+    } catch (PatternSyntaxException e) {
+
+    }
+  }
+
+  public static Boolean isIPv4LiteralAddress(String IPAddress) {
+    Matcher matcher = IPAddressUtil.VALID_IPV4_PATTERN.matcher(IPAddress);
+    return matcher.matches();
+  }
+
+  public static Boolean isIPv6LiteralAddress(String IPAddress) {
+
+    Matcher matcher = IPAddressUtil.VALID_IPV6_PATTERN.matcher(IPAddress);
+    return matcher.matches();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
new file mode 100644
index 0000000..d9d75c3
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
@@ -0,0 +1,76 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.util;
+
+/**
+ * Class StringUtils This is utility class for string.
+ * 
+ * @author Sachin K
+ * 
+ * @since version 7.0.1
+ */
+public class StringUtils {
+  /**
+   * Checks the string if it is not null, not empty, and not white space only
+   * using standard Java classes.
+   * 
+   * @param string
+   *          String to be checked.
+   * @return {@code true} if provided String is not null, is not empty, and has
+   *         at least one character that is not considered white space.
+   */
+  public static boolean isNotNullNotEmptyNotWhiteSpace(final String string) {
+    return string != null && !string.isEmpty() && !string.trim().isEmpty();
+  }
+
+  /**
+   * Checking for String that is not null, not empty, and not white space only
+   * using standard Java classes.
+   * 
+   * @param value
+   *          String to be made compliant.
+   * @return string compliant string.
+   */
+  public static String makeCompliantName(String value) {
+    value = value.replace(':', '-');
+    value = value.replace(',', '-');
+    value = value.replace('=', '-');
+    value = value.replace('*', '-');
+    value = value.replace('?', '-');
+    if (value.length() < 1) {
+      value = "nothing";
+    }
+    return value;
+  }
+
+  /**
+   * Function to get table name derived from region name/full path
+   * 
+   * @param regionName
+   *          String to be made compliant.
+   * @return string compliant string.
+   */
+  public static String getTableNameFromRegionName(String regionName) {
+    String tableName = regionName.replaceFirst("/", "").replace('/', '.');
+    return tableName;
+  }
+
+  /**
+   * Function to get region name/full path derived from table name
+   * 
+   * @param regionName
+   *          String to be made compliant.
+   * @return string compliant string.
+   */
+  public static String getRegionNameFromTableName(String tableName) {
+    String regionName = "/" + tableName.replace('.', '/');
+    return regionName;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
----------------------------------------------------------------------
diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
new file mode 100644
index 0000000..27cd16b
--- /dev/null
+++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
@@ -0,0 +1,111 @@
+/*
+ * =========================================================================
+ *  Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ *  This product is protected by U.S. and international copyright
+ *  and intellectual property laws. Pivotal products are covered by
+ *  more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.util;
+
+/**
+ * Class TimeUtils 
+ * 
+ * This is utility class used for conversions of time.
+ * 
+ * @author Sachin K
+ * 
+ * @since version 7.0.1
+ */
+public class TimeUtils {
+
+  /**
+   * Method to converts time given in milliseconds to string representation in
+   * days, hours, minutes and seconds
+   * 
+   * @param longMilliSecs
+   *          Time in milliseconds.
+   * @return String
+   */
+  public static String convertTimeMillisecondsToHMS(long longMilliSecs) {
+
+    long days = longMilliSecs / (1000 * 60 * 60 * 24);
+    long remainder = longMilliSecs % (1000 * 60 * 60 * 24);
+
+    long hours = remainder / (1000 * 60 * 60);
+    remainder = remainder % (1000 * 60 * 60);
+
+    long mins = remainder / (1000 * 60);
+    remainder = remainder % (1000 * 60);
+
+    long secs = remainder / 1000;
+
+    String strDaysHrsMinsSecs = "";
+
+    if (days > 0) {
+      strDaysHrsMinsSecs += days + " Days ";
+    }
+
+    if (hours > 0) {
+      strDaysHrsMinsSecs += hours + " Hours ";
+    } else {
+      strDaysHrsMinsSecs += "0 Hours ";
+    }
+
+    if (mins > 0) {
+      strDaysHrsMinsSecs += mins + " Mins ";
+    } else {
+      strDaysHrsMinsSecs += "0 Mins ";
+    }
+
+    strDaysHrsMinsSecs += secs + " Secs";
+
+    return strDaysHrsMinsSecs;
+  }
+
+  /**
+   * Method to converts time given in seconds to string representation in days,
+   * hours, minutes and seconds
+   * 
+   * @param longSecs
+   *          Time in seconds.
+   * @return String
+   */
+  public static String convertTimeSecondsToHMS(long longSecs) {
+
+    long days = longSecs / (60 * 60 * 24);
+    long remainder = longSecs % (60 * 60 * 24);
+
+    long hours = remainder / (60 * 60);
+    remainder = remainder % (60 * 60);
+
+    long mins = remainder / (60);
+    remainder = remainder % (60);
+
+    long secs = remainder;
+
+    String strDaysHrsMinsSecs = "";
+
+    if (days > 0) {
+      strDaysHrsMinsSecs += days + " Days ";
+    }
+
+    if (hours > 0) {
+      strDaysHrsMinsSecs += hours + " Hours ";
+    } else {
+      strDaysHrsMinsSecs += "0 Hours ";
+    }
+
+    if (mins > 0) {
+      strDaysHrsMinsSecs += mins + " Mins ";
+    } else {
+      strDaysHrsMinsSecs += "0 Mins ";
+    }
+
+    strDaysHrsMinsSecs += secs + " Secs";
+
+    return strDaysHrsMinsSecs;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/LogMessages_en_US.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/LogMessages_en_US.properties b/pulse/src/main/resources/LogMessages_en_US.properties
new file mode 100644
index 0000000..b721b6d
--- /dev/null
+++ b/pulse/src/main/resources/LogMessages_en_US.properties
@@ -0,0 +1,78 @@
+#Log message for English, United State
+LOG_MSG_PULSE_VERSION = Pulse Version:
+LOG_MSG_CONTEXT_INITIALIZED = Context Initialized.. 
+LOG_MSG_CONTEXT_DESTROYED = Context Destroyed.. 
+LOG_MSG_CHECK_LOG_PROPERTIES_IN_FILE = Checking whether log configurations provided in properties file..
+LOG_MSG_CHECK_LOG_PROPERTIES_IN_SYSTEM_PROPERTIES = Checking whether log configurations provided through system properties..
+LOG_MSG_LOG_PROPERTIES_FOUND_IN_FILE = Some/All Log properties provided in properties file
+LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_FILE = None of the log properties provided in properties file
+LOG_MSG_LOG_PROPERTIES_FOUND_IN_SYSTEM_PROPERTIES = Some/All Log properties provided through system properties
+LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_SYSTEM_PROPERTIES = None of the log properties provided through system properties
+LOG_MSG_CHECK_APP_RUNNING_MODE = Checking whether Pulse is running in embedded mode..
+LOG_MSG_APP_RUNNING_EMBEDDED_MODE = Pulse is running in Embedded Mode..
+LOG_MSG_APP_RUNNING_NONEMBEDDED_MODE = Pulse is running in Non-Embedded Mode..
+LOG_MSG_APP_RUNNING_EMBEDDED_SQLF_MODE = Pulse is running in Embedded SQLF system
+LOG_MSG_GET_JMX_USER_DETAILS = Getting JMX User details from properties
+LOG_MSG_JMX_USER_DETAILS_FOUND = JMX User Details Found.. 
+LOG_MSG_JMX_USER_DETAILS_NOT_FOUND = JMX User Details Not Found.. 
+LOG_MSG_GET_LOCATOR_DETAILS_1 = Getting locator/manager details through System Properties..
+LOG_MSG_GET_LOCATOR_DETAILS_2 = Getting locator/Manager details from Properties File..
+LOG_MSG_LOCATOR_DETAILS_FOUND = Locator/Manager Properties Found..
+LOG_MSG_LOCATOR_DETAILS_NOT_FOUND = Locator/Manager Properties NOT Found..
+
+################Property File Related #####################
+LOG_MSG_PROPERTIES_FOUND = Pulse properties found in properties file
+LOG_MSG_PROPERTIES_NOT_FOUND = Pulse properties not found
+LOG_MSG_FILE_FOUND = File Found 
+LOG_MSG_COULD_NOT_READ_FILE = Could not read Properties File
+LOG_MSG_REASON_FILE_NOT_FOUND =  Reason: could not find Properties File..  
+LOG_MSG_REASON_COULD_NOT_READ_FILE =  Reason: could not read Properties File.. 
+LOG_MSG_REASON_USER_DETAILS_NOT_FOUND =  Reason: jmx user details not present in Properties File.. 
+LOG_MSG_EXCEPTION_CLOSING_INPUT_STREAM =  Exception while closing input stream for file
+LOG_MSG_EXCEPTION_LOADING_PROPERTIES_FILE =  Exception while loading properties from properties file
+
+###################################################################################
+
+LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_1 =  Reason: System Properties Not Found..
+LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_2 =  Reason: Properties not found in Properties File..
+
+
+LOG_MSG_CREATE_NEW_THREAD = Creating New Cluster Thread...
+LOG_MSG_REMOVE_THREAD = Removing Cluster Thread...
+LOG_MSG_START_THREAD_UPDATES = Starting update thread for cluster
+LOG_MSG_STOP_THREAD_UPDATES = Stopping update thread for cluster
+LOG_MSG_CLUSTER_DATA_IS_UPDATING = Updating Cluster data for Cluster
+
+LOG_MSG_USE_LOCATOR_VALUE = Use Locator is set
+LOG_MSG_HOST = Host
+LOG_MSG_PORT = Port
+LOG_MSG_WITH_SSL =  with SSL
+LOG_MSG_WITHOUT_SSL =  without SSL
+LOG_MSG_LOCATOR_COULD_NOT_FIND_MANAGER = Locator could not find a jmx manager
+LOG_MSG_LOCATOR_FOUND_MANAGER = Locator has found a jmx manager
+LOG_MSG_REGISTERING_APP_URL_TO_MANAGER = Registering Pulse App URL to JMX Manager..
+LOG_MSG_SETTING_APP_URL_TO_MANAGER = Setting Pulse App URL to JMX Manager..
+LOG_MSG_APP_URL_ALREADY_PRESENT_IN_MANAGER = Pulse App URL is already present in JMX Manager..
+LOG_MSG_JMX_GET_NEW_CONNECTION = Get new JMX connection..
+LOG_MSG_JMX_GETTING_NEW_CONNECTION = Getting new JMX connection..
+LOG_MSG_JMX_CONNECTION_NOT_FOUND = JMX Connection Not Found..
+LOG_MSG_JMX_CONNECTION_IS_AVAILABLE = JMX Connection is available..
+LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST = Unknown Host
+LOG_MSG_JMX_CONNECTION_IPv6_ADDRESS = Host has IPv6 Address
+LOG_MSG_JMX_CONNECTION_BAD_ADDRESS = Bad Host Address
+LOG_MSG_JMX_CONNECTION_TIME_OUT = Connection Timed Out
+
+LOG_MSG_LOCATOR_IPV4_ADDRESS = Locator has IPv4 Address
+LOG_MSG_LOCATOR_IPV6_ADDRESS = Locator has IPv6 Address
+LOG_MSG_LOCATOR_BAD_ADDRESS = Locator address is badly formed
+# For Data Browser
+LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_NOT_FOUND = Pulse Query History log file not found..
+LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_DESCRIPTION = Pulse Data Browser Query logs ..
+
+# For MOCK data
+LOG_MSG_REFRESHING_MEMBER_DATA = Refreshing data for member
+
+ 
+# For SSL messages 
+LOG_MSG_GET_SSL_DETAILS = Setting SSL properties
+LOG_MSG_SSL_NOT_SET = SSL properties are not mentioned in Pulse.properties while either pulse.useSSL.locator or pulse.useSSL.manager property is marked as true. Connection wont be successful.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/LogMessages_fr_FR.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/LogMessages_fr_FR.properties b/pulse/src/main/resources/LogMessages_fr_FR.properties
new file mode 100644
index 0000000..bb76fd6
--- /dev/null
+++ b/pulse/src/main/resources/LogMessages_fr_FR.properties
@@ -0,0 +1,72 @@
+#Log message for English, United State
+LOG_MSG_PULSE_VERSION = Pulse Version: french
+LOG_MSG_CONTEXT_INITIALIZED = Context Initialized..french 
+LOG_MSG_CONTEXT_DESTROYED = Context Destroyed..french
+LOG_MSG_CHECK_LOG_PROPERTIES_IN_FILE = Checking whether log configurations provided in properties file..
+LOG_MSG_CHECK_LOG_PROPERTIES_IN_SYSTEM_PROPERTIES = Checking whether log configurations provided through system properties..
+LOG_MSG_LOG_PROPERTIES_FOUND_IN_FILE = Some/All Log properties provided in properties file
+LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_FILE = None of the log properties provided in properties file
+LOG_MSG_LOG_PROPERTIES_FOUND_IN_SYSTEM_PROPERTIES = Some/All Log properties provided through system properties
+LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_SYSTEM_PROPERTIES = None of the log properties provided through system properties
+LOG_MSG_CHECK_APP_RUNNING_MODE = Checking whether Pulse is running in embedded mode..
+LOG_MSG_APP_RUNNING_EMBEDDED_MODE = Pulse is running in Embedded Mode..
+LOG_MSG_APP_RUNNING_NONEMBEDDED_MODE = Pulse is running in Non-Embedded Mode..
+LOG_MSG_APP_RUNNING_EMBEDDED_SQLF_MODE = Pulse is running in Embedded SQLF system
+LOG_MSG_GET_JMX_USER_DETAILS = Getting JMX User details from properties
+LOG_MSG_JMX_USER_DETAILS_FOUND = JMX User Details Found.. 
+LOG_MSG_JMX_USER_DETAILS_NOT_FOUND = JMX User Details Not Found.. 
+LOG_MSG_GET_LOCATOR_DETAILS_1 = Getting locator/manager details through System Properties..
+LOG_MSG_GET_LOCATOR_DETAILS_2 = Getting locator/Manager details from Properties File..
+LOG_MSG_LOCATOR_DETAILS_FOUND = Locator/Manager Properties Found..
+LOG_MSG_LOCATOR_DETAILS_NOT_FOUND = Locator/Manager Properties NOT Found..
+LOG_MSG_PROPERTIES_FOUND = Pulse properties found in properties file
+LOG_MSG_PROPERTIES_NOT_FOUND = Pulse properties not found
+LOG_MSG_PROPERTIES_FILE_FOUND = Properties File Found 
+LOG_MSG_COULD_NOT_READ_FILE = Could not read Properties File.. 
+
+LOG_MSG_REASON_FILE_NOT_FOUND =  Reason: could not find Properties File..  
+LOG_MSG_REASON_COULD_NOT_READ_FILE =  Reason: could not read Properties File.. 
+LOG_MSG_REASON_USER_DETAILS_NOT_FOUND =  Reason: jmx user details not present in Properties File.. 
+LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_1 =  Reason: System Properties Not Found..
+LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_2 =  Reason: Properties not found in Properties File..
+LOG_MSG_EXCEPTION_CLOSING_INPUT_STREAM =  Exception while closing input stream
+LOG_MSG_EXCEPTION_LOADING_PROPERTIES_FILE =  Exception while loading properties from properties file
+
+LOG_MSG_CREATE_NEW_THREAD = Creating New Cluster Thread...
+LOG_MSG_REMOVE_THREAD = Removing Cluster Thread...
+LOG_MSG_START_THREAD_UPDATES = Starting update thread for cluster
+LOG_MSG_STOP_THREAD_UPDATES = Stopping update thread for cluster
+LOG_MSG_CLUSTER_DATA_IS_UPDATING = Updating Cluster data for Cluster
+
+LOG_MSG_USE_LOCATOR_VALUE = Use Locator is set
+LOG_MSG_HOST = Host
+LOG_MSG_PORT = Port
+LOG_MSG_WITH_SSL =  with SSL
+LOG_MSG_WITHOUT_SSL =  without SSL
+LOG_MSG_LOCATOR_COULD_NOT_FIND_MANAGER = Locator could not find a jmx manager
+LOG_MSG_LOCATOR_FOUND_MANAGER = Locator has found a jmx manager
+LOG_MSG_REGISTERING_APP_URL_TO_MANAGER = Registering Pulse App URL to JMX Manager..
+LOG_MSG_SETTING_APP_URL_TO_MANAGER = Setting Pulse App URL to JMX Manager..
+LOG_MSG_APP_URL_ALREADY_PRESENT_IN_MANAGER = Pulse App URL is already present in JMX Manager..
+LOG_MSG_JMX_GET_NEW_CONNECTION = Get new JMX connection..
+LOG_MSG_JMX_GETTING_NEW_CONNECTION = Getting new JMX connection..
+LOG_MSG_JMX_CONNECTION_NOT_FOUND = JMX Connection Not Found..
+LOG_MSG_JMX_CONNECTION_IS_AVAILABLE = JMX Connection is available..
+LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST = Unknown Host
+LOG_MSG_JMX_CONNECTION_IPv6_ADDRESS = Host has IPv6 Address
+LOG_MSG_JMX_CONNECTION_BAD_ADDRESS = Bad Host Address
+LOG_MSG_JMX_CONNECTION_TIME_OUT = Connection Timed Out
+
+LOG_MSG_LOCATOR_IPV4_ADDRESS = Locator has IPv4 Address
+LOG_MSG_LOCATOR_IPV6_ADDRESS = Locator has IPv6 Address
+LOG_MSG_LOCATOR_BAD_ADDRESS = Locator address is badly formed
+# For Data Browser
+LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_NOT_FOUND = Pulse Query History log file not found..
+LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_DESCRIPTION = Pulse Data Browser Query logs ..
+
+# For MOCK data
+LOG_MSG_REFRESHING_MEMBER_DATA = Refreshing data for member 
+
+# For SSL messages 
+LOG_MSG_GET_SSL_DETAILS = Setting SSL properties
+LOG_MSG_SSL_NOT_SET = SSL properties are not mentioned in Pulse.properties while either pulse.useSSL.locator or pulse.useSSL.manager property is marked as true. Connection wont be successful.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/NoDataFound1.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/NoDataFound1.txt b/pulse/src/main/resources/NoDataFound1.txt
new file mode 100644
index 0000000..2fb180d
--- /dev/null
+++ b/pulse/src/main/resources/NoDataFound1.txt
@@ -0,0 +1 @@
+{"message":"No Data Found"}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/NoDataFound2.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/NoDataFound2.txt b/pulse/src/main/resources/NoDataFound2.txt
new file mode 100644
index 0000000..c22e3af
--- /dev/null
+++ b/pulse/src/main/resources/NoDataFound2.txt
@@ -0,0 +1,35 @@
+{"result":[
+  {"message":"No Data Found"},
+  {
+   "member":[["java.lang.String","SachinK(S1:5840)<v1>:24856"]],
+   "result":[
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]],
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]],
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]]
+    ]
+  },
+  
+  {"message":"No Data Found"},
+  
+  {"message":"No Data Found"},
+  
+  {
+   "member":[["java.lang.String","SachinK(S3:5230)<v1>:32145"]],
+   "result":[
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]],
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]],
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]]
+    ]
+  },
+  
+  {
+   "member":[["java.lang.String","SachinK(S2:7572)<v2>:14582"]],
+   "result":[
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]],
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]],
+     ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]]
+    ]
+  },
+  
+  {"message":"No Data Found"}
+]}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/NoDataFound3.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/NoDataFound3.txt b/pulse/src/main/resources/NoDataFound3.txt
new file mode 100644
index 0000000..a6248eb
--- /dev/null
+++ b/pulse/src/main/resources/NoDataFound3.txt
@@ -0,0 +1,6 @@
+{"result":[
+   {"message":"No Data Found"},
+   {"message":"No Data Found"},
+   {"message":"No Data Found"},
+   {"message":"No Data Found"}
+]}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/default.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/default.properties b/pulse/src/main/resources/default.properties
new file mode 100644
index 0000000..46903d7
--- /dev/null
+++ b/pulse/src/main/resources/default.properties
@@ -0,0 +1,4 @@
+# All properties which are common between GemFire & SQLFire are to be added here. 
+# No property to repeat in specific files of GemFire and SQLFire products
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/gemfire.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/gemfire.properties b/pulse/src/main/resources/gemfire.properties
new file mode 100644
index 0000000..9ee4fc6
--- /dev/null
+++ b/pulse/src/main/resources/gemfire.properties
@@ -0,0 +1,28 @@
+# All properties for GemFire are to be added here. 
+# No property to repeat from default file
+pulse-writeputpersec-custom=Write/Sec.
+pulse-readgetpersec-custom=Read/Sec.
+pulse-writes-custom=Writes
+pulse-reads-custom=Reads
+pulse-monitoring-custom=images/pulse-monitoring.png
+pulse-aboutimg-custom=images/about.png
+pulse-help-custom=http://gemfire.docs.pivotal.io/latest/userguide/index.html#tools_modules/pulse/chapter_overview.html
+pulse-about-custom=The Pulse tool monitors Pivotal&#0153; GemFire&#0169; system in real time. It provides health information, detailed operational and configuration data, system alerts, throughput performance and statistics for system members and connected clients.
+pulse-regionstableCaps-custom=Regions
+pulse-rtSummaryBySize-custom=Regions Summary - By Entry Count
+pulse-regionstablePath-custom=Region Path:&nbsp;
+pulse-regionstableType-custom=Region Type:&nbsp;
+pulse-regionstableMembers-custom=Region Members
+pulse-memberRegionsTables-custom=Member Regions
+pulse-regionstableInvolved-custom=Regions Involved
+pulse-regiontabletooltip-custom=Regions
+pulse-writesRate-custom=Writes Rate
+pulse-readsRate-custom=Reads Rate
+pulse-regiontablePathColName-custom=Region Path
+pulse-regiontableName-custom=Region Name
+pulse-regionMemoryUsage-custom=Memory Usage
+pulse-regionDiskReadsWrites-custom=Disk Reads/Writes
+pulse-regionMemoryReadsWrites-custom=Reads/Writes
+pulse-entrysize-custom=Entry Size
+pulse-entrycount-custom=Entry Count
+pulse-functionprocedureCaps-custom=Functions

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/message.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/message.txt b/pulse/src/main/resources/message.txt
new file mode 100644
index 0000000..fadced5
--- /dev/null
+++ b/pulse/src/main/resources/message.txt
@@ -0,0 +1 @@
+{"message":"No Data Found"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/pulse-users.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/pulse-users.properties b/pulse/src/main/resources/pulse-users.properties
new file mode 100644
index 0000000..22a58ba
--- /dev/null
+++ b/pulse/src/main/resources/pulse-users.properties
@@ -0,0 +1,11 @@
+#Pulse-Users Properties File
+#Tue, 09 Oct 2012 16:39:00
+
+# Currently none of the users should have role as "ROLE_RESTRICTED"  
+
+jim=jimbob,ROLE_USER,enabled
+#admin=admin,ROLE_USER,enabled
+
+user1=user1,ROLE_USER,enabled
+user2=user2,ROLE_USER,enabled
+user3=user3,ROLE_USER,enabled
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/pulse.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/pulse.properties b/pulse/src/main/resources/pulse.properties
new file mode 100644
index 0000000..17299c2
--- /dev/null
+++ b/pulse/src/main/resources/pulse.properties
@@ -0,0 +1,35 @@
+#Pulse JMX Locator/Manager Properties File
+#Tue, 09 Oct 2012 16:39:00
+
+# JMX Locator/Manager Properties
+#pulse.useLocator=true
+#pulse.host=SachinK.clarice.com
+#pulse.useLocator=true
+#pulse.host=pnq-pratik.vmware.com
+#pulse.port=10334
+
+pulse.useLocator=true
+pulse.host=pnq-pratik.vmware.com
+pulse.port=10334
+
+#pulse.useSSL.locator=true
+#pulse.useSSL.manager=true
+
+# JMX User Properties
+pulse.jmxUserName=controlRole
+pulse.jmxUserPassword=R&D
+
+# Logging Configurations Properties
+pulse.Log-File-Name=PULSELOG
+#pulse.Log-File-Location=F:\\PulseLogs
+pulse.Log-File-Size=1048576
+pulse.Log-File-Count=3
+pulse.Log-Date-Pattern=yyyy/MM/dd HH:mm:ss.SSS z
+pulse.Log-Level=info
+pulse.Log-Append=true
+
+# For supporting gemfire and sqlfire both in pulse
+# valid values are as follows 
+# for GemFire "gemfire" 
+# for GemFireXD "gemfirexd" 
+pulse.product=gemfire

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/pulsesecurity.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/pulsesecurity.properties b/pulse/src/main/resources/pulsesecurity.properties
new file mode 100644
index 0000000..dbb4117
--- /dev/null
+++ b/pulse/src/main/resources/pulsesecurity.properties
@@ -0,0 +1,7 @@
+########### SSL Related Properties to be set in an SSL enabled environment ######################
+#javax.net.ssl.keyStore={KeyStorePath}
+#javax.net.ssl.keyStorePassword={KeyStorePassword}
+#javax.net.ssl.trustStore={TrustStorePath}
+#javax.net.ssl.trustStorePassword={TrustStorePassword}
+
+##################################################################################################
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/pulseversion.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/pulseversion.properties b/pulse/src/main/resources/pulseversion.properties
new file mode 100644
index 0000000..d9c777b
--- /dev/null
+++ b/pulse/src/main/resources/pulseversion.properties
@@ -0,0 +1,14 @@
+#Pulse Properties File
+#Wed, 03 Oct 2012 16:58:00 -0700
+
+pulse.version=7.0.Beta
+#pulse.buildId=build 38339
+#pulse.buildDate=10/03/2012 16\:57\:56 PDT
+#pulse.sourceDate=10/03/2012 16\:47 \:40 PDT
+#pulse.sourceRevision=38339
+#pulse.sourceRepository=gemfire/trunk
+Build-Id=build 38339
+Build-Date=10/03/2012 16\:57\:56 PDT
+Source-Date=10/03/2012 16\:47 \:40 PDT
+Source-Revision=38339
+Source-Repository=gemfire/trunk
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/sqlfire.properties
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/sqlfire.properties b/pulse/src/main/resources/sqlfire.properties
new file mode 100644
index 0000000..e80fc45
--- /dev/null
+++ b/pulse/src/main/resources/sqlfire.properties
@@ -0,0 +1,28 @@
+# All properties for SQLFire are to be added here. 
+# No property to repeat from default file
+pulse-writeputpersec-custom=Put/Sec.
+pulse-readgetpersec-custom=Get/Sec.
+pulse-writes-custom=Writes
+pulse-reads-custom=Reads
+pulse-monitoring-custom=images/sqlfire.png
+pulse-aboutimg-custom=images/about-sqlfire.png
+pulse-help-custom=http://pubs.vmware.com/vfabricNoSuite/topic/com.vmware.vfabric.gemfire.7.0/tools_modules/pulse/chapter_overview.html
+pulse-about-custom=The Pulse tool monitors vFabric&#0153; SQLFire&#0169; system in real time. It provides health information, detailed operational and configuration data, system alerts, throughput performance and statistics for system members and connected clients.
+pulse-regionstableCaps-custom=Tables
+pulse-rtSummaryBySize-custom=Tables Summary - By Row Count
+pulse-regionstablePath-custom=Table Path:&nbsp;
+pulse-regionstableType-custom=Table Type:&nbsp;
+pulse-regionstableMembers-custom=Table Members
+pulse-memberRegionsTables-custom=Member Tables
+pulse-regionstableInvolved-custom=Tables Involved
+pulse-regiontabletooltip-custom=Tables
+pulse-writesRate-custom=Puts Rate
+pulse-readsRate-custom=Gets Rate
+pulse-regiontablePathColName-custom=Table Path
+pulse-regiontableName-custom=Table Name
+pulse-regionMemoryUsage-custom=Memory Usage
+pulse-regionDiskReadsWrites-custom=Disk Reads/Writes
+pulse-regionMemoryReadsWrites-custom=Reads/Writes
+pulse-entrysize-custom=Table Size
+pulse-entrycount-custom=Row Count
+pulse-functionprocedureCaps-custom=Procedures
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test1.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test1.txt b/pulse/src/main/resources/test1.txt
new file mode 100644
index 0000000..723d918
--- /dev/null
+++ b/pulse/src/main/resources/test1.txt
@@ -0,0 +1,5 @@
+{"result":[
+ ["java.lang.Integer",45],
+ ["java.lang.Integer",12],
+ ["java.lang.Integer",34]
+]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test2.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test2.txt b/pulse/src/main/resources/test2.txt
new file mode 100644
index 0000000..8a9bf2e
--- /dev/null
+++ b/pulse/src/main/resources/test2.txt
@@ -0,0 +1,7 @@
+{"result":[
+ ["java.lang.Integer",45],
+ ["java.lang.Integer",12],
+ ["java.lang.Integer",34],
+ ["String","anystring"],
+ ["String","anotherstring"]
+]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test3.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test3.txt b/pulse/src/main/resources/test3.txt
new file mode 100644
index 0000000..56c0c48
--- /dev/null
+++ b/pulse/src/main/resources/test3.txt
@@ -0,0 +1,5 @@
+{"result":[
+ ["int[]",[1000,1010,1020]],
+ ["int[]",[2000,2010,2020,2030]],
+ ["int[]",[3000,3010]]
+]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test4.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test4.txt b/pulse/src/main/resources/test4.txt
new file mode 100644
index 0000000..799ad9c
--- /dev/null
+++ b/pulse/src/main/resources/test4.txt
@@ -0,0 +1,4 @@
+{"result":[
+ ["java.util.ArrayList",{"0":["java.lang.String","seeta"],"1":["java.lang.String","geeta"],"2":["java.lang.String","meeta"]}],
+ ["java.util.ArrayList",{"0":["java.lang.String","sonu"],"1":["java.lang.String","monu"],"2":["java.lang.String","chinu"]}]
+]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test5.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test5.txt b/pulse/src/main/resources/test5.txt
new file mode 100644
index 0000000..342c11e
--- /dev/null
+++ b/pulse/src/main/resources/test5.txt
@@ -0,0 +1,7 @@
+{"result":[
+ ["java.util.ArrayList",{
+   "0":["java.lang.String[]",["one","two","three"]],
+   "1":["java.lang.String[]",["ek","do","teen"]],
+   "2":["java.lang.String[]",["one","two","three"]]
+ }]
+]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test6.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test6.txt b/pulse/src/main/resources/test6.txt
new file mode 100644
index 0000000..f086f62
--- /dev/null
+++ b/pulse/src/main/resources/test6.txt
@@ -0,0 +1,11 @@
+{"result":[
+  {"member":[["java.lang.String","pc68(7930)<v9>:30319"]],
+   "result":[
+     ["com.gemstone.gemfire.cache.query.data.PortfolioDummy[]",[
+      {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["j
 ava.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]},
+	    {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["ja
 va.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}
+	   ]]
+    ]
+  }
+ ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/test7.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/test7.txt b/pulse/src/main/resources/test7.txt
new file mode 100644
index 0000000..aaf128a
--- /dev/null
+++ b/pulse/src/main/resources/test7.txt
@@ -0,0 +1,13 @@
+{"result":[
+ ["com.gemstone.gemfire.cache.query.data.PortfolioDummy[]",[
+   {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["java
 .util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]},
+   {"type":["java.lang.String","type0"],"ID":["int",1],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["java
 .util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}
+ ]],
+ ["myObjects[]",[
+   {"type":["java.lang.String","type0"],"ID":["int",123],"active":["boolean",true]},
+   {"type":["java.lang.String","type0"],"ID":["int",234],"active":["boolean",false]},
+   {"type":["java.lang.String","type0"],"ID":["int",345],"active":["boolean",false]}
+ ]],
+ ["int[]",[1000,1010, 1030]],
+ ["int[]",[2000,2010]]
+]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt
----------------------------------------------------------------------
diff --git a/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt b/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt
new file mode 100644
index 0000000..dea74cf
--- /dev/null
+++ b/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt
@@ -0,0 +1,25 @@
+{"result":[
+    null,
+    
+    ["com.gemstone.gemfire.cache.query.data.PortfolioDummy",
+     {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["ja
 va.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}],
+     
+    ["com.gemstone.gemfire.cache.query.data.Portfolio",
+     {"type":["java.lang.String","type0"],"ID":null,"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["java.util.Ha
 shSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}],
+     
+    null,
+    
+    ["com.gemstone.gemfire.cache.query.data.Portfolio",
+     {"type":["java.lang.String","type2"],"ID":["int",2],"active":["boolean",true],"pk":["java.lang.String","2"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"SAP":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",8],"secId":["java.lang.String","SAP"],"mktValue":["double",9],"sharesOutstanding":["double",8000],"col":["java.util
 .HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"DELL":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",9],"secId":["java.lang.String","DELL"],"mktValue":["double",10],"sharesOutstanding":["double",9000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",7],"secId":["java.lang.String","ORCL"],"mktValue":["double",8],"sharesOutstanding":["double",7000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}],
+    
+    ["com.gemstone.gemfire.cache.query.data.Portfolio",
+     {"type":["java.lang.String","type0"],"ID":["int",3],"active":["boolean",false],"pk":["java.lang.String","3"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"HP":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",12],"secId":["java.lang.String","HP"],"mktValue":["double",13],"sharesOutstanding":["double",12000],"col":["java.ut
 il.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"SUN":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",13],"secId":["java.lang.String","SUN"],"mktValue":["double",14],"sharesOutstanding":["double",13000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",10],"secId":["java.lang.String","RHAT"],"mktValue":["double",11],"sharesOutstanding":["double",10000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",11],"secId":["java.lang.String","NOVL"],"mktValue":["double",12],"sharesOutstanding":["double",11000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}],
+    
+    null,
+    
+    null,
+    
+    ["com.gemstone.gemfire.cache.query.data.Portfolio",
+     {"type":["java.lang.String","type2"],"ID":["int",5],"active":["boolean",false],"pk":["java.lang.String","5"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"APPL":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",19],"secId":["java.lang.String","APPL"],"mktValue":["double",20],"sharesOutstanding":["double",19000],"col":["jav
 a.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"ORCL":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",20],"secId":["java.lang.String","ORCL"],"mktValue":["double",21],"sharesOutstanding":["double",20000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",17],"secId":["java.lang.String","MSFT"],"mktValue":["double",18],"sharesOutstanding":["double",17000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",18],"secId":["java.lang.String","AOL"],"mktValue":["double",19],"sharesOutstanding":["double",18000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}]   
+    ]
+}
\ No newline at end of file