From e72bf7841aacbc57df9958d1ad4778a04d7dab2d Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Fri, 14 Sep 2007 13:57:27 +0000
Subject: [PATCH] Fix problem were a plugin's plugin types were not being re-registered after changing them with dsconfig.

---
 opends/src/server/org/opends/server/core/PluginConfigManager.java |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/PluginConfigManager.java b/opends/src/server/org/opends/server/core/PluginConfigManager.java
index e65bf24..0f0ee74 100644
--- a/opends/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opends/src/server/org/opends/server/core/PluginConfigManager.java
@@ -5411,7 +5411,7 @@
 
 
     // Get the existing plugin if it's already enabled.
-    DirectoryServerPlugin existingPlugin =
+    DirectoryServerPlugin<? extends PluginCfg> existingPlugin =
          registeredPlugins.get(configuration.dn());
 
 
@@ -5441,9 +5441,19 @@
       {
         adminActionRequired = true;
       }
-
+      //The plugin-types might have been changed. Replace the plugin's
+      //plugin-types with the configuration's plugin-types and re-register the
+      //plugin with new types.
+      Set<PluginType> currPluginTypes = existingPlugin.getPluginTypes();
+      currPluginTypes.clear();
+      for (PluginCfgDefn.PluginType pluginType :
+           configuration.getPluginType())
+      {
+        currPluginTypes.add(getPluginType(pluginType));
+      }
       existingPlugin.setInvokeForInternalOperations(
                           configuration.isInvokeForInternalOperations());
+      registerPlugin(existingPlugin, configuration.dn(), currPluginTypes);
 
       return new ConfigChangeResult(resultCode, adminActionRequired, messages);
     }
@@ -5463,11 +5473,7 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
+      resultCode = DirectoryServer.getServerErrorResultCode();
       messages.add(ie.getMessageObject());
     }
 

--
Gitblit v1.10.0