From 80a3f6364ea92609b94c48593090de26394dc8b7 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 16 Aug 2016 09:03:18 +0000
Subject: [PATCH] OPENDJ-3255 Hit NPE when choose Entry Cache in control-panel

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/RootMonitoringPanel.java                           |    5 +++--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java           |    7 ++++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java                       |    7 ++++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/JavaInformationMonitoringPanel.java                |    3 ++-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ConnectionHandlersMonitoringTableModel.java |    3 ++-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java                       |    7 ++++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/EntryCachesMonitoringPanel.java                    |    3 ++-
 7 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ConnectionHandlersMonitoringTableModel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ConnectionHandlersMonitoringTableModel.java
index 6294ab0..0d37c02 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ConnectionHandlersMonitoringTableModel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ConnectionHandlersMonitoringTableModel.java
@@ -16,6 +16,7 @@
  */
 package org.opends.guitools.controlpanel.datamodel;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.messages.AdminToolMessages.*;
 
 import java.net.InetAddress;
@@ -144,7 +145,7 @@
   {
     for (SearchResultEntry sr : cch.getMonitoringEntries())
     {
-      String cn = sr.getAttribute("cn").firstValueAsString();
+      String cn = firstValueAsString(sr, "cn");
       if (cn != null)
       {
         if (address == null)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
index 42cc3a8..f84b415 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
@@ -18,6 +18,7 @@
 
 import static com.forgerock.opendj.util.OperatingSystem.*;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.admin.ads.util.PreferredConnection.Type.*;
 import static org.opends.server.tools.ConfigureWindowsService.*;
 
@@ -519,13 +520,13 @@
           desc.setJvmMemoryUsageMonitor(rCtx.getJvmMemoryUsage());
           desc.setSystemInformationMonitor(rCtx.getSystemInformation());
           desc.setWorkQueueMonitor(rCtx.getWorkQueue());
-          desc.setOpenDJVersion(rCtx.getVersionMonitor().getAttribute("fullVersion").firstValueAsString());
-          String installPath = rCtx.getSystemInformation().getAttribute("installPath").firstValueAsString();
+          desc.setOpenDJVersion(firstValueAsString(rCtx.getVersionMonitor(), "fullVersion"));
+          String installPath = firstValueAsString(rCtx.getSystemInformation(), "installPath");
           if (installPath != null)
           {
             desc.setInstallPath(installPath);
           }
-          String instancePath = rCtx.getSystemInformation().getAttribute("instancePath").firstValueAsString();
+          String instancePath = firstValueAsString(rCtx.getSystemInformation(), "instancePath");
           if (instancePath != null)
           {
             desc.setInstancePath(instancePath);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java
index 0872679..9b205cc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java
@@ -16,6 +16,7 @@
  */
 package org.opends.guitools.controlpanel.datamodel;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.guitools.controlpanel.util.Utilities.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.server.util.CollectionUtils.*;
@@ -284,8 +285,8 @@
   /**
    * Returns the monitoring entry associated with the provided backend.
    * @param backend the backend.
-   * @return the monitoring entry associated with the provided backend.  Returns
-   * <CODE>null</CODE> if there is no monitoring entry associated.
+   * @return the monitoring entry associated with the provided backend,
+   * or {@code null} if there is no monitoring entry associated.
    */
   private SearchResultEntry getMonitoringEntry(BackendDescriptor backend)
   {
@@ -300,7 +301,7 @@
     SearchResultEntry monitoringEntry = getMonitoringEntry(backend);
     for (String attr : attributes)
     {
-      String o = monitoringEntry.getAttribute(attr).firstValueAsString();
+      String o = firstValueAsString(monitoringEntry, attr);
       line[i] = o != null ? o : NO_VALUE_SET.toString();
       i++;
     }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
index 9672920..006b93c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
@@ -16,6 +16,7 @@
  */
 package org.opends.guitools.controlpanel.datamodel;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.guitools.controlpanel.datamodel.BasicMonitoringAttributes.*;
 import static org.opends.server.util.SchemaUtils.*;
 
@@ -508,7 +509,7 @@
     {
       return false;
     }
-    String os = sr.getAttribute("operatingSystem").firstValueAsString();
+    String os = firstValueAsString(sr, "operatingSystem");
     return os != null && OperatingSystem.WINDOWS.equals(OperatingSystem.forName(os));
   }
 
@@ -692,8 +693,8 @@
     {
       try
       {
-        String start = rootMonitor.getAttribute(START_DATE.getAttributeName()).firstValueAsString();
-        String current = rootMonitor.getAttribute(CURRENT_DATE.getAttributeName()).firstValueAsString();
+        String start = firstValueAsString(rootMonitor, START_DATE.getAttributeName());
+        String current = firstValueAsString(rootMonitor, CURRENT_DATE.getAttributeName());
         Date startTime = ConfigFromConnection.utcParser.parse(start);
         Date currentTime = ConfigFromConnection.utcParser.parse(current);
         return currentTime.getTime() - startTime.getTime();
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/EntryCachesMonitoringPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/EntryCachesMonitoringPanel.java
index f168654..07557df 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/EntryCachesMonitoringPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/EntryCachesMonitoringPanel.java
@@ -30,6 +30,7 @@
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.server.util.CollectionUtils;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.guitools.controlpanel.datamodel.BasicMonitoringAttributes.*;
 import static org.opends.messages.AdminToolMessages.*;
 
@@ -133,7 +134,7 @@
       int index = 0;
       for (MonitoringAttributes attr : ngOperations)
       {
-        if (sr.getAttribute(attr.getAttributeName()).firstValueAsString() == null)
+        if (firstValueAsString(sr, attr.getAttributeName()) == null)
         {
           monitoringLabels.get(index).setVisible(false);
           labels.get(index).setVisible(false);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/JavaInformationMonitoringPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/JavaInformationMonitoringPanel.java
index aa91e38..3dd5d7d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/JavaInformationMonitoringPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/JavaInformationMonitoringPanel.java
@@ -42,6 +42,7 @@
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.server.util.CollectionUtils;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.server.util.ServerConstants.*;
 
@@ -367,7 +368,7 @@
 
       for (int i=0; i<memoryAttributes.size() ; i++)
       {
-        String value = csrMemory.getAttribute(memoryAttributes.get(i)).firstValueAsString();
+        String value = firstValueAsString(csrMemory, memoryAttributes.get(i));
         if (value != null)
         {
           memoryLabels.get(i).setText(value);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/RootMonitoringPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/RootMonitoringPanel.java
index ae6aa01..13012a2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/RootMonitoringPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/RootMonitoringPanel.java
@@ -30,6 +30,7 @@
 import org.opends.guitools.controlpanel.util.ConfigFromConnection;
 import org.opends.guitools.controlpanel.util.Utilities;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.guitools.controlpanel.datamodel.BasicMonitoringAttributes.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.messages.BackendMessages.*;
@@ -154,8 +155,8 @@
       version.setText(server.getOpenDSVersion());
       try
       {
-        String start = sr.getAttribute(START_DATE.getAttributeName()).firstValueAsString();
-        String current = sr.getAttribute(CURRENT_DATE.getAttributeName()).firstValueAsString();
+        String start = firstValueAsString(sr, START_DATE.getAttributeName());
+        String current = firstValueAsString(sr, CURRENT_DATE.getAttributeName());
         Date startTime = ConfigFromConnection.utcParser.parse(start);
         Date currentTime = ConfigFromConnection.utcParser.parse(current);
 

--
Gitblit v1.10.0