From 4c90fc4ac70e861d89506c81b64cb7427fd75332 Mon Sep 17 00:00:00 2001
From: jcambon <jcambon@localhost>
Date: Thu, 22 Nov 2007 14:12:42 +0000
Subject: [PATCH]
---
opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java | 9 ++++
opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPConnection.java | 7 +++
opendj-sdk/opends/src/server/org/opends/server/admin/client/spi/Driver.java | 7 +++
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/client/ldap/MockLDAPConnection.java | 5 ++
opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagementContext.java | 11 +++++
opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/JNDIDirContextAdaptor.java | 12 ++++++
opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java | 36 +++++++++++------
7 files changed, 74 insertions(+), 13 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagementContext.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagementContext.java
index ca4771c..1849260 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagementContext.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagementContext.java
@@ -422,4 +422,15 @@
* context.
*/
protected abstract Driver getDriver();
+
+
+
+ /**
+ * Close the associated management context.
+ *
+ */
+ public void close() {
+ this.getDriver().close();
+ }
+
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/JNDIDirContextAdaptor.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/JNDIDirContextAdaptor.java
index 23ff928..00ca737 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/JNDIDirContextAdaptor.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/JNDIDirContextAdaptor.java
@@ -240,4 +240,16 @@
return dirContext.getAttributes(dn, attrIdList);
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void unbind() {
+ try {
+ dirContext.close();
+ } catch (NamingException e) {
+ // nothing to do
+ }
+ }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPConnection.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPConnection.java
index 0fc5487..5e1f207 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPConnection.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPConnection.java
@@ -139,4 +139,11 @@
*/
public abstract Attributes readEntry(LdapName dn, Collection<String> attrIds)
throws NamingException;
+
+
+ /**
+ * Close the associated management context.
+ *
+ */
+ public abstract void unbind();
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java
index 8b90e8e..7f790ec 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java
@@ -408,6 +408,15 @@
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void close() {
+ connection.unbind();
+ }
+
+
/**
* {@inheritDoc}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/spi/Driver.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/spi/Driver.java
index 64ff4e9..c4ae4ea 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/spi/Driver.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/spi/Driver.java
@@ -656,6 +656,13 @@
CommunicationException;
+ /**
+ * Close the associated management context.
+ *
+ */
+ public void close() {
+ // do nothing by default
+ }
/**
* Deletes the named managed object.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java b/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java
index 60caf23..b069817 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java
@@ -719,26 +719,36 @@
return 1;
}
+ int retCode = 0;
if (parser.getSubCommand() == null) {
hasSubCommand = false;
if (isInteractive()) {
- // Top-level interactive mode.
- return runInteractiveMode();
+ // Top-level interactive mode.
+ retCode = runInteractiveMode();
+ } else {
+ Message message = ERR_ERROR_PARSING_ARGS
+ .get(ERR_DSCFG_ERROR_MISSING_SUBCOMMAND.get());
+ displayMessageAndUsageReference(message);
+ retCode = 1;
+ }
} else {
- Message message = ERR_ERROR_PARSING_ARGS
- .get(ERR_DSCFG_ERROR_MISSING_SUBCOMMAND.get());
- displayMessageAndUsageReference(message);
- return 1;
- }
- } else {
- hasSubCommand = true;
+ hasSubCommand = true;
- // Retrieve the sub-command implementation and run it.
- SubCommandHandler handler = handlers.get(parser.getSubCommand());
- return runSubCommand(handler);
+ // Retrieve the sub-command implementation and run it.
+ SubCommandHandler handler = handlers.get(parser.getSubCommand());
+ retCode = runSubCommand(handler);
+ }
+
+ try {
+ // Close the Management context ==> an LDAP UNBIND is sent
+ factory.getManagementContext(this).close();
+ } catch (Exception e) {
+ // Nothing to report in this case
+ }
+
+ return retCode;
}
- }
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/client/ldap/MockLDAPConnection.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/client/ldap/MockLDAPConnection.java
index 1b2589d..e48a481 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/client/ldap/MockLDAPConnection.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/client/ldap/MockLDAPConnection.java
@@ -355,4 +355,9 @@
return entries.get(name);
}
+ @Override
+ public void unbind() {
+ // nothing to do
+ }
+
}
--
Gitblit v1.10.0