From 01877785691d9595c0bdb01588c8dab720f10b85 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Wed, 22 Jun 2016 13:34:29 +0000
Subject: [PATCH] OPENDJ-3134: ConfigException after changing identity mapper in HTTP authorization mechanism

---
 opendj-server-legacy/src/main/java/org/opends/server/core/HttpEndpointConfigManager.java |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/HttpEndpointConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/HttpEndpointConfigManager.java
index 0b228bb..4f224db 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/HttpEndpointConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/HttpEndpointConfigManager.java
@@ -320,7 +320,7 @@
       return endpointAuthzMechanisms;
     }
 
-    private void rebindStartedApplications(DN authorizationFilterDN)
+    private void rebindStartedApplications(DN authorizationFilterDN, ConfigChangeResult ccr)
     {
       final RootCfg rootConfiguration = serverContext.getRootConfig();
       for (String endpointName : rootConfiguration.listHTTPEndpoints())
@@ -341,7 +341,8 @@
         }
         catch (ConfigException e)
         {
-          LOGGER.error(ERR_CONFIG_HTTPENDPOINT_UNABLE_TO_START.get(endpointName, stackTraceToSingleLineString(e)), e);
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_CONFIG_HTTPENDPOINT_UNABLE_TO_START.get(endpointName, stackTraceToSingleLineString(e)));
           continue;
         }
       }
@@ -357,9 +358,15 @@
     @Override
     public ConfigChangeResult applyConfigurationDelete(HTTPAuthorizationMechanismCfg configuration)
     {
+      doConfigurationDelete(configuration);
+      final ConfigChangeResult ccr = new ConfigChangeResult();
+      rebindStartedApplications(configuration.dn(), ccr);
+      return ccr;
+    }
+
+    private void doConfigurationDelete(HTTPAuthorizationMechanismCfg configuration)
+    {
       authzFilters.remove(configuration.dn());
-      rebindStartedApplications(configuration.dn());
-      return new ConfigChangeResult();
     }
 
     @Override
@@ -388,7 +395,7 @@
       try
       {
         authzFilters.put(configuration.dn(), authzFilterFactory.newInstance(configuration));
-        rebindStartedApplications(configuration.dn());
+        rebindStartedApplications(configuration.dn(), ccr);
       }
       catch (InitializationException ie)
       {
@@ -410,11 +417,7 @@
     @Override
     public ConfigChangeResult applyConfigurationChange(HTTPAuthorizationMechanismCfg configuration)
     {
-      final ConfigChangeResult deleteResult = applyConfigurationDelete(configuration);
-      if (deleteResult.getResultCode().isExceptional() || !configuration.isEnabled())
-      {
-        return deleteResult;
-      }
+      doConfigurationDelete(configuration);
       return applyConfigurationAdd(configuration);
     }
   }

--
Gitblit v1.10.0