From 93240e26b8bb610e87ba12194f82cfe41fafcabc Mon Sep 17 00:00:00 2001
From: jcambon <jcambon@localhost>
Date: Wed, 18 Jun 2008 08:48:26 +0000
Subject: [PATCH] New top level object in RootConfiguration.xml : "extension", that allows to create a configuration object for an extension, that does not inherit from an existing configuration object.

---
 opends/src/server/org/opends/server/core/DirectoryServer.java |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index efbf7f0..4d108ef 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -56,6 +56,7 @@
 import org.opends.server.api.ImportTaskListener;
 import org.opends.server.api.InvokableComponent;
 import org.opends.server.api.KeyManagerProvider;
+import org.opends.server.api.Extension;
 import org.opends.server.api.MatchingRule;
 import org.opends.server.api.MonitorProvider;
 import org.opends.server.api.OrderingMatchingRule;
@@ -400,6 +401,9 @@
   // The set of key manager providers registered with the server.
   private ConcurrentHashMap<DN,KeyManagerProvider> keyManagerProviders;
 
+  // The set of extensions registered with the server.
+  private ConcurrentHashMap<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
   // generator implementation.
@@ -577,6 +581,9 @@
   // The key manager provider configuration manager for the Directory Server.
   private KeyManagerProviderConfigManager keyManagerProviderConfigManager;
 
+  // The extension configuration manager for the Directory Server.
+  private ExtensionConfigManager extensionConfigManager;
+
   // The set of connections that are currently established.
   private LinkedHashSet<ClientConnection> establishedConnections;
 
@@ -896,6 +903,8 @@
       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 =
@@ -1326,6 +1335,11 @@
       keyManagerProviderConfigManager.initializeKeyManagerProviders();
 
 
+      // Initialize the extension.
+      extensionConfigManager = new ExtensionConfigManager();
+      extensionConfigManager.initializeExtensions();
+
+
       // Initialize the trust manager provider.
       trustManagerProviderConfigManager =
            new TrustManagerProviderConfigManager();
@@ -7631,6 +7645,64 @@
 
 
   /**
+   * 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.
    *

--
Gitblit v1.10.0