From 9fa1aa8315996dc555e9921a1c77979e07050878 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 29 Jun 2016 15:48:26 +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/util/ConfigFromDirContext.java |  322 +++++++++++++++++++++++------------------------------
 1 files changed, 141 insertions(+), 181 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java
index 95e96d2..a38d155 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java
@@ -16,9 +16,13 @@
  */
 package org.opends.guitools.controlpanel.util;
 
+import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.forgerock.opendj.ldap.requests.Requests.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.server.backends.pluggable.SuffixContainer.*;
+import static org.opends.server.config.ConfigConstants.*;
 
+import java.io.IOException;
 import java.net.InetAddress;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -29,22 +33,23 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TimeZone;
 import java.util.TreeSet;
 
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.InitialLdapContext;
-import javax.naming.ldap.LdapName;
-
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizedIllegalArgumentException;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.adapter.server3x.Converters;
 import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.Attribute;
 import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.responses.SearchResultEntry;
+import org.forgerock.opendj.ldif.ConnectionEntryReader;
 import org.forgerock.opendj.server.config.client.AdministrationConnectorCfgClient;
 import org.forgerock.opendj.server.config.client.BackendCfgClient;
 import org.forgerock.opendj.server.config.client.BackendIndexCfgClient;
@@ -67,18 +72,15 @@
 import org.forgerock.opendj.server.config.client.RootDNUserCfgClient;
 import org.forgerock.opendj.server.config.client.SNMPConnectionHandlerCfgClient;
 import org.forgerock.opendj.server.config.client.TaskBackendCfgClient;
-import org.opends.admin.ads.util.ConnectionUtils;
 import org.opends.admin.ads.util.ConnectionWrapper;
 import org.opends.guitools.controlpanel.datamodel.AbstractIndexDescriptor;
 import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
 import org.opends.guitools.controlpanel.datamodel.BaseDNDescriptor;
 import org.opends.guitools.controlpanel.datamodel.ConnectionHandlerDescriptor;
-import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
 import org.opends.guitools.controlpanel.datamodel.IndexDescriptor;
 import org.opends.guitools.controlpanel.datamodel.VLVIndexDescriptor;
 import org.opends.guitools.controlpanel.datamodel.VLVSortOrder;
 import org.opends.guitools.controlpanel.task.OnlineUpdateException;
-import org.opends.server.config.ConfigConstants;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.tools.tasks.TaskEntry;
 import org.opends.server.types.OpenDsException;
@@ -96,16 +98,16 @@
   private static final String DATABASE_PDB_MONITORING_ENTRY_SUFFIX = " PDB Database";
   private static final String SYNC_PROVIDER_NAME = "Multimaster Synchronization";
 
-  private CustomSearchResult rootMonitor;
-  private CustomSearchResult jvmMemoryUsage;
-  private CustomSearchResult systemInformation;
-  private CustomSearchResult entryCaches;
-  private CustomSearchResult workQueue;
-  private CustomSearchResult versionMonitor;
+  private SearchResultEntry rootMonitor;
+  private SearchResultEntry jvmMemoryUsage;
+  private SearchResultEntry systemInformation;
+  private SearchResultEntry entryCaches;
+  private SearchResultEntry workQueue;
+  private SearchResultEntry versionMonitor;
 
   private boolean isLocal = true;
 
-  private final Map<String, CustomSearchResult> hmConnectionHandlersMonitor = new HashMap<>();
+  private final Map<String, SearchResultEntry> hmConnectionHandlersMonitor = new HashMap<>();
 
   /** The monitor root entry DN. */
   private DN monitorDN = DN.rootDN();
@@ -150,7 +152,7 @@
    *
    * @return the monitoring entry for the entry caches.
    */
-  public CustomSearchResult getEntryCaches()
+  public SearchResultEntry getEntryCaches()
   {
     return entryCaches;
   }
@@ -160,7 +162,7 @@
    *
    * @return the monitoring entry for the JVM memory usage.
    */
-  public CustomSearchResult getJvmMemoryUsage()
+  public SearchResultEntry getJvmMemoryUsage()
   {
     return jvmMemoryUsage;
   }
@@ -170,7 +172,7 @@
    *
    * @return the root entry of the monitoring tree.
    */
-  public CustomSearchResult getRootMonitor()
+  public SearchResultEntry getRootMonitor()
   {
     return rootMonitor;
   }
@@ -180,7 +182,7 @@
    *
    * @return the version entry of the monitoring tree.
    */
-  public CustomSearchResult getVersionMonitor()
+  public SearchResultEntry getVersionMonitor()
   {
     return versionMonitor;
   }
@@ -190,7 +192,7 @@
    *
    * @return the monitoring entry for the system information.
    */
-  public CustomSearchResult getSystemInformation()
+  public SearchResultEntry getSystemInformation()
   {
     return systemInformation;
   }
@@ -200,7 +202,7 @@
    *
    * @return the monitoring entry for the work queue.
    */
-  public CustomSearchResult getWorkQueue()
+  public SearchResultEntry getWorkQueue()
   {
     return workQueue;
   }
@@ -254,7 +256,7 @@
 
     hmConnectionHandlersMonitor.clear();
 
-    readSchemaIfNeeded(connWrapper.getLdapContext(), errors);
+    readSchemaIfNeeded(connWrapper, errors);
 
     try
     {
@@ -274,7 +276,7 @@
     backends = Collections.unmodifiableSet(backendDescriptors);
     try
     {
-      updateMonitorInformation(connWrapper.getLdapContext(), errors);
+      updateMonitorInformation(connWrapper, errors);
     }
     catch (Throwable t)
     {
@@ -284,7 +286,7 @@
 
     try
     {
-      updateTaskInformation(connWrapper.getLdapContext(), errors, tasks);
+      updateTaskInformation(connWrapper, errors, tasks);
     }
     catch (Throwable t)
     {
@@ -305,13 +307,13 @@
     exceptions = Collections.unmodifiableList(errors);
   }
 
-  private void readSchemaIfNeeded(final InitialLdapContext context, final List<Exception> errors)
+  private void readSchemaIfNeeded(final ConnectionWrapper connWrapper, final List<Exception> errors)
   {
     if (mustReadSchema())
     {
       try
       {
-        readSchema(context);
+        readSchema(connWrapper);
         if (getSchema() != null)
         {
           // Update the schema: so that when we call the server code the
@@ -553,7 +555,7 @@
           ConnectionHandlerDescriptor.Protocol protocol =
             isReplicationSecure ? ConnectionHandlerDescriptor.Protocol.REPLICATION_SECURE
                                 : ConnectionHandlerDescriptor.Protocol.REPLICATION;
-          Set<CustomSearchResult> emptySet = Collections.emptySet();
+          Set<SearchResultEntry> emptySet = Collections.emptySet();
           ConnectionHandlerDescriptor connHandler = new ConnectionHandlerDescriptor(
               new HashSet<InetAddress>(), replicationPort, protocol, ConnectionHandlerDescriptor.State.ENABLED,
                 SYNC_PROVIDER_NAME, emptySet);
@@ -624,12 +626,12 @@
   /**
    * Reads the schema from the files.
    *
-   * @param ctx
+   * @param connWrapper
    *          the connection to be used to load the schema.
    * @throws OpenDsException
    *           if an error occurs reading the schema.
    */
-  private void readSchema(InitialLdapContext ctx) throws OpenDsException
+  private void readSchema(ConnectionWrapper connWrapper) throws OpenDsException
   {
     try
     {
@@ -640,17 +642,17 @@
       else
       {
         RemoteSchemaLoader loader = new RemoteSchemaLoader();
-        loader.readSchema(ctx);
+        loader.readSchema(connWrapper);
         schema = loader.getSchema();
       }
     }
-    catch (NamingException ne)
+    catch (LdapException e)
     {
-      throw new OnlineUpdateException(ERR_READING_SCHEMA_LDAP.get(ne), ne);
+      throw new OnlineUpdateException(ERR_READING_SCHEMA_LDAP.get(e), e);
     }
-    catch (ConfigException ce)
+    catch (ConfigException e)
     {
-      throw new org.opends.server.config.ConfigException(ce.getMessageObject(), ce);
+      throw new org.opends.server.config.ConfigException(e.getMessageObject(), e);
     }
   }
 
@@ -660,55 +662,55 @@
    *
    * @param sr
    *          the search result.
-   * @param searchBaseDN
-   *          the base search.
-   * @throws NamingException
+   * @throws LdapException
    *           if there is an error retrieving the values of the search result.
    */
-  private void handleMonitoringSearchResult(SearchResult sr, String searchBaseDN) throws NamingException
+  private void handleMonitoringSearchResult(SearchResultEntry sr) throws LdapException
   {
     if (javaVersion == null)
     {
-      javaVersion = ConnectionUtils.getFirstValue(sr, "javaVersion");
+      Attribute attr = sr.getAttribute("javaVersion");
+      javaVersion = attr != null ? attr.firstValueAsString() : null;
     }
 
     if (numberConnections == -1)
     {
-      String v = ConnectionUtils.getFirstValue(sr, "currentConnections");
-      if (v != null)
+      Integer nb = sr.getAttribute("currentConnections").parse().asInteger();
+      if (nb != null)
       {
-        numberConnections = Integer.parseInt(v);
+        numberConnections = nb;
       }
     }
 
-    String dn = ConnectionUtils.getFirstValue(sr, "domain-name");
-    String replicaId = ConnectionUtils.getFirstValue(sr, "server-id");
-    String missingChanges = ConnectionUtils.getFirstValue(sr, "missing-changes");
+    Attribute dnAttr = sr.getAttribute("domain-name");
+    Attribute replicaIdAttr = sr.getAttribute("server-id");
+    Attribute missingChanges = sr.getAttribute("missing-changes");
 
-    if (dn != null  && replicaId != null && missingChanges != null)
+    if (dnAttr != null && replicaIdAttr != null && missingChanges != null)
     {
+      DN dn = dnAttr.parse().asDN();
+      Integer replicaId = replicaIdAttr.parse().asInteger();
       for (BackendDescriptor backend : backends)
       {
         for (BaseDNDescriptor baseDN : backend.getBaseDns())
         {
           try
           {
-            if (baseDN.getDn().equals(DN.valueOf(dn)) &&
-                Integer.toString(baseDN.getReplicaID()).equals(replicaId))
+            if (baseDN.getDn().equals(dn) && Objects.equals(baseDN.getReplicaID(), replicaId))
             {
               try
               {
                 baseDN.setAgeOfOldestMissingChange(
-                    Long.valueOf(ConnectionUtils.getFirstValue(sr, "approx-older-change-not-synchronized-millis")));
+                    sr.getAttribute("approx-older-change-not-synchronized-millis").parse().asLong());
               }
-              catch (Throwable ignored)
+              catch (NullPointerException | LocalizedIllegalArgumentException ignored)
               {
               }
               try
               {
-                baseDN.setMissingChanges(Integer.valueOf(missingChanges));
+                baseDN.setMissingChanges(missingChanges.parse().asInteger());
               }
-              catch (Throwable ignored)
+              catch (NullPointerException | LocalizedIllegalArgumentException ignored)
               {
               }
             }
@@ -721,45 +723,40 @@
     }
     else
     {
-      CustomSearchResult csr = new CustomSearchResult(sr, searchBaseDN);
-      String backendID = ConnectionUtils.getFirstValue(sr, "ds-backend-id");
-      String entryCount = ConnectionUtils.getFirstValue(sr, "ds-backend-entry-count");
-      Set<String> baseDnEntries = ConnectionUtils.getValues(sr, "ds-base-dn-entry-count");
-      if (backendID != null && (entryCount != null || baseDnEntries != null))
+      Attribute backendIdAttr = sr.getAttribute("ds-backend-id");
+      Attribute entryCount = sr.getAttribute("ds-backend-entry-count");
+      Attribute baseDnEntriesAttr = sr.getAttribute("ds-base-dn-entry-count");
+      if (backendIdAttr != null && (entryCount != null || !baseDnEntriesAttr.isEmpty()))
       {
+        String backendID = backendIdAttr.firstValueAsString();
+        Set<String> baseDnEntries = baseDnEntriesAttr.parse().asSetOfString();
         for (BackendDescriptor backend : backends)
         {
           if (backend.getBackendID().equalsIgnoreCase(backendID))
           {
             if (entryCount != null)
             {
-              backend.setEntries(Integer.parseInt(entryCount));
+              backend.setEntries(entryCount.parse().asInteger());
             }
-            if (baseDnEntries != null)
+            for (String s : baseDnEntries)
             {
-              for (String s : baseDnEntries)
+              int index = s.indexOf(" ");
+              if (index != -1)
               {
-                int index = s.indexOf(" ");
-                if (index != -1)
+                DN dn = DN.valueOf(s.substring(index + 1));
+                for (BaseDNDescriptor baseDN : backend.getBaseDns())
                 {
-                  for (BaseDNDescriptor baseDN : backend.getBaseDns())
+                  if (dn.equals(baseDN.getDn()))
                   {
-                    dn = s.substring(index +1);
-
-                    if (Utilities.areDnsEqual(dn,
-                        baseDN.getDn().toString()))
+                    try
                     {
-                      try
-                      {
-                        baseDN.setEntries(
-                            Integer.parseInt(s.substring(0, index)));
-                      }
-                      catch (Throwable t)
-                      {
-                        /* Ignore */
-                      }
-                      break;
+                      baseDN.setEntries(Integer.parseInt(s.substring(0, index)));
                     }
+                    catch (Throwable t)
+                    {
+                      /* Ignore */
+                    }
+                    break;
                   }
                 }
               }
@@ -770,7 +767,7 @@
       else
       {
         // Check if it is the DB monitor entry
-        String cn = ConnectionUtils.getFirstValue(sr, "cn");
+        String cn = sr.getAttribute("cn").firstValueAsString();
         String monitorBackendID = null;
         BackendDescriptor.PluggableType pluggableType = BackendDescriptor.PluggableType.UNKNOWN;
         if (cn != null && cn.endsWith(DATABASE_JE_MONITORING_ENTRY_SUFFIX))
@@ -790,46 +787,46 @@
             if (backend.getBackendID().equalsIgnoreCase(monitorBackendID))
             {
               backend.setPluggableType(pluggableType);
-              backend.setMonitoringEntry(csr);
+              backend.setMonitoringEntry(sr);
             }
           }
         }
       }
       try
       {
-        if (rootMonitor == null && isRootMonitor(csr))
+        if (rootMonitor == null && isRootMonitor(sr))
         {
-          rootMonitor = csr;
+          rootMonitor = sr;
         }
-        else if (entryCaches == null && isEntryCaches(csr))
+        else if (entryCaches == null && isEntryCaches(sr))
         {
-          entryCaches = csr;
+          entryCaches = sr;
         }
-        else if (workQueue == null && isWorkQueue(csr))
+        else if (workQueue == null && isWorkQueue(sr))
         {
-          workQueue = csr;
+          workQueue = sr;
         }
-        else if (jvmMemoryUsage == null && isJvmMemoryUsage(csr))
+        else if (jvmMemoryUsage == null && isJvmMemoryUsage(sr))
         {
-          jvmMemoryUsage = csr;
+          jvmMemoryUsage = sr;
         }
-        else if (systemInformation == null && isSystemInformation(csr))
+        else if (systemInformation == null && isSystemInformation(sr))
         {
-          systemInformation = csr;
+          systemInformation = sr;
         }
-        else if (versionMonitor == null && isVersionMonitor(csr))
+        else if (versionMonitor == null && isVersionMonitor(sr))
         {
-          versionMonitor = csr;
+          versionMonitor = sr;
         }
-        else if (isConnectionHandler(csr))
+        else if (isConnectionHandler(sr))
         {
           String statistics = " Statistics";
-          String cn = ConnectionUtils.getFirstValue(sr, "cn");
+          String cn = sr.getAttribute("cn").firstValueAsString();
           if (cn.endsWith(statistics))
           {
             // Assume it is a connection handler
             String name = cn.substring(0, cn.length() - statistics.length());
-            hmConnectionHandlersMonitor.put(getKey(name), csr);
+            hmConnectionHandlersMonitor.put(getKey(name), sr);
           }
         }
       }
@@ -841,70 +838,49 @@
   }
 
   /**
-   * Takes the provided search result and updates the task information
-   * accordingly.
+   * Takes the provided search result and updates the task information accordingly.
    *
    * @param sr
    *          the search result.
-   * @param searchBaseDN
-   *          the base search.
    * @param taskEntries
    *          the collection of TaskEntries to be updated.
    * @param ex
    *          the list of exceptions to be updated if an error occurs.
-   * @throws NamingException
-   *           if there is an error retrieving the values of the search result.
    */
-  private void handleTaskSearchResult(SearchResult sr, String searchBaseDN, Collection<TaskEntry> taskEntries,
-      List<Exception> ex) throws NamingException
+  private void handleTaskSearchResult(SearchResultEntry sr, Collection<TaskEntry> taskEntries, List<Exception> ex)
   {
-    CustomSearchResult csr = new CustomSearchResult(sr, searchBaseDN);
     try
     {
-      if (isTaskEntry(csr))
+      if (isTaskEntry(sr))
       {
-        taskEntries.add(new TaskEntry(csr.getEntry()));
+        taskEntries.add(new TaskEntry(Converters.to(sr)));
       }
     }
-    catch (OpenDsException ode)
+    catch (RuntimeException e)
     {
-      ex.add(ode);
+      ex.add(e);
     }
   }
 
-  private void updateMonitorInformation(InitialLdapContext ctx,
-      List<Exception> ex)
+  private void updateMonitorInformation(ConnectionWrapper connWrapper, List<Exception> ex)
   {
     // Read monitoring information: since it is computed, it is faster
     // to get everything in just one request.
-    SearchControls ctls = new SearchControls();
-    ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-    ctls.setReturningAttributes(getMonitoringAttributes());
-    String filter = "(objectclass=*)";
+    SearchRequest request = newSearchRequest("cn=monitor", WHOLE_SUBTREE, "(objectclass=*)", getMonitoringAttributes());
 
-    try
+    try (ConnectionEntryReader monitorEntries = connWrapper.getConnection().search(request))
     {
-      LdapName jndiName = new LdapName("cn=monitor");
-      NamingEnumeration<SearchResult> monitorEntries = ctx.search(jndiName, filter, ctls);
       javaVersion = null;
       numberConnections = -1;
 
-      try
+      while (monitorEntries.hasNext())
       {
-        while (monitorEntries.hasMore())
-        {
-          SearchResult sr = monitorEntries.next();
-          handleMonitoringSearchResult(sr, "cn=monitor");
-        }
-      }
-      finally
-      {
-        monitorEntries.close();
+        handleMonitoringSearchResult(monitorEntries.readEntry());
       }
     }
-    catch (NamingException ne)
+    catch (IOException e)
     {
-      ex.add(new OnlineUpdateException(ERR_READING_CONFIG_LDAP.get(ne.getMessage()), ne));
+      ex.add(new OnlineUpdateException(ERR_READING_CONFIG_LDAP.get(e.getMessage()), e));
     }
   }
 
@@ -912,7 +888,7 @@
    * Updates the provided list of TaskEntry with the task entries found in a
    * server.
    *
-   * @param ctx
+   * @param connWrapper
    *          the connection to the server.
    * @param ex
    *          the list of exceptions encountered while retrieving the task
@@ -920,35 +896,23 @@
    * @param ts
    *          the list of task entries to be updated.
    */
-  public void updateTaskInformation(InitialLdapContext ctx, List<Exception> ex, Collection<TaskEntry> ts)
+  public void updateTaskInformation(ConnectionWrapper connWrapper, List<Exception> ex, Collection<TaskEntry> ts)
   {
     // Read monitoring information: since it is computed, it is faster
     // to get everything in just one request.
-    SearchControls ctls = new SearchControls();
-    ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-    ctls.setReturningAttributes(getMonitoringAttributes());
-    String filter = "(objectclass=ds-task)";
-
-    try
+    SearchRequest request =
+        newSearchRequest(DN_TASK_ROOT, WHOLE_SUBTREE, "(objectclass=ds-task)", getMonitoringAttributes());
+    try (ConnectionEntryReader taskEntries = connWrapper.getConnection().search(request))
     {
-      LdapName jndiName = new LdapName(ConfigConstants.DN_TASK_ROOT);
-      NamingEnumeration<SearchResult> taskEntries = ctx.search(jndiName, filter, ctls);
-      try
+      while (taskEntries.hasNext())
       {
-        while (taskEntries.hasMore())
-        {
-          SearchResult sr = taskEntries.next();
-          handleTaskSearchResult(sr, ConfigConstants.DN_TASK_ROOT, ts, ex);
-        }
-      }
-      finally
-      {
-        taskEntries.close();
+        SearchResultEntry sr = taskEntries.readEntry();
+        handleTaskSearchResult(sr, ts, ex);
       }
     }
-    catch (NamingException ne)
+    catch (IOException e)
     {
-      ex.add(new OnlineUpdateException(ERR_READING_CONFIG_LDAP.get(ne.getMessage()), ne));
+      ex.add(new OnlineUpdateException(ERR_READING_CONFIG_LDAP.get(e.getMessage()), e));
     }
   }
 
@@ -1024,7 +988,7 @@
       protocol = ConnectionHandlerDescriptor.Protocol.OTHER;
       port = -1;
     }
-    Set<CustomSearchResult> emptySet = Collections.emptySet();
+    Set<SearchResultEntry> emptySet = Collections.emptySet();
     return new ConnectionHandlerDescriptor(addresses, port, protocol, state, name, emptySet);
   }
 
@@ -1047,51 +1011,51 @@
     addAll(addresses, adminConnector.getListenAddress());
     int port = adminConnector.getListenPort();
 
-    Set<CustomSearchResult> emptySet = Collections.emptySet();
+    Set<SearchResultEntry> emptySet = Collections.emptySet();
     return new ConnectionHandlerDescriptor(
         addresses, port, protocol, state, INFO_CTRL_PANEL_CONN_HANDLER_ADMINISTRATION.get().toString(), emptySet);
   }
 
-  private boolean isRootMonitor(CustomSearchResult csr) throws OpenDsException
+  private boolean isRootMonitor(SearchResultEntry sr) throws OpenDsException
   {
-    return monitorDN.equals(DN.valueOf(csr.getDN()));
+    return monitorDN.equals(sr.getName());
   }
 
-  private boolean isVersionMonitor(CustomSearchResult csr) throws OpenDsException
+  private boolean isVersionMonitor(SearchResultEntry sr) throws OpenDsException
   {
-    return versionDN.equals(DN.valueOf(csr.getDN()));
+    return versionDN.equals(sr.getName());
   }
 
-  private boolean isSystemInformation(CustomSearchResult csr) throws OpenDsException
+  private boolean isSystemInformation(SearchResultEntry sr) throws OpenDsException
   {
-    return systemInformationDN.equals(DN.valueOf(csr.getDN()));
+    return systemInformationDN.equals(sr.getName());
   }
 
-  private boolean isJvmMemoryUsage(CustomSearchResult csr) throws OpenDsException
+  private boolean isJvmMemoryUsage(SearchResultEntry sr) throws OpenDsException
   {
-    return jvmMemoryUsageDN.equals(DN.valueOf(csr.getDN()));
+    return jvmMemoryUsageDN.equals(sr.getName());
   }
 
-  private boolean isWorkQueue(CustomSearchResult csr) throws OpenDsException
+  private boolean isWorkQueue(SearchResultEntry sr) throws OpenDsException
   {
-    return workQueueDN.equals(DN.valueOf(csr.getDN()));
+    return workQueueDN.equals(sr.getName());
   }
 
-  private boolean isEntryCaches(CustomSearchResult csr) throws OpenDsException
+  private boolean isEntryCaches(SearchResultEntry sr) throws OpenDsException
   {
-    return entryCachesDN.equals(DN.valueOf(csr.getDN()));
+    return entryCachesDN.equals(sr.getName());
   }
 
-  private boolean isConnectionHandler(CustomSearchResult csr) throws OpenDsException
+  private boolean isConnectionHandler(SearchResultEntry sr) throws OpenDsException
   {
-    DN dn = DN.valueOf(csr.getDN());
+    DN dn = sr.getName();
     DN parent = dn.parent();
     if (parent != null && parent.equals(monitorDN))
     {
-      List<?> vs = csr.getAttributeValues("cn");
-      if (vs != null && !vs.isEmpty())
+      Set<String> vs = sr.getAttribute("cn").parse().asSetOfString();
+      if (!vs.isEmpty())
       {
-        String cn = (String) vs.iterator().next();
+        String cn = vs.iterator().next();
         String statistics = " Statistics";
         if (cn.endsWith(statistics))
         {
@@ -1102,17 +1066,13 @@
     return false;
   }
 
-  private static boolean isTaskEntry(CustomSearchResult csr) throws OpenDsException
+  private static boolean isTaskEntry(SearchResultEntry sr)
   {
-    List<Object> vs = csr.getAttributeValues("objectclass");
-    if (vs != null && !vs.isEmpty())
+    for (String oc : sr.getAttribute("objectclass").parse().asSetOfString())
     {
-      for (Object oc : vs)
+      if (oc.equalsIgnoreCase("ds-task"))
       {
-        if (oc.toString().equalsIgnoreCase("ds-task"))
-        {
-          return true;
-        }
+        return true;
       }
     }
     return false;
@@ -1131,9 +1091,9 @@
     return value.toLowerCase();
   }
 
-  private Set<CustomSearchResult>getMonitoringEntries(ConnectionHandlerDescriptor ch)
+  private Set<SearchResultEntry> getMonitoringEntries(ConnectionHandlerDescriptor ch)
   {
-    Set<CustomSearchResult> monitorEntries = new HashSet<>();
+    Set<SearchResultEntry> monitorEntries = new HashSet<>();
     if (ch.getState() == ConnectionHandlerDescriptor.State.ENABLED)
     {
       for (String key : hmConnectionHandlersMonitor.keySet())

--
Gitblit v1.10.0