From 2f0a3726faaca307036b55cb0306590140996014 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 11 Jul 2016 12:00:53 +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 | 119 +++++++-------
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java | 277 +++++++++++++++-------------------
opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java | 41 +---
3 files changed, 191 insertions(+), 246 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
index a9a119c..e6108be 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
@@ -20,6 +20,8 @@
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.util.OperatingSystem.*;
+import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.ServerDescriptor.*;
import static org.opends.admin.ads.ServerDescriptor.ServerProperty.*;
@@ -51,17 +53,8 @@
import java.util.Map;
import java.util.Set;
-import javax.naming.NameAlreadyBoundException;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.NamingSecurityException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.BasicAttributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
import javax.naming.ldap.Rdn;
import javax.swing.JPanel;
@@ -71,6 +64,12 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.ManagedObjectDefinition;
import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.EntryNotFoundException;
+import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.requests.AddRequest;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.forgerock.opendj.server.config.client.BackendCfgClient;
import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.admin.ads.ADSContext;
@@ -4169,47 +4168,46 @@
boolean taskCreated = false;
int i = 1;
boolean isOver = false;
- String dn = null;
- BasicAttributes attrs = new BasicAttributes();
- Attribute oc = new BasicAttribute("objectclass");
- oc.add("top");
- oc.add("ds-task");
- oc.add("ds-task-initialize-from-remote-replica");
- attrs.put(oc);
- attrs.put("ds-task-class-name", "org.opends.server.tasks.InitializeTask");
- attrs.put("ds-task-initialize-domain-dn", suffixDn);
- attrs.put("ds-task-initialize-replica-server-id", String.valueOf(replicaId));
+ String dn = "";
+ AddRequest addRequest = newAddRequest(dn)
+ .addAttribute("objectclass", "top", "ds-task", "ds-task-initialize-from-remote-replica")
+ .addAttribute("ds-task-class-name", "org.opends.server.tasks.InitializeTask")
+ .addAttribute("ds-task-initialize-domain-dn", suffixDn)
+ .addAttribute("ds-task-initialize-replica-server-id", String.valueOf(replicaId));
while (!taskCreated)
{
checkAbort();
String id = "quicksetup-initialize" + i;
dn = "ds-task-id=" + id + ",cn=Scheduled Tasks,cn=Tasks";
- attrs.put("ds-task-id", id);
+ addRequest
+ .setName(dn)
+ .replaceAttribute("ds-task-id", id);
try
{
- DirContext dirCtx = conn.getLdapContext().createSubcontext(dn, attrs);
+ conn.getConnection().add(addRequest);
taskCreated = true;
- logger.info(LocalizableMessage.raw("created task entry: " + attrs));
- dirCtx.close();
+ logger.info(LocalizableMessage.raw("created task entry: " + addRequest));
}
- catch (NameAlreadyBoundException x)
+ catch (LdapException e)
{
- logger.warn(LocalizableMessage.raw("A task with dn: " + dn + " already existed."));
- }
- catch (NamingException ne)
- {
- logger.error(LocalizableMessage.raw("Error creating task " + attrs, ne));
- throw new ApplicationException(ReturnCode.APPLICATION_ERROR, getThrowableMsg(
- INFO_ERROR_LAUNCHING_INITIALIZATION.get(sourceServerDisplay), ne), ne);
+ if (e.getResult().getResultCode() == ResultCode.ENTRY_ALREADY_EXISTS)
+ {
+ logger.warn(LocalizableMessage.raw("A task with dn: " + dn + " already existed."));
+ }
+ else
+ {
+ logger.error(LocalizableMessage.raw("Error creating task " + addRequest, e));
+ throw new ApplicationException(ReturnCode.APPLICATION_ERROR, getThrowableMsg(
+ INFO_ERROR_LAUNCHING_INITIALIZATION.get(sourceServerDisplay), e), e);
+ }
}
i++;
}
+
// Wait until it is over
- SearchControls searchControls = new SearchControls();
- searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
- String filter = "objectclass=*";
- searchControls.setReturningAttributes(new String[] { "ds-task-unprocessed-entry-count",
- "ds-task-processed-entry-count", "ds-task-log-message", "ds-task-state" });
+ SearchRequest searchRequest =
+ newSearchRequest(dn, BASE_OBJECT, "(objectclass=*)", "ds-task-unprocessed-entry-count",
+ "ds-task-processed-entry-count", "ds-task-log-message", "ds-task-state");
LocalizableMessage lastDisplayedMsg = null;
String lastLogMsg = null;
long lastTimeMsgDisplayed = -1;
@@ -4232,85 +4230,22 @@
// server will receive a connect error.
checkAbort();
}
+
try
{
- NamingEnumeration<SearchResult> res = conn.getLdapContext().search(dn, filter, searchControls);
- SearchResult sr = null;
- try
- {
- while (res.hasMore())
- {
- sr = res.next();
- }
- }
- finally
- {
- res.close();
- }
+ SearchResultEntry sr = conn.getConnection().searchSingleEntry(searchRequest);
// Get the number of entries that have been handled and
// a percentage...
- LocalizableMessage msg;
- String sProcessed = getFirstValue(sr, "ds-task-processed-entry-count");
- String sUnprocessed = getFirstValue(sr, "ds-task-unprocessed-entry-count");
- long processed = -1;
- long unprocessed = -1;
- if (sProcessed != null)
- {
- processed = Integer.parseInt(sProcessed);
- }
- if (sUnprocessed != null)
- {
- unprocessed = Integer.parseInt(sUnprocessed);
- }
+ long processed = asInteger(sr, "ds-task-processed-entry-count");
+ long unprocessed = asInteger(sr, "ds-task-unprocessed-entry-count");
totalEntries = Math.max(totalEntries, processed + unprocessed);
- if (processed != -1 && unprocessed != -1)
- {
- if (processed + unprocessed > 0)
- {
- long perc = (100 * processed) / (processed + unprocessed);
- msg = INFO_INITIALIZE_PROGRESS_WITH_PERCENTAGE.get(sProcessed, perc);
- }
- else
- {
- //msg = INFO_NO_ENTRIES_TO_INITIALIZE.get();
- msg = null;
- }
- }
- else if (processed != -1)
- {
- msg = INFO_INITIALIZE_PROGRESS_WITH_PROCESSED.get(sProcessed);
- }
- else if (unprocessed != -1)
- {
- msg = INFO_INITIALIZE_PROGRESS_WITH_UNPROCESSED.get(sUnprocessed);
- }
- else
- {
- msg = lastDisplayedMsg;
- }
-
+ LocalizableMessage msg = getLocalizedMessage(lastDisplayedMsg, processed, unprocessed);
+ // TODO JNR extract method
if (msg != null)
{
long currentTime = System.currentTimeMillis();
- /* Refresh period: to avoid having too many lines in the log */
- long minRefreshPeriod;
- if (totalEntries < 100)
- {
- minRefreshPeriod = 0;
- }
- else if (totalEntries < 1000)
- {
- minRefreshPeriod = 1000;
- }
- else if (totalEntries < 10000)
- {
- minRefreshPeriod = 5000;
- }
- else
- {
- minRefreshPeriod = 10000;
- }
+ long minRefreshPeriod = getMinRefreshPeriodInMillis(totalEntries);
if (currentTime - minRefreshPeriod > lastTimeMsgLogged)
{
lastTimeMsgLogged = currentTime;
@@ -4325,14 +4260,14 @@
}
}
- 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;
}
InstallerHelper helper = new InstallerHelper();
- 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)
@@ -4388,7 +4323,7 @@
}
}
}
- catch (NameNotFoundException x)
+ catch (EntryNotFoundException x)
{
isOver = true;
logger.info(LocalizableMessage.raw("Initialization entry not found."));
@@ -4398,15 +4333,65 @@
notifyListeners(getLineBreak());
}
}
- catch (NamingException ne)
+ catch (LdapException e)
{
throw new ApplicationException(ReturnCode.APPLICATION_ERROR, getThrowableMsg(INFO_ERROR_POOLING_INITIALIZATION
- .get(sourceServerDisplay), ne), ne);
+ .get(sourceServerDisplay), e), e);
}
}
resetGenerationId(conn, suffixDn, sourceServerDisplay);
}
+ private LocalizableMessage getLocalizedMessage(LocalizableMessage lastDisplayedMsg, long processed, long unprocessed)
+ {
+ if (processed != -1 && unprocessed != -1)
+ {
+ if (processed + unprocessed > 0)
+ {
+ long perc = (100 * processed) / (processed + unprocessed);
+ return INFO_INITIALIZE_PROGRESS_WITH_PERCENTAGE.get(processed, perc);
+ }
+ else
+ {
+ // return INFO_NO_ENTRIES_TO_INITIALIZE.get();
+ return null;
+ }
+ }
+ else if (processed != -1)
+ {
+ return INFO_INITIALIZE_PROGRESS_WITH_PROCESSED.get(processed);
+ }
+ else if (unprocessed != -1)
+ {
+ return INFO_INITIALIZE_PROGRESS_WITH_UNPROCESSED.get(unprocessed);
+ }
+ else
+ {
+ return lastDisplayedMsg;
+ }
+ }
+
+ /** Refresh period: to avoid having too many lines in the log */
+ private long getMinRefreshPeriodInMillis(long totalEntries)
+ {
+ if (totalEntries < 100)
+ {
+ return 0;
+ }
+ else if (totalEntries < 1000)
+ {
+ return 1000;
+ }
+ else if (totalEntries < 10000)
+ {
+ return 5000;
+ }
+ else
+ {
+ return 10000;
+ }
+ }
+
/**
* Returns the configuration file path to be used when invoking the
* command-lines.
@@ -4430,71 +4415,57 @@
boolean taskCreated = false;
int i = 1;
boolean isOver = false;
- String dn = null;
- BasicAttributes attrs = new BasicAttributes();
- Attribute oc = new BasicAttribute("objectclass");
- oc.add("top");
- oc.add("ds-task");
- oc.add("ds-task-reset-generation-id");
- attrs.put(oc);
- attrs.put("ds-task-class-name", "org.opends.server.tasks.SetGenerationIdTask");
- attrs.put("ds-task-reset-generation-id-domain-base-dn", suffixDn);
+ String dn = "";
+ AddRequest addRequest = newAddRequest(dn)
+ .addAttribute("objectclass", "top", "ds-task", "ds-task-reset-generation-id")
+ .addAttribute("ds-task-class-name", "org.opends.server.tasks.SetGenerationIdTask")
+ .addAttribute("ds-task-reset-generation-id-domain-base-dn", suffixDn);
while (!taskCreated)
{
checkAbort();
String id = "quicksetup-reset-generation-id-" + i;
dn = "ds-task-id=" + id + ",cn=Scheduled Tasks,cn=Tasks";
- attrs.put("ds-task-id", id);
+ addRequest
+ .setName(dn)
+ .replaceAttribute("ds-task-id", id);
try
{
- DirContext dirCtx = conn.getLdapContext().createSubcontext(dn, attrs);
+ conn.getConnection().add(addRequest);
+
taskCreated = true;
- logger.info(LocalizableMessage.raw("created task entry: " + attrs));
- dirCtx.close();
+ logger.info(LocalizableMessage.raw("created task entry: " + addRequest));
}
- catch (NameAlreadyBoundException x)
+ catch (LdapException e)
{
- }
- catch (NamingException ne)
- {
- logger.error(LocalizableMessage.raw("Error creating task " + attrs, ne));
- throw new ApplicationException(ReturnCode.APPLICATION_ERROR, getThrowableMsg(
- INFO_ERROR_LAUNCHING_INITIALIZATION.get(sourceServerDisplay), ne), ne);
+ if (e.getResult().getResultCode() != ResultCode.ENTRY_ALREADY_EXISTS)
+ {
+ logger.error(LocalizableMessage.raw("Error creating task " + addRequest, e));
+ throw new ApplicationException(ReturnCode.APPLICATION_ERROR, getThrowableMsg(
+ INFO_ERROR_LAUNCHING_INITIALIZATION.get(sourceServerDisplay), e), e);
+ }
}
i++;
}
+
// Wait until it is over
- SearchControls searchControls = new SearchControls();
- searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
- String filter = "objectclass=*";
- searchControls.setReturningAttributes(new String[] { "ds-task-log-message", "ds-task-state" });
String lastLogMsg = null;
while (!isOver)
{
StaticUtils.sleep(500);
try
{
- NamingEnumeration<SearchResult> res = conn.getLdapContext().search(dn, filter, searchControls);
- SearchResult sr = null;
- try
- {
- while (res.hasMore())
- {
- sr = res.next();
- }
- }
- finally
- {
- res.close();
- }
- String logMsg = getFirstValue(sr, "ds-task-log-message");
+ SearchRequest searchRequest =
+ newSearchRequest(dn, BASE_OBJECT, "(objectclass=*)", "ds-task-log-message", "ds-task-state");
+ SearchResultEntry sr = conn.getConnection().searchSingleEntry(searchRequest);
+
+ 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)
{
@@ -4515,14 +4486,14 @@
}
}
}
- catch (NameNotFoundException x)
+ catch (EntryNotFoundException x)
{
isOver = true;
}
- catch (NamingException ne)
+ catch (LdapException e)
{
throw new ApplicationException(ReturnCode.APPLICATION_ERROR,
- getThrowableMsg(INFO_ERROR_POOLING_INITIALIZATION.get(sourceServerDisplay), ne), ne);
+ getThrowableMsg(INFO_ERROR_POOLING_INITIALIZATION.get(sourceServerDisplay), e), e);
}
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
index 16e5d99..f271349 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
@@ -19,6 +19,8 @@
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.util.OperatingSystem.*;
+import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.util.ConnectionUtils.*;
import static org.opends.messages.QuickSetupMessages.*;
@@ -52,12 +54,9 @@
import javax.naming.AuthenticationException;
import javax.naming.CommunicationException;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.NamingSecurityException;
import javax.naming.NoPermissionException;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
import javax.naming.ldap.LdapName;
import org.forgerock.i18n.LocalizableMessage;
@@ -66,6 +65,8 @@
import org.forgerock.opendj.config.ManagedObjectDefinition;
import org.forgerock.opendj.ldap.AuthorizationException;
import org.forgerock.opendj.ldap.ConnectionException;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.forgerock.opendj.server.config.client.BackendCfgClient;
import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.admin.ads.ADSContext;
@@ -955,43 +956,23 @@
*/
public static long getServerClock(ConnectionWrapper conn)
{
- long time = -1;
- SearchControls ctls = new SearchControls();
- ctls.setSearchScope(SearchControls.OBJECT_SCOPE);
- ctls.setReturningAttributes(new String[] { "currentTime" });
- String filter = "(objectclass=*)";
-
+ SearchRequest request = newSearchRequest("cn=monitor", BASE_OBJECT, "(objectclass=*)", "currentTime");
try
{
- LdapName jndiName = new LdapName("cn=monitor");
- NamingEnumeration<?> listeners = conn.getLdapContext().search(jndiName, filter, ctls);
+ SearchResultEntry sr = conn.getConnection().searchSingleEntry(request);
- try
- {
- while (listeners.hasMore())
- {
- SearchResult sr = (SearchResult) listeners.next();
+ String v = firstValueAsString(sr, "currentTime");
- String v = getFirstValue(sr, "currentTime");
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss'Z'");
+ formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
- TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
-
- SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss'Z'");
- formatter.setTimeZone(utcTimeZone);
-
- time = formatter.parse(v).getTime();
- }
- }
- finally
- {
- listeners.close();
- }
+ return formatter.parse(v).getTime();
}
catch (Throwable t)
{
logger.warn(LocalizableMessage.raw("Error retrieving server current time: " + t, t));
+ return -1;
}
- return time;
}
/**
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 bb1c122..d7b3013 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
@@ -23,6 +23,8 @@
import static com.forgerock.opendj.util.OperatingSystem.*;
import static java.util.Collections.*;
+import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.ServerDescriptor.*;
import static org.opends.admin.ads.util.ConnectionUtils.*;
@@ -62,7 +64,6 @@
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicReference;
-import javax.naming.NameAlreadyBoundException;
import javax.naming.NameNotFoundException;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -90,7 +91,13 @@
import org.forgerock.opendj.config.PropertyException;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.EntryNotFoundException;
import org.forgerock.opendj.ldap.LdapException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.requests.AddRequest;
+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.CryptoManagerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationDomainCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationServerCfgClient;
@@ -1399,7 +1406,7 @@
waitUntilResetChangeNumberTaskEnds(connDest, taskDN);
return SUCCESSFUL;
}
- catch (ReplicationCliException | NamingException | NullPointerException e)
+ catch (ReplicationCliException | NamingException | LdapException | NullPointerException e)
{
errPrintln(ERROR_RESET_CHANGE_NUMBER_EXCEPTION.get(e.getLocalizedMessage()));
return ERROR_RESET_CHANGE_NUMBER_PROBLEM;
@@ -1435,15 +1442,15 @@
sleepCatchInterrupt(500);
try
{
- SearchResult sr = getLastSearchResult(conn, taskDN, "ds-task-log-message", "ds-task-state");
- String logMsg = getFirstValue(sr, "ds-task-log-message");
+ SearchResultEntry sr = getLastSearchResult(conn, taskDN, "ds-task-log-message", "ds-task-state");
+ 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)
{
@@ -1466,11 +1473,11 @@
return;
}
}
- catch (NameNotFoundException x)
+ catch (EntryNotFoundException x)
{
return;
}
- catch (NamingException e)
+ catch (IOException e)
{
throw new ReplicationCliException(getThrowableMsg(ERR_READING_SERVER_TASK_PROGRESS.get(), e),
ERROR_CONNECTING, e);
@@ -7120,7 +7127,7 @@
"dsreplication-reset-generation-id",
attrMap);
}
- catch (NamingException ne)
+ catch (LdapException e)
{
LocalizableMessage msg = isPre ?
ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION.get():
@@ -7128,7 +7135,7 @@
ReplicationCliReturnCode code = isPre?
ERROR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION:
ERROR_LAUNCHING_POST_EXTERNAL_INITIALIZATION;
- throw new ReplicationCliException(getThrowableMsg(msg, ne), code, ne);
+ throw new ReplicationCliException(getThrowableMsg(msg, e), code, e);
}
String lastLogMsg = null;
@@ -7137,14 +7144,14 @@
sleepCatchInterrupt(500);
try
{
- SearchResult sr = getLastSearchResult(conn, dn, "ds-task-log-message", "ds-task-state");
- String logMsg = getFirstValue(sr, "ds-task-log-message");
+ SearchResultEntry sr = getLastSearchResult(conn, dn, "ds-task-log-message", "ds-task-state");
+ 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)
@@ -7167,11 +7174,11 @@
}
}
}
- catch (NameNotFoundException x)
+ catch (EntryNotFoundException x)
{
isOver = true;
}
- catch (NamingException ne)
+ catch (IOException ne)
{
throw new ReplicationCliException(getThrowableMsg(ERR_READING_SERVER_TASK_PROGRESS.get(), ne),
ERROR_CONNECTING, ne);
@@ -7228,10 +7235,10 @@
"dsreplication-initialize",
attrsMap);
}
- catch (NamingException ne)
+ catch (LdapException e)
{
throw new ClientException(ReturnCode.APPLICATION_ERROR,
- getThrowableMsg(INFO_ERROR_LAUNCHING_INITIALIZATION.get(hostPort), ne), ne);
+ getThrowableMsg(INFO_ERROR_LAUNCHING_INITIALIZATION.get(hostPort), e), e);
}
LocalizableMessage lastDisplayedMsg = null;
@@ -7244,22 +7251,12 @@
sleepCatchInterrupt(500);
try
{
- SearchResult sr = getLastSearchResult(conn, dn, "ds-task-unprocessed-entry-count",
+ SearchResultEntry sr = getLastSearchResult(conn, dn, "ds-task-unprocessed-entry-count",
"ds-task-processed-entry-count", "ds-task-log-message", "ds-task-state" );
// Get the number of entries that have been handled and a percentage...
- String sProcessed = getFirstValue(sr, "ds-task-processed-entry-count");
- String sUnprocessed = getFirstValue(sr, "ds-task-unprocessed-entry-count");
- long processed = -1;
- long unprocessed = -1;
- if (sProcessed != null)
- {
- processed = Integer.parseInt(sProcessed);
- }
- if (sUnprocessed != null)
- {
- unprocessed = Integer.parseInt(sUnprocessed);
- }
+ long processed = asInteger(sr, "ds-task-processed-entry-count");
+ long unprocessed = asInteger(sr, "ds-task-unprocessed-entry-count");
totalEntries = Math.max(totalEntries, processed+unprocessed);
LocalizableMessage msg = getMsg(lastDisplayedMsg, processed, unprocessed);
@@ -7284,14 +7281,14 @@
}
}
- 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;
}
InstallerHelper helper = new InstallerHelper();
- 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)
@@ -7346,7 +7343,7 @@
}
}
}
- catch (NameNotFoundException x)
+ catch (EntryNotFoundException x)
{
isOver = true;
logger.info(LocalizableMessage.raw("Initialization entry not found."));
@@ -7356,69 +7353,65 @@
println();
}
}
- catch (NamingException ne)
+ catch (IOException e)
{
throw new ClientException(
ReturnCode.APPLICATION_ERROR,
- getThrowableMsg(INFO_ERROR_POOLING_INITIALIZATION.get(hostPort), ne), ne);
+ getThrowableMsg(INFO_ERROR_POOLING_INITIALIZATION.get(hostPort), e), e);
}
}
}
- private SearchResult getLastSearchResult(ConnectionWrapper conn, String dn, String... returnedAttributes)
- throws NamingException
+ private SearchResultEntry getLastSearchResult(ConnectionWrapper conn, String dn, String... returnedAttributes)
+ throws IOException
{
- SearchControls searchControls = new SearchControls();
- searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
- searchControls.setReturningAttributes(returnedAttributes);
- NamingEnumeration<SearchResult> res = conn.getLdapContext().search(dn, "objectclass=*", searchControls);
- try
+ SearchRequest request = newSearchRequest(dn, BASE_OBJECT, "(objectclass=*)", returnedAttributes);
+ try (ConnectionEntryReader entryReader = conn.getConnection().search(request))
{
- SearchResult sr = null;
- while (res.hasMore())
+ SearchResultEntry sr = null;
+ while (entryReader.hasNext())
{
- sr = res.next();
+ sr = entryReader.readEntry();
}
return sr;
}
- finally
- {
- res.close();
- }
}
private String createServerTask(ConnectionWrapper conn, String taskObjectclass,
- String taskJavaClass, String taskID, Map<String, String> taskAttrs) throws NamingException
+ String taskJavaClass, String taskID, Map<String, String> taskAttrs) throws LdapException
{
int i = 1;
String dn = "";
- BasicAttributes attrs = new BasicAttributes();
- attrs.put("objectclass", taskObjectclass);
- attrs.put("ds-task-class-name", taskJavaClass);
+ AddRequest request = newAddRequest(dn)
+ .addAttribute("objectclass", taskObjectclass)
+ .addAttribute("ds-task-class-name", taskJavaClass);
for (Map.Entry<String, String> attr : taskAttrs.entrySet())
{
- attrs.put(attr.getKey(), attr.getValue());
+ request.addAttribute(attr.getKey(), attr.getValue());
}
while (true)
{
String id = taskID + "-" + i;
dn = "ds-task-id=" + id + ",cn=Scheduled Tasks,cn=Tasks";
+ request.setName(dn);
try
{
- DirContext dirCtx = conn.getLdapContext().createSubcontext(dn, attrs);
- logger.info(LocalizableMessage.raw("created task entry: " + attrs));
- dirCtx.close();
+ conn.getConnection().add(request);
+ logger.info(LocalizableMessage.raw("created task entry: " + request));
return dn;
}
- catch (NameAlreadyBoundException x)
+ catch (LdapException e)
{
- logger.warn(LocalizableMessage.raw("A task with dn: " + dn + " already existed."));
- }
- catch (NamingException ne)
- {
- logger.error(LocalizableMessage.raw("Error creating task " + attrs, ne));
- throw ne;
+ if (e.getResult().getResultCode() == ResultCode.ENTRY_ALREADY_EXISTS)
+ {
+ logger.warn(LocalizableMessage.raw("A task with dn: " + dn + " already existed."));
+ }
+ else
+ {
+ logger.error(LocalizableMessage.raw("Error creating task " + request, e));
+ throw e;
+ }
}
i++;
}
--
Gitblit v1.10.0