Return-Path: X-Original-To: apmail-geode-commits-archive@minotaur.apache.org Delivered-To: apmail-geode-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5012E18B68 for ; Mon, 6 Jul 2015 21:48:53 +0000 (UTC) Received: (qmail 10103 invoked by uid 500); 6 Jul 2015 21:48:53 -0000 Delivered-To: apmail-geode-commits-archive@geode.apache.org Received: (qmail 10071 invoked by uid 500); 6 Jul 2015 21:48:53 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 10058 invoked by uid 99); 6 Jul 2015 21:48:53 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Jul 2015 21:48:53 +0000 X-ASF-Spam-Status: No, hits=-2000.6 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Mon, 06 Jul 2015 21:44:13 +0000 Received: (qmail 73023 invoked by uid 99); 6 Jul 2015 21:45:51 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Jul 2015 21:45:51 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8090CE360A; Mon, 6 Jul 2015 21:45:50 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dschneider@apache.org To: commits@geode.incubator.apache.org Date: Mon, 06 Jul 2015 21:46:23 -0000 Message-Id: In-Reply-To: <547aa1e3efaf4ca397a80748fbb1c5fa@git.apache.org> References: <547aa1e3efaf4ca397a80748fbb1c5fa@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [35/51] [partial] incubator-geode git commit: GEODE-12: Imported pulse from geode-1.0.0-SNAPSHOT-2.src.tar X-Virus-Checked: Checked by ClamAV on apache.org http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java new file mode 100644 index 0000000..29a533c --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberKeyStatisticsService.java @@ -0,0 +1,88 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import com.vmware.gemfire.tools.pulse.internal.data.Cluster; +import com.vmware.gemfire.tools.pulse.internal.data.Repository; +import com.vmware.gemfire.tools.pulse.internal.json.JSONArray; +import com.vmware.gemfire.tools.pulse.internal.json.JSONException; +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; +import com.vmware.gemfire.tools.pulse.internal.util.StringUtils; + +/** + * Class MemberKeyStatisticsService + * + * This class contains implementations of getting Member's CPU, Memory and Read + * Write details + * + * @author Sachin K + * @since version 7.5 + */ +@Component +@Service("MemberKeyStatistics") +@Scope("singleton") +public class MemberKeyStatisticsService implements PulseService { + + public JSONObject execute(final HttpServletRequest request) throws Exception { + + // get cluster object + Cluster cluster = Repository.get().getCluster(); + + // json object to be sent as response + JSONObject responseJSON = new JSONObject(); + + try { + JSONObject requestDataJSON = new JSONObject( + request.getParameter("pulseData")); + String memberName = requestDataJSON.getJSONObject("MemberKeyStatistics") + .getString("memberName"); + + Cluster.Member clusterMember = cluster.getMember(StringUtils + .makeCompliantName(memberName)); + if (clusterMember != null) { + // response + responseJSON + .put( + "cpuUsageTrend", + new JSONArray( + clusterMember + .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_CPU_USAGE_SAMPLE))); + responseJSON + .put( + "memoryUsageTrend", + new JSONArray( + clusterMember + .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_HEAP_USAGE_SAMPLE))); + responseJSON + .put( + "readPerSecTrend", + new JSONArray( + clusterMember + .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_GETS_PER_SECOND))); + responseJSON + .put( + "writePerSecTrend", + new JSONArray( + clusterMember + .getMemberStatisticTrend(Cluster.Member.MEMBER_STAT_PUTS_PER_SECOND))); + } + // Send json response + return responseJSON; + } catch (JSONException e) { + throw new Exception(e); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java new file mode 100644 index 0000000..2549eb9 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MemberRegionsService.java @@ -0,0 +1,130 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import java.text.DecimalFormat; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController; +import com.vmware.gemfire.tools.pulse.internal.data.Cluster; +import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants; +import com.vmware.gemfire.tools.pulse.internal.data.Repository; +import com.vmware.gemfire.tools.pulse.internal.json.JSONArray; +import com.vmware.gemfire.tools.pulse.internal.json.JSONException; +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; +import com.vmware.gemfire.tools.pulse.internal.util.StringUtils; + +/** + * Class MemberRegionsService + * + * This class contains implementations of getting Memeber's Regions details. + * + * @author Sachin K + * @since version 7.5 + */ + +@Component +@Service("MemberRegions") +@Scope("singleton") +public class MemberRegionsService implements PulseService { + + // String constants used for forming a json response + private final String NAME = "name"; + private final String ENTRY_SIZE = "entrySize"; + private final String DISC_STORE_NAME = "diskStoreName"; + private final String DISC_SYNCHRONOUS = "diskSynchronous"; + + public JSONObject execute(final HttpServletRequest request) throws Exception { + + // get cluster object + Cluster cluster = Repository.get().getCluster(); + + // json object to be sent as response + JSONObject responseJSON = new JSONObject(); + + try { + + JSONObject requestDataJSON = new JSONObject( + request.getParameter("pulseData")); + String memberName = requestDataJSON.getJSONObject("MemberRegions") + .getString("memberName"); + + Cluster.Member clusterMember = cluster.getMember(StringUtils + .makeCompliantName(memberName)); + + if (clusterMember != null) { + responseJSON.put("memberId", clusterMember.getId()); + responseJSON.put(this.NAME, clusterMember.getName()); + responseJSON.put("host", clusterMember.getHost()); + + // member's regions + Cluster.Region[] memberRegions = clusterMember.getMemberRegionsList(); + JSONArray regionsListJson = new JSONArray(); + for (Cluster.Region memberRegion : memberRegions) { + JSONObject regionJSON = new JSONObject(); + regionJSON.put(this.NAME, memberRegion.getName()); + + if (PulseConstants.PRODUCT_NAME_SQLFIRE + .equalsIgnoreCase(PulseController.getPulseProductSupport())) { + // Convert region path to dot separated region path + regionJSON.put("fullPath", StringUtils + .getTableNameFromRegionName(memberRegion.getFullPath())); + } else { + regionJSON.put("fullPath", memberRegion.getFullPath()); + } + + regionJSON.put("type", memberRegion.getRegionType()); + regionJSON + .put("entryCount", memberRegion.getSystemRegionEntryCount()); + Long entrySize = memberRegion.getEntrySize(); + + DecimalFormat form = new DecimalFormat( + PulseConstants.DECIMAL_FORMAT_PATTERN_2); + String entrySizeInMB = form.format(entrySize / (1024f * 1024f)); + + if (entrySize < 0) { + regionJSON.put(this.ENTRY_SIZE, this.VALUE_NA); + } else { + regionJSON.put(this.ENTRY_SIZE, entrySizeInMB); + } + regionJSON.put("scope", memberRegion.getScope()); + String diskStoreName = memberRegion.getDiskStoreName(); + if (StringUtils.isNotNullNotEmptyNotWhiteSpace(diskStoreName)) { + regionJSON.put(this.DISC_STORE_NAME, diskStoreName); + regionJSON.put(this.DISC_SYNCHRONOUS, + memberRegion.isDiskSynchronous()); + } else { + regionJSON.put(this.DISC_SYNCHRONOUS, this.VALUE_NA); + regionJSON.put(this.DISC_STORE_NAME, ""); + } + regionJSON.put("gatewayEnabled", memberRegion.getWanEnabled()); + + regionsListJson.put(regionJSON); + } + responseJSON.put("memberRegions", regionsListJson); + + // response + responseJSON.put("status", "Normal"); + + } + + // Send json response + return responseJSON; + + } catch (JSONException e) { + throw new Exception(e); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java new file mode 100644 index 0000000..67ff368 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/MembersListService.java @@ -0,0 +1,68 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import com.vmware.gemfire.tools.pulse.internal.data.Cluster; +import com.vmware.gemfire.tools.pulse.internal.data.Repository; +import com.vmware.gemfire.tools.pulse.internal.json.JSONArray; +import com.vmware.gemfire.tools.pulse.internal.json.JSONException; +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; + +/** + * Class MembersListService + * + * This class contains implementations of getting list of Cluster Members. + * + * @author Sachin K + * @since version 7.5 + */ +@Component +@Service("MembersList") +@Scope("singleton") +public class MembersListService implements PulseService { + + public JSONObject execute(final HttpServletRequest request) throws Exception { + + // get cluster object + Cluster cluster = Repository.get().getCluster(); + + // json object to be sent as response + JSONObject responseJSON = new JSONObject(); + + // members list + JSONArray memberListJson = new JSONArray(); + Cluster.Member[] memberSet = cluster.getMembers(); + + try { + for (Cluster.Member member : memberSet) { + JSONObject memberJSON = new JSONObject(); + memberJSON.put("memberId", member.getId()); + memberJSON.put("name", member.getName()); + memberJSON.put("host", member.getHost()); + + memberListJson.put(memberJSON); + } + + // Response JSON + responseJSON.put("clusterMembers", memberListJson); + responseJSON.put("clusterName", cluster.getServerName()); + // Send json response + return responseJSON; + } catch (JSONException e) { + throw new Exception(e); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java new file mode 100644 index 0000000..e0cd5b3 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseService.java @@ -0,0 +1,32 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import javax.servlet.http.HttpServletRequest; + +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; + +/** + * Abstract class PulseService + * + * This is a base class for all services in pulse. + * + * @author azambare + * @since version 7.5 + */ +public interface PulseService { + + public final String VALUE_NA = "NA"; + public final String VALUE_ON = "ON"; + public final String VALUE_OFF = "OFF"; + + public JSONObject execute(HttpServletRequest httpServletRequest) + throws Exception; +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java new file mode 100644 index 0000000..08d12fe --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseServiceFactory.java @@ -0,0 +1,46 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +/** + * Class PulseServiceFactory + * + * @author azambare + * @since version 7.5 + */ +@Component +@Scope("singleton") +public class PulseServiceFactory implements ApplicationContextAware { + + static final long serialVersionUID = 02L; + ApplicationContext applicationContext = null; + + public PulseService getPulseServiceInstance(final String servicename) { + + if (applicationContext != null + && applicationContext.containsBean(servicename)) { + return (PulseService) applicationContext.getBean(servicename); + } + return null; + } + + @Override + public void setApplicationContext(final ApplicationContext applicationContext) + throws BeansException { + + this.applicationContext = applicationContext; + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java new file mode 100644 index 0000000..5b5ae57 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/PulseVersionService.java @@ -0,0 +1,64 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import com.vmware.gemfire.tools.pulse.internal.controllers.PulseController; +import com.vmware.gemfire.tools.pulse.internal.json.JSONException; +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; + +/** + * Class PulseVersionService + * + * This class contains implementations of getting Pulse Applications Version's + * details (like version details, build details, source details, etc) from + * properties file + * + * @author Sachin K + * @since version 7.0.Beta + */ + +@Component +@Service("PulseVersion") +@Scope("singleton") +public class PulseVersionService implements PulseService { + + public JSONObject execute(final HttpServletRequest request) throws Exception { + + // json object to be sent as response + JSONObject responseJSON = new JSONObject(); + + try { + // Response + responseJSON.put("pulseVersion", + PulseController.pulseVersion.getPulseVersion()); + responseJSON.put("buildId", + PulseController.pulseVersion.getPulseBuildId()); + responseJSON.put("buildDate", + PulseController.pulseVersion.getPulseBuildDate()); + responseJSON.put("sourceDate", + PulseController.pulseVersion.getPulseSourceDate()); + responseJSON.put("sourceRevision", + PulseController.pulseVersion.getPulseSourceRevision()); + responseJSON.put("sourceRepository", + PulseController.pulseVersion.getPulseSourceRepository()); + } catch (JSONException e) { + throw new Exception(e); + } + // Send json response + return responseJSON; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java new file mode 100644 index 0000000..30ec856 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/QueryStatisticsService.java @@ -0,0 +1,142 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import com.vmware.gemfire.tools.pulse.internal.data.Cluster; +import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants; +import com.vmware.gemfire.tools.pulse.internal.data.Repository; +import com.vmware.gemfire.tools.pulse.internal.json.JSONArray; +import com.vmware.gemfire.tools.pulse.internal.json.JSONException; +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; + +/** + * Class QueryStatisticsService + * + * This class returns top N queries based on pagination and filtering criteria + * if any + * + * @author Riya Bhandekar + * @since version 7.5 + */ +@Component +@Service("QueryStatistics") +@Scope("singleton") +public class QueryStatisticsService implements PulseService { + + @Override + public JSONObject execute(final HttpServletRequest request) throws Exception { + + // get cluster object + Cluster cluster = Repository.get().getCluster(); + + // json object to be sent as response + JSONObject responseJSON = new JSONObject(); + + try { + Cluster.Statement[] stmts = cluster.getStatements(); + + JSONObject queryJSON; + JSONArray queryListJson = new JSONArray(); + for (int i = 0; i < stmts.length; ++i) { + queryJSON = new JSONObject(); + queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_QUERYDEFINITION, + stmts[i].getQueryDefinition()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_NUMTIMESCOMPILED, + (stmts[i].getNumTimesCompiled() < 0) ? this.VALUE_NA : stmts[i] + .getNumTimesCompiled()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_NUMEXECUTION, + (stmts[i].getNumExecution() < 0) ? this.VALUE_NA : stmts[i] + .getNumExecution()); + queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMEXECUTIONSINPROGRESS, + (stmts[i].getNumExecutionsInProgress() < 0) ? this.VALUE_NA + : stmts[i].getNumExecutionsInProgress()); + queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_NUMTIMESGLOBALINDEXLOOKUP, + (stmts[i].getNumTimesGlobalIndexLookup() < 0) ? this.VALUE_NA + : stmts[i].getNumTimesGlobalIndexLookup()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_NUMROWSMODIFIED, + (stmts[i].getNumRowsModified() < 0) ? this.VALUE_NA : stmts[i] + .getNumRowsModified()); + queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_PARSETIME, (stmts[i] + .getParseTime() < 0) ? this.VALUE_NA : stmts[i].getParseTime()); + queryJSON.put(PulseConstants.MBEAN_ATTRIBUTE_BINDTIME, (stmts[i] + .getBindTime() < 0) ? this.VALUE_NA : stmts[i].getBindTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_OPTIMIZETIME, + (stmts[i].getOptimizeTime() < 0) ? this.VALUE_NA : stmts[i] + .getOptimizeTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_ROUTINGINFOTIME, + (stmts[i].getRoutingInfoTime() < 0) ? this.VALUE_NA : stmts[i] + .getRoutingInfoTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_GENERATETIME, + (stmts[i].getGenerateTime() < 0) ? this.VALUE_NA : stmts[i] + .getGenerateTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_TOTALCOMPILATIONTIME, + (stmts[i].getTotalCompilationTime() < 0) ? this.VALUE_NA : stmts[i] + .getTotalCompilationTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_EXECUTIONTIME, + (stmts[i].getExecutionTime() < 0) ? this.VALUE_NA : stmts[i] + .getExecutionTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_PROJECTIONTIME, + (stmts[i].getProjectionTime() < 0) ? this.VALUE_NA : stmts[i] + .getProjectionTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_TOTALEXECUTIONTIME, + (stmts[i].getTotalExecutionTime() < 0) ? this.VALUE_NA : stmts[i] + .getTotalExecutionTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_ROWSMODIFICATIONTIME, + (stmts[i].getRowsModificationTime() < 0) ? this.VALUE_NA : stmts[i] + .getRowsModificationTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_QNNUMROWSSEEN, + (stmts[i].getqNNumRowsSeen() < 0) ? this.VALUE_NA : stmts[i] + .getqNNumRowsSeen()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_QNMSGSENDTIME, + (stmts[i].getqNMsgSendTime() < 0) ? this.VALUE_NA : stmts[i] + .getqNMsgSendTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_QNMSGSERTIME, + (stmts[i].getqNMsgSerTime() < 0) ? this.VALUE_NA : stmts[i] + .getqNMsgSerTime()); + queryJSON.put( + PulseConstants.MBEAN_ATTRIBUTE_QNRESPDESERTIME, + (stmts[i].getqNRespDeSerTime() < 0) ? this.VALUE_NA : stmts[i] + .getqNRespDeSerTime()); + queryListJson.put(queryJSON); + } + responseJSON.put("queriesList", queryListJson); + + // return jmx status + responseJSON.put("connectedFlag", cluster.isConnectedFlag()); + responseJSON.put("connectedErrorMsg", cluster.getConnectionErrorMsg()); + + // Send json response + return responseJSON; + + } catch (JSONException e) { + throw new Exception(e); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java new file mode 100644 index 0000000..2d089e4 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/service/SystemAlertsService.java @@ -0,0 +1,124 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.service; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import com.vmware.gemfire.tools.pulse.internal.data.Cluster; +import com.vmware.gemfire.tools.pulse.internal.data.Repository; +import com.vmware.gemfire.tools.pulse.internal.json.JSONArray; +import com.vmware.gemfire.tools.pulse.internal.json.JSONException; +import com.vmware.gemfire.tools.pulse.internal.json.JSONObject; +import com.vmware.gemfire.tools.pulse.internal.util.StringUtils; + +/** + * Class SystemAlertsService + * + * This class contains implementations of getting system's alerts details (like + * errors, warnings and severe errors). + * + * @author Anchal G + * @since version 7.5 + */ + +@Component +@Service("SystemAlerts") +@Scope("singleton") +public class SystemAlertsService implements PulseService { + + public JSONObject execute(final HttpServletRequest request) throws Exception { + + // get cluster object + Cluster cluster = Repository.get().getCluster(); + + // json object to be sent as response + JSONObject responseJSON = new JSONObject(); + + try { + JSONObject requestDataJSON = new JSONObject( + request.getParameter("pulseData")); + int pageNumber = 1; // Default + String strPageNumber = requestDataJSON.getJSONObject("SystemAlerts") + .getString("pageNumber"); + if (StringUtils.isNotNullNotEmptyNotWhiteSpace(strPageNumber)) { + try { + pageNumber = Integer.valueOf(strPageNumber); + } catch (NumberFormatException e) { + } + } + + // clucter's Members + responseJSON.put("systemAlerts", getAlertsJson(cluster, pageNumber)); + responseJSON.put("pageNumber", cluster.getNotificationPageNumber()); + responseJSON.put("connectedFlag", cluster.isConnectedFlag()); + responseJSON.put("connectedErrorMsg", cluster.getConnectionErrorMsg()); + + } catch (JSONException e) { + throw new Exception(e); + } + + // Send json response + return responseJSON; + } + + /** + * function used for getting all members details in format of JSON Object + * array defined under a cluster + * + * @param cluster + * @return JSONObject Array list + */ + public static JSONObject getAlertsJson(Cluster cluster, int pageNumber) + throws JSONException { + // getting list of all types of alerts + Cluster.Alert[] alertsList = cluster.getAlertsList(); + + // create alerts json + JSONObject alertsJsonObject = new JSONObject(); + + if ((alertsList != null) && (alertsList.length > 0)) { + JSONArray errorJsonArray = new JSONArray(); + JSONArray severeJsonArray = new JSONArray(); + JSONArray warningJsonArray = new JSONArray(); + JSONArray infoJsonArray = new JSONArray(); + + cluster.setNotificationPageNumber(pageNumber); + for (Cluster.Alert alert : alertsList) { + JSONObject objAlertJson = new JSONObject(); + objAlertJson.put("description", alert.getDescription()); + objAlertJson.put("memberName", alert.getMemberName()); + objAlertJson.put("severity", alert.getSeverity()); + objAlertJson.put("isAcknowledged", alert.isAcknowledged()); + objAlertJson.put("timestamp", alert.getTimestamp().toString()); + objAlertJson.put("iso8601Ts", alert.getIso8601Ts()); + objAlertJson.put("id", alert.getId()); + + if (alert.getSeverity() == Cluster.Alert.SEVERE) { + severeJsonArray.put(objAlertJson); + } else if (alert.getSeverity() == Cluster.Alert.ERROR) { + errorJsonArray.put(objAlertJson); + } else if (alert.getSeverity() == Cluster.Alert.WARNING) { + warningJsonArray.put(objAlertJson); + } else { + infoJsonArray.put(objAlertJson); + } + } + alertsJsonObject.put("info", infoJsonArray); + alertsJsonObject.put("warnings", warningJsonArray); + alertsJsonObject.put("errors", errorJsonArray); + alertsJsonObject.put("severe", severeJsonArray); + } + return alertsJsonObject; + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java new file mode 100644 index 0000000..f1defe0 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/ConnectionUtil.java @@ -0,0 +1,36 @@ +/*========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * one or more patents listed at http://www.pivotal.io/patents. + *========================================================================= + */ +package com.vmware.gemfire.tools.pulse.internal.util; + +import java.io.IOException; + +import javax.net.SocketFactory; +import javax.net.ssl.SSLSocketFactory; + + +/** + * + * @author rishim + * + */ +public class ConnectionUtil { + + + + public static SocketFactory getSocketFactory(boolean usessl) + throws IOException + { + if(usessl){ + return (SSLSocketFactory)SSLSocketFactory.getDefault(); + }else{ + return SocketFactory.getDefault(); + } + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java new file mode 100644 index 0000000..0c2b63e --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/IPAddressUtil.java @@ -0,0 +1,56 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +/* [ NOTE: + * This class supposed to be removed, if required, after discussing with + * VMware team ] + */ +/** + * Class IPAddressUtil This is utility class for checking whether ip address is + * versions i.e. IPv4 or IPv6 address + * + * @author Sachin K + * + * @since version 7.0.1 + */ +public class IPAddressUtil { + + private static Pattern VALID_IPV4_PATTERN = null; + private static Pattern VALID_IPV6_PATTERN = null; + private static final String ipv4Pattern = "(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])"; + private static final String ipv6Pattern = "([0-9a-f]{1,4}:){7}([0-9a-f]){1,4}"; + + static { + try { + VALID_IPV4_PATTERN = Pattern.compile(ipv4Pattern, + Pattern.CASE_INSENSITIVE); + VALID_IPV6_PATTERN = Pattern.compile(ipv6Pattern, + Pattern.CASE_INSENSITIVE); + } catch (PatternSyntaxException e) { + + } + } + + public static Boolean isIPv4LiteralAddress(String IPAddress) { + Matcher matcher = IPAddressUtil.VALID_IPV4_PATTERN.matcher(IPAddress); + return matcher.matches(); + } + + public static Boolean isIPv6LiteralAddress(String IPAddress) { + + Matcher matcher = IPAddressUtil.VALID_IPV6_PATTERN.matcher(IPAddress); + return matcher.matches(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java new file mode 100644 index 0000000..d9d75c3 --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/StringUtils.java @@ -0,0 +1,76 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.util; + +/** + * Class StringUtils This is utility class for string. + * + * @author Sachin K + * + * @since version 7.0.1 + */ +public class StringUtils { + /** + * Checks the string if it is not null, not empty, and not white space only + * using standard Java classes. + * + * @param string + * String to be checked. + * @return {@code true} if provided String is not null, is not empty, and has + * at least one character that is not considered white space. + */ + public static boolean isNotNullNotEmptyNotWhiteSpace(final String string) { + return string != null && !string.isEmpty() && !string.trim().isEmpty(); + } + + /** + * Checking for String that is not null, not empty, and not white space only + * using standard Java classes. + * + * @param value + * String to be made compliant. + * @return string compliant string. + */ + public static String makeCompliantName(String value) { + value = value.replace(':', '-'); + value = value.replace(',', '-'); + value = value.replace('=', '-'); + value = value.replace('*', '-'); + value = value.replace('?', '-'); + if (value.length() < 1) { + value = "nothing"; + } + return value; + } + + /** + * Function to get table name derived from region name/full path + * + * @param regionName + * String to be made compliant. + * @return string compliant string. + */ + public static String getTableNameFromRegionName(String regionName) { + String tableName = regionName.replaceFirst("/", "").replace('/', '.'); + return tableName; + } + + /** + * Function to get region name/full path derived from table name + * + * @param regionName + * String to be made compliant. + * @return string compliant string. + */ + public static String getRegionNameFromTableName(String tableName) { + String regionName = "/" + tableName.replace('.', '/'); + return regionName; + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java ---------------------------------------------------------------------- diff --git a/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java new file mode 100644 index 0000000..27cd16b --- /dev/null +++ b/pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/util/TimeUtils.java @@ -0,0 +1,111 @@ +/* + * ========================================================================= + * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. + * This product is protected by U.S. and international copyright + * and intellectual property laws. Pivotal products are covered by + * more patents listed at http://www.pivotal.io/patents. + * ======================================================================== + */ + +package com.vmware.gemfire.tools.pulse.internal.util; + +/** + * Class TimeUtils + * + * This is utility class used for conversions of time. + * + * @author Sachin K + * + * @since version 7.0.1 + */ +public class TimeUtils { + + /** + * Method to converts time given in milliseconds to string representation in + * days, hours, minutes and seconds + * + * @param longMilliSecs + * Time in milliseconds. + * @return String + */ + public static String convertTimeMillisecondsToHMS(long longMilliSecs) { + + long days = longMilliSecs / (1000 * 60 * 60 * 24); + long remainder = longMilliSecs % (1000 * 60 * 60 * 24); + + long hours = remainder / (1000 * 60 * 60); + remainder = remainder % (1000 * 60 * 60); + + long mins = remainder / (1000 * 60); + remainder = remainder % (1000 * 60); + + long secs = remainder / 1000; + + String strDaysHrsMinsSecs = ""; + + if (days > 0) { + strDaysHrsMinsSecs += days + " Days "; + } + + if (hours > 0) { + strDaysHrsMinsSecs += hours + " Hours "; + } else { + strDaysHrsMinsSecs += "0 Hours "; + } + + if (mins > 0) { + strDaysHrsMinsSecs += mins + " Mins "; + } else { + strDaysHrsMinsSecs += "0 Mins "; + } + + strDaysHrsMinsSecs += secs + " Secs"; + + return strDaysHrsMinsSecs; + } + + /** + * Method to converts time given in seconds to string representation in days, + * hours, minutes and seconds + * + * @param longSecs + * Time in seconds. + * @return String + */ + public static String convertTimeSecondsToHMS(long longSecs) { + + long days = longSecs / (60 * 60 * 24); + long remainder = longSecs % (60 * 60 * 24); + + long hours = remainder / (60 * 60); + remainder = remainder % (60 * 60); + + long mins = remainder / (60); + remainder = remainder % (60); + + long secs = remainder; + + String strDaysHrsMinsSecs = ""; + + if (days > 0) { + strDaysHrsMinsSecs += days + " Days "; + } + + if (hours > 0) { + strDaysHrsMinsSecs += hours + " Hours "; + } else { + strDaysHrsMinsSecs += "0 Hours "; + } + + if (mins > 0) { + strDaysHrsMinsSecs += mins + " Mins "; + } else { + strDaysHrsMinsSecs += "0 Mins "; + } + + strDaysHrsMinsSecs += secs + " Secs"; + + return strDaysHrsMinsSecs; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/LogMessages_en_US.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/LogMessages_en_US.properties b/pulse/src/main/resources/LogMessages_en_US.properties new file mode 100644 index 0000000..b721b6d --- /dev/null +++ b/pulse/src/main/resources/LogMessages_en_US.properties @@ -0,0 +1,78 @@ +#Log message for English, United State +LOG_MSG_PULSE_VERSION = Pulse Version: +LOG_MSG_CONTEXT_INITIALIZED = Context Initialized.. +LOG_MSG_CONTEXT_DESTROYED = Context Destroyed.. +LOG_MSG_CHECK_LOG_PROPERTIES_IN_FILE = Checking whether log configurations provided in properties file.. +LOG_MSG_CHECK_LOG_PROPERTIES_IN_SYSTEM_PROPERTIES = Checking whether log configurations provided through system properties.. +LOG_MSG_LOG_PROPERTIES_FOUND_IN_FILE = Some/All Log properties provided in properties file +LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_FILE = None of the log properties provided in properties file +LOG_MSG_LOG_PROPERTIES_FOUND_IN_SYSTEM_PROPERTIES = Some/All Log properties provided through system properties +LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_SYSTEM_PROPERTIES = None of the log properties provided through system properties +LOG_MSG_CHECK_APP_RUNNING_MODE = Checking whether Pulse is running in embedded mode.. +LOG_MSG_APP_RUNNING_EMBEDDED_MODE = Pulse is running in Embedded Mode.. +LOG_MSG_APP_RUNNING_NONEMBEDDED_MODE = Pulse is running in Non-Embedded Mode.. +LOG_MSG_APP_RUNNING_EMBEDDED_SQLF_MODE = Pulse is running in Embedded SQLF system +LOG_MSG_GET_JMX_USER_DETAILS = Getting JMX User details from properties +LOG_MSG_JMX_USER_DETAILS_FOUND = JMX User Details Found.. +LOG_MSG_JMX_USER_DETAILS_NOT_FOUND = JMX User Details Not Found.. +LOG_MSG_GET_LOCATOR_DETAILS_1 = Getting locator/manager details through System Properties.. +LOG_MSG_GET_LOCATOR_DETAILS_2 = Getting locator/Manager details from Properties File.. +LOG_MSG_LOCATOR_DETAILS_FOUND = Locator/Manager Properties Found.. +LOG_MSG_LOCATOR_DETAILS_NOT_FOUND = Locator/Manager Properties NOT Found.. + +################Property File Related ##################### +LOG_MSG_PROPERTIES_FOUND = Pulse properties found in properties file +LOG_MSG_PROPERTIES_NOT_FOUND = Pulse properties not found +LOG_MSG_FILE_FOUND = File Found +LOG_MSG_COULD_NOT_READ_FILE = Could not read Properties File +LOG_MSG_REASON_FILE_NOT_FOUND = Reason: could not find Properties File.. +LOG_MSG_REASON_COULD_NOT_READ_FILE = Reason: could not read Properties File.. +LOG_MSG_REASON_USER_DETAILS_NOT_FOUND = Reason: jmx user details not present in Properties File.. +LOG_MSG_EXCEPTION_CLOSING_INPUT_STREAM = Exception while closing input stream for file +LOG_MSG_EXCEPTION_LOADING_PROPERTIES_FILE = Exception while loading properties from properties file + +################################################################################### + +LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_1 = Reason: System Properties Not Found.. +LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_2 = Reason: Properties not found in Properties File.. + + +LOG_MSG_CREATE_NEW_THREAD = Creating New Cluster Thread... +LOG_MSG_REMOVE_THREAD = Removing Cluster Thread... +LOG_MSG_START_THREAD_UPDATES = Starting update thread for cluster +LOG_MSG_STOP_THREAD_UPDATES = Stopping update thread for cluster +LOG_MSG_CLUSTER_DATA_IS_UPDATING = Updating Cluster data for Cluster + +LOG_MSG_USE_LOCATOR_VALUE = Use Locator is set +LOG_MSG_HOST = Host +LOG_MSG_PORT = Port +LOG_MSG_WITH_SSL = with SSL +LOG_MSG_WITHOUT_SSL = without SSL +LOG_MSG_LOCATOR_COULD_NOT_FIND_MANAGER = Locator could not find a jmx manager +LOG_MSG_LOCATOR_FOUND_MANAGER = Locator has found a jmx manager +LOG_MSG_REGISTERING_APP_URL_TO_MANAGER = Registering Pulse App URL to JMX Manager.. +LOG_MSG_SETTING_APP_URL_TO_MANAGER = Setting Pulse App URL to JMX Manager.. +LOG_MSG_APP_URL_ALREADY_PRESENT_IN_MANAGER = Pulse App URL is already present in JMX Manager.. +LOG_MSG_JMX_GET_NEW_CONNECTION = Get new JMX connection.. +LOG_MSG_JMX_GETTING_NEW_CONNECTION = Getting new JMX connection.. +LOG_MSG_JMX_CONNECTION_NOT_FOUND = JMX Connection Not Found.. +LOG_MSG_JMX_CONNECTION_IS_AVAILABLE = JMX Connection is available.. +LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST = Unknown Host +LOG_MSG_JMX_CONNECTION_IPv6_ADDRESS = Host has IPv6 Address +LOG_MSG_JMX_CONNECTION_BAD_ADDRESS = Bad Host Address +LOG_MSG_JMX_CONNECTION_TIME_OUT = Connection Timed Out + +LOG_MSG_LOCATOR_IPV4_ADDRESS = Locator has IPv4 Address +LOG_MSG_LOCATOR_IPV6_ADDRESS = Locator has IPv6 Address +LOG_MSG_LOCATOR_BAD_ADDRESS = Locator address is badly formed +# For Data Browser +LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_NOT_FOUND = Pulse Query History log file not found.. +LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_DESCRIPTION = Pulse Data Browser Query logs .. + +# For MOCK data +LOG_MSG_REFRESHING_MEMBER_DATA = Refreshing data for member + + +# For SSL messages +LOG_MSG_GET_SSL_DETAILS = Setting SSL properties +LOG_MSG_SSL_NOT_SET = SSL properties are not mentioned in Pulse.properties while either pulse.useSSL.locator or pulse.useSSL.manager property is marked as true. Connection wont be successful. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/LogMessages_fr_FR.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/LogMessages_fr_FR.properties b/pulse/src/main/resources/LogMessages_fr_FR.properties new file mode 100644 index 0000000..bb76fd6 --- /dev/null +++ b/pulse/src/main/resources/LogMessages_fr_FR.properties @@ -0,0 +1,72 @@ +#Log message for English, United State +LOG_MSG_PULSE_VERSION = Pulse Version: french +LOG_MSG_CONTEXT_INITIALIZED = Context Initialized..french +LOG_MSG_CONTEXT_DESTROYED = Context Destroyed..french +LOG_MSG_CHECK_LOG_PROPERTIES_IN_FILE = Checking whether log configurations provided in properties file.. +LOG_MSG_CHECK_LOG_PROPERTIES_IN_SYSTEM_PROPERTIES = Checking whether log configurations provided through system properties.. +LOG_MSG_LOG_PROPERTIES_FOUND_IN_FILE = Some/All Log properties provided in properties file +LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_FILE = None of the log properties provided in properties file +LOG_MSG_LOG_PROPERTIES_FOUND_IN_SYSTEM_PROPERTIES = Some/All Log properties provided through system properties +LOG_MSG_LOG_PROPERTIES_NOT_FOUND_IN_SYSTEM_PROPERTIES = None of the log properties provided through system properties +LOG_MSG_CHECK_APP_RUNNING_MODE = Checking whether Pulse is running in embedded mode.. +LOG_MSG_APP_RUNNING_EMBEDDED_MODE = Pulse is running in Embedded Mode.. +LOG_MSG_APP_RUNNING_NONEMBEDDED_MODE = Pulse is running in Non-Embedded Mode.. +LOG_MSG_APP_RUNNING_EMBEDDED_SQLF_MODE = Pulse is running in Embedded SQLF system +LOG_MSG_GET_JMX_USER_DETAILS = Getting JMX User details from properties +LOG_MSG_JMX_USER_DETAILS_FOUND = JMX User Details Found.. +LOG_MSG_JMX_USER_DETAILS_NOT_FOUND = JMX User Details Not Found.. +LOG_MSG_GET_LOCATOR_DETAILS_1 = Getting locator/manager details through System Properties.. +LOG_MSG_GET_LOCATOR_DETAILS_2 = Getting locator/Manager details from Properties File.. +LOG_MSG_LOCATOR_DETAILS_FOUND = Locator/Manager Properties Found.. +LOG_MSG_LOCATOR_DETAILS_NOT_FOUND = Locator/Manager Properties NOT Found.. +LOG_MSG_PROPERTIES_FOUND = Pulse properties found in properties file +LOG_MSG_PROPERTIES_NOT_FOUND = Pulse properties not found +LOG_MSG_PROPERTIES_FILE_FOUND = Properties File Found +LOG_MSG_COULD_NOT_READ_FILE = Could not read Properties File.. + +LOG_MSG_REASON_FILE_NOT_FOUND = Reason: could not find Properties File.. +LOG_MSG_REASON_COULD_NOT_READ_FILE = Reason: could not read Properties File.. +LOG_MSG_REASON_USER_DETAILS_NOT_FOUND = Reason: jmx user details not present in Properties File.. +LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_1 = Reason: System Properties Not Found.. +LOG_MSG_REASON_LOCATOR_DETAILS_NOT_FOUND_2 = Reason: Properties not found in Properties File.. +LOG_MSG_EXCEPTION_CLOSING_INPUT_STREAM = Exception while closing input stream +LOG_MSG_EXCEPTION_LOADING_PROPERTIES_FILE = Exception while loading properties from properties file + +LOG_MSG_CREATE_NEW_THREAD = Creating New Cluster Thread... +LOG_MSG_REMOVE_THREAD = Removing Cluster Thread... +LOG_MSG_START_THREAD_UPDATES = Starting update thread for cluster +LOG_MSG_STOP_THREAD_UPDATES = Stopping update thread for cluster +LOG_MSG_CLUSTER_DATA_IS_UPDATING = Updating Cluster data for Cluster + +LOG_MSG_USE_LOCATOR_VALUE = Use Locator is set +LOG_MSG_HOST = Host +LOG_MSG_PORT = Port +LOG_MSG_WITH_SSL = with SSL +LOG_MSG_WITHOUT_SSL = without SSL +LOG_MSG_LOCATOR_COULD_NOT_FIND_MANAGER = Locator could not find a jmx manager +LOG_MSG_LOCATOR_FOUND_MANAGER = Locator has found a jmx manager +LOG_MSG_REGISTERING_APP_URL_TO_MANAGER = Registering Pulse App URL to JMX Manager.. +LOG_MSG_SETTING_APP_URL_TO_MANAGER = Setting Pulse App URL to JMX Manager.. +LOG_MSG_APP_URL_ALREADY_PRESENT_IN_MANAGER = Pulse App URL is already present in JMX Manager.. +LOG_MSG_JMX_GET_NEW_CONNECTION = Get new JMX connection.. +LOG_MSG_JMX_GETTING_NEW_CONNECTION = Getting new JMX connection.. +LOG_MSG_JMX_CONNECTION_NOT_FOUND = JMX Connection Not Found.. +LOG_MSG_JMX_CONNECTION_IS_AVAILABLE = JMX Connection is available.. +LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST = Unknown Host +LOG_MSG_JMX_CONNECTION_IPv6_ADDRESS = Host has IPv6 Address +LOG_MSG_JMX_CONNECTION_BAD_ADDRESS = Bad Host Address +LOG_MSG_JMX_CONNECTION_TIME_OUT = Connection Timed Out + +LOG_MSG_LOCATOR_IPV4_ADDRESS = Locator has IPv4 Address +LOG_MSG_LOCATOR_IPV6_ADDRESS = Locator has IPv6 Address +LOG_MSG_LOCATOR_BAD_ADDRESS = Locator address is badly formed +# For Data Browser +LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_NOT_FOUND = Pulse Query History log file not found.. +LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_DESCRIPTION = Pulse Data Browser Query logs .. + +# For MOCK data +LOG_MSG_REFRESHING_MEMBER_DATA = Refreshing data for member + +# For SSL messages +LOG_MSG_GET_SSL_DETAILS = Setting SSL properties +LOG_MSG_SSL_NOT_SET = SSL properties are not mentioned in Pulse.properties while either pulse.useSSL.locator or pulse.useSSL.manager property is marked as true. Connection wont be successful. http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/NoDataFound1.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/NoDataFound1.txt b/pulse/src/main/resources/NoDataFound1.txt new file mode 100644 index 0000000..2fb180d --- /dev/null +++ b/pulse/src/main/resources/NoDataFound1.txt @@ -0,0 +1 @@ +{"message":"No Data Found"} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/NoDataFound2.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/NoDataFound2.txt b/pulse/src/main/resources/NoDataFound2.txt new file mode 100644 index 0000000..c22e3af --- /dev/null +++ b/pulse/src/main/resources/NoDataFound2.txt @@ -0,0 +1,35 @@ +{"result":[ + {"message":"No Data Found"}, + { + "member":[["java.lang.String","SachinK(S1:5840):24856"]], + "result":[ + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]], + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]], + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]] + ] + }, + + {"message":"No Data Found"}, + + {"message":"No Data Found"}, + + { + "member":[["java.lang.String","SachinK(S3:5230):32145"]], + "result":[ + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]], + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]], + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]] + ] + }, + + { + "member":[["java.lang.String","SachinK(S2:7572):14582"]], + "result":[ + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]], + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]], + ["java.lang.String[]",["FirststrArrval1","SecondstrArrval2","ThirdstrArrval3"]] + ] + }, + + {"message":"No Data Found"} +]} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/NoDataFound3.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/NoDataFound3.txt b/pulse/src/main/resources/NoDataFound3.txt new file mode 100644 index 0000000..a6248eb --- /dev/null +++ b/pulse/src/main/resources/NoDataFound3.txt @@ -0,0 +1,6 @@ +{"result":[ + {"message":"No Data Found"}, + {"message":"No Data Found"}, + {"message":"No Data Found"}, + {"message":"No Data Found"} +]} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/default.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/default.properties b/pulse/src/main/resources/default.properties new file mode 100644 index 0000000..46903d7 --- /dev/null +++ b/pulse/src/main/resources/default.properties @@ -0,0 +1,4 @@ +# All properties which are common between GemFire & SQLFire are to be added here. +# No property to repeat in specific files of GemFire and SQLFire products + + http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/gemfire.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/gemfire.properties b/pulse/src/main/resources/gemfire.properties new file mode 100644 index 0000000..9ee4fc6 --- /dev/null +++ b/pulse/src/main/resources/gemfire.properties @@ -0,0 +1,28 @@ +# All properties for GemFire are to be added here. +# No property to repeat from default file +pulse-writeputpersec-custom=Write/Sec. +pulse-readgetpersec-custom=Read/Sec. +pulse-writes-custom=Writes +pulse-reads-custom=Reads +pulse-monitoring-custom=images/pulse-monitoring.png +pulse-aboutimg-custom=images/about.png +pulse-help-custom=http://gemfire.docs.pivotal.io/latest/userguide/index.html#tools_modules/pulse/chapter_overview.html +pulse-about-custom=The Pulse tool monitors Pivotal™ GemFire© 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:  +pulse-regionstableType-custom=Region Type:  +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/c4f7ff44/pulse/src/main/resources/message.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/message.txt b/pulse/src/main/resources/message.txt new file mode 100644 index 0000000..fadced5 --- /dev/null +++ b/pulse/src/main/resources/message.txt @@ -0,0 +1 @@ +{"message":"No Data Found"} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/pulse-users.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/pulse-users.properties b/pulse/src/main/resources/pulse-users.properties new file mode 100644 index 0000000..22a58ba --- /dev/null +++ b/pulse/src/main/resources/pulse-users.properties @@ -0,0 +1,11 @@ +#Pulse-Users Properties File +#Tue, 09 Oct 2012 16:39:00 + +# Currently none of the users should have role as "ROLE_RESTRICTED" + +jim=jimbob,ROLE_USER,enabled +#admin=admin,ROLE_USER,enabled + +user1=user1,ROLE_USER,enabled +user2=user2,ROLE_USER,enabled +user3=user3,ROLE_USER,enabled \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/pulse.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/pulse.properties b/pulse/src/main/resources/pulse.properties new file mode 100644 index 0000000..17299c2 --- /dev/null +++ b/pulse/src/main/resources/pulse.properties @@ -0,0 +1,35 @@ +#Pulse JMX Locator/Manager Properties File +#Tue, 09 Oct 2012 16:39:00 + +# JMX Locator/Manager Properties +#pulse.useLocator=true +#pulse.host=SachinK.clarice.com +#pulse.useLocator=true +#pulse.host=pnq-pratik.vmware.com +#pulse.port=10334 + +pulse.useLocator=true +pulse.host=pnq-pratik.vmware.com +pulse.port=10334 + +#pulse.useSSL.locator=true +#pulse.useSSL.manager=true + +# JMX User Properties +pulse.jmxUserName=controlRole +pulse.jmxUserPassword=R&D + +# Logging Configurations Properties +pulse.Log-File-Name=PULSELOG +#pulse.Log-File-Location=F:\\PulseLogs +pulse.Log-File-Size=1048576 +pulse.Log-File-Count=3 +pulse.Log-Date-Pattern=yyyy/MM/dd HH:mm:ss.SSS z +pulse.Log-Level=info +pulse.Log-Append=true + +# For supporting gemfire and sqlfire both in pulse +# valid values are as follows +# for GemFire "gemfire" +# for GemFireXD "gemfirexd" +pulse.product=gemfire http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/pulsesecurity.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/pulsesecurity.properties b/pulse/src/main/resources/pulsesecurity.properties new file mode 100644 index 0000000..dbb4117 --- /dev/null +++ b/pulse/src/main/resources/pulsesecurity.properties @@ -0,0 +1,7 @@ +########### SSL Related Properties to be set in an SSL enabled environment ###################### +#javax.net.ssl.keyStore={KeyStorePath} +#javax.net.ssl.keyStorePassword={KeyStorePassword} +#javax.net.ssl.trustStore={TrustStorePath} +#javax.net.ssl.trustStorePassword={TrustStorePassword} + +################################################################################################## \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/pulseversion.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/pulseversion.properties b/pulse/src/main/resources/pulseversion.properties new file mode 100644 index 0000000..d9c777b --- /dev/null +++ b/pulse/src/main/resources/pulseversion.properties @@ -0,0 +1,14 @@ +#Pulse Properties File +#Wed, 03 Oct 2012 16:58:00 -0700 + +pulse.version=7.0.Beta +#pulse.buildId=build 38339 +#pulse.buildDate=10/03/2012 16\:57\:56 PDT +#pulse.sourceDate=10/03/2012 16\:47 \:40 PDT +#pulse.sourceRevision=38339 +#pulse.sourceRepository=gemfire/trunk +Build-Id=build 38339 +Build-Date=10/03/2012 16\:57\:56 PDT +Source-Date=10/03/2012 16\:47 \:40 PDT +Source-Revision=38339 +Source-Repository=gemfire/trunk \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/sqlfire.properties ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/sqlfire.properties b/pulse/src/main/resources/sqlfire.properties new file mode 100644 index 0000000..e80fc45 --- /dev/null +++ b/pulse/src/main/resources/sqlfire.properties @@ -0,0 +1,28 @@ +# All properties for SQLFire are to be added here. +# No property to repeat from default file +pulse-writeputpersec-custom=Put/Sec. +pulse-readgetpersec-custom=Get/Sec. +pulse-writes-custom=Writes +pulse-reads-custom=Reads +pulse-monitoring-custom=images/sqlfire.png +pulse-aboutimg-custom=images/about-sqlfire.png +pulse-help-custom=http://pubs.vmware.com/vfabricNoSuite/topic/com.vmware.vfabric.gemfire.7.0/tools_modules/pulse/chapter_overview.html +pulse-about-custom=The Pulse tool monitors vFabric™ SQLFire© 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:  +pulse-regionstableType-custom=Table Type:  +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/c4f7ff44/pulse/src/main/resources/test1.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test1.txt b/pulse/src/main/resources/test1.txt new file mode 100644 index 0000000..723d918 --- /dev/null +++ b/pulse/src/main/resources/test1.txt @@ -0,0 +1,5 @@ +{"result":[ + ["java.lang.Integer",45], + ["java.lang.Integer",12], + ["java.lang.Integer",34] +]} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/test2.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test2.txt b/pulse/src/main/resources/test2.txt new file mode 100644 index 0000000..8a9bf2e --- /dev/null +++ b/pulse/src/main/resources/test2.txt @@ -0,0 +1,7 @@ +{"result":[ + ["java.lang.Integer",45], + ["java.lang.Integer",12], + ["java.lang.Integer",34], + ["String","anystring"], + ["String","anotherstring"] +]} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/test3.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test3.txt b/pulse/src/main/resources/test3.txt new file mode 100644 index 0000000..56c0c48 --- /dev/null +++ b/pulse/src/main/resources/test3.txt @@ -0,0 +1,5 @@ +{"result":[ + ["int[]",[1000,1010,1020]], + ["int[]",[2000,2010,2020,2030]], + ["int[]",[3000,3010]] +]} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/test4.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test4.txt b/pulse/src/main/resources/test4.txt new file mode 100644 index 0000000..799ad9c --- /dev/null +++ b/pulse/src/main/resources/test4.txt @@ -0,0 +1,4 @@ +{"result":[ + ["java.util.ArrayList",{"0":["java.lang.String","seeta"],"1":["java.lang.String","geeta"],"2":["java.lang.String","meeta"]}], + ["java.util.ArrayList",{"0":["java.lang.String","sonu"],"1":["java.lang.String","monu"],"2":["java.lang.String","chinu"]}] +]} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/test5.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test5.txt b/pulse/src/main/resources/test5.txt new file mode 100644 index 0000000..342c11e --- /dev/null +++ b/pulse/src/main/resources/test5.txt @@ -0,0 +1,7 @@ +{"result":[ + ["java.util.ArrayList",{ + "0":["java.lang.String[]",["one","two","three"]], + "1":["java.lang.String[]",["ek","do","teen"]], + "2":["java.lang.String[]",["one","two","three"]] + }] +]} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/test6.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test6.txt b/pulse/src/main/resources/test6.txt new file mode 100644 index 0000000..f086f62 --- /dev/null +++ b/pulse/src/main/resources/test6.txt @@ -0,0 +1,11 @@ +{"result":[ + {"member":[["java.lang.String","pc68(7930):30319"]], + "result":[ + ["com.gemstone.gemfire.cache.query.data.PortfolioDummy[]",[ + {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["j ava.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}, + {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["ja va.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]} + ]] + ] + } + ] +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/test7.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/test7.txt b/pulse/src/main/resources/test7.txt new file mode 100644 index 0000000..aaf128a --- /dev/null +++ b/pulse/src/main/resources/test7.txt @@ -0,0 +1,13 @@ +{"result":[ + ["com.gemstone.gemfire.cache.query.data.PortfolioDummy[]",[ + {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["java .util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}, + {"type":["java.lang.String","type0"],"ID":["int",1],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["java .util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]} + ]], + ["myObjects[]",[ + {"type":["java.lang.String","type0"],"ID":["int",123],"active":["boolean",true]}, + {"type":["java.lang.String","type0"],"ID":["int",234],"active":["boolean",false]}, + {"type":["java.lang.String","type0"],"ID":["int",345],"active":["boolean",false]} + ]], + ["int[]",[1000,1010, 1030]], + ["int[]",[2000,2010]] +]} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c4f7ff44/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt ---------------------------------------------------------------------- diff --git a/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt b/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt new file mode 100644 index 0000000..dea74cf --- /dev/null +++ b/pulse/src/main/resources/testNullObjectsAtRootLevel1.txt @@ -0,0 +1,25 @@ +{"result":[ + null, + + ["com.gemstone.gemfire.cache.query.data.PortfolioDummy", + {"type":["java.lang.String","type0"],"ID":["int",0],"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMapDummy":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["ja va.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}], + + ["com.gemstone.gemfire.cache.query.data.Portfolio", + {"type":["java.lang.String","type0"],"ID":null,"active":["boolean",true],"pk":["java.lang.String","0"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"YHOO":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",2],"secId":["java.lang.String","YHOO"],"mktValue":["double",3],"sharesOutstanding":["double",2000],"col":["java.util.Ha shSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"IBM":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",1],"secId":["java.lang.String","IBM"],"mktValue":["double",2],"sharesOutstanding":["double",1000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",0],"secId":["java.lang.String","SUN"],"mktValue":["double",1],"sharesOutstanding":["double",0],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}], + + null, + + ["com.gemstone.gemfire.cache.query.data.Portfolio", + {"type":["java.lang.String","type2"],"ID":["int",2],"active":["boolean",true],"pk":["java.lang.String","2"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"SAP":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",8],"secId":["java.lang.String","SAP"],"mktValue":["double",9],"sharesOutstanding":["double",8000],"col":["java.util .HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"DELL":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",9],"secId":["java.lang.String","DELL"],"mktValue":["double",10],"sharesOutstanding":["double",9000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",7],"secId":["java.lang.String","ORCL"],"mktValue":["double",8],"sharesOutstanding":["double",7000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":null,"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}], + + ["com.gemstone.gemfire.cache.query.data.Portfolio", + {"type":["java.lang.String","type0"],"ID":["int",3],"active":["boolean",false],"pk":["java.lang.String","3"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"HP":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",12],"secId":["java.lang.String","HP"],"mktValue":["double",13],"sharesOutstanding":["double",12000],"col":["java.ut il.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"SUN":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",13],"secId":["java.lang.String","SUN"],"mktValue":["double",14],"sharesOutstanding":["double",13000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",10],"secId":["java.lang.String","RHAT"],"mktValue":["double",11],"sharesOutstanding":["double",10000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",11],"secId":["java.lang.String","NOVL"],"mktValue":["double",12],"sharesOutstanding":["double",11000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}], + + null, + + null, + + ["com.gemstone.gemfire.cache.query.data.Portfolio", + {"type":["java.lang.String","type2"],"ID":["int",5],"active":["boolean",false],"pk":["java.lang.String","5"],"collectionHolderMap":["java.util.HashMap",{"3":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"2":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"1":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}],"0":["com.gemstone.gemfire.cache.query.data.CollectionHolder",{"arr":["java.lang.String[]",["0","1","2","3","4","SUN","IBM","YHOO","GOOG","MSFT"]]}]}],"createTime":["long",0],"positions":["java.util.HashMap",{"APPL":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",19],"secId":["java.lang.String","APPL"],"mktValue":["double",20],"sharesOutstanding":["double",19000],"col":["jav a.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"ORCL":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",20],"secId":["java.lang.String","ORCL"],"mktValue":["double",21],"sharesOutstanding":["double",20000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}]}],"p1":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",17],"secId":["java.lang.String","MSFT"],"mktValue":["double",18],"sharesOutstanding":["double",17000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"p2":["com.gemstone.gemfire.cache.query.data.Position",{"id":["int",18],"secId":["java.lang.String","AOL"],"mktValue":["double",19],"sharesOutstanding":["double",18000],"col":["java.util.HashSet",[["java.lang.String","1"],["java.lang.String","0"]]]}],"floatMinValue":["float",1.4E-45],"longMinValue":["float",-9.223372E18],"doubleMinValue":["double",4.9E-324]}] + ] +} \ No newline at end of file