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/01/21 23:55:16 UTC

[35/96] [abbrv] [partial] incubator-geode git commit: GEODE-12: rename pulse to gemfire-pulse and make build pass

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
new file mode 100644
index 0000000..29a533c
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
new file mode 100644
index 0000000..2549eb9
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
new file mode 100644
index 0000000..67ff368
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
new file mode 100644
index 0000000..e936ec1
--- /dev/null
+++ b/gemfire-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 {
+
+  String VALUE_NA = "NA";
+  String VALUE_ON = "ON";
+  String VALUE_OFF = "OFF";
+
+  JSONObject execute(HttpServletRequest httpServletRequest)
+      throws Exception;
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
new file mode 100644
index 0000000..08d12fe
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
new file mode 100644
index 0000000..5b5ae57
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
new file mode 100644
index 0000000..30ec856
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
new file mode 100644
index 0000000..2d089e4
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
new file mode 100644
index 0000000..f1defe0
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
new file mode 100644
index 0000000..0c2b63e
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
new file mode 100644
index 0000000..d9d75c3
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
new file mode 100644
index 0000000..27cd16b
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/LogMessages_en_US.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/LogMessages_en_US.properties b/gemfire-pulse/src/main/resources/LogMessages_en_US.properties
new file mode 100644
index 0000000..b721b6d
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/LogMessages_fr_FR.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/LogMessages_fr_FR.properties b/gemfire-pulse/src/main/resources/LogMessages_fr_FR.properties
new file mode 100644
index 0000000..bb76fd6
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/default.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/default.properties b/gemfire-pulse/src/main/resources/default.properties
new file mode 100644
index 0000000..46903d7
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/gemfire.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/gemfire.properties b/gemfire-pulse/src/main/resources/gemfire.properties
new file mode 100644
index 0000000..9ee4fc6
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/pulse-users.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/pulse-users.properties b/gemfire-pulse/src/main/resources/pulse-users.properties
new file mode 100644
index 0000000..22a58ba
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/pulse.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/pulse.properties b/gemfire-pulse/src/main/resources/pulse.properties
new file mode 100644
index 0000000..25c19bc
--- /dev/null
+++ b/gemfire-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=false
+pulse.host=localhost
+pulse.port=9999
+
+#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/446f451a/gemfire-pulse/src/main/resources/pulsesecurity.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/pulsesecurity.properties b/gemfire-pulse/src/main/resources/pulsesecurity.properties
new file mode 100644
index 0000000..dbb4117
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/resources/sqlfire.properties
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/resources/sqlfire.properties b/gemfire-pulse/src/main/resources/sqlfire.properties
new file mode 100644
index 0000000..e80fc45
--- /dev/null
+++ b/gemfire-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/446f451a/gemfire-pulse/src/main/webapp/DataBrowser.html
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/webapp/DataBrowser.html b/gemfire-pulse/src/main/webapp/DataBrowser.html
new file mode 100644
index 0000000..6a68077
--- /dev/null
+++ b/gemfire-pulse/src/main/webapp/DataBrowser.html
@@ -0,0 +1,350 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge" />
+<meta http-equiv="CACHE-CONTROL" content="NO-CACHE,NO-STORE" />
+<meta http-equiv="PRAGMA" content="NO-CACHE" />
+<meta http-equiv="EXPIRES" content="-1">
+<title>Pulse</title>
+<link href="css/common.css" rel="stylesheet" type="text/css" />
+<link href="css/style.css" rel="stylesheet" type="text/css" />
+
+<!-- fix IE Ui issues-->
+<!--[if IE 7]>
+                <link href="css/ie/ie7.css" type="text/css" rel="stylesheet"/>
+         <![endif]-->
+<!--[if IE 8]>
+                <link href="css/ie/ie8.css" type="text/css" rel="stylesheet"/>
+         <![endif]-->
+<!--[if IE 9]>
+                <link href="css/ie/ie9.css" type="text/css" rel="stylesheet"/>
+         <![endif]-->
+<!-- IE Fix for HTML5 Tags -->
+<!--[if lt IE 9]>
+        <script src='scripts/lib/html5.js'></script>
+        <script type="text/javascript" src="scripts/lib/excanvas.js"></script>
+        <script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
+                <![endif]-->
+
+<script type="text/javascript" src='scripts/lib/jquery-1.7.2.js'></script>
+<script type="text/javascript" src='scripts/lib/common.js'></script>
+
+<!--Splitter-->
+<script src="scripts/lib/jquery.splitter-0.5.js"></script>
+<link href="css/jquery.splitter.css" rel="stylesheet" />
+
+<!--Custom Scroll Bar-->
+<!-- styles needed by jScrollPane - include in your own sites -->
+<link type="text/css" href="css/jquery.jscrollpane.css" rel="stylesheet"
+	media="all" />
+<!-- the mousewheel plugin -->
+<script type="text/javascript" src="scripts/lib/jquery.mousewheel.js"></script>
+<!-- the jScrollPane script -->
+<script type="text/javascript" src="scripts/lib/jquery.jscrollpane.js"></script>
+<!--Place Holder tag-->
+<script type="text/javascript" src="scripts/lib/jquery.placeholder.js"></script>
+
+<!-- Grid view CSS and js-->
+<link rel="stylesheet" type="text/css" media="screen" href="css/grid/ui.jqgrid.css" />
+<script src="scripts/lib/grid.locale-en.js" type="text/javascript"></script>
+<script src="scripts/lib/jquery.jqGrid.src.js" type="text/javascript"></script>
+<script src="scripts/lib/jquery.tablednd.js" type="text/javascript"></script>
+<!-- -->
+<!--Tree View-->
+<link type="text/css" href="css/treeView/Treemap.css" rel="stylesheet" />
+<script type="text/javascript" src="scripts/lib/jit.js"></script>
+
+<!-- popups-->
+<link href="css/popup.css" rel="stylesheet" type="text/css" />
+<!-- Customize checkbox & radiobutton -->
+<script type="text/javascript" src="scripts/lib/checkBox-RadioButton.js"></script>
+<!-- Treeview JSON -->
+<script type="text/javascript" src="scripts/lib/jquery.ztree.core-3.5.js"></script>
+<script type="text/javascript" src="scripts/lib/jquery.ztree.excheck-3.5.js"></script>
+<link rel="stylesheet" href="css/jquery.ztreestyle.css" type="text/css">
+
+<!-- jQuery plugin to support automatically updating fuzzy timestamps 
+(e.g. "4 minutes ago" or "about 1 day ago") -->
+<script type="text/javascript" src="scripts/lib/jquery.timeago.js"></script>
+
+<!-- start:Data Browser widget based js files -->
+<script type="text/javascript" src="scripts/pulsescript/PulseCallbacks.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/PulseFunctions.js"></script>
+<script type="text/javascript" src='scripts/pulsescript/common.js'></script>
+<!-- end:Data Browser widget based js files -->
+
+<!-- end:Data Browser Page JS files -->
+
+<script type="text/javascript" src="scripts/pulsescript/pages/DataBrowser.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/pages/DataBrowserQuery.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/pages/DataBrowserQueryHistory.js"></script>
+
+<!-- Jquery based plugin for exporting data to a file -->
+<script type="text/javascript" src="scripts/lib/jquery.generateFile.js"></script>
+
+</head>
+
+<body>
+	<!-- Connection lost-->
+	<div class="connectionLostMasterBlock hide" id="connectionStatusDiv">
+		<div class="connectionLostInnerBlock">
+			<label class="left">Connecting ...</label>
+			<div class="clear"></div>
+			<div id="connectionErrorMsgDiv" class="right"></div>
+		</div>
+	</div>
+
+	<div id="canvasWidth">
+		<!--Top Links-->
+		<div class="headerTopLinksMaster">
+			<div class="right">
+				<div class="left position-relative"><a href="#." class="left headerTopLinks aboutClicked-Off">About</a>
+					<!-- About Dropdown-->
+	        <div id="detailsAbout" class="aboutBlock display-none">
+	          <div class="aboutDetailsBlock">
+	            <div class="left widthfull-100per marginBottom30">
+	              <div class="left"><img src="images/about.png">
+	                <div>
+	                 <div class="aboutVersionBlock left" id="pulseVersion"></div>
+	                 <div class="left termsBlock">&nbsp;<a id="pulseVersionDetailsLink" href="#dialog1" class="display-none" >Version Details</a></div>
+	                </div>
+	              </div>
+	              <div class="right aboutText">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.</div>
+	            </div>
+	            <div class="left widthfull-100per">
+	                <div class="left copyright">
+	                  Copyright &#0169; 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 <a href="http://www.pivotal.io/patents"
+                  target="_blank" class="termsBlockLink text-center">http://www.pivotal.io/patents</a>.
+	                </div>
+	               
+	                <div class="left copyright">Pivotal is a registered
+	                  trademark or trademark of Pivotal Software, Inc. in the United States and
+	                  other jurisdictions. All other marks and names mentioned herein
+	                  may be trademarks of their respective companies.</div>
+	               
+	                <div class="left termsBlock">
+	                  <a href="oslicenses.txt" target="_blank">Open Source
+	                    Licenses</a>
+	                </div>
+	               <!--  <div class="right termsBlock">
+	                  Pulse <a href="#.">Terms of Service</a>
+	                </div>-->
+	              </div>
+	            </div>
+	        </div>
+				</div>
+				<div class="left headerTopSeperator"></div>
+	      <div class="left"><a target="_blank" href="http://gemfire.docs.pivotal.io/latest/userguide/index.html#tools_modules/pulse/chapter_overview.html" class="left headerTopLinks">Help</a></div>
+	      <div class="left headerTopSeperator"></div>
+	      <div class="left headerTopLinks welcomeLabelPRZero">Welcome</div>
+	      <div class="left headerTopLinks textbold font-size12" id="userName"></div>
+	      <div class="left headerTopSeperator"></div>
+	      <div class="left"><a href="pulse/clusterLogout" class="left headerTopLinks">Sign Out</a></div>
+			</div>
+		</div>
+		<!-- Header block-->
+		<header>
+      <div class="left">
+        <a id="clusterNameLink" href="#." class="left textbold HeaderLink HeaderLinkActive" onclick="openClusterDetail();">Cluster View</a>
+      </div>
+			<div class="textbold right logoBlock">
+				<a href="#.">[LOGO]</a>
+			</div>
+		</header>
+		<div class="clear"></div>
+		<div class="subHeader">
+		<ul>
+			<li><a href="#." onclick="openClusterDetail();">Cluster View</a></li>
+			<li><a href="#." class="active" onclick="openDataBrowser();">Data Browser</a></li>
+			<!-- Hide Query Statistics tab for gemfire -->
+			<li id="subTabQueryStatistics"><a href="#." onclick="openQueryStatistics();">Query Statistics</a></li>
+		</ul>
+		<div class="clear"></div>
+		</div>
+		<!-- Middle block-->
+		<div class="left widthfull-100per">
+			<!--Top Right Block 1-->
+			<div class="right widthfull-100per marginTB10">
+                            
+				<!-- Tab-->
+				<div id="notificationsPanel" class="right marginL10 TabTopPanel position-relative" 
+				data-role="widget" data-widgetid="CluserAlertNotification" data-active ="yes" data-timeline="5000">
+				</div>
+				<!--   <div class="right marginL10"><a href="dataView.html" class="left linkButton">Cluster View</a></div>-->
+				<div class="left position-relative breadCrumbs">
+					<label class="font-size20">Data Browser</label>
+				</div>
+			</div>
+			<!--Middle Block 1-->
+			<div class="left leftBlockCanvas">
+				<!-- Splitter Master-->
+				<div class="splitterMaster">
+					<div class="splitterInnerBlock">
+						<div id="widget">
+							<!-- Left splitter-->
+							<div id="leftBlock">
+								<div class="leftTopSplitterSpacing">
+								  <div class="rightInnerBlocks">
+								    <a class="active" href="#.">Data Regions</a>
+								  </div>
+									<!-- Search Block 1-->
+									<div class="left widthfull-100per canvasBlockInnerBlock">
+										<!-- Search-->
+										<div class="regionNameSearch position-relative">
+											<div class="searchBlockRegion">
+												<input type="button" class="searchButtonRegion"> <input
+													type="text" id="filterTextRegion" placeholder="Type a Name"
+													class="searchBoxRegion" onKeyUp="applyFilterOnRegions();">
+											</div>
+										</div>
+									</div>
+									<!-- Block 2-->
+									<div class="pointGridHeading">
+										<a id="linkColocatedRegions" href="#." 
+										  class="colocatedRegionsLink disabledLink" 
+										  onclick="showColocatedRegions();">Colocated Regions</a>
+										<a id="linkAllRegions" href="#." 
+										  class="colocatedRegionsLink disabledLink"
+										  onclick="showAllRegions();">All Regions</a>
+										<input type="hidden" id="selectedRegion" value=""/>
+									</div>
+									<!-- Block 3 with scroll-->
+									<div class="ScrollPaneBlock leftSliderScrollRegion">
+										<div class="splitterScrollRegionInnerBlock">
+											<!-- Tree View-->
+											<ul id="treeDemo" class="ztree">
+											</ul>
+										</div>
+										<div style="clear: both"></div>
+									</div>
+								</div>
+								<!-- Members List Block-->
+								<div class="">
+								  <div class="rightInnerBlocks btm_pnl">
+								    <a href="#." class="active">Region Members</a>
+								  </div>
+								  <div class="ScrollPaneBlock leftSliderScrollMembers" style="background:#132634;">
+								    <div class="splitterScrollMembersInnerBlock">
+								      <ul id="membersList">
+								      </ul>
+								    </div>
+								    <div style="clear:both"></div>
+								  </div>
+								</div>
+							</div>
+							<!--Right splitter -->
+							<div id="rightBlock">
+								<!-- Tab links-->
+								<div class="rightInnerBlocks ">
+								  <a href="#." class="active">Queries</a>
+								</div>
+								<!-- Query Block-->
+								<div class="queryMasterBlock">
+								  <a href="#." class="historyClicked-Off" id="historyIcon">History</a>
+                                  <!-- Query Block-->
+                                  <div class="queryHistoryScroll-pane" id="detailsHistory">
+                                  <div id="detailsHistoryList"></div>
+                                  </div>
+									<div class="queryInnerBlock queriesblock marginTB15-10">
+										<div class="queryHistoryBlock">
+											<label class="queryBlocklabel">Query Editor</label> 
+										</div>
+										<div class="quertTextaremargin textareadiv">
+											<!-- Textarea-->
+											<textarea class="queryTextarea" id="dataBrowserQueryText" onkeyup="onQueryTextChange();"
+												placeholder="Write query here"></textarea>
+											<!-- Buttons-->
+											
+										</div>
+										<input type="reset" value="Clear" class="right buttonCss blue" onclick="clearDBQuery()">
+                                        <input type="button" id="btnExecuteQuery" disabled="disabled" value="Execute" class="right buttonCss grey" onclick="executeDBQuery()">
+									</div>
+								</div>
+								<div class="queryInnerBlock marginBottomResult">
+									<label class="queryBlocklabel marginResult left">Result</label>
+									<div id="loaderSymbolWrapper" class="loaderParent">
+									  <div id="loadingSymbol" class="loader"></div>
+									</div>
+								</div>
+								<div class="ScrollPaneBlock" style="height: 460px;">
+									<div class="expCollMaster">
+										<!-- Accordion-->
+										<div class="accordion" id="memberAccordion">
+										</div>
+										<div style="clear: both"></div>
+									</div>
+								</div>
+								<div class="quertTextaremargin">
+									<!-- Buttons-->
+									<input type="button" value="Export Result"
+										class="right buttonCss blue" onclick="exportResult();">
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+	<!--Popups Block-->
+	<div id="boxes">
+		<!-- Version Details popup-->
+		<div id="dialog1" class="window width345">
+			<div class="popup_heading">
+				<span>Version Details</span><a href="#" class="closePopup">&nbsp;</a>
+			</div>
+			<div class="popup_contentBlock">
+				<div class="popup-innerblock">
+					<ul class="widthfull-100per left">
+						<li class="left widthfull-100per"><label
+							class="width-40 display-inline-block">Pulse Version:</label> <label
+							class="width-58 display-inline-block" id="pulseVer"></label></li>
+						<li class="left widthfull-100per"><label
+							class="width-40 display-inline-block">Build Id:</label> <label
+							class="width-58 display-inline-block" id="buildId"></label></li>
+						<li class="left widthfull-100per"><label
+							class="width-40 display-inline-block">Build Date:</label> <label
+							class="width-58 display-inline-block" id="buildDate"></label></li>
+						<li class="left widthfull-100per"><label
+							class="width-40 display-inline-block">Source Date:</label> <label
+							class="width-58 display-inline-block" id="sourceDate"></label></li>
+						<li class="left widthfull-100per"><label
+							class="width-40 display-inline-block">Source Revision:</label> <label
+							class="width-58 display-inline-block" id="sourceRevision"></label>
+						</li>
+						<li class="left widthfull-100per"><label
+							class="width-40 display-inline-block">Source Repository:</label>
+							<label class="width-58 display-inline-block"
+							id="sourceRepository"></label></li>
+					</ul>
+					<div class="clear"></div>
+				</div>
+			</div>
+		</div>
+  <!-- Grid Details popup-->
+  <div id="gridPopup" class="window width700" >
+    <div class="popup_heading"><span>Object Explorer</span><a href="#" class="closePopup">&nbsp;</a></div>
+    <div class="popup_contentBlock">
+      <div class="popup-innerblock">
+        <table id="treegrid"><tr><td/></tr></table>
+      </div>
+      <div class="popup-innerblock">
+        <table id="popUpExplorer"><tr><td/></tr></table>
+      </div>
+    </div>
+  </div>
+		<!-- Mask to cover the whole screen -->
+		<div id="mask"></div>
+	</div>
+	<div id="tooltip" class="tooltip"></div>
+	<!-- Placeholder-->
+	<script>
+$('input[placeholder], textarea[placeholder]').placeholder();
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/main/webapp/Login.html
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/webapp/Login.html b/gemfire-pulse/src/main/webapp/Login.html
new file mode 100644
index 0000000..da68a87
--- /dev/null
+++ b/gemfire-pulse/src/main/webapp/Login.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge" />
+<meta http-equiv="CACHE-CONTROL" content="NO-CACHE,NO-STORE" />
+<meta http-equiv="PRAGMA" content="NO-CACHE" />
+<meta http-equiv="EXPIRES" content="-1">
+<title>Pulse</title>
+
+<!--  CSS Files -->
+<link href="css/common.css" rel="stylesheet" type="text/css" />
+<link href="css/style.css" rel="stylesheet" type="text/css" />
+<!-- fix IE Ui issues-->
+<!--[if IE]>
+    <link href="css/ie/ie.css" type="text/css" rel="stylesheet"/>
+ <![endif]-->
+<!--[if IE 7]>
+  <link href="css/ie/ie7.css" type="text/css" rel="stylesheet"/>
+ <![endif]-->
+<!--[if IE 8]>
+  <link href="css/ie/ie8.css" type="text/css" rel="stylesheet"/>
+ <![endif]-->
+<!--[if IE 9]>
+  <link href="css/ie/ie9.css" type="text/css" rel="stylesheet"/>
+ <![endif]-->
+<!--  END CSS FILES -->
+
+<!-- JS FILES -->
+<!-- IE Fix for HTML5 Tags -->
+<!--[if lt IE 9]>
+<script src='js/html5.js'></script>
+  <![endif]-->
+<script type="text/javascript" src="scripts/lib/jquery-1.7.2.js"></script>
+<script type="text/javascript" src="scripts/lib/jquery.i18n.properties.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/PulseCallbacks.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/PulseFunctions.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/common.js"></script>
+<script type="text/javascript" src="scripts/pulsescript/pages/Login.js"></script>
+
+<!--Place Holder tag-->
+<script type="text/javascript" src="scripts/lib/jquery.placeholder.js"></script>
+<!-- END JS FILES -->
+
+<script type="text/javascript">
+$(function(){
+  $("#loginForm").submit(function(){
+    if(!validate()) 
+      return false;
+  });
+});
+</script>
+</head>
+
+<body onload="pageOnLoad();" class="bodyLoginBg">
+<div id="loginWidth"> 
+  <!-- Header block-->
+  <header>
+    <div class="textbold right logoBlock"><a href="#.">[LOGO]</a></div>
+  </header>
+  <div class="clear"></div>
+  <!-- Middle block-->
+  <div class="loginMasterBlock">
+    <div class="pulseBottomSpace"><img data-prod-custom="pulse-monitoring-custom" src="images/pulse-monitoring.png">
+      <div class="text-center" id="pulseVersion"></div>
+    </div>
+    <!-- error Block-->
+    <div id="errorMasterBlock" class="errorMasterBlock" style="display:none;">
+      <div id="errorText" class="errorInnerIcon"> </div>
+    </div>
+    <div class="loginInnerBlock">
+    <form method="POST" action="j_spring_security_check" name="loginForm" id="loginForm" autocomplete="off">
+      <input class="inputUserName" type="text" name="j_username" id="user_name"  placeholder="Username" autofocus="autofocus" autocomplete="off">
+      <input style="display:none;" type="password" id="fool_password" autocomplete="off">
+      <input class="inputPassword" type="password" name="j_password" id="user_password" placeholder="Password" autocomplete="off">
+      <!-- Locator host and port are removed for a time -->
+      <!-- <input class="inputUserName" type="text" name="locator_host" id="locator_host" placeholder="Host">
+      <input class="inputUserName" type="text" name="locator_port" id="locator_port" placeholder="Port">-->
+      <input type="submit" value="Sign In" class="signInButton">
+    </form>
+    </div>
+    <br>
+    <div class="text-center copyright">Copyright &#0169; 2012-2014 Piovtal Software, Inc. All rights reserved.</div>
+  </div>
+</div>
+<!-- Placeholder--> 
+<script>
+$('input[placeholder], textarea[placeholder]').placeholder();
+</script>
+
+	<!-- <div style="width:100%; padding-top: 20%; padding-bottom: 20%;"> 
+    <div style="margin-left: 30%;">
+      <div style="float:left; border-right: medium solid #CCCCCC;">
+        <form method="POST" action="ClusterLogin" name="loginForm" id="loginForm">
+          <div style="width: 300px; padding-top: 10px;">
+            <span style="width:50px;">User Name:</span>
+            <input type="text" name="user_name" id="user_name" style="float: right; margin-right: 10px;" />
+          </div>
+          <div style="width: 300px; padding-top: 10px;">
+            <span style="width:50px;">Password:</span>
+            <input type="password" name="user_password" id="user_password" style="float: right; margin-right: 10px;" />
+          </div>
+          <div id="locatorHostDiv" style="width: 300px; padding-top: 10px;">
+            <span style="width:50px;">Locator Host:</span>
+            <input type="text" name="locator_host" id="locator_host" style="float: right; margin-right: 10px;" />
+          </div>
+          <div id="locatorPortDiv" style="width: 300px; padding-top: 10px;">
+            <span style="width:50px;">Locator Port:</span>
+            <input type="text" name="locator_port" id="locator_port" style="float: right; margin-right: 10px;" />
+          </div>
+	        <div style="width: 300px; padding-top: 10px;">
+            <input type="reset" value="Cancel" style="float: right; margin-right: 10px;" />
+            <input type="submit" value="Submit" style="float: right; margin-right: 10px;" />
+          </div>
+	      </form>
+	      <label id="errorText" style="color: #FF0000;"></label>
+      </div>
+      <div style="float:left; margin: 40px; ">
+        <div style="font-size: xx-large; text-align: center;"><label>Pulse</label></div>
+        <div><label>GemFire Monitoring</label></div>
+      </div>
+    </div>
+  </div> -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/webapp/META-INF/MANIFEST.MF b/gemfire-pulse/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5e94951
--- /dev/null
+++ b/gemfire-pulse/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+