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

kenneth_suter
15.34.2007 80c58327faaa4873369f6bb949e62792c2f708e0
opends/src/server/org/opends/server/config/DNConfigAttribute.java
@@ -25,6 +25,7 @@
 *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 */
package org.opends.server.config;
import org.opends.messages.Message;
@@ -42,18 +43,13 @@
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.DebugLogLevel;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.loggers.ErrorLogger.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.debug.DebugTracer;
import static org.opends.server.messages.ConfigMessages.*;
import static org.opends.server.messages.MessageHandler.*;
import org.opends.server.loggers.ErrorLogger;
import static org.opends.messages.ConfigMessages.*;
/**
 * This class defines a DN configuration attribute, which can hold zero or more
 * DN values.
@@ -93,7 +89,7 @@
   *                              configuration attribute require administrative
   *                              action before they will take effect.
   */
  public DNConfigAttribute(String name, String description, boolean isRequired,
  public DNConfigAttribute(String name, Message description, boolean isRequired,
                           boolean isMultiValued, boolean requiresAdminAction)
  {
    super(name, description, isRequired, isMultiValued, requiresAdminAction);
@@ -121,7 +117,7 @@
   *                              action before they will take effect.
   * @param  value                The value for this DN configuration attribute.
   */
  public DNConfigAttribute(String name, String description, boolean isRequired,
  public DNConfigAttribute(String name, Message description, boolean isRequired,
                           boolean isMultiValued, boolean requiresAdminAction,
                           DN value)
  {
@@ -161,7 +157,7 @@
   * @param  values               The set of values for this configuration
   *                              attribute.
   */
  public DNConfigAttribute(String name, String description, boolean isRequired,
  public DNConfigAttribute(String name, Message description, boolean isRequired,
                           boolean isMultiValued, boolean requiresAdminAction,
                           List<DN> values)
  {
@@ -202,7 +198,7 @@
   * @param  pendingValues        The set of pending values for this
   *                              configuration attribute.
   */
  public DNConfigAttribute(String name, String description, boolean isRequired,
  public DNConfigAttribute(String name, Message description, boolean isRequired,
                           boolean isMultiValued, boolean requiresAdminAction,
                           List<DN> activeValues, List<DN> pendingValues)
  {
@@ -273,16 +269,14 @@
  {
    if ((activeValues == null) || activeValues.isEmpty())
    {
      int    msgID   = MSGID_CONFIG_ATTR_NO_STRING_VALUE;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_NO_STRING_VALUE.get(getName());
      throw new ConfigException(message);
    }
    if (activeValues.size() > 1)
    {
      int    msgID   = MSGID_CONFIG_ATTR_MULTIPLE_STRING_VALUES;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_MULTIPLE_STRING_VALUES.get(getName());
      throw new ConfigException(message);
    }
    return activeValues.get(0);
@@ -323,16 +317,14 @@
    if ((pendingValues == null) || pendingValues.isEmpty())
    {
      int    msgID   = MSGID_CONFIG_ATTR_NO_STRING_VALUE;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_NO_STRING_VALUE.get(getName());
      throw new ConfigException(message);
    }
    if (pendingValues.size() > 1)
    {
      int    msgID   = MSGID_CONFIG_ATTR_MULTIPLE_STRING_VALUES;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_MULTIPLE_STRING_VALUES.get(getName());
      throw new ConfigException(message);
    }
    return pendingValues.get(0);
@@ -371,9 +363,8 @@
  {
    if (value == null)
    {
      int    msgID   = MSGID_CONFIG_ATTR_DN_NULL;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_DN_NULL.get(getName());
      throw new ConfigException(message);
    }
    if (requiresAdminAction())
@@ -409,9 +400,8 @@
    {
      if (isRequired())
      {
        int    msgID   = MSGID_CONFIG_ATTR_IS_REQUIRED;
        String message = getMessage(msgID, getName());
        throw new ConfigException(msgID, message);
        Message message = ERR_CONFIG_ATTR_IS_REQUIRED.get(getName());
        throw new ConfigException(message);
      }
      else
      {
@@ -433,9 +423,9 @@
    int numValues = values.size();
    if ((! isMultiValued()) && (numValues > 1))
    {
      int    msgID   = MSGID_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message =
          ERR_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED.get(getName());
      throw new ConfigException(message);
    }
@@ -447,9 +437,8 @@
    {
      if (value == null)
      {
        int    msgID   = MSGID_CONFIG_ATTR_DN_NULL;
        String message = getMessage(msgID, getName());
        throw new ConfigException(msgID, message);
        Message message = ERR_CONFIG_ATTR_DN_NULL.get(getName());
        throw new ConfigException(message);
      }
      AttributeValue attrValue =
@@ -458,9 +447,10 @@
      if (valueSet.contains(attrValue))
      {
        int    msgID   = MSGID_CONFIG_ATTR_ADD_VALUES_ALREADY_EXISTS;
        String message = getMessage(msgID, getName(), value);
        throw new ConfigException(msgID, message);
        Message message =
            ERR_CONFIG_ATTR_ADD_VALUES_ALREADY_EXISTS.get(
                    getName(), String.valueOf(value));
        throw new ConfigException(message);
      }
      valueSet.add(attrValue);
@@ -573,7 +563,7 @@
    // Make sure that the value is not null.
    if (value == null)
    {
      rejectReason.append(getMessage(MSGID_CONFIG_ATTR_DN_NULL, getName()));
      rejectReason.append(ERR_CONFIG_ATTR_DN_NULL.get(getName()));
      return false;
    }
@@ -590,9 +580,9 @@
        TRACER.debugCaught(DebugLogLevel.ERROR, e);
      }
      rejectReason.append(getMessage(MSGID_CONFIG_ATTR_DN_CANNOT_PARSE,
                                     value.getStringValue(), getName(),
                                     String.valueOf(e)));
      rejectReason.append(ERR_CONFIG_ATTR_DN_CANNOT_PARSE.get(
              value.getStringValue(), getName(),
              String.valueOf(e)));
      return false;
    }
@@ -630,9 +620,8 @@
    {
      if (isRequired())
      {
        int    msgID   = MSGID_CONFIG_ATTR_IS_REQUIRED;
        String message = getMessage(msgID, getName());
        throw new ConfigException(msgID, message);
        Message message = ERR_CONFIG_ATTR_IS_REQUIRED.get(getName());
        throw new ConfigException(message);
      }
      else
      {
@@ -644,9 +633,9 @@
    int numValues = valueStrings.size();
    if ((! isMultiValued()) && (numValues > 1))
    {
      int    msgID   = MSGID_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message =
          ERR_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED.get(getName());
      throw new ConfigException(message);
    }
@@ -656,18 +645,15 @@
    {
      if (valueString == null)
      {
        int    msgID   = MSGID_CONFIG_ATTR_DN_NULL;
        String message = getMessage(msgID, getName());
        Message message = ERR_CONFIG_ATTR_DN_NULL.get(getName());
        if (allowFailures)
        {
          logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.MILD_ERROR,
                   message, msgID);
          ErrorLogger.logError(message);
          continue;
        }
        else
        {
          throw new ConfigException(msgID, message);
          throw new ConfigException(message);
        }
      }
@@ -684,19 +670,18 @@
          TRACER.debugCaught(DebugLogLevel.ERROR, e);
        }
        int    msgID   = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE;
        String message = getMessage(msgID, valueString, getName(),
                                    String.valueOf(e));
        Message message = ERR_CONFIG_ATTR_DN_CANNOT_PARSE.get(
                valueString, getName(),
                String.valueOf(e));
        if (allowFailures)
        {
          logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.MILD_ERROR,
                   message, msgID);
          ErrorLogger.logError(message);
          continue;
        }
        else
        {
          throw new ConfigException(msgID, message);
          throw new ConfigException(message);
        }
      }
@@ -711,9 +696,8 @@
    // attribute and if so deal with it accordingly.
    if ((isRequired()) && valueSet.isEmpty())
    {
      int    msgID   = MSGID_CONFIG_ATTR_IS_REQUIRED;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_IS_REQUIRED.get(getName());
      throw new ConfigException(message);
    }
@@ -814,9 +798,9 @@
          if (pendingValues != null)
          {
            // We cannot have multiple pending value sets.
            int    msgID   = MSGID_CONFIG_ATTR_MULTIPLE_PENDING_VALUE_SETS;
            String message = getMessage(msgID, a.getName());
            throw new ConfigException(msgID, message);
            Message message =
                ERR_CONFIG_ATTR_MULTIPLE_PENDING_VALUE_SETS.get(a.getName());
            throw new ConfigException(message);
          }
@@ -826,9 +810,8 @@
            if (isRequired())
            {
              // This is illegal -- it must have a value.
              int    msgID   = MSGID_CONFIG_ATTR_IS_REQUIRED;
              String message = getMessage(msgID, a.getName());
              throw new ConfigException(msgID, message);
              Message message = ERR_CONFIG_ATTR_IS_REQUIRED.get(a.getName());
              throw new ConfigException(message);
            }
            else
            {
@@ -842,9 +825,9 @@
            if ((numValues > 1) && (! isMultiValued()))
            {
              // This is illegal -- the attribute is single-valued.
              int    msgID   = MSGID_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED;
              String message = getMessage(msgID, a.getName());
              throw new ConfigException(msgID, message);
              Message message =
                  ERR_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED.get(a.getName());
              throw new ConfigException(message);
            }
            pendingValues = new ArrayList<DN>(numValues);
@@ -862,10 +845,9 @@
                  TRACER.debugCaught(DebugLogLevel.ERROR, e);
                }
                int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE;
                String message = getMessage(msgID, v.getStringValue(),
                                            getName(), String.valueOf(e));
                throw new ConfigException(msgID, message, e);
                Message message = ERR_CONFIG_ATTR_DN_CANNOT_PARSE.get(
                    v.getStringValue(), getName(), String.valueOf(e));
                throw new ConfigException(message, e);
              }
              pendingValues.add(dn);
@@ -876,9 +858,9 @@
        {
          // This is illegal -- only the pending option is allowed for
          // configuration attributes.
          int    msgID   = MSGID_CONFIG_ATTR_OPTIONS_NOT_ALLOWED;
          String message = getMessage(msgID, a.getName());
          throw new ConfigException(msgID, message);
          Message message =
              ERR_CONFIG_ATTR_OPTIONS_NOT_ALLOWED.get(a.getName());
          throw new ConfigException(message);
        }
      }
      else
@@ -887,9 +869,9 @@
        if (activeValues!= null)
        {
          // We cannot have multiple active value sets.
          int    msgID   = MSGID_CONFIG_ATTR_MULTIPLE_ACTIVE_VALUE_SETS;
          String message = getMessage(msgID, a.getName());
          throw new ConfigException(msgID, message);
          Message message =
              ERR_CONFIG_ATTR_MULTIPLE_ACTIVE_VALUE_SETS.get(a.getName());
          throw new ConfigException(message);
        }
@@ -899,9 +881,8 @@
          if (isRequired())
          {
            // This is illegal -- it must have a value.
            int    msgID   = MSGID_CONFIG_ATTR_IS_REQUIRED;
            String message = getMessage(msgID, a.getName());
            throw new ConfigException(msgID, message);
            Message message = ERR_CONFIG_ATTR_IS_REQUIRED.get(a.getName());
            throw new ConfigException(message);
          }
          else
          {
@@ -915,9 +896,9 @@
          if ((numValues > 1) && (! isMultiValued()))
          {
            // This is illegal -- the attribute is single-valued.
            int    msgID   = MSGID_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED;
            String message = getMessage(msgID, a.getName());
            throw new ConfigException(msgID, message);
            Message message =
                ERR_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED.get(a.getName());
            throw new ConfigException(message);
          }
          activeValues = new ArrayList<DN>(numValues);
@@ -935,10 +916,9 @@
                TRACER.debugCaught(DebugLogLevel.ERROR, e);
              }
              int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE;
              String message = getMessage(msgID, v.getStringValue(), getName(),
                                          String.valueOf(e));
              throw new ConfigException(msgID, message, e);
              Message message = ERR_CONFIG_ATTR_DN_CANNOT_PARSE.get(
                  v.getStringValue(), getName(), String.valueOf(e));
              throw new ConfigException(message, e);
            }
            activeValues.add(dn);
@@ -950,9 +930,8 @@
    if (activeValues == null)
    {
      // This is not OK.  The value set must contain an active value.
      int    msgID   = MSGID_CONFIG_ATTR_NO_ACTIVE_VALUE_SET;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_NO_ACTIVE_VALUE_SET.get(getName());
      throw new ConfigException(message);
    }
    if (pendingValues == null)
@@ -1130,15 +1109,17 @@
    {
      attributeInfoList.add(new MBeanAttributeInfo(getName(),
                                                   JMX_TYPE_STRING_ARRAY,
                                                   getDescription(), true, true,
                                                   false));
                                                   String.valueOf(
                                                           getDescription()),
                                                   true, true, false));
    }
    else
    {
      attributeInfoList.add(new MBeanAttributeInfo(getName(),
                                                   String.class.getName(),
                                                   getDescription(), true, true,
                                                   false));
                                                   String.valueOf(
                                                           getDescription()),
                                                   true, true, false));
    }
@@ -1150,15 +1131,17 @@
      {
        attributeInfoList.add(new MBeanAttributeInfo(name,
                                                     JMX_TYPE_STRING_ARRAY,
                                                     getDescription(), true,
                                                     false, false));
                                                     String.valueOf(
                                                             getDescription()),
                                                     true, false, false));
      }
      else
      {
        attributeInfoList.add(new MBeanAttributeInfo(name,
                                                     String.class.getName(),
                                                     getDescription(), true,
                                                     false, false));
                                                     String.valueOf(
                                                             getDescription()),
                                                     true, false, false));
      }
    }
  }
@@ -1177,12 +1160,12 @@
    if (isMultiValued())
    {
      return new MBeanParameterInfo(getName(), JMX_TYPE_STRING_ARRAY,
                                    getDescription());
                                    String.valueOf(getDescription()));
    }
    else
    {
      return new MBeanParameterInfo(getName(), String.class.getName(),
                                    getDescription());
                                    String.valueOf(getDescription()));
    }
  }
@@ -1205,9 +1188,8 @@
    Object value = jmxAttribute.getValue();
    if (value == null)
    {
      int    msgID   = MSGID_CONFIG_ATTR_DN_NULL;
      String message = getMessage(msgID, getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_DN_NULL.get(getName());
      throw new ConfigException(message);
    }
    else if (value instanceof DN)
    {
@@ -1227,10 +1209,9 @@
          TRACER.debugCaught(DebugLogLevel.ERROR, e);
        }
        int    msgID   = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE;
        String message = getMessage(msgID, (String) value, getName(),
                                    String.valueOf(e));
        throw new ConfigException(msgID, message, e);
        Message message = ERR_CONFIG_ATTR_DN_CANNOT_PARSE.get(
            (String) value, getName(), String.valueOf(e));
        throw new ConfigException(message, e);
      }
      setValue(dn);
@@ -1272,10 +1253,9 @@
                TRACER.debugCaught(DebugLogLevel.ERROR, e);
              }
              int    msgID   = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE;
              String message = getMessage(msgID, valueStr, getName(),
                                          String.valueOf(e));
              throw new ConfigException(msgID, message, e);
              Message message = ERR_CONFIG_ATTR_DN_CANNOT_PARSE.get(
                  valueStr, getName(), String.valueOf(e));
              throw new ConfigException(message, e);
            }
            values.add(dn);
@@ -1299,25 +1279,25 @@
            TRACER.debugCaught(DebugLogLevel.ERROR, e);
          }
          int msgID = MSGID_CONFIG_ATTR_INVALID_DN_VALUE;
          String message = getMessage(msgID, getName(), String.valueOf(value),
                                      String.valueOf(e));
          throw new ConfigException(msgID, message, e);
          Message message = ERR_CONFIG_ATTR_INVALID_DN_VALUE.get(
              getName(), String.valueOf(value), String.valueOf(e));
          throw new ConfigException(message, e);
        }
      }
      else
      {
        int    msgID   = MSGID_CONFIG_ATTR_DN_INVALID_ARRAY_TYPE;
        String message = getMessage(msgID, componentType);
        throw new ConfigException(msgID, message);
        Message message =
            ERR_CONFIG_ATTR_DN_INVALID_ARRAY_TYPE.get(
                    String.valueOf(jmxAttribute),
                    String.valueOf(componentType));
        throw new ConfigException(message);
      }
    }
    else
    {
      int    msgID   = MSGID_CONFIG_ATTR_DN_INVALID_TYPE;
      String message = getMessage(msgID, String.valueOf(value), getName(),
                                  value.getClass().getName());
      throw new ConfigException(msgID, message);
      Message message = ERR_CONFIG_ATTR_DN_INVALID_TYPE.get(
          String.valueOf(value), getName(), value.getClass().getName());
      throw new ConfigException(message);
    }
  }