Skip to content

Commit a2d9741

Browse files
authored
Fix issue with some attribtues causing NPE under REST and WLS (#115)
* Fix issue with some attribtues causing NPE under REST and WLS * minor javadoc
1 parent 2df74b4 commit a2d9741

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/tablemodel/model/AbstractData.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2025 Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -112,6 +112,31 @@ protected void preProcessReporterData(VisualVMModel model)
112112
{
113113
}
114114

115+
/**
116+
* Returns the string representation of a {@link JsonNode} and key.
117+
* @param node {@link JsonNode} to inspect
118+
* @param sKey key to retrieve
119+
* @return the string representation
120+
*/
121+
protected String getSafeValue(JsonNode node, String sKey)
122+
{
123+
return getSafeValue(node, sKey, null);
124+
}
125+
126+
/**
127+
* Returns the string representation of a {@link JsonNode} and key.
128+
* @param node {@link JsonNode} to inspect
129+
* @param sKey key to retrieve
130+
* @param sDefault default value
131+
*
132+
* @return the string representation
133+
*/
134+
protected String getSafeValue(JsonNode node, String sKey, String sDefault)
135+
{
136+
JsonNode jsonNode = node.get(sKey);
137+
return jsonNode != null ? jsonNode.asText() : sDefault;
138+
}
139+
115140
/**
116141
* {@inheritDoc}
117142
*/

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/tablemodel/model/CacheDetailData.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2025 Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -282,10 +282,11 @@ public SortedMap<Object, Data> getAggregatedDataFromHttpQueryingInternal(
282282
Long.valueOf(nodeCacheMember.get("cacheHits").asText()));
283283
data.setColumn(CacheDetailData.CACHE_MISSES,
284284
Integer.valueOf(nodeCacheMember.get("cacheMisses").asText()));
285+
285286
data.setColumn(CacheDetailData.CACHE_PRUNES,
286-
Long.valueOf(nodeCacheMember.get("cachePrunes").asText()));
287+
Long.valueOf(getSafeValue(nodeCacheMember, "cachePrunes", "0")));
287288
data.setColumn(CacheDetailData.CACHE_PRUNES_MILLIS,
288-
Long.valueOf(nodeCacheMember.get("cachePrunesMillis").asText()));
289+
Long.valueOf(getSafeValue(nodeCacheMember, "cachePrunesMillis", "0")));
289290
data.setColumn(CacheDetailData.HIT_PROBABILITY,
290291
Float.valueOf(nodeCacheMember.get("hitProbability").floatValue()));
291292

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/tablemodel/model/MemberData.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ public SortedMap<Object, Data> getAggregatedDataFromHttpQuerying(VisualVMModel m
191191
data.setColumn(MemberData.USED_MEMORY,
192192
(Integer) data.getColumn(MemberData.MAX_MEMORY)
193193
- (Integer) data.getColumn(MemberData.FREE_MEMORY));
194-
data.setColumn(MemberData.MACHINE_NAME, clusterMember.get("machineName").asText());
195-
data.setColumn(MemberData.UNICAST_ADDRESS, clusterMember.get("uncasstAddress").asText());
194+
data.setColumn(MemberData.MACHINE_NAME, getSafeValue(clusterMember, "machineName"));
195+
data.setColumn(MemberData.UNICAST_ADDRESS, clusterMember.get("unicastAddress").asText());
196196
data.setColumn(MemberData.ROLE_NAME, clusterMember.get("roleName").asText());
197197
data.setColumn(MemberData.PRODUCT_EDITION, clusterMember.get("productEdition").asText());
198198
data.setColumn(MemberData.PORT, Integer.valueOf(getNumberValue(clusterMember.get("unicastPort").asText())));

0 commit comments

Comments
 (0)