http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
deleted file mode 100644
index dd84b75..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberGatewayHubService.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Class MemberGatewayHubService
- * 
- * This class contains implementations of getting Gateway Receivers and Senders
- * details of Cluster Member.
- * 
- * @since GemFire version 7.5
- */
-@Component
-@Service("MemberGatewayHub")
-@Scope("singleton")
-public class MemberGatewayHubService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    JsonNode requestDataJSON = 
mapper.readTree(request.getParameter("pulseData"));
-    String memberName = 
requestDataJSON.get("MemberGatewayHub").get("memberName").textValue();
-
-    Cluster.Member clusterMember = cluster.getMember(StringUtils
-        .makeCompliantName(memberName));
-
-    if (clusterMember != null) {
-      // response
-      // get gateway receiver
-      Cluster.GatewayReceiver gatewayReceiver = 
clusterMember.getGatewayReceiver();
-
-      Boolean isGateway = false;
-
-      if (gatewayReceiver != null) {
-        responseJSON.put("isGatewayReceiver", true);
-        responseJSON.put("listeningPort", gatewayReceiver.getListeningPort());
-        responseJSON.put("linkTroughput", gatewayReceiver.getLinkThroughput());
-        responseJSON.put("avgBatchLatency", 
gatewayReceiver.getAvgBatchProcessingTime());
-      } else {
-        responseJSON.put("isGatewayReceiver", false);
-      }
-
-      // get gateway senders
-      Cluster.GatewaySender[] gatewaySenders = 
clusterMember.getMemberGatewaySenders();
-
-      if (gatewaySenders.length > 0) {
-        isGateway = true;
-      }
-      responseJSON.put("isGatewaySender", isGateway);
-      // Senders
-      ArrayNode gatewaySendersJsonList = mapper.createArrayNode();
-
-      for (Cluster.GatewaySender gatewaySender : gatewaySenders) {
-        ObjectNode gatewaySenderJSON = mapper.createObjectNode();
-        gatewaySenderJSON.put("id", gatewaySender.getId());
-        gatewaySenderJSON.put("queueSize", gatewaySender.getQueueSize());
-        gatewaySenderJSON.put("status", gatewaySender.getStatus());
-        gatewaySenderJSON.put("primary", gatewaySender.getPrimary());
-        gatewaySenderJSON.put("senderType", gatewaySender.getSenderType());
-        gatewaySenderJSON.put("batchSize", gatewaySender.getBatchSize());
-        gatewaySenderJSON.put("PersistenceEnabled", 
gatewaySender.getPersistenceEnabled());
-        gatewaySenderJSON.put("remoteDSId", gatewaySender.getRemoteDSId());
-        gatewaySenderJSON.put("eventsExceedingAlertThreshold", 
gatewaySender.getEventsExceedingAlertThreshold());
-
-        gatewaySendersJsonList.add(gatewaySenderJSON);
-      }
-      // senders response
-      responseJSON.put("gatewaySenders", gatewaySendersJsonList);
-
-      // async event queues
-      Cluster.AsyncEventQueue[] asyncEventQueues = 
clusterMember.getMemberAsyncEventQueueList();
-      ArrayNode asyncEventQueueJsonList = mapper.createArrayNode();
-
-      for (Cluster.AsyncEventQueue asyncEventQueue : asyncEventQueues) {
-        ObjectNode asyncEventQueueJSON = mapper.createObjectNode();
-        asyncEventQueueJSON.put("id", asyncEventQueue.getId());
-        asyncEventQueueJSON.put("primary", asyncEventQueue.getPrimary());
-        asyncEventQueueJSON.put("senderType", asyncEventQueue.isParallel());
-        asyncEventQueueJSON.put("batchSize", asyncEventQueue.getBatchSize());
-        asyncEventQueueJSON.put("batchTimeInterval", 
asyncEventQueue.getBatchTimeInterval());
-        asyncEventQueueJSON.put("batchConflationEnabled", 
asyncEventQueue.isBatchConflationEnabled());
-        asyncEventQueueJSON.put("asyncEventListener", 
asyncEventQueue.getAsyncEventListener());
-        asyncEventQueueJSON.put("queueSize", 
asyncEventQueue.getEventQueueSize());
-
-        asyncEventQueueJsonList.add(asyncEventQueueJSON);
-      }
-      responseJSON.put("asyncEventQueues", asyncEventQueueJsonList);
-
-      Map<String,Cluster.Region> clusterRegions = cluster.getClusterRegions();
-
-      List<Cluster.Region> clusterRegionsList = new 
ArrayList<Cluster.Region>();
-      clusterRegionsList.addAll(clusterRegions.values());
-
-      ArrayNode regionsList = mapper.createArrayNode();
-
-      for (Cluster.Region region : clusterRegionsList) {
-        if (region.getWanEnabled()) {
-          ObjectNode regionJSON = mapper.createObjectNode();
-          regionJSON.put("name", region.getName());
-          regionsList.add(regionJSON);
-        }
-      }
-      responseJSON.put("regionsInvolved", regionsList);
-    }
-
-    // Send json response
-    return responseJSON;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
deleted file mode 100644
index 3a64161..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberHeapUsageService.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Class MemberHeapUsageService
- * 
- * This class contains implementations of getting Memeber's current Heap Usage
- * and its trend over the time.
- * 
- * @since GemFire version 7.5
- */
-@Component
-@Service("MemberHeapUsage")
-@Scope("singleton")
-public class MemberHeapUsageService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    // members list
-    JsonNode requestDataJSON = 
mapper.readTree(request.getParameter("pulseData"));
-    String memberName = 
requestDataJSON.get("MemberHeapUsage").get("memberName").textValue();
-
-    Cluster.Member clusterMember = 
cluster.getMember(StringUtils.makeCompliantName(memberName));
-
-    if (clusterMember != null) {
-      // response
-      responseJSON.put("heapUsageTrend",
-          
mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE)));
-      responseJSON.put("currentHeapUsage", clusterMember.getCurrentHeapSize());
-    }
-
-    // Send json response
-    return responseJSON;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
deleted file mode 100644
index de69ca0..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Class MemberKeyStatisticsService
- * 
- * This class contains implementations of getting Member's CPU, Memory and Read
- * Write details
- * 
- * @since GemFire version 7.5
- */
-@Component
-@Service("MemberKeyStatistics")
-@Scope("singleton")
-public class MemberKeyStatisticsService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    JsonNode requestDataJSON = 
mapper.readTree(request.getParameter("pulseData"));
-    String memberName = 
requestDataJSON.get("MemberKeyStatistics").get("memberName").textValue();
-
-    Cluster.Member clusterMember = 
cluster.getMember(StringUtils.makeCompliantName(memberName));
-
-    if (clusterMember != null) {
-      // response
-      responseJSON.put("cpuUsageTrend",
-          
mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_CPU_USAGE_SAMPLE)));
-      responseJSON.put("memoryUsageTrend",
-          
mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE)));
-      responseJSON.put("readPerSecTrend",
-          
mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_GETS_PER_SECOND)));
-      responseJSON.put("writePerSecTrend",
-          
mapper.valueToTree(clusterMember.getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_PUTS_PER_SECOND)));
-    }
-    // Send json response
-    return responseJSON;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
deleted file mode 100644
index a1000df..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-import java.text.DecimalFormat;
-
-/**
- * Class MemberRegionsService
- * 
- * This class contains implementations of getting Memeber's Regions details.
- * 
- * @since GemFire version 7.5
- */
-
-@Component
-@Service("MemberRegions")
-@Scope("singleton")
-public class MemberRegionsService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  // 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 ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    JsonNode requestDataJSON = 
mapper.readTree(request.getParameter("pulseData"));
-    String memberName = 
requestDataJSON.get("MemberRegions").get("memberName").textValue();
-
-    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();
-      ArrayNode regionsListJson = mapper.createArrayNode();
-      for (Cluster.Region memberRegion : memberRegions) {
-        ObjectNode regionJSON = mapper.createObjectNode();
-        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.add(regionJSON);
-      }
-      responseJSON.put("memberRegions", regionsListJson);
-
-      // response
-      responseJSON.put("status", "Normal");
-
-    }
-
-    // Send json response
-    return responseJSON;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
deleted file mode 100644
index c89f3d0..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Class MembersListService
- * 
- * This class contains implementations of getting list of Cluster Members.
- * 
- * @since GemFire version 7.5
- */
-@Component
-@Service("MembersList")
-@Scope("singleton")
-public class MembersListService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    // members list
-    ArrayNode memberListJson = mapper.createArrayNode();
-    Cluster.Member[] memberSet = cluster.getMembers();
-
-    for (Cluster.Member member : memberSet) {
-      ObjectNode memberJSON = mapper.createObjectNode();
-      memberJSON.put("memberId", member.getId());
-      memberJSON.put("name", member.getName());
-      memberJSON.put("host", member.getHost());
-
-      memberListJson.add(memberJSON);
-    }
-
-    // Response JSON
-    responseJSON.put("clusterMembers", memberListJson);
-    responseJSON.put("clusterName", cluster.getServerName());
-
-    // Send json response
-    return responseJSON;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
deleted file mode 100644
index 9fbfa1b..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Abstract class PulseService
- * 
- * This is a base class for all services in pulse.
- * 
- * @since GemFire version 7.5
- */
-public interface PulseService {
-
-  String VALUE_NA = "NA";
-  String VALUE_ON = "ON";
-  String VALUE_OFF = "OFF";
-
-  ObjectNode execute(HttpServletRequest httpServletRequest) throws Exception;
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
deleted file mode 100644
index 48a1cc0..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package 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
- * 
- * @since GemFire 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/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
deleted file mode 100644
index a04b9bb..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Class PulseVersionService
- * 
- * This class contains implementations of getting Pulse Applications Version's
- * details (like version details, build details, source details, etc) from
- * properties file
- * 
- * @since GemFire version 7.0.Beta
- */
-
-@Component
-@Service("PulseVersion")
-@Scope("singleton")
-public class PulseVersionService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    // 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());
-
-    // Send json response
-    return responseJSON;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
deleted file mode 100644
index 699e9be..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import 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;
-
-/**
- * Class QueryStatisticsService
- * 
- * This class returns top N queries based on pagination and filtering criteria
- * if any
- * 
- * @since GemFire version 7.5
- */
-@Component
-@Service("QueryStatistics")
-@Scope("singleton")
-public class QueryStatisticsService implements PulseService {
-
-  private final ObjectMapper mapper = new ObjectMapper();
-
-  @Override
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    Cluster.Statement[] stmts = cluster.getStatements();
-
-    ArrayNode queryListJson = mapper.createArrayNode();
-    for (int i = 0; i < stmts.length; ++i) {
-      ObjectNode queryJSON = mapper.createObjectNode();
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QUERYDEFINITION, 
stmts[i].getQueryDefinition());
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMTIMESCOMPILED,
-          mapper.valueToTree(stmts[i].getNumTimesCompiled() < 0 ? 
this.VALUE_NA : stmts[i].getNumTimesCompiled()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMEXECUTION,
-          mapper.valueToTree(stmts[i].getNumExecution() < 0 ? this.VALUE_NA : 
stmts[i].getNumExecution()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMEXECUTIONSINPROGRESS,
-          mapper.valueToTree(stmts[i].getNumExecutionsInProgress() < 0 ? 
this.VALUE_NA : stmts[i].getNumExecutionsInProgress()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMTIMESGLOBALINDEXLOOKUP,
-          mapper.valueToTree(stmts[i].getNumTimesGlobalIndexLookup() < 0 ? 
this.VALUE_NA : stmts[i].getNumTimesGlobalIndexLookup()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMROWSMODIFIED,
-          mapper.valueToTree(stmts[i].getNumRowsModified() < 0 ? this.VALUE_NA 
: stmts[i].getNumRowsModified()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_PARSETIME,
-          mapper.valueToTree(stmts[i].getParseTime() < 0 ? this.VALUE_NA : 
stmts[i].getParseTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_BINDTIME,
-          mapper.valueToTree(stmts[i].getBindTime() < 0 ? this.VALUE_NA : 
stmts[i].getBindTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_OPTIMIZETIME,
-          mapper.valueToTree(stmts[i].getOptimizeTime() < 0 ? this.VALUE_NA : 
stmts[i].getOptimizeTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_ROUTINGINFOTIME,
-          mapper.valueToTree(stmts[i].getRoutingInfoTime() < 0 ? this.VALUE_NA 
: stmts[i].getRoutingInfoTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_GENERATETIME,
-          mapper.valueToTree(stmts[i].getGenerateTime() < 1 ? this.VALUE_NA : 
stmts[i].getGenerateTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_TOTALCOMPILATIONTIME,
-          mapper.valueToTree(stmts[i].getTotalCompilationTime() < 0 ? 
this.VALUE_NA : stmts[i].getTotalCompilationTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_EXECUTIONTIME,
-          mapper.valueToTree(stmts[i].getExecutionTime() < 0 ? this.VALUE_NA : 
stmts[i].getExecutionTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_PROJECTIONTIME,
-          mapper.valueToTree(stmts[i].getProjectionTime() < 0 ? this.VALUE_NA 
: stmts[i].getProjectionTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_TOTALEXECUTIONTIME,
-          mapper.valueToTree(stmts[i].getTotalExecutionTime() < 0 ? 
this.VALUE_NA : stmts[i].getTotalExecutionTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_ROWSMODIFICATIONTIME,
-          mapper.valueToTree(stmts[i].getRowsModificationTime() < 0 ? 
this.VALUE_NA : stmts[i].getRowsModificationTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QNNUMROWSSEEN,
-          mapper.valueToTree(stmts[i].getqNNumRowsSeen() < 0 ? this.VALUE_NA : 
stmts[i].getqNNumRowsSeen()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QNMSGSENDTIME,
-          mapper.valueToTree(stmts[i].getqNMsgSendTime() < 0 ? this.VALUE_NA : 
stmts[i].getqNMsgSendTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QNMSGSERTIME,
-          mapper.valueToTree(stmts[i].getqNMsgSerTime() < 0 ? this.VALUE_NA : 
stmts[i].getqNMsgSerTime()));
-      queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QNRESPDESERTIME,
-          mapper.valueToTree(stmts[i].getqNRespDeSerTime() < 0 ? this.VALUE_NA 
: stmts[i].getqNRespDeSerTime()));
-      queryListJson.add(queryJSON);
-    }
-    responseJSON.put("queriesList", queryListJson);
-
-    // return jmx status
-    responseJSON.put("connectedFlag", cluster.isConnectedFlag());
-    responseJSON.put("connectedErrorMsg", cluster.getConnectionErrorMsg());
-
-    // Send json response
-    return responseJSON;
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
deleted file mode 100644
index d1c61c4..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.service;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
-import com.vmware.gemfire.tools.pulse.internal.data.Repository;
-import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Class SystemAlertsService
- * 
- * This class contains implementations of getting system's alerts details (like
- * errors, warnings and severe errors).
- * 
- * @since GemFire version 7.5
- */
-
-@Component
-@Service("SystemAlerts")
-@Scope("singleton")
-public class SystemAlertsService implements PulseService {
-
-  private static final ObjectMapper mapper = new ObjectMapper();
-
-  public ObjectNode execute(final HttpServletRequest request) throws Exception 
{
-
-    // get cluster object
-    Cluster cluster = Repository.get().getCluster();
-
-    // json object to be sent as response
-    ObjectNode responseJSON = mapper.createObjectNode();
-
-    JsonNode requestDataJSON = 
mapper.readTree(request.getParameter("pulseData"));
-    int pageNumber = 1; // Default
-    String strPageNumber = 
requestDataJSON.get("SystemAlerts").get("pageNumber").textValue();
-    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(strPageNumber)) {
-      try {
-        pageNumber = Integer.valueOf(strPageNumber);
-      } catch (NumberFormatException e) {
-      }
-    }
-
-    // cluster's Members
-    responseJSON.put("systemAlerts", getAlertsJson(cluster, pageNumber));
-    responseJSON.put("pageNumber", cluster.getNotificationPageNumber());
-    responseJSON.put("connectedFlag", cluster.isConnectedFlag());
-    responseJSON.put("connectedErrorMsg", cluster.getConnectionErrorMsg());
-
-    // 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 ObjectNode getAlertsJson(Cluster cluster, int pageNumber) {
-    // getting list of all types of alerts
-    Cluster.Alert[] alertsList = cluster.getAlertsList();
-
-    // create alerts json
-    ObjectNode alertsJsonObject = mapper.createObjectNode();
-
-    if ((alertsList != null) && (alertsList.length > 0)) {
-      ArrayNode errorJsonArray = mapper.createArrayNode();
-      ArrayNode severeJsonArray = mapper.createArrayNode();
-      ArrayNode warningJsonArray = mapper.createArrayNode();
-      ArrayNode infoJsonArray = mapper.createArrayNode();
-
-      cluster.setNotificationPageNumber(pageNumber);
-      for (Cluster.Alert alert : alertsList) {
-        ObjectNode objAlertJson = mapper.createObjectNode();
-        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.add(objAlertJson);
-        } else if (alert.getSeverity() == Cluster.Alert.ERROR) {
-          errorJsonArray.add(objAlertJson);
-        } else if (alert.getSeverity() == Cluster.Alert.WARNING) {
-          warningJsonArray.add(objAlertJson);
-        } else {
-          infoJsonArray.add(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/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
deleted file mode 100644
index 99e62e2..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package com.vmware.gemfire.tools.pulse.internal.util;
-
-import java.io.IOException;
-
-import javax.net.SocketFactory;
-import javax.net.ssl.SSLSocketFactory;
-
-
-/**
- * 
- *
- */
-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/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
deleted file mode 100644
index 1158251..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package 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
- * 
- * 
- * @since GemFire 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/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
deleted file mode 100644
index 56cbf1b..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.util;
-
-/**
- * Class StringUtils This is utility class for string.
- * 
- * 
- * @since GemFire 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 tableName
-   *          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/9a2b5d7b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
 
b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
deleted file mode 100644
index 73ce389..0000000
--- 
a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.vmware.gemfire.tools.pulse.internal.util;
-
-/**
- * Class TimeUtils 
- * 
- * This is utility class used for conversions of time.
- * 
- * 
- * @since GemFire 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/9a2b5d7b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/PulseAppListener.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/PulseAppListener.java
 
b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/PulseAppListener.java
new file mode 100644
index 0000000..408eed3
--- /dev/null
+++ 
b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/PulseAppListener.java
@@ -0,0 +1,742 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.vmware.geode.tools.pulse.internal;
+
+import com.vmware.geode.tools.pulse.internal.controllers.PulseController;
+import com.vmware.geode.tools.pulse.internal.data.PulseConfig;
+import com.vmware.geode.tools.pulse.internal.data.PulseConstants;
+import com.vmware.geode.tools.pulse.internal.data.Repository;
+import com.vmware.geode.tools.pulse.internal.log.PulseLogWriter;
+import com.vmware.geode.tools.pulse.internal.util.StringUtils;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.logging.Level;
+
+/**
+ * This class is used for checking the application running mode i.e. Embedded 
or
+ * not
+ * 
+ * @since GemFire version 7.0.Beta 2012-09-23
+ * 
+ */
+// @WebListener
+public class PulseAppListener implements ServletContextListener {
+  private PulseLogWriter LOGGER;
+  private final ResourceBundle resourceBundle = Repository.get()
+      .getResourceBundle();
+
+  // String object to store all messages which needs to be logged into the log
+  // file before logger gets initialized
+  private String messagesToBeLogged = "";
+
+  private Properties pulseProperties;
+  private Properties pulseSecurityProperties;
+  private Boolean sysPulseUseLocator;
+  private String sysPulseHost;
+  private String sysPulsePort;
+  private String jmxUserName;
+  private String jmxUserPassword;
+  
+  private boolean sysPulseUseSSLLocator;
+  private boolean sysPulseUseSSLManager;
+  
+  //This property determines if pulse webApp login is authenticated against
+  //GemFire integrated security or custom spring-security config provided 
+  //in pulse-authentication-custom.xml 
+  private boolean useGemFireCredentials;
+
+  @Override
+  public void contextDestroyed(ServletContextEvent event) {
+
+    // Stop all running threads those are created in Pulse
+    // Stop cluster threads
+    Repository.get().removeAllClusters();
+
+    if (LOGGER.infoEnabled()) {
+      LOGGER.info(resourceBundle.getString("LOG_MSG_CONTEXT_DESTROYED")
+          + event.getServletContext().getContextPath());
+    }
+  }
+
+  @Override
+  public void contextInitialized(ServletContextEvent event) {
+    
+    messagesToBeLogged = messagesToBeLogged
+        .concat(formatLogString(resourceBundle
+            .getString("LOG_MSG_CONTEXT_INITIALIZED")));
+
+    // Load Pulse version details
+    loadPulseVersionDetails();
+
+    // Load Pulse Properties
+    pulseProperties = loadProperties(PulseConstants.PULSE_PROPERTIES_FILE);
+
+    if (pulseProperties.isEmpty()) {
+      messagesToBeLogged = messagesToBeLogged
+          .concat(formatLogString(resourceBundle
+              .getString("LOG_MSG_PROPERTIES_NOT_FOUND")));
+    } else {
+      messagesToBeLogged = messagesToBeLogged
+          .concat(formatLogString(resourceBundle
+              .getString("LOG_MSG_PROPERTIES_FOUND")));
+
+      // set Pulse product support into the Pulse controller for access from
+      // client side
+      // to display the appropriate ui depending on which product is supported
+      // in present deployment
+      String pulseProduct = 
pulseProperties.getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_PRODUCTSUPPORT);
+      // default is gemfire
+
+      if ((pulseProduct != null) && 
(pulseProduct.trim().equalsIgnoreCase(PulseConstants.PRODUCT_NAME_SQLFIRE))) {
+        
PulseController.setPulseProductSupport(PulseConstants.PRODUCT_NAME_SQLFIRE);
+      }
+    }
+    
+    pulseSecurityProperties = 
loadProperties(PulseConstants.PULSE_SECURITY_PROPERTIES_FILE);
+
+    // Initialize logger
+    initializeLogger();
+
+    // Reference to repository
+    Repository repository = Repository.get();
+
+    if (LOGGER.infoEnabled()) {
+      LOGGER.info(resourceBundle.getString("LOG_MSG_CHECK_APP_RUNNING_MODE"));
+    }
+
+    boolean sysIsEmbedded = Boolean
+        .getBoolean(PulseConstants.SYSTEM_PROPERTY_PULSE_EMBEDDED);
+
+    if (sysIsEmbedded) {
+      // Application Pulse is running in Embedded Mode
+      if (LOGGER.infoEnabled()) {
+        LOGGER.info(resourceBundle
+            .getString("LOG_MSG_APP_RUNNING_EMBEDDED_MODE"));
+      }
+      repository.setIsEmbeddedMode(true);
+
+      sysPulseUseLocator = Boolean.FALSE;
+         try{
+                               // Get host name of machine running pulse in 
embedded mode
+                  sysPulseHost = 
InetAddress.getLocalHost().getCanonicalHostName();
+               } catch (UnknownHostException e) {
+                       if (LOGGER.fineEnabled()) {
+                               LOGGER.fine(resourceBundle
+                                                       
.getString("LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST")
+                                                       + e.getMessage());
+                   }
+                               // Set default host name
+                   sysPulseHost = PulseConstants.GEMFIRE_DEFAULT_HOST;
+               } catch (Exception e) {
+                       if (LOGGER.fineEnabled()) {
+                                       LOGGER.fine(resourceBundle
+                                                       
.getString("LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST")
+                                                       + e.getMessage());
+                       }
+                               // Set default host name
+                       sysPulseHost = PulseConstants.GEMFIRE_DEFAULT_HOST;
+               }
+      sysPulsePort = PulseConstants.GEMFIRE_DEFAULT_PORT;
+      
+      boolean pulseEmbededSqlf = 
Boolean.getBoolean(PulseConstants.SYSTEM_PROPERTY_PULSE_EMBEDDED_SQLF);
+      if(pulseEmbededSqlf){
+        
PulseController.setPulseProductSupport(PulseConstants.PRODUCT_NAME_SQLFIRE);
+        if (LOGGER.infoEnabled()) {
+          LOGGER.info(resourceBundle
+              .getString("LOG_MSG_APP_RUNNING_EMBEDDED_SQLF_MODE"));
+        }
+      }
+
+    } else {
+      // Application Pulse is running in Non-Embedded Mode
+      if (LOGGER.infoEnabled()) {
+        LOGGER.info(resourceBundle
+            .getString("LOG_MSG_APP_RUNNING_NONEMBEDDED_MODE"));
+      }
+      repository.setIsEmbeddedMode(false);
+
+      // Load JMX User Details
+      loadJMXUserDetails();
+      // Load locator and/or manager details
+      loadLocatorManagerDetails();
+       
+      useGemFireCredentials = areWeUsingGemFireSecurityProfile(event); 
+    }
+
+    // Set user details in repository    
+    repository.setJmxUserName(jmxUserName);
+    repository.setJmxUserPassword(jmxUserPassword);
+
+    // Set locator/Manager details in repository
+    repository.setJmxUseLocator(sysPulseUseLocator);
+    repository.setJmxHost(sysPulseHost);
+    repository.setJmxPort(sysPulsePort);
+    
+    //set SSL info
+    initializeSSL();
+    repository.setUseSSLLocator(sysPulseUseSSLLocator);
+    repository.setUseSSLManager(sysPulseUseSSLManager);
+    
+    repository.setUseGemFireCredentials(useGemFireCredentials);
+
+  }
+
+  /**
+   * Return true if pulse is configure to authenticate using gemfire
+   * integrated security
+   * 
+   * @param event
+   * @return
+   */
+  private boolean areWeUsingGemFireSecurityProfile(ServletContextEvent event) {
+    String profile = null;
+    WebApplicationContext ctx = 
WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
+    if (ctx.getEnvironment() != null) {
+      String[] profiles = ctx.getEnvironment().getActiveProfiles();
+      if (profiles != null && profiles.length > 0) {
+        StringBuilder sb = new StringBuilder();
+        for (String p : profiles)
+          sb.append(p).append(",");
+        LOGGER.info("#SpringProfilesConfigured : " + sb.toString());
+        profile = ctx.getEnvironment().getActiveProfiles()[0];
+        LOGGER.info("#First Profile : " + profile);
+      } else {
+        LOGGER.info("No SpringProfileConfigured using default spring profile");
+        return false;
+      }
+    }
+    if 
(PulseConstants.APPLICATION_PROPERTY_PULSE_SEC_PROFILE_GEMFIRE.equals(profile)) 
{
+      LOGGER.info("Using gemfire integrated security profile");
+      return true;
+    }      
+    return false;
+  }
+
+  // Function to load pulse version details from properties file
+  private void loadPulseVersionDetails() {
+
+    // Read version details from version property file
+    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+    InputStream inputStream = classLoader
+        .getResourceAsStream(PulseConstants.PULSE_VERSION_PROPERTIES_FILE);
+
+    if (inputStream != null) {
+      Properties properties = new Properties();
+      try {
+        properties.load(inputStream);
+      } catch (IOException e) {
+        messagesToBeLogged = messagesToBeLogged
+            .concat(formatLogString(resourceBundle
+                .getString("LOG_MSG_EXCEPTION_LOADING_PROPERTIES_FILE")));
+      } finally {
+        try {
+          inputStream.close();
+        } catch (IOException e) {
+          messagesToBeLogged = messagesToBeLogged
+              .concat(formatLogString(resourceBundle
+                  .getString("LOG_MSG_EXCEPTION_CLOSING_INPUT_STREAM")));
+        }
+      }
+      // Set pulse version details in common object
+      PulseController.pulseVersion.setPulseVersion(properties.getProperty(
+          PulseConstants.PROPERTY_PULSE_VERSION, ""));
+      PulseController.pulseVersion.setPulseBuildId(properties.getProperty(
+          PulseConstants.PROPERTY_BUILD_ID, ""));
+      PulseController.pulseVersion.setPulseBuildDate(properties.getProperty(
+          PulseConstants.PROPERTY_BUILD_DATE, ""));
+      PulseController.pulseVersion.setPulseSourceDate(properties.getProperty(
+          PulseConstants.PROPERTY_SOURCE_DATE, ""));
+      PulseController.pulseVersion.setPulseSourceRevision(properties
+          .getProperty(PulseConstants.PROPERTY_SOURCE_REVISION, ""));
+      PulseController.pulseVersion.setPulseSourceRepository(properties
+          .getProperty(PulseConstants.PROPERTY_SOURCE_REPOSITORY, ""));
+    }
+
+    // Log Pulse Version details into log file
+    messagesToBeLogged = messagesToBeLogged
+        .concat(formatLogString(PulseController.pulseVersion
+            .getPulseVersionLogMessage()));
+  }
+
+  private void initializeLogger() {
+
+    // Override default log configuration by properties which are provided in
+    // properties file.
+    loadLogDetailsFromPropertyFile();
+
+    // Override log configuration by properties which are provided in
+    // through system properties.
+    loadLogDetailsFromSystemProperties();
+
+    // Initialize logger object
+    LOGGER = PulseLogWriter.getLogger();
+
+    // Log messages stored in messagesToBeLogged
+    if (LOGGER.infoEnabled()) {
+      LOGGER.info(messagesToBeLogged);
+      messagesToBeLogged = "";
+    }
+  }
+
+  // Function to load pulse properties from pulse.properties file
+  private Properties loadProperties(String propertyFile) {
+
+    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+    InputStream inputStream = classLoader.getResourceAsStream(propertyFile);
+    Properties properties = new Properties();
+
+    if (inputStream != null) {
+      messagesToBeLogged = 
messagesToBeLogged.concat(formatLogString(propertyFile + " "
+          + resourceBundle.getString("LOG_MSG_FILE_FOUND")));
+
+      try {
+        // Load properties from input stream
+        properties.load(inputStream);
+      } catch (IOException e1) {
+        messagesToBeLogged = 
messagesToBeLogged.concat(formatLogString(resourceBundle
+            .getString("LOG_MSG_EXCEPTION_LOADING_PROPERTIES_FILE")
+            + " " + propertyFile));
+      } finally {
+        // Close input stream
+        try {
+          inputStream.close();
+        } catch (IOException e) {
+          messagesToBeLogged = 
messagesToBeLogged.concat(formatLogString(resourceBundle
+              .getString("LOG_MSG_EXCEPTION_CLOSING_INPUT_STREAM")
+              + " " + propertyFile));
+        }
+      }
+
+    } else {
+      messagesToBeLogged = 
messagesToBeLogged.concat(formatLogString(resourceBundle
+          .getString("LOG_MSG_COULD_NOT_READ_FILE")
+          + " " + propertyFile));
+    }
+    return properties;
+  }
+
+  // Function to load Logging details from properties file
+  private void loadLogDetailsFromPropertyFile() {
+
+    // return, if Pulse Properties are not provided
+    if (pulseProperties.size() == 0) {
+      return;
+    }
+
+    messagesToBeLogged = messagesToBeLogged
+        .concat(formatLogString(resourceBundle
+            .getString("LOG_MSG_CHECK_LOG_PROPERTIES_IN_FILE")));
+
+    HashMap<String, String> logPropertiesHM = new HashMap<String, String>();
+
+    logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME, ""));
+
+    logPropertiesHM.put(
+        PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION, ""));
+
+    logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE, ""));
+
+    logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT, ""));
+
+    logPropertiesHM.put(
+        PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN, ""));
+
+    logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL, ""));
+
+    logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND,
+        pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND, ""));
+
+    if (logPropertiesHM.size() == 0) {
+      messagesToBeLogged = messagesToBeLogged
+          .concat(formatLogString(resourceBundle
+              .getString("LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_FILE")));
+    } else {
+      messagesToBeLogged = messagesToBeLogged
+          .concat(formatLogString(resourceBundle
+              .getString("LOG_MSG_LOG_PROPERTIES_FOUND_IN_FILE")));
+    }
+
+    setLogConfigurations(logPropertiesHM);
+  }
+
+  // Function to load Logging details from system properties
+  private void loadLogDetailsFromSystemProperties() {
+
+    messagesToBeLogged = messagesToBeLogged
+        .concat(formatLogString(resourceBundle
+            .getString("LOG_MSG_CHECK_LOG_PROPERTIES_IN_SYSTEM_PROPERTIES")));
+
+    HashMap<String, String> logPropertiesHM = new HashMap<String, String>();
+
+    String sysLogFileName = System
+        .getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME);
+    String sysLogFileLocation = System
+        
.getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION);
+    String sysLogFileSize = System
+        .getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE);
+    String sysLogFileCount = System
+        .getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT);
+    String sysLogDatePattern = System
+        .getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN);
+    String sysLogLevel = System
+        .getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL);
+    String sysLogAppend = System
+        .getProperty(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND);
+
+    if (sysLogFileName == null || sysLogFileName.isEmpty()) {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME, "");
+    } else {
+      logPropertiesHM
+          .put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME,
+              sysLogFileName);
+    }
+
+    if (sysLogFileLocation == null || sysLogFileLocation.isEmpty()) {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION, "");
+    } else {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION,
+          sysLogFileLocation);
+    }
+
+    if (sysLogFileSize == null || sysLogFileSize.isEmpty()) {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE, "");
+    } else {
+      logPropertiesHM
+          .put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE,
+              sysLogFileSize);
+    }
+
+    if (sysLogFileCount == null || sysLogFileCount.isEmpty()) {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT, "");
+    } else {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT,
+          sysLogFileCount);
+    }
+
+    if (sysLogDatePattern == null || sysLogDatePattern.isEmpty()) {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN, "");
+    } else {
+      logPropertiesHM.put(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN,
+          sysLogDatePattern);
+    }
+
+    if (sysLogLevel == null || sysLogLevel.isEmpty()) {
+      logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL,
+          "");
+    } else {
+      logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL,
+          sysLogLevel);
+    }
+
+    if (sysLogAppend == null || sysLogAppend.isEmpty()) {
+      logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND,
+          "");
+    } else {
+      logPropertiesHM.put(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND,
+          sysLogAppend);
+    }
+
+    if (logPropertiesHM.size() == 0) {
+      messagesToBeLogged = messagesToBeLogged
+          .concat(formatLogString(resourceBundle
+              
.getString("LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_SYSTEM_PROPERTIES")));
+    } else {
+      messagesToBeLogged = messagesToBeLogged
+          .concat(formatLogString(resourceBundle
+              
.getString("LOG_MSG_LOG_PROPERTIES_FOUND_IN_SYSTEM_PROPERTIES")));
+    }
+
+    setLogConfigurations(logPropertiesHM);
+  }
+
+  private void setLogConfigurations(HashMap<String, String> logPropertiesHM) {
+
+    PulseConfig pulseConfig = Repository.get().getPulseConfig();
+
+    // log file name
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME))) {
+      pulseConfig.setLogFileName(logPropertiesHM
+          .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILENAME));
+    }
+
+    // log file location
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION))) {
+      pulseConfig.setLogFileLocation(logPropertiesHM
+          .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILELOCATION));
+    }
+
+    // log file size
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE))) {
+      pulseConfig.setLogFileSize(Integer.parseInt(logPropertiesHM
+          .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILESIZE)));
+    }
+
+    // log file count
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT))) {
+      pulseConfig.setLogFileCount(Integer.parseInt(logPropertiesHM
+          .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGFILECOUNT)));
+    }
+
+    // log message date pattern
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN))) {
+      pulseConfig.setLogDatePattern(logPropertiesHM
+          .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGDATEPATTERN));
+    }
+
+    // log level
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL))) {
+      pulseConfig.setLogLevel(Level.parse(logPropertiesHM.get(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_LOGLEVEL).toUpperCase()));
+    }
+
+    // log append
+    if (StringUtils.isNotNullNotEmptyNotWhiteSpace(logPropertiesHM
+        .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND))) {
+      pulseConfig.setLogAppend(Boolean.valueOf(logPropertiesHM
+          .get(PulseConstants.APPLICATION_PROPERTY_PULSE_LOGAPPEND)));
+    }
+
+  }
+
+  // Function to load JMX User details from properties
+  private void loadJMXUserDetails() {
+
+    if (LOGGER.infoEnabled()) {
+      LOGGER.info(resourceBundle.getString("LOG_MSG_GET_JMX_USER_DETAILS"));
+    }
+
+    if (pulseProperties.isEmpty()) {
+      if (LOGGER.infoEnabled()) {
+        LOGGER
+            .info(resourceBundle
+                .getString("LOG_MSG_JMX_USER_DETAILS_NOT_FOUND")
+                + resourceBundle
+                    .getString("LOG_MSG_REASON_USER_DETAILS_NOT_FOUND"));
+      }
+    } else {
+      jmxUserName = pulseProperties.getProperty(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_JMXUSERNAME, "");
+      jmxUserPassword = pulseProperties.getProperty(
+          PulseConstants.APPLICATION_PROPERTY_PULSE_JMXPASSWORD, "");
+
+      if (jmxUserName.isEmpty() || jmxUserPassword.isEmpty()) {
+        if (LOGGER.infoEnabled()) {
+          LOGGER.info(resourceBundle
+              .getString("LOG_MSG_JMX_USER_DETAILS_NOT_FOUND")
+              + resourceBundle
+                  .getString("LOG_MSG_REASON_USER_DETAILS_NOT_FOUND"));
+        }
+      } else {
+        if (LOGGER.infoEnabled()) {
+          LOGGER.info(resourceBundle
+              .getString("LOG_MSG_JMX_USER_DETAILS_FOUND"));
+        }
+      }
+    }
+  }
+  
+//Function to set SSL VM arguments
+  private void initializeSSL() {
+    if (LOGGER.infoEnabled()) {
+      LOGGER.info(resourceBundle.getString("LOG_MSG_GET_SSL_DETAILS"));
+    }
+
+     
+    this.sysPulseUseSSLLocator = Boolean.valueOf(pulseProperties.getProperty(
+        PulseConstants.SYSTEM_PROPERTY_PULSE_USESSL_LOCATOR, "false"));
+
+    this.sysPulseUseSSLManager = Boolean.valueOf(pulseProperties.getProperty(
+        PulseConstants.SYSTEM_PROPERTY_PULSE_USESSL_MANAGER, "false"));
+
+
+    if ((sysPulseUseSSLLocator || sysPulseUseSSLManager)) {
+      Properties sslProperties = new Properties();
+      if (!pulseSecurityProperties.isEmpty()) {
+        Set entrySet = pulseSecurityProperties.entrySet();
+        for (Iterator it = entrySet.iterator(); it.hasNext();) {
+          Entry<String, String> entry = (Entry<String, String>) it.next();
+          String key = entry.getKey();
+          if (key.startsWith("javax.net.ssl.")) {
+
+            String val = entry.getValue();
+            System.setProperty(key, val);
+            sslProperties.setProperty(key, val);
+          }
+        }
+      }
+      if (sslProperties.isEmpty()) {
+        if (LOGGER.warningEnabled()) {
+          LOGGER.warning(resourceBundle.getString("LOG_MSG_SSL_NOT_SET"));
+        }
+      }
+    }
+
+  }
+
+  // Function to load locator and/or manager details
+  private void loadLocatorManagerDetails() {
+
+    // Get locator details through System Properties
+    if (LOGGER.infoEnabled()) {
+      LOGGER.info(resourceBundle.getString("LOG_MSG_GET_LOCATOR_DETAILS_1"));
+    }
+
+    // Required System properties are
+    // -Dpulse.embedded="false" -Dpulse.useLocator="false"
+    // -Dpulse.host="192.168.2.11" -Dpulse.port="2099"
+    sysPulseUseLocator = Boolean
+        .getBoolean(PulseConstants.SYSTEM_PROPERTY_PULSE_USELOCATOR);
+    sysPulseHost = System
+        .getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_HOST);
+    sysPulsePort = System
+        .getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_PORT);
+
+    if (sysPulseHost == null || sysPulseHost.isEmpty() || sysPulsePort == null
+        || sysPulsePort.isEmpty()) {
+      if (LOGGER.infoEnabled()) {
+        LOGGER.info(resourceBundle
+            .getString("LOG_MSG_LOCATOR_DETAILS_NOT_FOUND")
+            + resourceBundle
+                .getString("LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_1"));
+        LOGGER.info(resourceBundle.getString("LOG_MSG_GET_LOCATOR_DETAILS_2"));
+      }
+
+      if (pulseProperties.isEmpty()) {
+        if (LOGGER.infoEnabled()) {
+          LOGGER.info(resourceBundle
+              .getString("LOG_MSG_LOCATOR_DETAILS_NOT_FOUND")
+              + resourceBundle
+                  .getString("LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_2"));
+        }
+
+        sysPulseHost = "";
+        sysPulsePort = "";
+      } else {
+        if (LOGGER.infoEnabled()) {
+          LOGGER
+              .info(resourceBundle.getString("LOG_MSG_LOCATOR_DETAILS_FOUND"));
+        }
+
+        sysPulseUseLocator = Boolean.valueOf(pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_USELOCATOR, ""));
+        sysPulseHost = pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_HOST, "");
+        sysPulsePort = pulseProperties.getProperty(
+            PulseConstants.APPLICATION_PROPERTY_PULSE_PORT, "");
+      }
+    } else {
+      if (LOGGER.infoEnabled()) {
+        LOGGER.info(resourceBundle.getString("LOG_MSG_LOCATOR_DETAILS_FOUND"));
+      }
+    }
+  }
+
+  private String formatLogString(String logMessage) {
+
+    DateFormat df = new SimpleDateFormat(
+        PulseConstants.LOG_MESSAGE_DATE_PATTERN);
+    // DateFormat df = new
+    // SimpleDateFormat(Repository.get().getPulseConfig().getLogDatePattern());
+    StringWriter sw = new StringWriter();
+    PrintWriter pw = new PrintWriter(sw);
+
+    pw.println();
+    pw.print("[");
+    pw.print("INFO");
+    pw.print(" ");
+    pw.print(df.format(new Date(System.currentTimeMillis())));
+    String threadName = Thread.currentThread().getName();
+    if (threadName != null) {
+      pw.print(" ");
+      pw.print(threadName);
+    }
+    pw.print(" tid=0x");
+    pw.print(Long.toHexString(Thread.currentThread().getId()));
+    pw.print("] ");
+    pw.print("(msgTID=");
+    pw.print("");
+
+    pw.print(" msgSN=");
+    pw.print("");
+
+    pw.print(") ");
+
+    pw.println("[" + PulseConstants.APP_NAME + "]");
+
+    pw.println(PulseLogWriter.class.getName());
+
+    pw.println(logMessage);
+
+    pw.close();
+    try {
+      sw.close();
+    } catch (IOException ignore) {
+    }
+    String result = sw.toString();
+    return result;
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/ExceptionHandlingAdvice.java
----------------------------------------------------------------------
diff --git 
a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/ExceptionHandlingAdvice.java
 
b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/ExceptionHandlingAdvice.java
new file mode 100644
index 0000000..9e86637
--- /dev/null
+++ 
b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/ExceptionHandlingAdvice.java
@@ -0,0 +1,51 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.vmware.geode.tools.pulse.internal.controllers;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import com.vmware.geode.tools.pulse.internal.log.PulseLogWriter;
+
+/**
+ * For handling IO exception in our controllers
+ * 
+ * 
+ */
+@ControllerAdvice
+public class ExceptionHandlingAdvice {
+
+  @ExceptionHandler(IOException.class)
+  @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+  public void handleExc(IOException ext) {
+    PulseLogWriter LOGGER = PulseLogWriter.getLogger();
+    // write errors
+    StringWriter swBuffer = new StringWriter();
+    PrintWriter prtWriter = new PrintWriter(swBuffer);
+    ext.printStackTrace(prtWriter);
+    LOGGER.severe("IOException Details : " + swBuffer.toString() + "\n");
+  }
+}

Reply via email to