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/datamodel/CustomSearchResult.java | 42 ++----
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java | 23 +--
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java | 21 +--
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/LDAPEntryReader.java | 34 ++---
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java | 80 ++++---------
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java | 99 ++++++----------
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewEntryTask.java | 33 -----
7 files changed, 108 insertions(+), 224 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
index 13c6a54..af08f49 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
@@ -26,21 +26,18 @@
import javax.naming.CompositeName;
import javax.naming.Name;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.SearchResult;
import org.forgerock.opendj.ldap.AttributeDescription;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeBuilder;
import org.opends.server.types.Entry;
-import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.types.OpenDsException;
import org.opends.server.util.LDIFReader;
@@ -80,10 +77,10 @@
* @throws NamingException if there is an error retrieving the attribute
* values.
*/
- public CustomSearchResult(SearchResult sr, String baseDN)
+ public CustomSearchResult(SearchResultEntry sr, String baseDN)
throws NamingException
{
- String sName = sr.getName();
+ String sName = sr.getName().toString();
Name name;
if (baseDN != null && baseDN.length() > 0)
{
@@ -116,32 +113,19 @@
attributes = new HashMap<>();
attrNames = new TreeSet<>();
- Attributes attrs = sr.getAttributes();
- if (attrs != null)
+ for (org.forgerock.opendj.ldap.Attribute attr : sr.getAllAttributes())
{
- NamingEnumeration<?> en = attrs.getAll();
- try
+ String attrName = attr.getAttributeDescriptionAsString();
+ attrNames.add(attrName);
+ List<Object> values = new ArrayList<>();
+ for (ByteString v : attr)
{
- while (en.hasMore()) {
- Attribute attr = (Attribute)en.next();
- String attrName = attr.getID();
- attrNames.add(attrName);
- List<Object> values = new ArrayList<>();
- for (int i=0; i<attr.size(); i++)
- {
- Object v = attr.get(i);
- if (!"".equals(v.toString()))
- {
- values.add(v);
- }
- }
- attributes.put(attrName.toLowerCase(), values);
+ if (!"".equals(v.toString()))
+ {
+ values.add(v);
}
}
- finally
- {
- en.close();
- }
+ attributes.put(attrName.toLowerCase(), values);
}
toString = calculateToString();
hashCode = calculateHashCode();
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
index eb72da3..ef06eb5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
@@ -17,8 +17,13 @@
package org.opends.guitools.controlpanel.task;
+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.messages.AdminToolMessages.*;
+import static org.opends.server.schema.SchemaConstants.*;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -27,19 +32,20 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.BasicControl;
-import javax.naming.ldap.Control;
import javax.swing.SwingUtilities;
import javax.swing.tree.TreePath;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.DN;
-import org.opends.admin.ads.util.ConnectionUtils;
+import org.forgerock.opendj.ldap.EntryNotFoundException;
+import org.forgerock.opendj.ldap.Filter;
+import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.controls.SubtreeDeleteRequestControl;
+import org.forgerock.opendj.ldap.requests.DeleteRequest;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.responses.SearchResultEntry;
+import org.forgerock.opendj.ldif.ConnectionEntryReader;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.browser.BrowserController;
import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
@@ -51,7 +57,6 @@
import org.opends.guitools.controlpanel.ui.nodes.BasicNode;
import org.opends.guitools.controlpanel.ui.nodes.BrowserNodeInfo;
import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.schema.SchemaConstants;
import org.opends.server.types.DirectoryException;
import org.opends.server.util.ServerConstants;
@@ -281,9 +286,8 @@
}
}
- private void deleteSubtreeRecursively(ConnectionWrapper conn, DN dnToRemove,
- TreePath path, ArrayList<BrowserNodeInfo> toNotify)
- throws NamingException, DirectoryException
+ private void deleteSubtreeRecursively(ConnectionWrapper conn, DN dnToRemove, TreePath path,
+ List<BrowserNodeInfo> toNotify) throws NamingException, IOException, DirectoryException
{
lastDn = dnToRemove;
@@ -314,44 +318,30 @@
});
}
- try
+ String filter = "(|(objectClass=*)(objectclass=ldapsubentry))";
+ SearchRequest request = newSearchRequest(dnToRemove, SINGLE_LEVEL, Filter.valueOf(filter), NO_ATTRIBUTES);
+ DN entryDNFound = dnToRemove;
+ try (ConnectionEntryReader entryDNs = conn.getConnection().search(request))
{
- SearchControls ctls = new SearchControls();
- ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);
- String filter =
- "(|(objectClass=*)(objectclass=ldapsubentry))";
- ctls.setReturningAttributes(
- new String[] { SchemaConstants.NO_ATTRIBUTES });
- NamingEnumeration<SearchResult> entryDNs =
- conn.getLdapContext().search(Utilities.getJNDIName(dnToRemove.toString()), filter, ctls);
-
- DN entryDNFound = dnToRemove;
- try
+ while (entryDNs.hasNext())
{
- while (entryDNs.hasMore())
+ SearchResultEntry sr = entryDNs.readEntry();
+ if (!sr.getName().equals(""))
{
- SearchResult sr = entryDNs.next();
- if (!sr.getName().equals(""))
- {
- CustomSearchResult res =
- new CustomSearchResult(sr, dnToRemove.toString());
- entryDNFound = DN.valueOf(res.getDN());
- deleteSubtreeRecursively(conn, entryDNFound, null, toNotify);
- }
+ CustomSearchResult res = new CustomSearchResult(sr, dnToRemove.toString());
+ entryDNFound = DN.valueOf(res.getDN());
+ deleteSubtreeRecursively(conn, entryDNFound, null, toNotify);
}
}
- finally
- {
- entryDNs.close();
- }
-
- } catch (NameNotFoundException nnfe) {
+ }
+ catch (EntryNotFoundException e)
+ {
// The entry is not there: it has been removed
}
try
{
- conn.getLdapContext().destroySubcontext(Utilities.getJNDIName(dnToRemove.toString()));
+ conn.getConnection().delete(dnToRemove.toString());
if (path != null)
{
toNotify.add(controller.getNodeInfoFromPath(path));
@@ -385,15 +375,15 @@
}
});
}
- } catch (NameNotFoundException nnfe)
+ }
+ catch (EntryNotFoundException ignored)
{
// The entry is not there: it has been removed
}
}
- private void deleteSubtreeWithControl(ConnectionWrapper conn, DN dn,
- TreePath path, ArrayList<BrowserNodeInfo> toNotify)
- throws NamingException
+ private void deleteSubtreeWithControl(ConnectionWrapper conn, DN dn, TreePath path, List<BrowserNodeInfo> toNotify)
+ throws LdapException, NamingException
{
lastDn = dn;
long t = System.currentTimeMillis();
@@ -418,26 +408,11 @@
// Use a copy of the dir context since we are using an specific
// control to delete the subtree and this can cause
// synchronization problems when the tree is refreshed.
- ConnectionWrapper conn1 = null;
- try
+ ControlPanelInfo info = getInfo();
+ try (ConnectionWrapper conn1 = cloneConnectionWrapper(conn, info.getConnectTimeout(), info.getTrustManager(), null))
{
- conn1 = ConnectionUtils.cloneConnectionWrapper(conn,
- getInfo().getConnectTimeout(),
- getInfo().getTrustManager(), null);
- Control[] ctls = {
- new BasicControl(ServerConstants.OID_SUBTREE_DELETE_CONTROL)};
- conn1.getLdapContext().setRequestControls(ctls);
- conn1.getLdapContext().destroySubcontext(Utilities.getJNDIName(dn.toString()));
- }
- finally
- {
- try
- {
- conn1.close();
- }
- catch (Throwable th)
- {
- }
+ DeleteRequest request = newDeleteRequest(dn).addControl(SubtreeDeleteRequestControl.newControl(true));
+ conn1.getConnection().delete(request);
}
nDeleted ++;
lastProgressTime = t;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
index 55b1d9a..295f34e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
@@ -16,6 +16,7 @@
*/
package org.opends.guitools.controlpanel.task;
+import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.opends.guitools.controlpanel.util.Utilities.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.server.types.ExistingFileBehavior.*;
@@ -33,15 +34,14 @@
import java.util.Map;
import java.util.Set;
-import javax.naming.NamingException;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.ModificationItem;
import javax.swing.SwingUtilities;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
+import org.forgerock.opendj.ldap.LdapException;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.requests.ModifyRequest;
+import org.forgerock.opendj.ldap.requests.Requests;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
@@ -278,16 +278,13 @@
{
try
{
- BasicAttribute attr = new BasicAttribute(getAttributeConfigName(element));
- attr.add(getSchemaFileAttributeValue(element));
- ModificationItem mod = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, attr);
- getInfo().getConnection().getLdapContext().modifyAttributes(
- ConfigConstants.DN_DEFAULT_SCHEMA_ROOT,
- new ModificationItem[] { mod });
+ ModifyRequest request = Requests.newModifyRequest(ConfigConstants.DN_DEFAULT_SCHEMA_ROOT)
+ .addModification(DELETE, getAttributeConfigName(element), getSchemaFileAttributeValue(element));
+ getInfo().getConnection().getConnection().modify(request);
}
- catch (NamingException ne)
+ catch (LdapException e)
{
- throw new OnlineUpdateException(ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(ne), ne);
+ throw new OnlineUpdateException(ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(e), e);
}
}
else
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewEntryTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewEntryTask.java
index b19edb3..b7d137e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewEntryTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewEntryTask.java
@@ -21,18 +21,14 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.BasicAttributes;
import javax.swing.SwingUtilities;
import javax.swing.tree.TreePath;
import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.adapter.server3x.Converters;
import org.forgerock.opendj.ldap.DN;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.browser.BrowserController;
@@ -44,7 +40,6 @@
import org.opends.guitools.controlpanel.ui.nodes.BasicNode;
import org.opends.guitools.controlpanel.ui.nodes.BrowserNodeInfo;
import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.config.ConfigConstants;
import org.opends.server.types.Entry;
/** The task launched when we must create an entry. */
@@ -169,29 +164,6 @@
conn = getInfo().getConnection();
useAdminCtx = true;
}
- BasicAttributes attrs = new BasicAttributes();
- BasicAttribute objectclass =
- new BasicAttribute(ConfigConstants.ATTR_OBJECTCLASS);
- for (String oc : newEntry.getObjectClasses().values())
- {
- objectclass.add(oc);
- }
- attrs.put(objectclass);
- for (org.opends.server.types.Attribute attr : newEntry.getAttributes())
- {
- Set<ByteString> values = new LinkedHashSet<>();
- Iterator<ByteString> it = attr.iterator();
- while (it.hasNext())
- {
- values.add(it.next());
- }
- BasicAttribute a = new BasicAttribute(attr.getAttributeDescription().toString());
- for (ByteString value : values)
- {
- a.add(value.toByteArray());
- }
- attrs.put(a);
- }
SwingUtilities.invokeLater(new Runnable()
{
@@ -206,8 +178,7 @@
}
});
- conn.getLdapContext().createSubcontext(Utilities.getJNDIName(newEntry.getName().toString()),
- attrs);
+ conn.getConnection().add(Converters.from(newEntry));
SwingUtilities.invokeLater(new Runnable()
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java
index 02d0290..962efd3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java
@@ -18,9 +18,9 @@
import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.forgerock.util.Utils.*;
-import static org.opends.messages.AdminToolMessages.*;
import static org.opends.guitools.controlpanel.util.Utilities.*;
-import static org.opends.server.util.SchemaUtils.getElementSchemaFile;
+import static org.opends.messages.AdminToolMessages.*;
+import static org.opends.server.util.SchemaUtils.*;
import java.io.File;
import java.util.ArrayList;
@@ -34,13 +34,12 @@
import java.util.Map;
import java.util.Set;
-import javax.naming.NamingException;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.ModificationItem;
import javax.swing.SwingUtilities;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.requests.ModifyRequest;
+import org.forgerock.opendj.ldap.requests.Requests;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.forgerock.opendj.ldap.schema.SchemaElement;
@@ -318,15 +317,13 @@
});
try
{
- final BasicAttribute attr = new BasicAttribute(getAttributeConfigName(schemaElement));
- attr.add(schemaElement.toString());
- final ModificationItem mod = new ModificationItem(DirContext.ADD_ATTRIBUTE, attr);
- getInfo().getConnection().getLdapContext().modifyAttributes(
- ConfigConstants.DN_DEFAULT_SCHEMA_ROOT, new ModificationItem[] { mod });
+ ModifyRequest request = Requests.newModifyRequest(ConfigConstants.DN_DEFAULT_SCHEMA_ROOT)
+ .addModification(ADD, getAttributeConfigName(schemaElement), schemaElement.toString());
+ getInfo().getConnection().getConnection().modify(request);
}
- catch (NamingException ne)
+ catch (LdapException e)
{
- throw new OnlineUpdateException(ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(ne), ne);
+ throw new OnlineUpdateException(ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(e), e);
}
notifyConfigurationElementCreated(schemaElement);
SwingUtilities.invokeLater(new Runnable()
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;
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/LDAPEntryReader.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/LDAPEntryReader.java
index 1c27e7d..06e8e81 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/LDAPEntryReader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/LDAPEntryReader.java
@@ -17,13 +17,15 @@
package org.opends.guitools.controlpanel.util;
+import static org.forgerock.opendj.ldap.SearchScope.*;
+
import java.util.HashSet;
import java.util.Set;
-import javax.naming.NamingEnumeration;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-
+import org.forgerock.opendj.ldap.requests.Requests;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.responses.SearchResultEntry;
+import org.forgerock.opendj.ldif.ConnectionEntryReader;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
import org.opends.guitools.controlpanel.event.EntryReadErrorEvent;
@@ -59,22 +61,14 @@
public CustomSearchResult processBackgroundTask() throws Throwable
{
isOver = false;
- NamingEnumeration<SearchResult> en = null;
- try
+ final String filter = "(|(objectclass=*)(objectclass=ldapsubentry))";
+ SearchRequest request = Requests.newSearchRequest(dn, BASE_OBJECT, filter, "*", "+");
+ try (ConnectionEntryReader entryReader = conn.getConnection().search(request))
{
- SearchControls controls = new SearchControls();
-
- String[] attrs = {"*", "+"};
- controls.setReturningAttributes(attrs);
- controls.setSearchScope(SearchControls.OBJECT_SCOPE);
- final String filter = "(|(objectclass=*)(objectclass=ldapsubentry))";
-
- en = conn.getLdapContext().search(Utilities.getJNDIName(dn), filter, controls);
-
- SearchResult sr = null;
- while (en.hasMore())
+ SearchResultEntry sr = null;
+ while (entryReader.hasNext())
{
- sr = en.next();
+ sr = entryReader.readEntry();
}
return new CustomSearchResult(sr, dn);
@@ -85,10 +79,6 @@
{
isOver = true;
}
- if (en != null)
- {
- en.close();
- }
}
}
--
Gitblit v1.10.0