GEODE-152: fix NPE in fetchJvmThreads

The code now uses an ArrayList and only adds non-null elements to it.
It then allocates a array of that ArrayList size and returns it with
the contents of the ArrayList.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/dd4ab5f4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/dd4ab5f4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/dd4ab5f4

Branch: refs/heads/feature/GEODE-77
Commit: dd4ab5f4cfb85741f4a466e96dd814c2fe953a5a
Parents: aeafb01
Author: Darrel Schneider <dschnei...@pivotal.io>
Authored: Thu Jul 23 14:42:53 2015 -0700
Committer: Darrel Schneider <dschnei...@pivotal.io>
Committed: Thu Jul 23 14:42:53 2015 -0700

----------------------------------------------------------------------
 .../management/internal/beans/MemberMBeanBridge.java     | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dd4ab5f4/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MemberMBeanBridge.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MemberMBeanBridge.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MemberMBeanBridge.java
index 6a2d085..b546868 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MemberMBeanBridge.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MemberMBeanBridge.java
@@ -1325,13 +1325,14 @@ public class MemberMBeanBridge {
     if (threadInfos == null || threadInfos.length < 1) {
       return ManagementConstants.NO_DATA_STRING;
     }
-    String[] thrdStr = new String[threadInfos.length];
-    int j = 0;
+    ArrayList<String> thrdStr = new ArrayList<String>(threadInfos.length);
     for (ThreadInfo thInfo : threadInfos) {
-      thrdStr[j] = thInfo.getThreadName();
-      j++;
+      if (thInfo != null) {
+        thrdStr.add(thInfo.getThreadName());
+      }
     }
-    return thrdStr;
+    String[] result = new String[thrdStr.size()];
+    return thrdStr.toArray(result);
   }
 
   /**

Reply via email to