From fdb3fa313407639240f75ec566865cea25bc039b Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 11 Jul 2016 12:01:16 +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/server/tools/dsreplication/ReplicationCliMain.java | 118 ++++++++-----------
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/PurgeHistoricalUserData.java | 93 ---------------
opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java | 33 +----
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java | 13 --
opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java | 77 ++++--------
5 files changed, 87 insertions(+), 247 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
index 8f77ab9..1e94dd9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
@@ -35,9 +35,6 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import javax.naming.NamingException;
-import javax.naming.ldap.Control;
-import javax.naming.ldap.LdapContext;
import javax.naming.ldap.Rdn;
import org.forgerock.i18n.LocalizableMessage;
@@ -54,7 +51,9 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.RDN;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.controls.SubtreeDeleteRequestControl;
import org.forgerock.opendj.ldap.requests.AddRequest;
+import org.forgerock.opendj.ldap.requests.DeleteRequest;
import org.forgerock.opendj.ldap.requests.ModifyRequest;
import org.forgerock.opendj.ldap.requests.SearchRequest;
import org.forgerock.opendj.ldap.responses.Result;
@@ -959,36 +958,22 @@
removeAdministrators ? getAdministratorContainerDN() : null };
try
{
- Control[] controls = new Control[] { new SubtreeDeleteControl() };
- LdapContext tmpContext = connectionWrapper.getLdapContext().newInstance(controls);
- try
+ for (String dn : dns)
{
- for (String dn : dns)
+ if (dn != null)
{
- if (dn != null)
+ if (isExistingEntry(dn))
{
- if (isExistingEntry(dn))
- {
- tmpContext.destroySubcontext(dn);
- }
+ DeleteRequest request = newDeleteRequest(dn)
+ .addControl(SubtreeDeleteRequestControl.newControl(true));
+ connectionWrapper.getConnection().delete(request);
}
}
}
- finally
- {
- try
- {
- tmpContext.close();
- }
- catch (Exception ex)
- {
- logger.warn(LocalizableMessage.raw("Error while closing LDAP connection after removing admin data", ex));
- }
- }
// Recreate the container entries:
createAdminDataContainers();
}
- catch (NamingException x)
+ catch (LdapException x)
{
throw new ADSContextException(ErrorType.ERROR_UNEXPECTED, x);
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
index 9de7170..57acac7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
@@ -16,6 +16,7 @@
*/
package org.opends.admin.ads;
+import java.io.IOException;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -25,19 +26,19 @@
import java.util.Map;
import java.util.Set;
-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.LdapName;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.EntryNotFoundException;
+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.ADSContext.ServerProperty;
import org.opends.admin.ads.util.ApplicationTrustManager;
-import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.admin.ads.util.PreferredConnection;
import org.opends.admin.ads.util.ServerLoader;
@@ -45,6 +46,8 @@
import static com.forgerock.opendj.cli.Utils.*;
+import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.opends.admin.ads.util.ConnectionUtils.*;
import static org.opends.messages.QuickSetupMessages.*;
/**
@@ -195,10 +198,10 @@
{
updateReplicas(server, candidateReplicas, updatedReplicas);
}
- catch (NamingException ne)
+ catch (NamingException | IOException e)
{
server.setLastException(new TopologyCacheException(
- TopologyCacheException.Type.GENERIC_READING_SERVER, ne));
+ TopologyCacheException.Type.GENERIC_READING_SERVER, e));
}
replicasToUpdate.removeAll(updatedReplicas);
}
@@ -430,33 +433,23 @@
private void updateReplicas(ServerDescriptor replicationServer,
Collection<ReplicaDescriptor> candidateReplicas,
Collection<ReplicaDescriptor> updatedReplicas)
- throws NamingException
+ throws NamingException, IOException
{
- SearchControls ctls = new SearchControls();
- ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- ctls.setReturningAttributes(
- new String[]
- {
- "approx-older-change-not-synchronized-millis", "missing-changes",
- "domain-name", "server-id"
- });
-
- NamingEnumeration<SearchResult> monitorEntries = null;
ServerLoader loader = getServerLoader(replicationServer.getAdsProperties());
- try (ConnectionWrapper conn = loader.createConnectionWrapper())
+ SearchRequest request=Requests.newSearchRequest("cn=monitor", WHOLE_SUBTREE, "(missing-changes=*)",
+ "approx-older-change-not-synchronized-millis", "missing-changes", "domain-name", "server-id");
+ try (ConnectionWrapper conn = loader.createConnectionWrapper();
+ ConnectionEntryReader entryReader = conn.getConnection().search(request))
{
- monitorEntries = conn.getLdapContext().search(
- new LdapName("cn=monitor"), "(missing-changes=*)", ctls);
-
- while (monitorEntries.hasMore())
+ while (entryReader.hasNext())
{
- SearchResult sr = monitorEntries.next();
+ SearchResultEntry sr = entryReader.readEntry();
- String dn = ConnectionUtils.getFirstValue(sr, "domain-name");
+ String dn = firstValueAsString(sr, "domain-name");
int replicaId = -1;
try
{
- String sid = ConnectionUtils.getFirstValue(sr, "server-id");
+ Integer sid = asInteger(sr, "server-id");
if (sid == null)
{
// This is not a replica, but a replication server. Skip it
@@ -466,8 +459,7 @@
}
catch (Throwable t)
{
- logger.warn(LocalizableMessage.raw("Unexpected error reading replica ID: " + t,
- t));
+ logger.warn(LocalizableMessage.raw("Unexpected error reading replica ID: " + t, t));
}
for (ReplicaDescriptor replica : candidateReplicas)
@@ -484,34 +476,19 @@
}
}
}
- catch (NameNotFoundException nse)
+ catch (EntryNotFoundException e)
{
}
- finally
- {
- if (monitorEntries != null)
- {
- try
- {
- monitorEntries.close();
- }
- catch (Throwable t)
- {
- logger.warn(LocalizableMessage.raw(
- "Unexpected error closing enumeration on monitor entries" + t, t));
- }
- }
- }
}
- private void setMissingChanges(ReplicaDescriptor replica, SearchResult sr) throws NamingException
+ private void setMissingChanges(ReplicaDescriptor replica, SearchResultEntry sr) throws NamingException
{
- String s = ConnectionUtils.getFirstValue(sr, "missing-changes");
- if (s != null)
+ Integer value = asInteger(sr, "missing-changes");
+ if (value != null)
{
try
{
- replica.setMissingChanges(Integer.valueOf(s));
+ replica.setMissingChanges(value);
}
catch (Throwable t)
{
@@ -521,9 +498,9 @@
}
}
- private void setAgeOfOldestMissingChange(ReplicaDescriptor replica, SearchResult sr) throws NamingException
+ private void setAgeOfOldestMissingChange(ReplicaDescriptor replica, SearchResultEntry sr) throws NamingException
{
- String s = ConnectionUtils.getFirstValue(sr, "approx-older-change-not-synchronized-millis");
+ String s = firstValueAsString(sr, "approx-older-change-not-synchronized-millis");
if (s != null)
{
try
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java b/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
index 8787314..6ba1385 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
@@ -33,8 +33,6 @@
import java.util.Map;
import java.util.Set;
-import javax.naming.Context;
-import javax.naming.NamingException;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
@@ -1471,16 +1469,7 @@
getUninstallUserData().setAdminUID(loginDialog.getAdministratorUid());
getUninstallUserData().setAdminPwd(loginDialog.getAdministratorPwd());
final ConnectionWrapper connWrapper = loginDialog.getConnection();
- try
- {
- getUninstallUserData().setLocalServerUrl(
- (String)connWrapper.getLdapContext().getEnvironment().get(Context.PROVIDER_URL));
- }
- catch (NamingException ne)
- {
- logger.warn(LocalizableMessage.raw("Could not find local server: "+ne, ne));
- getUninstallUserData().setLocalServerUrl("ldap://localhost:389");
- }
+ getUninstallUserData().setLocalServerUrl(connWrapper.getLdapUrl());
getUninstallUserData().setReplicationServer(
loginDialog.getHostName() + ":" +
conf.getReplicationServerPort());
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/PurgeHistoricalUserData.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/PurgeHistoricalUserData.java
index 5963fb8..506af6c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/PurgeHistoricalUserData.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/PurgeHistoricalUserData.java
@@ -16,21 +16,11 @@
*/
package org.opends.server.tools.dsreplication;
-import java.util.ArrayList;
import java.util.LinkedList;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.BasicAttributes;
-
-import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.admin.client.cli.TaskScheduleArgs;
-import org.opends.server.tools.tasks.TaskClient;
import org.opends.server.tools.tasks.TaskScheduleUserData;
import org.opends.server.types.HostPort;
-import org.opends.server.types.RawAttribute;
/** This class is used to store the information provided by the user to purge historical data. */
public class PurgeHistoricalUserData extends MonoServerReplicationUserData
@@ -150,87 +140,4 @@
uData.setMaximumDuration(argParser.getMaximumDurationOrDefault());
}
-
- /**
- * Commodity method that returns the list of basic task attributes required
- * to launch a task corresponding to the provided user data.
- * @param uData the user data describing the purge historical to be executed.
- * @return the list of basic task attributes required
- * to launch a task corresponding to the provided user data.
- */
- public static BasicAttributes getTaskAttributes(PurgeHistoricalUserData uData)
- {
- PurgeHistoricalScheduleInformation information =
- new PurgeHistoricalScheduleInformation(uData);
- return getAttributes(TaskClient.getTaskAttributes(information));
- }
-
- private static BasicAttributes getAttributes(ArrayList<RawAttribute> rawAttrs)
- {
- BasicAttributes attrs = new BasicAttributes();
- for (RawAttribute rawAttr : rawAttrs)
- {
- BasicAttribute attr = new BasicAttribute(rawAttr.getAttributeType());
- for (ByteString v : rawAttr.getValues())
- {
- attr.add(v.toString());
- }
- attrs.put(attr);
- }
- return attrs;
- }
-
- /**
- * Returns the DN of the task corresponding to the provided list of
- * attributes. The code assumes that the attributes have been generated
- * calling the method {@link #getTaskAttributes(PurgeHistoricalUserData)}.
- * @param attrs the attributes of the task entry.
- * @return the DN of the task entry.
- */
- public static String getTaskDN(BasicAttributes attrs)
- {
- ArrayList<RawAttribute> rawAttrs = getRawAttributes(attrs);
- return TaskClient.getTaskDN(rawAttrs);
- }
-
- /**
- * Returns the ID of the task corresponding to the provided list of
- * attributes. The code assumes that the attributes have been generated
- * calling the method {@link #getTaskAttributes(PurgeHistoricalUserData)}.
- * @param attrs the attributes of the task entry.
- * @return the ID of the task entry.
- */
- public static String getTaskID(BasicAttributes attrs)
- {
- ArrayList<RawAttribute> rawAttrs = getRawAttributes(attrs);
- return TaskClient.getTaskID(rawAttrs);
- }
-
- private static ArrayList<RawAttribute> getRawAttributes(BasicAttributes attrs)
- {
- try
- {
- ArrayList<RawAttribute> rawAttrs = new ArrayList<>();
- NamingEnumeration<Attribute> nAtt = attrs.getAll();
- while (nAtt.hasMore())
- {
- Attribute attr = nAtt.next();
- NamingEnumeration<?> values = attr.getAll();
- ArrayList<ByteString> rawValues = new ArrayList<>();
- while (values.hasMore())
- {
- Object v = values.next();
- rawValues.add(ByteString.valueOfUtf8(v.toString()));
- }
- RawAttribute rAttr = RawAttribute.create(attr.getID(), rawValues);
- rawAttrs.add(rAttr);
- }
- return rawAttrs;
- }
- catch (NamingException ne)
- {
- // This is a bug.
- throw new RuntimeException("Unexpected error: "+ne, ne);
- }
- }
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
index d7b3013..4262710 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -64,14 +64,7 @@
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicReference;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
-import javax.naming.directory.BasicAttributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.LdapName;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLHandshakeException;
@@ -93,6 +86,7 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.EntryNotFoundException;
import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.LinkedAttribute;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.requests.AddRequest;
import org.forgerock.opendj.ldap.requests.SearchRequest;
@@ -145,6 +139,7 @@
import org.opends.server.tasks.PurgeConflictsHistoricalTask;
import org.opends.server.tools.dsreplication.EnableReplicationUserData.EnableReplicationServerData;
import org.opends.server.tools.dsreplication.ReplicationCliArgumentParser.ServerArgs;
+import org.opends.server.tools.tasks.TaskClient;
import org.opends.server.tools.tasks.TaskEntry;
import org.opends.server.tools.tasks.TaskScheduleInteraction;
import org.opends.server.tools.tasks.TaskScheduleUserData;
@@ -152,6 +147,7 @@
import org.opends.server.types.InitializationException;
import org.opends.server.types.NullOutputStream;
import org.opends.server.types.OpenDsException;
+import org.opends.server.types.RawAttribute;
import org.opends.server.util.BuildVersion;
import org.opends.server.util.ServerConstants;
import org.opends.server.util.SetupUtils;
@@ -1349,29 +1345,29 @@
}
argParser.setResetChangeNumber(newStartCN);
}
- SearchControls ctls = new SearchControls();
- ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- ctls.setReturningAttributes(
- new String[] {
- "changeNumber",
- "replicationCSN",
- "targetDN"
- });
- NamingEnumeration<SearchResult> listeners = connSource.getLdapContext().search(
- new LdapName("cn=changelog"), "(changeNumber=" + newStartCN + ")", ctls);
- if (!listeners.hasMore())
+
+ SearchResultEntry sr;
+ SearchRequest request=newSearchRequest("cn=changelog", WHOLE_SUBTREE, "(changeNumber=" + newStartCN + ")",
+ "changeNumber",
+ "replicationCSN",
+ "targetDN");
+ try (ConnectionEntryReader entryReader = connSource.getConnection().search(request))
{
- errPrintln(ERROR_RESET_CHANGE_NUMBER_UNKNOWN_NUMBER.get(newStartCN, uData.getSourceHostPort()));
- return ERROR_UNKNOWN_CHANGE_NUMBER;
+ if (!entryReader.hasNext())
+ {
+ errPrintln(ERROR_RESET_CHANGE_NUMBER_UNKNOWN_NUMBER.get(newStartCN, uData.getSourceHostPort()));
+ return ERROR_UNKNOWN_CHANGE_NUMBER;
+ }
+ sr = entryReader.readEntry();
}
- SearchResult sr = listeners.next();
- String newStartCSN = getFirstValue(sr, "replicationCSN");
+
+ String newStartCSN = firstValueAsString(sr, "replicationCSN");
if (newStartCSN == null)
{
errPrintln(ERROR_RESET_CHANGE_NUMBER_NO_CSN_FOUND.get(newStartCN, uData.getSourceHostPort()));
return ERROR_RESET_CHANGE_NUMBER_NO_CSN;
}
- String targetDN = getFirstValue(sr, "targetDN");
+ String targetDN = firstValueAsString(sr, "targetDN");
DN targetBaseDN = DN.rootDN();
try
{
@@ -1406,7 +1402,7 @@
waitUntilResetChangeNumberTaskEnds(connDest, taskDN);
return SUCCESSFUL;
}
- catch (ReplicationCliException | NamingException | LdapException | NullPointerException e)
+ catch (ReplicationCliException | IOException | NullPointerException e)
{
errPrintln(ERROR_RESET_CHANGE_NUMBER_EXCEPTION.get(e.getLocalizedMessage()));
return ERROR_RESET_CHANGE_NUMBER_PROBLEM;
@@ -1417,20 +1413,15 @@
{
try
{
- SearchControls ctls = new SearchControls();
- ctls.setSearchScope(SearchControls.OBJECT_SCOPE);
- ctls.setReturningAttributes(new String[] {"lastChangeNumber"});
- NamingEnumeration<SearchResult> results = conn.getLdapContext().search(new LdapName(""), "objectclass=*", ctls);
- if (results.hasMore()) {
- return getFirstValue(results.next(), "lastChangeNumber");
- }
+ SearchResultEntry sr =
+ conn.getConnection().searchSingleEntry("", BASE_OBJECT, "objectclass=*", "lastChangeNumber");
+ return firstValueAsString(sr, "lastChangeNumber");
}
- catch (NamingException e)
+ catch (LdapException e)
{
errPrintln(ERROR_RESET_CHANGE_NUMBER_EXCEPTION.get(e.getLocalizedMessage()));
+ return "";
}
-
- return "";
}
private void waitUntilResetChangeNumberTaskEnds(ConnectionWrapper conn, String taskDN)
@@ -1557,23 +1548,28 @@
String taskID = null;
while (!taskCreated)
{
- BasicAttributes attrs = PurgeHistoricalUserData.getTaskAttributes(uData);
- dn = PurgeHistoricalUserData.getTaskDN(attrs);
- taskID = PurgeHistoricalUserData.getTaskID(attrs);
+ List<RawAttribute> rawAttrs = TaskClient.getTaskAttributes(new PurgeHistoricalScheduleInformation(uData));
+ dn = TaskClient.getTaskDN(rawAttrs);
+ taskID = TaskClient.getTaskID(rawAttrs);
+
+ AddRequest request = newAddRequest(dn);
+ for (RawAttribute rawAttr : rawAttrs)
+ {
+ request.addAttribute(new LinkedAttribute(rawAttr.getAttributeType(), rawAttr.getValues()));
+ }
+
try
{
- DirContext dirCtx = conn.getLdapContext().createSubcontext(dn, attrs);
+ conn.getConnection().add(request);
taskCreated = true;
- logger.info(LocalizableMessage.raw("created task entry: "+attrs));
- dirCtx.close();
+ logger.info(LocalizableMessage.raw("created task entry: " + request));
}
- catch (NamingException ne)
+ catch (LdapException e)
{
- logger.error(LocalizableMessage.raw("Error creating task "+attrs, ne));
+ logger.error(LocalizableMessage.raw("Error creating task " + request, e));
LocalizableMessage msg = ERR_LAUNCHING_PURGE_HISTORICAL.get();
ReplicationCliReturnCode code = ERROR_LAUNCHING_PURGE_HISTORICAL;
- throw new ReplicationCliException(
- getThrowableMsg(msg, ne), code, ne);
+ throw new ReplicationCliException(getThrowableMsg(msg, e), code, e);
}
}
@@ -1585,21 +1581,21 @@
sleepCatchInterrupt(500);
try
{
- SearchResult sr = getFirstSearchResult(conn, dn,
+ SearchResultEntry sr = getFirstSearchResult(conn, dn,
"ds-task-log-message",
"ds-task-state",
"ds-task-purge-conflicts-historical-purged-values-count",
"ds-task-purge-conflicts-historical-purge-completed-in-time",
"ds-task-purge-conflicts-historical-purge-completed-in-time",
"ds-task-purge-conflicts-historical-last-purged-changenumber");
- String logMsg = getFirstValue(sr, "ds-task-log-message");
+ String logMsg = firstValueAsString(sr, "ds-task-log-message");
if (logMsg != null && !logMsg.equals(lastLogMsg))
{
logger.info(LocalizableMessage.raw(logMsg));
lastLogMsg = logMsg;
}
- String state = getFirstValue(sr, "ds-task-state");
+ String state = firstValueAsString(sr, "ds-task-state");
TaskState taskState = TaskState.fromString(state);
if (TaskState.isDone(taskState) || taskState == STOPPED_BY_ERROR)
{
@@ -1619,15 +1615,14 @@
}
}
}
- catch (NameNotFoundException x)
+ catch (EntryNotFoundException x)
{
isOver = true;
}
- catch (NamingException ne)
+ catch (LdapException e)
{
LocalizableMessage msg = ERR_READING_SERVER_TASK_PROGRESS.get();
- throw new ReplicationCliException(
- getThrowableMsg(msg, ne), ERROR_CONNECTING, ne);
+ throw new ReplicationCliException(getThrowableMsg(msg, e), ERROR_CONNECTING, e);
}
}
@@ -1638,24 +1633,11 @@
return returnCode;
}
- private SearchResult getFirstSearchResult(ConnectionWrapper conn, String dn, String... returnedAttributes)
- throws NamingException
+ private SearchResultEntry getFirstSearchResult(ConnectionWrapper conn, String dn, String... returnedAttributes)
+ throws LdapException
{
- SearchControls searchControls = new SearchControls();
- searchControls.setCountLimit(1);
- searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
- searchControls.setReturningAttributes(returnedAttributes);
- NamingEnumeration<SearchResult> res = conn.getLdapContext().search(dn, "objectclass=*", searchControls);
- try
- {
- SearchResult sr = null;
- sr = res.next();
- return sr;
- }
- finally
- {
- res.close();
- }
+ SearchRequest request = newSearchRequest(dn, BASE_OBJECT, "(objectclass=*)", returnedAttributes).setSizeLimit(1);
+ return conn.getConnection().searchSingleEntry(request);
}
private LocalizableMessage getPurgeErrorMsg(String lastLogMsg, String state, ConnectionWrapper conn)
--
Gitblit v1.10.0