From ac94e6957b59a1a28c6285f3481327b109c59748 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Tue, 10 Nov 2015 16:42:55 +0000
Subject: [PATCH] OPENDJ-2388 Change setup to support OEM editions
---
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java | 16 +++++++
opendj-server-legacy/src/messages/org/opends/messages/tool.properties | 1
opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java | 46 +++++++++++++++++-----
3 files changed, 51 insertions(+), 12 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java
index 47716c0..8dada30 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java
@@ -26,12 +26,14 @@
package org.opends.server.tools;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.forgerock.opendj.config.AbstractManagedObjectDefinition;
+import org.forgerock.opendj.config.DefinedDefaultBehaviorProvider;
import org.forgerock.opendj.config.ManagedObjectDefinition;
import org.forgerock.opendj.server.config.client.BackendCfgClient;
import org.forgerock.opendj.server.config.meta.LocalDBBackendCfgDefn;
@@ -164,27 +166,49 @@
backends = new LinkedList<>();
- // Add the JE backend if it is supported in this release.
- try
- {
- Class.forName("org.opends.server.backends.jeb.BackendImpl");
- backends.add(LocalDBBackendCfgDefn.getInstance());
- }
- catch (ClassNotFoundException ignored)
- {
- // Ignore: JE backend not supported.
- }
+ addLocalDBBackendIfSupported();
for (AbstractManagedObjectDefinition<?, ?> backendType : PluggableBackendCfgDefn.getInstance().getAllChildren())
{
// Filtering out only the non-abstract backends to avoid users attempt to create abstract ones
if (backendType instanceof ManagedObjectDefinition)
{
- backends.add((ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg>) backendType);
+ final DefinedDefaultBehaviorProvider<String> defaultBehaviorProvider =
+ (DefinedDefaultBehaviorProvider<String>) backendType.getPropertyDefinition("java-class")
+ .getDefaultBehaviorProvider();
+ final Iterator<String> defaultBackendClassNameIterator = defaultBehaviorProvider.getDefaultValues().iterator();
+ if (!defaultBackendClassNameIterator.hasNext())
+ {
+ return;
+ }
+ addToBackendListIfClassExists(defaultBackendClassNameIterator.next(),
+ (ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg>) backendType);
}
}
}
+ @RemoveOnceLocalDBBackendIsPluggable
+ private void addLocalDBBackendIfSupported()
+ {
+ addToBackendListIfClassExists(
+ "org.opends.server.backends.jeb.BackendImpl", LocalDBBackendCfgDefn.getInstance());
+ }
+
+ private void addToBackendListIfClassExists(final String backendClassName,
+ final ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendToAdd)
+ {
+ try
+ {
+ Class.forName(backendClassName);
+ backends.add(backendToAdd);
+ }
+ catch (ClassNotFoundException ignored)
+ {
+ // The backend is not supported in the running version.
+ }
+ }
+
+
ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> retrieveBackendTypeFromName(
final String backendTypeStr)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
index 977a305..daa1a35 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
@@ -1288,7 +1288,21 @@
argParser.backendTypeArg.getValue(), backendTypeHelper.getPrintableBackendTypeNames()));
}
+ return promptForBackendType();
+ }
+
+ private ManagedObjectDefinition<? extends BackendCfgClient,? extends BackendCfg> promptForBackendType()
+ {
+ println();
int backendTypeIndex = 1;
+ final List<ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg>> backendTypes =
+ backendTypeHelper.getBackendTypes();
+ if (backendTypes.size() == 1) {
+ final ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType = backendTypes.get(0);
+ println(INFO_INSTALLDS_BACKEND_TYPE_USED.get(backendType.getUserFriendlyName()));
+ return backendType;
+ }
+
try
{
final MenuResult<Integer> m = getBackendTypeMenu().run();
@@ -1302,7 +1316,7 @@
logger.warn(LocalizableMessage.raw("Error reading input: " + ce, ce));
}
- return backendTypeHelper.getBackendTypes().get(backendTypeIndex - 1);
+ return backendTypes.get(backendTypeIndex - 1);
}
private Menu<Integer> getBackendTypeMenu()
diff --git a/opendj-server-legacy/src/messages/org/opends/messages/tool.properties b/opendj-server-legacy/src/messages/org/opends/messages/tool.properties
index 015792d..8963d64 100644
--- a/opendj-server-legacy/src/messages/org/opends/messages/tool.properties
+++ b/opendj-server-legacy/src/messages/org/opends/messages/tool.properties
@@ -2743,3 +2743,4 @@
ERR_FILE_NOT_FULLY_READABLE_20015=Could not completely read file '%s'
SUPPLEMENT_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEX_STATUS_20016=\
<xinclude:include href="variablelist-backendstat-index-status.xml" />
+INFO_INSTALLDS_BACKEND_TYPE_USED_20017=Backend Type: %s
--
Gitblit v1.10.0