From a5c1e473c76b9de51864deeff4d5e92ce0c6fdd0 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 26 Nov 2014 16:55:41 +0000
Subject: [PATCH] OPENDJ-1545 Remove Workflow, NetworkGroups and related attempts at building a proxy
---
/dev/null | 427 -----------------------------------------------
opendj-sdk/opendj3-server-dev/resource/config/config.ldif | 6
opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/RootConfiguration.xml | 6
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java | 70 -------
opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml | 6
opendj-sdk/opendj3-server-dev/src/admin/messages/RootCfgDefn.properties | 4
6 files changed, 0 insertions(+), 519 deletions(-)
diff --git a/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/ExtensionConfiguration.xml b/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/ExtensionConfiguration.xml
deleted file mode 100644
index 902526a..0000000
--- a/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/ExtensionConfiguration.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ! CDDL HEADER START
- !
- ! The contents of this file are subject to the terms of the
- ! Common Development and Distribution License, Version 1.0 only
- ! (the "License"). You may not use this file except in compliance
- ! with the License.
- !
- ! You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- ! or http://forgerock.org/license/CDDLv1.0.html.
- ! See the License for the specific language governing permissions
- ! and limitations under the License.
- !
- ! When distributing Covered Code, include this CDDL HEADER in each
- ! file and include the License file at legal-notices/CDDLv1_0.txt.
- ! If applicable, add the following below this CDDL HEADER, with the
- ! fields enclosed by brackets "[]" replaced with your own identifying
- ! information:
- ! Portions Copyright [yyyy] [name of copyright owner]
- !
- ! CDDL HEADER END
- !
- !
- ! Copyright 2007-2008 Sun Microsystems, Inc.
- ! -->
-<adm:managed-object name="extension"
- plural-name="extensions"
- package="org.forgerock.opendj.server.config"
- xmlns:adm="http://opendj.forgerock.org/admin"
- xmlns:ldap="http://opendj.forgerock.org/admin-ldap"
- xmlns:cli="http://opendj.forgerock.org/admin-cli">
- <adm:synopsis>
- The
- <adm:user-friendly-name />
- allows to extend the configuration with new type of objects.
- </adm:synopsis>
- <adm:description>
- It is an entry point for extensions that requires configuration objects
- that does not inherit from an existing top-level object.
- </adm:description>
- <adm:tag name="core-server" />
- <adm:profile name="ldap">
- <ldap:object-class>
- <ldap:name>ds-cfg-extension</ldap:name>
- <ldap:superior>top</ldap:superior>
- </ldap:object-class>
- </adm:profile>
- <adm:profile name="cli">
- <cli:managed-object custom="true" />
- </adm:profile>
- <adm:property name="enabled" mandatory="true">
- <adm:synopsis>
- Indicates whether the
- <adm:user-friendly-name />
- is enabled.
- </adm:synopsis>
- <adm:syntax>
- <adm:boolean />
- </adm:syntax>
- <adm:profile name="ldap">
- <ldap:attribute>
- <ldap:name>ds-cfg-enabled</ldap:name>
- </ldap:attribute>
- </adm:profile>
- </adm:property>
- <adm:property name="java-class" mandatory="true">
- <adm:synopsis>
- Specifies the fully-qualified name of the Java class that provides the
- <adm:user-friendly-name />
- implementation.
- </adm:synopsis>
- <adm:requires-admin-action>
- <adm:component-restart />
- </adm:requires-admin-action>
- <adm:syntax>
- <adm:java-class>
- <adm:instance-of>
- org.opends.server.api.Extension
- </adm:instance-of>
- </adm:java-class>
- </adm:syntax>
- <adm:profile name="ldap">
- <ldap:attribute>
- <ldap:name>ds-cfg-java-class</ldap:name>
- </ldap:attribute>
- </adm:profile>
- </adm:property>
-</adm:managed-object>
diff --git a/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/RootConfiguration.xml b/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/RootConfiguration.xml
index cfb48e9..74aec6d 100644
--- a/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/RootConfiguration.xml
+++ b/opendj-sdk/opendj-config-maven-plugin/src/main/resources/config/xml/org/forgerock/opendj/server/config/RootConfiguration.xml
@@ -433,12 +433,6 @@
<ldap:rdn-sequence>cn=Administration Connector,cn=config</ldap:rdn-sequence>
</adm:profile>
</adm:relation>
- <adm:relation name="extension" hidden="true">
- <adm:one-to-many />
- <adm:profile name="ldap">
- <ldap:rdn-sequence>cn=Extensions,cn=config</ldap:rdn-sequence>
- </adm:profile>
- </adm:relation>
<adm:product-name>OpenDJ</adm:product-name>
<adm:tag-definition name="logging">
<adm:synopsis>Logging</adm:synopsis>
diff --git a/opendj-sdk/opendj3-server-dev/resource/config/config.ldif b/opendj-sdk/opendj3-server-dev/resource/config/config.ldif
index 6ee45c7..dcabd11 100644
--- a/opendj-sdk/opendj3-server-dev/resource/config/config.ldif
+++ b/opendj-sdk/opendj3-server-dev/resource/config/config.ldif
@@ -2609,9 +2609,3 @@
ds-cfg-enabled: true
ds-cfg-trust-store-type: JKS
ds-cfg-trust-store-file: config/admin-truststore
-
-dn: cn=Extensions,cn=config
-objectClass: top
-objectClass: ds-cfg-branch
-cn: Extensions
-
diff --git a/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/ExtensionConfiguration.xml b/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/ExtensionConfiguration.xml
deleted file mode 100644
index 45179a5..0000000
--- a/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/ExtensionConfiguration.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ! CDDL HEADER START
- !
- ! The contents of this file are subject to the terms of the
- ! Common Development and Distribution License, Version 1.0 only
- ! (the "License"). You may not use this file except in compliance
- ! with the License.
- !
- ! You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- ! or http://forgerock.org/license/CDDLv1.0.html.
- ! See the License for the specific language governing permissions
- ! and limitations under the License.
- !
- ! When distributing Covered Code, include this CDDL HEADER in each
- ! file and include the License file at legal-notices/CDDLv1_0.txt.
- ! If applicable, add the following below this CDDL HEADER, with the
- ! fields enclosed by brackets "[]" replaced with your own identifying
- ! information:
- ! Portions Copyright [yyyy] [name of copyright owner]
- !
- ! CDDL HEADER END
- !
- !
- ! Copyright 2007-2008 Sun Microsystems, Inc.
- ! -->
-<adm:managed-object name="extension"
- plural-name="extensions"
- package="org.opends.server.admin.std"
- xmlns:adm="http://www.opends.org/admin"
- xmlns:ldap="http://www.opends.org/admin-ldap"
- xmlns:cli="http://www.opends.org/admin-cli">
- <adm:synopsis>
- The
- <adm:user-friendly-name />
- allows to extend the configuration with new type of objects.
- </adm:synopsis>
- <adm:description>
- It is an entry point for extensions that requires configuration objects
- that does not inherit from an existing top-level object.
- </adm:description>
- <adm:tag name="core-server" />
- <adm:profile name="ldap">
- <ldap:object-class>
- <ldap:name>ds-cfg-extension</ldap:name>
- <ldap:superior>top</ldap:superior>
- </ldap:object-class>
- </adm:profile>
- <adm:profile name="cli">
- <cli:managed-object custom="true" />
- </adm:profile>
- <adm:property name="enabled" mandatory="true">
- <adm:synopsis>
- Indicates whether the
- <adm:user-friendly-name />
- is enabled.
- </adm:synopsis>
- <adm:syntax>
- <adm:boolean />
- </adm:syntax>
- <adm:profile name="ldap">
- <ldap:attribute>
- <ldap:name>ds-cfg-enabled</ldap:name>
- </ldap:attribute>
- </adm:profile>
- </adm:property>
- <adm:property name="java-class" mandatory="true">
- <adm:synopsis>
- Specifies the fully-qualified name of the Java class that provides the
- <adm:user-friendly-name />
- implementation.
- </adm:synopsis>
- <adm:requires-admin-action>
- <adm:component-restart />
- </adm:requires-admin-action>
- <adm:syntax>
- <adm:java-class>
- <adm:instance-of>
- org.opends.server.api.Extension
- </adm:instance-of>
- </adm:java-class>
- </adm:syntax>
- <adm:profile name="ldap">
- <ldap:attribute>
- <ldap:name>ds-cfg-java-class</ldap:name>
- </ldap:attribute>
- </adm:profile>
- </adm:property>
-</adm:managed-object>
diff --git a/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml b/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
index 40c6ab3..a8d46ce 100644
--- a/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
+++ b/opendj-sdk/opendj3-server-dev/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
@@ -433,12 +433,6 @@
<ldap:rdn-sequence>cn=Administration Connector,cn=config</ldap:rdn-sequence>
</adm:profile>
</adm:relation>
- <adm:relation name="extension" hidden="true">
- <adm:one-to-many />
- <adm:profile name="ldap">
- <ldap:rdn-sequence>cn=Extensions,cn=config</ldap:rdn-sequence>
- </adm:profile>
- </adm:relation>
<adm:product-name>OpenDJ</adm:product-name>
<adm:tag-definition name="logging">
<adm:synopsis>Logging</adm:synopsis>
diff --git a/opendj-sdk/opendj3-server-dev/src/admin/messages/RootCfgDefn.properties b/opendj-sdk/opendj3-server-dev/src/admin/messages/RootCfgDefn.properties
index e6060fa..15928d3 100644
--- a/opendj-sdk/opendj3-server-dev/src/admin/messages/RootCfgDefn.properties
+++ b/opendj-sdk/opendj3-server-dev/src/admin/messages/RootCfgDefn.properties
@@ -40,10 +40,6 @@
relation.extended-operation-handler.user-friendly-name=Extended Operation Handler
relation.extended-operation-handler.user-friendly-plural-name=Extended Operation Handlers
relation.extended-operation-handler.synopsis=Extended Operation Handlers processes the different types of extended operations in the server.
-relation.extension.user-friendly-name=Extension
-relation.extension.user-friendly-plural-name=Extensions
-relation.extension.synopsis=The Extension allows to extend the configuration with new type of objects.
-relation.extension.description=It is an entry point for extensions that requires configuration objects that does not inherit from an existing top-level object.
relation.global-configuration.user-friendly-name=Global Configuration
relation.global-configuration.synopsis=The Global contains properties that affect the overall operation of the OpenDJ.
relation.group-implementation.user-friendly-name=Group Implementation
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Extension.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Extension.java
deleted file mode 100644
index 08e42b3..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Extension.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014 ForgeRock AS
- */
-package org.opends.server.api;
-
-import org.forgerock.i18n.LocalizableMessage;
-
-import java.util.List;
-import org.opends.server.admin.std.server.ExtensionCfg;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.InitializationException;
-
-
-
-/**
- * This class defines the set of methods and structures that must be
- * implemented by a Directory Server extension.
- *
- * @param <T>
- * The type of extension configuration handled by
- * this extension implementation.
- */
-@org.opends.server.types.PublicAPI(
- stability=org.opends.server.types.StabilityLevel.VOLATILE,
- mayInstantiate=false,
- mayExtend=true,
- mayInvoke=true)
-public abstract class Extension
- <T extends ExtensionCfg>
-{
- /**
- * Initializes this extension based on the
- * information in the provided extension configuration.
- *
- * @param configuration
- * The extension configuration that contains the
- * information to use to initialize this connection
- * handler.
- * @throws ConfigException
- * If an unrecoverable problem arises in the process of
- * performing the initialization as a result of the server
- * configuration.
- * @throws InitializationException
- * If a problem occurs during initialization that is not
- * related to the server configuration.
- */
- public abstract void initializeExtension(T configuration)
- throws ConfigException, InitializationException;
-
-
-
- /**
- * Indicates whether the provided configuration is acceptable for
- * this extension. It should be possible to call this
- * method on an uninitialized extension instance in order
- * to determine whether the extension would be able to use
- * the provided configuration.
- * <BR><BR>
- * Note that implementations which use a subclass of the provided
- * configuration class will likely need to cast the configuration
- * to the appropriate subclass type.
- *
- * @param configuration The extension configuration
- * for which to make the determination.
- * @param unacceptableReasons A list that may be used to hold the
- * reasons that the provided
- * configuration is not acceptable.
- *
- * @return {@code true} if the provided configuration is acceptable
- * for this extension, or {@code false} if not.
- */
- public boolean isConfigurationAcceptable(
- ExtensionCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- // This default implementation does not perform any special
- // validation. It should be overridden by extension
- // implementations that wish to perform more detailed validation.
- return true;
- }
-
-
-
- /**
- * Performs any finalization that may be necessary for
- * this extension.
- *
- */
- public abstract void finalizeExtension();
-
- }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
index 24fda7a..67d5d9a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -100,7 +100,6 @@
import org.opends.server.api.EntryCache;
import org.opends.server.api.ExportTaskListener;
import org.opends.server.api.ExtendedOperationHandler;
-import org.opends.server.api.Extension;
import org.opends.server.api.IdentityMapper;
import org.opends.server.api.ImportTaskListener;
import org.opends.server.api.InitializationCompletedListener;
@@ -441,9 +440,6 @@
/** The set of key manager providers registered with the server. */
private ConcurrentMap<DN, KeyManagerProvider> keyManagerProviders;
- /** The set of extensions registered with the server. */
- private ConcurrentMap<DN, Extension> extensions;
-
/**
* The set of password generators registered with the Directory Server, as a
* mapping between the DN of the associated configuration entry and the
@@ -665,9 +661,6 @@
*/
private KeyManagerProviderConfigManager keyManagerProviderConfigManager;
- /** The extension configuration manager for the Directory Server. */
- private ExtensionConfigManager extensionConfigManager;
-
/** The set of connections that are currently established. */
private Set<ClientConnection> establishedConnections;
@@ -1078,8 +1071,6 @@
directoryServer.alternateRootBindDNs = new ConcurrentHashMap<DN,DN>();
directoryServer.keyManagerProviders =
new ConcurrentHashMap<DN,KeyManagerProvider>();
- directoryServer.extensions =
- new ConcurrentHashMap<DN,Extension>();
directoryServer.trustManagerProviders =
new ConcurrentHashMap<DN,TrustManagerProvider>();
directoryServer.rotationPolicies =
@@ -1582,9 +1573,6 @@
pluginConfigManager.initializeUserPlugins(null);
- extensionConfigManager = new ExtensionConfigManager(serverContext);
- extensionConfigManager.initializeExtensions();
-
if (!environmentConfig.disableSynchronization())
{
synchronizationProviderConfigManager = new SynchronizationProviderConfigManager(serverContext);
@@ -6312,64 +6300,6 @@
/**
- * Retrieves the set of extensions registered with the Directory
- * Server.
- *
- * @return The set of extensions registered with the Directory
- * Server.
- */
- public static Map<DN,Extension> getExtensions()
- {
- return directoryServer.extensions;
- }
-
-
-
- /**
- * Retrieves the extension registered with the provided entry DN.
- *
- * @param providerDN The DN with which the extension is
- * registered.
- *
- * @return The extension registered with the provided entry DN, or
- * {@code null} if there is no such extension registered
- * with the server.
- */
- public static Extension getExtension(DN providerDN)
- {
- return directoryServer.extensions.get(providerDN);
- }
-
-
-
- /**
- * Registers the provided extension with the Directory Server.
- *
- * @param providerDN The DN with which to register the extension.
- * @param provider The extension to register with the server.
- */
- public static void registerExtension(DN providerDN,
- Extension provider)
- {
- directoryServer.extensions.put(providerDN, provider);
- }
-
-
-
- /**
- * Deregisters the specified extension with the Directory Server.
- *
- * @param providerDN The DN with which the extension is
- * registered.
- */
- public static void deregisterExtension(DN providerDN)
- {
- directoryServer.extensions.remove(providerDN);
- }
-
-
-
- /**
* Retrieves a set containing the names of the allowed tasks that may be
* invoked in the server.
*
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtensionConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtensionConfigManager.java
deleted file mode 100644
index ab4bda3..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtensionConfigManager.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014 ForgeRock AS
- */
-package org.opends.server.core;
-
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.opends.server.admin.ClassPropertyDefinition;
-import org.opends.server.admin.server.ConfigurationAddListener;
-import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.server.ConfigurationDeleteListener;
-import org.opends.server.admin.std.meta.ExtensionCfgDefn;
-import org.opends.server.admin.std.server.ExtensionCfg;
-import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.server.ServerManagementContext;
-import org.opends.server.api.Extension;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.ConfigChangeResult;
-import org.opends.server.types.DN;
-import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
-/**
- * This class defines a utility that will be used to manage the set of
- * extensions defined in the Directory Server. It will initialize the
- * extensions when the server starts, and then will manage any
- * additions, removals, or modifications to any extensions while
- * the server is running.
- */
-public class ExtensionConfigManager
- implements ConfigurationChangeListener<ExtensionCfg>,
- ConfigurationAddListener<ExtensionCfg>,
- ConfigurationDeleteListener<ExtensionCfg>
-{
-
- private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
- /**
- * A mapping between the DNs of the config entries and the associated
- * extensions.
- */
- private final ConcurrentHashMap<DN,Extension> extensions;
-
- private final ServerContext serverContext;
-
- /**
- * Creates a new instance of this extension config manager.
- *
- * @param serverContext
- * The server context.
- */
- public ExtensionConfigManager(ServerContext serverContext)
- {
- this.serverContext = serverContext;
- extensions = new ConcurrentHashMap<DN,Extension>();
- }
-
- /**
- * Initializes all extensions currently defined in the Directory
- * Server configuration. This should only be called at Directory Server
- * startup.
- *
- * @throws ConfigException If a configuration problem causes the
- * extension initialization process to fail.
- *
- * @throws InitializationException If a problem occurs while initializing
- * the extensions that is not
- * related to the server configuration.
- */
- public void initializeExtensions()
- throws ConfigException, InitializationException
- {
- // Get the root configuration object.
- ServerManagementContext managementContext =
- ServerManagementContext.getInstance();
- RootCfg rootConfiguration =
- managementContext.getRootConfiguration();
-
-
- // Register as an add and delete listener with the root configuration so we
- // can be notified if any extension entries are added or removed.
- rootConfiguration.addExtensionAddListener(this);
- rootConfiguration.addExtensionDeleteListener(this);
-
-
- //Initialize the existing extensions.
- for (String name : rootConfiguration.listExtensions())
- {
- ExtensionCfg extensionConfig =
- rootConfiguration.getExtension(name);
- extensionConfig.addChangeListener(this);
-
- if (extensionConfig.isEnabled())
- {
- String className = extensionConfig.getJavaClass();
- try
- {
- Extension extension =
- loadExtension(className, extensionConfig, true);
- extensions.put(extensionConfig.dn(), extension);
- DirectoryServer.registerExtension(extensionConfig.dn(),
- extension);
- }
- catch (InitializationException ie)
- {
- logger.error(ie.getMessageObject());
- continue;
- }
- }
- }
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isConfigurationAddAcceptable(
- ExtensionCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- if (configuration.isEnabled())
- {
- // Get the name of the class and make sure we can instantiate it as a
- // extension.
- String className = configuration.getJavaClass();
- try
- {
- loadExtension(className, configuration, false);
- }
- catch (InitializationException ie)
- {
- unacceptableReasons.add(ie.getMessageObject());
- return false;
- }
- }
-
- // If we've gotten here, then it's fine.
- return true;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- public ConfigChangeResult applyConfigurationAdd(
- ExtensionCfg configuration)
- {
- ResultCode resultCode = ResultCode.SUCCESS;
- boolean adminActionRequired = false;
- ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
- configuration.addChangeListener(this);
-
- if (! configuration.isEnabled())
- {
- return new ConfigChangeResult(resultCode, adminActionRequired, messages);
- }
-
- Extension extension = null;
-
- // Get the name of the class and make sure we can instantiate it as an
- // extension.
- String className = configuration.getJavaClass();
- try
- {
- extension = loadExtension(className, configuration, true);
- }
- catch (InitializationException ie)
- {
- if (resultCode == ResultCode.SUCCESS)
- {
- resultCode = DirectoryServer.getServerErrorResultCode();
- }
-
- messages.add(ie.getMessageObject());
- }
-
- if (resultCode == ResultCode.SUCCESS)
- {
- extensions.put(configuration.dn(), extension);
- DirectoryServer.registerExtension(configuration.dn(), extension);
- }
-
- return new ConfigChangeResult(resultCode, adminActionRequired, messages);
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isConfigurationDeleteAcceptable(
- ExtensionCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- return true;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- public ConfigChangeResult applyConfigurationDelete(
- ExtensionCfg configuration)
- {
- ResultCode resultCode = ResultCode.SUCCESS;
- boolean adminActionRequired = false;
- ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
- DirectoryServer.deregisterExtension(configuration.dn());
-
- Extension extension = extensions.remove(configuration.dn());
- if (extension != null)
- {
- extension.finalizeExtension();
- }
-
- return new ConfigChangeResult(resultCode, adminActionRequired, messages);
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isConfigurationChangeAcceptable(
- ExtensionCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- if (configuration.isEnabled())
- {
- // Get the name of the class and make sure we can instantiate it as an
- // extension.
- String className = configuration.getJavaClass();
- try
- {
- loadExtension(className, configuration, false);
- }
- catch (InitializationException ie)
- {
- unacceptableReasons.add(ie.getMessageObject());
- return false;
- }
- }
-
- // If we've gotten here, then it's fine.
- return true;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- public ConfigChangeResult applyConfigurationChange(
- ExtensionCfg configuration)
- {
- ResultCode resultCode = ResultCode.SUCCESS;
- boolean adminActionRequired = false;
- ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
-
- // Get the existing extension if it's already enabled.
- Extension existingExtension = extensions.get(configuration.dn());
-
-
- // If the new configuration has the extension disabled, then disable it if
- // it is enabled, or do nothing if it's already disabled.
- if (! configuration.isEnabled())
- {
- if (existingExtension != null)
- {
- DirectoryServer.deregisterExtension(configuration.dn());
-
- Extension extension = extensions.remove(configuration.dn());
- if (extension != null)
- {
- extension.finalizeExtension();
- }
- }
-
- return new ConfigChangeResult(resultCode, adminActionRequired, messages);
- }
-
-
- // Get the class for the extension. If the extension is already
- // enabled, then we shouldn't do anything with it although if the class has
- // changed then we'll at least need to indicate that administrative action
- // is required. If the extension is disabled, then instantiate the class
- // and initialize and register it as a extension.
- String className = configuration.getJavaClass();
- if (existingExtension != null)
- {
- if (! className.equals(existingExtension.getClass().getName()))
- {
- adminActionRequired = true;
- }
-
- return new ConfigChangeResult(resultCode, adminActionRequired, messages);
- }
-
- Extension extension = null;
- try
- {
- extension = loadExtension(className, configuration, true);
- }
- catch (InitializationException ie)
- {
- if (resultCode == ResultCode.SUCCESS)
- {
- resultCode = DirectoryServer.getServerErrorResultCode();
- }
-
- messages.add(ie.getMessageObject());
- }
-
- if (resultCode == ResultCode.SUCCESS)
- {
- extensions.put(configuration.dn(), extension);
- DirectoryServer.registerExtension(configuration.dn(), extension);
- }
-
- return new ConfigChangeResult(resultCode, adminActionRequired, messages);
- }
-
-
-
- /**
- * Loads the specified class, instantiates it as a extension, and
- * optionally initializes that instance.
- *
- * @param className The fully-qualified name of the extension
- * class to load, instantiate, and initialize.
- * @param configuration The configuration to use to initialize the
- * extension. It must not be {@code null}.
- * @param initialize Indicates whether the extension instance
- * should be initialized.
- *
- * @return The possibly initialized extension.
- *
- * @throws InitializationException If the provided configuration is not
- * acceptable, or if a problem occurred
- * while attempting to initialize the
- * extension using that
- * configuration.
- */
- private Extension loadExtension(String className,
- ExtensionCfg configuration,
- boolean initialize)
- throws InitializationException
- {
- try
- {
- ExtensionCfgDefn definition =
- ExtensionCfgDefn.getInstance();
- ClassPropertyDefinition propertyDefinition =
- definition.getJavaClassPropertyDefinition();
- Class<? extends Extension> extensionClass =
- propertyDefinition.loadClass(className, Extension.class);
- Extension extension = extensionClass.newInstance();
-
-
- if (initialize)
- {
- extension.initializeExtension(configuration);
- }
- else
- {
- List<LocalizableMessage> unacceptableReasons = new ArrayList<LocalizableMessage>();
- if (!extension.isConfigurationAcceptable(configuration, unacceptableReasons))
- {
- String reasons = Utils.joinAsString(". ", unacceptableReasons);
- throw new InitializationException(
- ERR_CONFIG_EXTENSION_CONFIG_NOT_ACCEPTABLE.get(configuration.dn(), reasons));
- }
- }
-
- return extension;
- }
- catch (InitializationException ie)
- {
- throw ie;
- }
- catch (Exception e)
- {
- LocalizableMessage message = ERR_CONFIG_EXTENSION_INITIALIZATION_FAILED.
- get(className, configuration.dn(), stackTraceToSingleLineString(e));
- throw new InitializationException(message, e);
- }
- }
-}
-
--
Gitblit v1.10.0