From 9c3ca8d7a4868b519eb7333b7790fb1b910588cb Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 03 Aug 2016 09:43:06 +0000
Subject: [PATCH] ConnectionUtils.asSetOf*() should never return null

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/NodeRefresher.java     |   12 ++++--------
 opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java                  |    5 +++--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java |   24 ++++++------------------
 opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java                      |    3 +--
 4 files changed, 14 insertions(+), 30 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java
index 5d11a41..4f3a630 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java
@@ -790,8 +790,6 @@
         String backendId = firstValueAsString(sr, "ds-cfg-backend-id");
         if (!isConfigBackend(backendId) || isSchemaBackend(backendId))
         {
-          Set<DN> baseDns = asSetOfDN(sr, "ds-cfg-base-dn");
-
           Set<String> entries;
           if (cacheFilter.searchMonitoringInformation())
           {
@@ -803,6 +801,7 @@
           }
 
           Set<ReplicaDescriptor> replicas = desc.getReplicas();
+          Set<DN> baseDns = asSetOfDN(sr, "ds-cfg-base-dn");
           for (DN baseDn : baseDns)
           {
             if (isAddReplica(cacheFilter, baseDn))
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
index d629d91..245096d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
@@ -18,6 +18,7 @@
 
 import java.io.IOException;
 import java.net.ConnectException;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Set;
@@ -605,7 +606,7 @@
   public static Set<String> asSetOfString(SearchResultEntry sr, String attrDesc)
   {
     org.forgerock.opendj.ldap.Attribute attr = sr.getAttribute(attrDesc);
-    return attr != null ? attr.parse().asSetOfString() : null;
+    return attr != null ? attr.parse().asSetOfString() : Collections.<String> emptySet();
   }
 
   /**
@@ -621,6 +622,6 @@
   public static Set<DN> asSetOfDN(SearchResultEntry sr, String attrDesc)
   {
     org.forgerock.opendj.ldap.Attribute attr = sr.getAttribute(attrDesc);
-    return attr != null ? attr.parse().asSetOfDN() : null;
+    return attr != null ? attr.parse().asSetOfDN() : Collections.<DN> emptySet();
   }
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
index f3fc299..afa6800 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
@@ -1538,9 +1538,7 @@
           node.getNumSubOrdinates() > 0 || getHasSubOrdinates(entry));
       node.setReferral(getReferral(entry));
       Set<String> ocValues = asSetOfString(entry, OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
-      if (ocValues != null) {
-        node.setObjectClassValues(ocValues.toArray(new String[ocValues.size()]));
-      }
+      node.setObjectClassValues(ocValues.toArray(new String[0]));
     }
 
     int aciCount = getAciCount(entry);
@@ -1916,26 +1914,16 @@
    */
   public static String[] getReferral(SearchResultEntry entry) throws NamingException
   {
-    String[] result = null;
     Set<String> values = asSetOfString(entry, OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
-    if (values != null)
+    for (String value : values)
     {
-      for (String value : values)
+      if ("referral".equalsIgnoreCase(value))
       {
-        boolean isReferral = "referral".equalsIgnoreCase(value);
-        if (isReferral)
-        {
-          Set<String> refValues = asSetOfString(entry, ATTR_REFERRAL_URL);
-          if (refValues != null)
-          {
-            result = new String[refValues.size()];
-            refValues.toArray(result);
-          }
-          break;
-        }
+        Set<String> refValues = asSetOfString(entry, ATTR_REFERRAL_URL);
+        return !refValues.isEmpty() ? refValues.toArray(new String[0]) : null;
       }
     }
-    return result;
+    return null;
   }
 
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/NodeRefresher.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/NodeRefresher.java
index 88c065a..e7b1a2e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/NodeRefresher.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/NodeRefresher.java
@@ -27,7 +27,6 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 import javax.naming.InterruptedNamingException;
 import javax.naming.NameNotFoundException;
@@ -996,14 +995,11 @@
    */
   private static boolean isReferralEntry(SearchResultEntry entry) throws NamingException
   {
-    Set<String> ocValues = asSetOfString(entry, "objectClass");
-    if (ocValues != null) {
-      for (String value : ocValues)
+    for (String value : asSetOfString(entry, "objectClass"))
+    {
+      if ("referral".equalsIgnoreCase(value))
       {
-        boolean isReferral = "referral".equalsIgnoreCase(value);
-        if (isReferral) {
-          return firstValueAsString(entry, "ref") != null;
-        }
+        return firstValueAsString(entry, "ref") != null;
       }
     }
     return false;

--
Gitblit v1.10.0