From c780f75a684e337357b723443ad2503ddff4af1e Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Mon, 23 Jul 2007 08:04:48 +0000
Subject: [PATCH] This commit corresponds to the following issues: https://opends.dev.java.net/issues/show_bug.cgi?id=1340 https://opends.dev.java.net/issues/show_bug.cgi?id=1341
---
opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliAds.java | 147 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 127 insertions(+), 20 deletions(-)
diff --git a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliAds.java b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliAds.java
index 28f3f28..13bf51f 100644
--- a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliAds.java
+++ b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliAds.java
@@ -31,7 +31,12 @@
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+
+import javax.naming.NamingException;
+import javax.naming.ldap.InitialLdapContext;
import org.opends.admin.ads.ADSContext;
import org.opends.admin.ads.ADSContextException;
@@ -41,7 +46,6 @@
import org.opends.server.util.args.BooleanArgument;
import org.opends.server.util.args.StringArgument;
import org.opends.server.util.args.SubCommand;
-import org.opends.server.util.args.SubCommandArgumentParser;
/**
* This class is handling server group CLI.
@@ -49,6 +53,11 @@
public class DsFrameworkCliAds implements DsFrameworkCliSubCommandGroup
{
/**
+ * The subcommand Parser.
+ */
+ DsFrameworkCliParser argParser ;
+
+ /**
* The enumeration containing the different subCommand names.
*/
private enum SubCommandNameEnum
@@ -118,16 +127,62 @@
private StringArgument deleteAdsBackendNameArg;
/**
+ * The subcommand list.
+ */
+ private HashSet<SubCommand> subCommands = new HashSet<SubCommand>();
+
+ /**
+ * Indicates whether this subCommand should be hidden in the usage
+ * information.
+ */
+ private boolean isHidden;
+
+ /**
+ * The subcommand group name.
+ */
+ private String groupName;
+
+ /**
* {@inheritDoc}
*/
- public void initializeCliGroup(SubCommandArgumentParser argParser,
+ public Set<SubCommand> getSubCommands()
+ {
+ return subCommands;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isHidden()
+ {
+ return isHidden ;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getGroupName()
+ {
+ return groupName ;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void initializeCliGroup(DsFrameworkCliParser argParser,
BooleanArgument verboseArg)
throws ArgumentException
{
+
+ isHidden = true;
+ groupName = "ads";
+ this.argParser = argParser;
+
// Create-ads subcommand
createAdsSubCmd = new SubCommand(argParser, SubCommandNameEnum.CREATE_ADS
.toString(), MSGID_ADMIN_SUBCMD_CREATE_ADS_DESCRIPTION);
createAdsSubCmd.setHidden(true);
+ subCommands.add(createAdsSubCmd);
createAdsBackendNameArg = new StringArgument("backendName",
OPTION_SHORT_BACKENDNAME, OPTION_LONG_BACKENDNAME, true, true,
@@ -139,6 +194,7 @@
deleteAdsSubCmd = new SubCommand(argParser,SubCommandNameEnum.DELETE_ADS
.toString(), MSGID_ADMIN_SUBCMD_DELETE_ADS_DESCRIPTION);
deleteAdsSubCmd.setHidden(true);
+ subCommands.add(deleteAdsSubCmd);
deleteAdsBackendNameArg = new StringArgument("backendName",
OPTION_SHORT_BACKENDNAME, OPTION_LONG_BACKENDNAME, true, true,
@@ -159,29 +215,80 @@
/**
* {@inheritDoc}
*/
- public ReturnCode performSubCommand(ADSContext adsContext, SubCommand subCmd,
- OutputStream outStream, OutputStream errStream)
- throws ADSContextException
+ public ReturnCode performSubCommand(SubCommand subCmd, OutputStream outStream,
+ OutputStream errStream)
+ throws ADSContextException, ArgumentException
{
- //
- // create-ads subcommand
- if (subCmd.getName().equals(createAdsSubCmd.getName()))
+ ADSContext adsCtx = null ;
+ InitialLdapContext ctx = null ;
+
+ ReturnCode returnCode = ReturnCode.ERROR_UNEXPECTED;
+
+ try
{
- String backendName = createAdsBackendNameArg.getValue();
- adsContext.createAdminData(backendName);
- return ReturnCode.SUCCESSFUL;
+ //
+ // create-ads subcommand
+ if (subCmd.getName().equals(createAdsSubCmd.getName()))
+ {
+ String backendName = createAdsBackendNameArg.getValue();
+ ctx = argParser.getContext(outStream, errStream);
+ if (ctx == null)
+ {
+ return ReturnCode.CANNOT_CONNECT_TO_ADS;
+ }
+ adsCtx = new ADSContext(ctx);
+ adsCtx.createAdminData(backendName);
+ returnCode = ReturnCode.SUCCESSFUL;
+ }
+ else if (subCmd.getName().equals(deleteAdsSubCmd.getName()))
+ {
+ String backendName = deleteAdsBackendNameArg.getValue();
+ ADSContextHelper helper = new ADSContextHelper();
+ ctx = argParser.getContext(outStream, errStream);
+ if (ctx == null)
+ {
+ return ReturnCode.CANNOT_CONNECT_TO_ADS;
+ }
+ adsCtx = new ADSContext(ctx);
+ helper
+ .removeAdministrationSuffix(adsCtx.getDirContext(), backendName);
+ returnCode = ReturnCode.SUCCESSFUL;
+ }
+ else
+ {
+ // Should never occurs: If we are here, it means that the code to
+ // handle to subcommand is not yet written.
+ returnCode = ReturnCode.ERROR_UNEXPECTED;
+ }
}
- else if (subCmd.getName().equals(deleteAdsSubCmd.getName()))
+ catch (ADSContextException e)
{
- String backendName = deleteAdsBackendNameArg.getValue();
- ADSContextHelper helper = new ADSContextHelper();
- helper.removeAdministrationSuffix(adsContext.getDirContext(),
- backendName);
- return ReturnCode.SUCCESSFUL;
+ if (ctx != null)
+ {
+ try
+ {
+ ctx.close();
+ }
+ catch (NamingException x)
+ {
+ }
+ }
+ throw e;
}
- // Should never occur: If we are here, it means that the code to
- // handle to subcommand is not yet written.
- return ReturnCode.ERROR_UNEXPECTED;
+ // Close the connection, if needed
+ if (ctx != null)
+ {
+ try
+ {
+ ctx.close();
+ }
+ catch (NamingException x)
+ {
+ }
+ }
+
+ // return part
+ return returnCode;
}
}
--
Gitblit v1.10.0