From 8368f9ae15d65cda433652abcddd2ddbf61024a0 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 02 Aug 2016 07:18:12 +0000
Subject: [PATCH] Partial OPENDJ-2625 Convert all code that uses JNDI to use the SDK instead

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java |   80 ++++++++++++---------------------------
 1 files changed, 25 insertions(+), 55 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
index 5c43346..443edf2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
@@ -16,8 +16,14 @@
  */
 package org.opends.guitools.controlpanel.ui;
 
+import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.forgerock.opendj.ldap.requests.Requests.*;
+import static org.opends.admin.ads.util.ConnectionUtils.*;
+import static org.opends.guitools.controlpanel.browser.BrowserController.*;
 import static org.opends.guitools.controlpanel.ui.ControlCenterMainPane.*;
 import static org.opends.messages.AdminToolMessages.*;
+import static org.opends.server.schema.SchemaConstants.*;
+import static org.opends.server.util.ServerConstants.*;
 
 import java.awt.CardLayout;
 import java.awt.Color;
@@ -33,6 +39,7 @@
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
+import java.io.IOException;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -48,9 +55,6 @@
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import javax.naming.NamingEnumeration;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
 import javax.swing.Box;
 import javax.swing.ComboBoxModel;
 import javax.swing.DefaultComboBoxModel;
@@ -67,11 +71,12 @@
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import org.forgerock.i18n.LocalizableMessageDescriptor;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
 import org.forgerock.opendj.ldap.responses.SearchResultEntry;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.forgerock.opendj.ldap.schema.ObjectClassType;
-import org.opends.admin.ads.util.ConnectionUtils;
-import org.opends.guitools.controlpanel.browser.BrowserController;
+import org.forgerock.opendj.ldif.ConnectionEntryReader;
 import org.opends.guitools.controlpanel.browser.IconPool;
 import org.opends.guitools.controlpanel.datamodel.AbstractIndexDescriptor;
 import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
@@ -95,7 +100,6 @@
 import org.opends.guitools.controlpanel.util.LowerCaseComparator;
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.quicksetup.ui.CustomHTMLEditorKit;
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.OpenDsException;
 import org.opends.server.util.ServerConstants;
 import org.opends.server.util.StaticUtils;
@@ -1992,33 +1996,15 @@
    */
   protected boolean entryExists(final String dn)
   {
-    boolean entryExists = false;
     try
     {
-      SearchControls ctls = new SearchControls();
-      ctls.setSearchScope(SearchControls.OBJECT_SCOPE);
-      ctls.setReturningAttributes(new String[] { SchemaConstants.NO_ATTRIBUTES });
-      String filter = BrowserController.ALL_OBJECTS_FILTER;
-      NamingEnumeration<SearchResult> result =
-          getInfo().getConnection().getLdapContext().search(Utilities.getJNDIName(dn), filter, ctls);
-
-      try
-      {
-        while (result.hasMore())
-        {
-          SearchResult sr = result.next();
-          entryExists = sr != null;
-        }
-      }
-      finally
-      {
-        result.close();
-      }
+      SearchRequest request = newSearchRequest(dn, BASE_OBJECT, ALL_OBJECTS_FILTER, NO_ATTRIBUTES);
+      return getInfo().getConnection().getConnection().searchSingleEntry(request) != null;
     }
-    catch (Throwable t)
+    catch (LdapException e)
     {
+      return false;
     }
-    return entryExists;
   }
 
   /**
@@ -2034,45 +2020,29 @@
    */
   protected boolean hasObjectClass(final String dn, final String... objectClasses)
   {
-    try
+    SearchRequest request = newSearchRequest(dn, BASE_OBJECT, ALL_OBJECTS_FILTER, OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
+    try (ConnectionEntryReader entryReader = getInfo().getConnection().getConnection().search(request))
     {
-      SearchControls ctls = new SearchControls();
-      ctls.setSearchScope(SearchControls.OBJECT_SCOPE);
-      ctls.setReturningAttributes(new String[] { ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME });
-      String filter = BrowserController.ALL_OBJECTS_FILTER;
-      NamingEnumeration<SearchResult> result =
-          getInfo().getConnection().getLdapContext().search(Utilities.getJNDIName(dn), filter, ctls);
-
-      try
+      while (entryReader.hasNext())
       {
-        while (result.hasMore())
+        SearchResultEntry sr = entryReader.readEntry();
+        for (String oc : asSetOfString(sr, ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME))
         {
-          SearchResult sr = result.next();
-          Set<String> values = ConnectionUtils.getValues(sr, ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
-          if (values != null)
+          for (String objectClass : objectClasses)
           {
-            for (String s : values)
+            if (oc.equalsIgnoreCase(objectClass))
             {
-              for (String objectClass : objectClasses)
-              {
-                if (s.equalsIgnoreCase(objectClass))
-                {
-                  return true;
-                }
-              }
+              return true;
             }
           }
         }
       }
-      finally
-      {
-        result.close();
-      }
+      return false;
     }
-    catch (Throwable t)
+    catch (IOException e)
     {
+      return false;
     }
-    return false;
   }
 
   /**

--
Gitblit v1.10.0