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

kenneth_suter
15.34.2007 80c58327faaa4873369f6bb949e62792c2f708e0
opends/src/server/org/opends/server/core/MatchingRuleConfigManager.java
@@ -25,6 +25,7 @@
 *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 */
package org.opends.server.core;
import org.opends.messages.Message;
@@ -59,17 +60,16 @@
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.ErrorLogger.*;
import static org.opends.server.messages.ConfigMessages.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.util.StaticUtils.*;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.util.StaticUtils.*;
import org.opends.server.loggers.ErrorLogger;
/**
@@ -148,20 +148,15 @@
          }
          catch (DirectoryException de)
          {
            int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
            String message = getMessage(msgID,
                                  String.valueOf(mrConfiguration.dn()),
                                  de.getErrorMessage());
            logError(ErrorLogCategory.CONFIGURATION,
                     ErrorLogSeverity.SEVERE_ERROR, message, msgID);
            Message message = WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(
                String.valueOf(mrConfiguration.dn()), de.getMessageObject());
            ErrorLogger.logError(message);
            continue;
          }
        }
        catch (InitializationException ie)
        {
          logError(ErrorLogCategory.CONFIGURATION,
                   ErrorLogSeverity.SEVERE_ERROR,
                   ie.getMessage(), ie.getMessageID());
          ErrorLogger.logError(ie.getMessageObject());
          continue;
        }
      }
@@ -174,7 +169,7 @@
   * {@inheritDoc}
   */
  public boolean isConfigurationAddAcceptable(MatchingRuleCfg configuration,
                      List<String> unacceptableReasons)
                      List<Message> unacceptableReasons)
  {
    if (configuration.isEnabled())
    {
@@ -187,7 +182,7 @@
      }
      catch (InitializationException ie)
      {
        unacceptableReasons.add(ie.getMessage());
        unacceptableReasons.add(ie.getMessageObject());
        return false;
      }
    }
@@ -205,7 +200,7 @@
  {
    ResultCode        resultCode          = ResultCode.SUCCESS;
    boolean           adminActionRequired = false;
    ArrayList<String> messages            = new ArrayList<String>();
    ArrayList<Message> messages            = new ArrayList<Message>();
    configuration.addChangeListener(this);
@@ -230,9 +225,9 @@
      }
      catch (DirectoryException de)
      {
        int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
        String message = getMessage(msgID, String.valueOf(configuration.dn()),
                                    de.getErrorMessage());
        Message message = WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(
                String.valueOf(configuration.dn()),
                de.getMessageObject());
        messages.add(message);
        if (resultCode == ResultCode.SUCCESS)
@@ -248,7 +243,7 @@
        resultCode = DirectoryServer.getServerErrorResultCode();
      }
      messages.add(ie.getMessage());
      messages.add(ie.getMessageObject());
    }
    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
@@ -260,7 +255,7 @@
   * {@inheritDoc}
   */
  public boolean isConfigurationDeleteAcceptable(MatchingRuleCfg configuration,
                      List<String> unacceptableReasons)
                      List<Message> unacceptableReasons)
  {
    // If the matching rule is enabled, then check to see if there are any
    // defined attribute types or matching rule uses that use the matching rule.
@@ -275,9 +270,10 @@
        ApproximateMatchingRule amr = at.getApproximateMatchingRule();
        if ((amr != null) && oid.equals(amr.getOID()))
        {
          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
          String message = getMessage(msgID, matchingRule.getName(),
                                      at.getNameOrOID());
          Message message =
                  WARN_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT.get(
                          matchingRule.getName(),
                          at.getNameOrOID());
          unacceptableReasons.add(message);
          configAcceptable = false;
@@ -287,9 +283,10 @@
        EqualityMatchingRule emr = at.getEqualityMatchingRule();
        if ((emr != null) && oid.equals(emr.getOID()))
        {
          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
          String message = getMessage(msgID, matchingRule.getName(),
                                      at.getNameOrOID());
          Message message =
                  WARN_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT.get(
                          matchingRule.getName(),
                          at.getNameOrOID());
          unacceptableReasons.add(message);
          configAcceptable = false;
@@ -299,9 +296,10 @@
        OrderingMatchingRule omr = at.getOrderingMatchingRule();
        if ((omr != null) && oid.equals(omr.getOID()))
        {
          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
          String message = getMessage(msgID, matchingRule.getName(),
                                      at.getNameOrOID());
          Message message =
                  WARN_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT.get(
                          matchingRule.getName(),
                          at.getNameOrOID());
          unacceptableReasons.add(message);
          configAcceptable = false;
@@ -311,9 +309,10 @@
        SubstringMatchingRule smr = at.getSubstringMatchingRule();
        if ((smr != null) && oid.equals(smr.getOID()))
        {
          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
          String message = getMessage(msgID, matchingRule.getName(),
                                      at.getNameOrOID());
          Message message =
                  WARN_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT.get(
                          matchingRule.getName(),
                          at.getNameOrOID());
          unacceptableReasons.add(message);
          configAcceptable = false;
@@ -325,9 +324,10 @@
      {
        if (oid.equals(mru.getMatchingRule().getOID()))
        {
          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_MRU;
          String message = getMessage(msgID, matchingRule.getName(),
                                      mru.getName());
          Message message =
                  WARN_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_MRU.get(
                          matchingRule.getName(),
                          mru.getName());
          unacceptableReasons.add(message);
          configAcceptable = false;
@@ -349,7 +349,7 @@
  {
    ResultCode        resultCode          = ResultCode.SUCCESS;
    boolean           adminActionRequired = false;
    ArrayList<String> messages            = new ArrayList<String>();
    ArrayList<Message> messages            = new ArrayList<Message>();
    MatchingRule matchingRule = matchingRules.remove(configuration.dn());
    if (matchingRule != null)
@@ -367,7 +367,7 @@
   * {@inheritDoc}
   */
  public boolean isConfigurationChangeAcceptable(MatchingRuleCfg configuration,
                      List<String> unacceptableReasons)
                      List<Message> unacceptableReasons)
  {
    boolean configAcceptable = true;
    if (configuration.isEnabled())
@@ -381,7 +381,7 @@
      }
      catch (InitializationException ie)
      {
        unacceptableReasons.add(ie.getMessage());
        unacceptableReasons.add(ie.getMessageObject());
        configAcceptable = false;
      }
    }
@@ -398,9 +398,10 @@
          ApproximateMatchingRule amr = at.getApproximateMatchingRule();
          if ((amr != null) && oid.equals(amr.getOID()))
          {
            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
            String message = getMessage(msgID, matchingRule.getName(),
                                        at.getNameOrOID());
            Message message =
                    WARN_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT.get(
                            matchingRule.getName(),
                            at.getNameOrOID());
            unacceptableReasons.add(message);
            configAcceptable = false;
@@ -410,9 +411,10 @@
          EqualityMatchingRule emr = at.getEqualityMatchingRule();
          if ((emr != null) && oid.equals(emr.getOID()))
          {
            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
            String message = getMessage(msgID, matchingRule.getName(),
                                        at.getNameOrOID());
            Message message =
                    WARN_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT.get(
                            matchingRule.getName(),
                            at.getNameOrOID());
            unacceptableReasons.add(message);
            configAcceptable = false;
@@ -422,9 +424,10 @@
          OrderingMatchingRule omr = at.getOrderingMatchingRule();
          if ((omr != null) && oid.equals(omr.getOID()))
          {
            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
            String message = getMessage(msgID, matchingRule.getName(),
                                        at.getNameOrOID());
            Message message =
                    WARN_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT.get(
                            matchingRule.getName(),
                            at.getNameOrOID());
            unacceptableReasons.add(message);
            configAcceptable = false;
@@ -434,9 +437,8 @@
          SubstringMatchingRule smr = at.getSubstringMatchingRule();
          if ((smr != null) && oid.equals(smr.getOID()))
          {
            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
            String message = getMessage(msgID, matchingRule.getName(),
                                        at.getNameOrOID());
            Message message = WARN_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT
                    .get(matchingRule.getName(), at.getNameOrOID());
            unacceptableReasons.add(message);
            configAcceptable = false;
@@ -449,9 +451,9 @@
        {
          if (oid.equals(mru.getMatchingRule().getOID()))
          {
            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_MRU;
            String message = getMessage(msgID, matchingRule.getName(),
                                        mru.getName());
            Message message =
                    WARN_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_MRU.get(
                            matchingRule.getName(), mru.getName());
            unacceptableReasons.add(message);
            configAcceptable = false;
@@ -474,7 +476,7 @@
  {
    ResultCode        resultCode          = ResultCode.SUCCESS;
    boolean           adminActionRequired = false;
    ArrayList<String> messages            = new ArrayList<String>();
    ArrayList<Message> messages            = new ArrayList<Message>();
    // Get the existing matching rule if it's already enabled.
@@ -528,9 +530,8 @@
      }
      catch (DirectoryException de)
      {
        int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
        String message = getMessage(msgID, String.valueOf(configuration.dn()),
                                    de.getErrorMessage());
        Message message = WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(
                String.valueOf(configuration.dn()), de.getMessageObject());
        messages.add(message);
        if (resultCode == ResultCode.SUCCESS)
@@ -546,7 +547,7 @@
        resultCode = DirectoryServer.getServerErrorResultCode();
      }
      messages.add(ie.getMessage());
      messages.add(ie.getMessageObject());
    }
    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
@@ -643,7 +644,7 @@
                                               MatchingRuleCfg.class,
                                               List.class);
        List<String> unacceptableReasons = new ArrayList<String>();
        List<Message> unacceptableReasons = new ArrayList<Message>();
        Boolean acceptable = (Boolean) method.invoke(matchingRule,
                                                     configuration,
                                                     unacceptableReasons);
@@ -652,7 +653,7 @@
          StringBuilder buffer = new StringBuilder();
          if (! unacceptableReasons.isEmpty())
          {
            Iterator<String> iterator = unacceptableReasons.iterator();
            Iterator<Message> iterator = unacceptableReasons.iterator();
            buffer.append(iterator.next());
            while (iterator.hasNext())
            {
@@ -661,10 +662,9 @@
            }
          }
          int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFIG_NOT_ACCEPTABLE;
          String message = getMessage(msgID, String.valueOf(configuration.dn()),
                                      buffer.toString());
          throw new InitializationException(msgID, message);
          Message message = ERR_CONFIG_SCHEMA_MR_CONFIG_NOT_ACCEPTABLE.get(
              String.valueOf(configuration.dn()), buffer.toString());
          throw new InitializationException(message);
        }
      }
@@ -672,11 +672,10 @@
    }
    catch (Exception e)
    {
      int msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_INITIALIZE;
      String message = getMessage(msgID, className,
                                  String.valueOf(configuration.dn()),
                                  stackTraceToSingleLineString(e));
      throw new InitializationException(msgID, message, e);
      Message message = ERR_CONFIG_SCHEMA_MR_CANNOT_INITIALIZE.
          get(className, String.valueOf(configuration.dn()),
              stackTraceToSingleLineString(e));
      throw new InitializationException(message, e);
    }
  }
}