mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Yannick Lecaillez
22.19.2016 01877785691d9595c0bdb01588c8dab720f10b85
OPENDJ-3134: ConfigException after changing identity mapper in HTTP
authorization mechanism

Rebind application only once at the end of the configuration change
process.
1 files modified
23 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/core/HttpEndpointConfigManager.java 23 ●●●●● patch | view | raw | blame | history
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);
    }
  }