From c6772b9cf6b2cb14b1b8127dcf4ec22f9ec9513c Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 08 Aug 2016 12:07:05 +0000
Subject: [PATCH] OPENDJ-3203 Control-panel: creating a new base dn does not complete
---
opendj-server-legacy/src/main/java/org/opends/server/tools/BackendCreationHelper.java | 87 ++++++++++++++++++++---------
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java | 76 +++++--------------------
2 files changed, 75 insertions(+), 88 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java
index 3dda6d7..d96a65e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java
@@ -32,7 +32,6 @@
import java.util.Enumeration;
import java.util.HashSet;
import java.util.LinkedHashSet;
-import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
@@ -62,11 +61,9 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.LdapException;
import org.forgerock.opendj.server.config.client.BackendCfgClient;
-import org.forgerock.opendj.server.config.client.BackendIndexCfgClient;
-import org.forgerock.opendj.server.config.client.PluggableBackendCfgClient;
import org.forgerock.opendj.server.config.client.RootCfgClient;
-import org.forgerock.opendj.server.config.meta.BackendIndexCfgDefn;
import org.forgerock.opendj.server.config.meta.BackendIndexCfgDefn.IndexType;
+import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
import org.opends.guitools.controlpanel.datamodel.BaseDNDescriptor;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
@@ -82,7 +79,7 @@
import org.opends.quicksetup.installer.InstallerHelper;
import org.opends.quicksetup.util.Utils;
import org.opends.server.tools.BackendCreationHelper;
-import org.opends.server.tools.BackendCreationHelper.DefaultIndex;
+import org.opends.server.tools.BackendCreationHelper.CreateIndex;
import org.opends.server.tools.BackendTypeHelper;
import org.opends.server.tools.BackendTypeHelper.BackendTypeUIAdapter;
import org.opends.server.tools.ImportLDIF;
@@ -863,12 +860,6 @@
});
performTask();
- printTaskDone();
- if (isNewBackend())
- {
- createAdditionalIndexes();
- }
- refreshProgressBar();
}
private void updateConfigurationOffline() throws Exception
@@ -877,8 +868,6 @@
try
{
performTask();
- printTaskDone();
- refreshProgressBar();
}
finally
{
@@ -907,12 +896,17 @@
{
printCreateNewBackendProgress(backendName);
createBackend(backendName);
+ printTaskDone();
+ displayCreateAdditionalIndexesDsConfigCmdLine();
+ printTaskDone();
}
else
{
printCreateNewBaseDNProgress(backendName);
addNewBaseDN(backendName);
+ printTaskDone();
}
+ refreshProgressBar();
}
private void createBackend(String backendName) throws Exception
@@ -923,7 +917,7 @@
}
else
{
- createBackendOnline(backendName);
+ createBackendOnline(backendName, getInfo().getConnection());
}
}
@@ -940,10 +934,10 @@
}
}
- private void createBackendOnline(String backendName) throws Exception
+ private void createBackendOnline(String backendName, ConnectionWrapper conn) throws Exception
{
Set<DN> baseDNs = Collections.singleton(DN.valueOf(newBaseDN));
- BackendCreationHelper.createBackendOffline(backendName, baseDNs, getSelectedBackendType().getBackend());
+ BackendCreationHelper.createBackendOnline(backendName, baseDNs, getSelectedBackendType().getBackend(), conn);
}
private RootCfgClient getRootConfigurationClient() throws LdapException
@@ -987,33 +981,6 @@
}
}
- private void createAdditionalIndexes() throws Exception
- {
- final String backendName = getBackendName();
- displayCreateAdditionalIndexesDsConfigCmdLine();
- final RootCfgClient root = getRootConfigurationClient();
- addBackendDefaultIndexes((PluggableBackendCfgClient) root.getBackend(backendName));
- displayCreateAdditionalIndexesDone();
- }
-
- private void addBackendDefaultIndexes(PluggableBackendCfgClient backendCfgClient) throws Exception
- {
- for (DefaultIndex defaultIndex : BackendCreationHelper.DEFAULT_INDEXES)
- {
- final BackendIndexCfgClient index = backendCfgClient.createBackendIndex(
- BackendIndexCfgDefn.getInstance(), defaultIndex.getName(), null);
-
- final List<IndexType> indexTypes = new LinkedList<>();
- indexTypes.add(IndexType.EQUALITY);
- if (defaultIndex.shouldCreateSubstringIndex())
- {
- indexTypes.add(IndexType.SUBSTRING);
- }
- index.setIndexType(indexTypes);
- index.commit();
- }
- }
-
private void printCreateNewBaseDNProgress(final String backendName) throws OpenDsException
{
SwingUtilities.invokeLater(new Runnable()
@@ -1060,9 +1027,9 @@
private void displayCreateAdditionalIndexesDsConfigCmdLine()
{
final List<List<String>> argsArray = new ArrayList<>();
- for (DefaultIndex defaultIndex : BackendCreationHelper.DEFAULT_INDEXES)
+ for (CreateIndex index : BackendCreationHelper.DEFAULT_INDEXES)
{
- argsArray.add(getCreateIndexCommandLineArguments(defaultIndex));
+ argsArray.add(getCreateIndexCommandLineArguments(index));
}
final StringBuilder sb = new StringBuilder();
@@ -1086,7 +1053,7 @@
});
}
- private List<String> getCreateIndexCommandLineArguments(final DefaultIndex defaultIndex)
+ private List<String> getCreateIndexCommandLineArguments(final CreateIndex index)
{
final List<String> args = new ArrayList<>();
args.add("create-backend-index");
@@ -1095,10 +1062,10 @@
args.add("--type");
args.add("generic");
args.add("--index-name");
- args.add(defaultIndex.getName());
+ args.add(index.getName());
args.add("--set");
args.add("index-type:" + IndexType.EQUALITY);
- if (defaultIndex.shouldCreateSubstringIndex())
+ if (index.shouldCreateSubstringIndex())
{
args.add("--set");
args.add("index-type:" + IndexType.SUBSTRING);
@@ -1110,19 +1077,6 @@
return args;
}
- private void displayCreateAdditionalIndexesDone()
- {
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- getProgressDialog().appendProgressHtml(
- Utilities.getProgressDone(ColorAndFontConstants.progressFont) + "<br><br>");
- }
- });
- }
-
/**
* Creates the data in the new base DN.
*
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendCreationHelper.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendCreationHelper.java
index accb6d1..2e18413 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendCreationHelper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendCreationHelper.java
@@ -32,6 +32,7 @@
import org.forgerock.opendj.server.config.meta.BackendIndexCfgDefn;
import org.forgerock.opendj.server.config.meta.BackendIndexCfgDefn.IndexType;
import org.forgerock.opendj.server.config.server.BackendCfg;
+import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.quicksetup.Installation;
@@ -39,22 +40,22 @@
public class BackendCreationHelper
{
/** Describes an attribute index which should be created during installation. */
- public static final class DefaultIndex
+ public static final class CreateIndex
{
- private static DefaultIndex withEqualityAndSubstring(final String name)
+ private static CreateIndex withEqualityAndSubstring(final String name)
{
- return new DefaultIndex(name, true);
+ return new CreateIndex(name, true);
}
- private static DefaultIndex withEquality(final String name)
+ private static CreateIndex withEquality(final String name)
{
- return new DefaultIndex(name, false);
+ return new CreateIndex(name, false);
}
private final String name;
private final boolean shouldCreateSubstringIndex;
- private DefaultIndex(final String name, final boolean substringIndex)
+ private CreateIndex(final String name, final boolean substringIndex)
{
this.name = name;
this.shouldCreateSubstringIndex = substringIndex;
@@ -81,18 +82,29 @@
{
return shouldCreateSubstringIndex;
}
+
+ @Override
+ public String toString()
+ {
+ String className = getClass().getSimpleName();
+ if (shouldCreateSubstringIndex)
+ {
+ return className + "(" + name + ".equality" + ", " + name + ".substring" + ")";
+ }
+ return className + "(" + name + ".equality" + ")";
+ }
}
/** Default indexes to add in a new backend. */
- public static final DefaultIndex[] DEFAULT_INDEXES = {
- DefaultIndex.withEqualityAndSubstring("cn"),
- DefaultIndex.withEqualityAndSubstring("givenName"),
- DefaultIndex.withEqualityAndSubstring("mail"),
- DefaultIndex.withEqualityAndSubstring("sn"),
- DefaultIndex.withEqualityAndSubstring("telephoneNumber"),
- DefaultIndex.withEquality("member"),
- DefaultIndex.withEquality("uid"),
- DefaultIndex.withEquality("uniqueMember")
+ public static final CreateIndex[] DEFAULT_INDEXES = {
+ CreateIndex.withEqualityAndSubstring("cn"),
+ CreateIndex.withEqualityAndSubstring("givenName"),
+ CreateIndex.withEqualityAndSubstring("mail"),
+ CreateIndex.withEqualityAndSubstring("sn"),
+ CreateIndex.withEqualityAndSubstring("telephoneNumber"),
+ CreateIndex.withEquality("member"),
+ CreateIndex.withEquality("uid"),
+ CreateIndex.withEquality("uniqueMember")
};
/**
@@ -119,6 +131,27 @@
}
/**
+ * Add a new backend with the provided name in the config.ldif file.
+ *
+ * @param backendName
+ * The new backend name
+ * @param baseDNs
+ * The base dns to add in the new backend.
+ * @param backendType
+ * The backend type
+ * @param conn
+ * The connection to the server
+ * @throws Exception
+ * If any problems occurred
+ */
+ public static void createBackendOnline(String backendName, Collection<DN> baseDNs,
+ ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType, ConnectionWrapper conn)
+ throws Exception
+ {
+ createBackend(conn.getRootConfiguration(), backendName, baseDNs, backendType);
+ }
+
+ /**
* Create a backend with the provided name using the provided
* {@code RootCfgClient}.
*
@@ -136,31 +169,31 @@
private static void createBackend(RootCfgClient rootConfiguration, String backendName, Collection<DN> baseDNs,
ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType) throws Exception
{
- final BackendCfgClient backendCfgClient = rootConfiguration.createBackend(backendType, backendName, null);
- backendCfgClient.setEnabled(true);
- backendCfgClient.setBaseDN(baseDNs);
- backendCfgClient.setWritabilityMode(WritabilityMode.ENABLED);
- backendCfgClient.commit();
+ final BackendCfgClient backendCfgClient = rootConfiguration.createBackend(backendType, backendName, null);
+ backendCfgClient.setEnabled(true);
+ backendCfgClient.setBaseDN(baseDNs);
+ backendCfgClient.setWritabilityMode(WritabilityMode.ENABLED);
+ backendCfgClient.commit();
- addBackendDefaultIndexes((PluggableBackendCfgClient) backendCfgClient);
+ addBackendDefaultIndexes((PluggableBackendCfgClient) backendCfgClient);
}
private static void addBackendDefaultIndexes(PluggableBackendCfgClient backendCfgClient) throws Exception
{
- for (DefaultIndex defaultIndex : DEFAULT_INDEXES)
+ for (CreateIndex index : DEFAULT_INDEXES)
{
- final BackendIndexCfgClient index =
- backendCfgClient.createBackendIndex(BackendIndexCfgDefn.getInstance(), defaultIndex.name, null);
+ final BackendIndexCfgClient indexCfg =
+ backendCfgClient.createBackendIndex(BackendIndexCfgDefn.getInstance(), index.name, null);
final List<IndexType> indexTypes = new LinkedList<>();
indexTypes.add(IndexType.EQUALITY);
- if (defaultIndex.shouldCreateSubstringIndex)
+ if (index.shouldCreateSubstringIndex)
{
indexTypes.add(IndexType.SUBSTRING);
}
- index.setIndexType(indexTypes);
+ indexCfg.setIndexType(indexTypes);
- index.commit();
+ indexCfg.commit();
}
}
}
--
Gitblit v1.10.0