| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Portions Copyright 2006 Sun Microsystems, Inc. |
| | | * Portions Copyright 2006-2007 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.config; |
| | | |
| | |
| | | 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.Debug.*; |
| | | import static org.opends.server.loggers.Error.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugCought; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; |
| | | import static org.opends.server.messages.ConfigMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | |
| | | public class DNConfigAttribute |
| | | extends ConfigAttribute |
| | | { |
| | | /** |
| | | * The fully-qualified name of this class for debugging purposes. |
| | | */ |
| | | private static final String CLASS_NAME = |
| | | "org.opends.server.config.DNConfigAttribute"; |
| | | |
| | | |
| | | |
| | |
| | | { |
| | | super(name, description, isRequired, isMultiValued, requiresAdminAction); |
| | | |
| | | assert debugConstructor(CLASS_NAME, String.valueOf(name), |
| | | String.valueOf(isRequired), |
| | | String.valueOf(isMultiValued), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction)); |
| | | |
| | | activeValues = new ArrayList<DN>(); |
| | | pendingValues = activeValues; |
| | |
| | | super(name, description, isRequired, isMultiValued, requiresAdminAction, |
| | | getValueSet(value)); |
| | | |
| | | assert debugConstructor(CLASS_NAME, |
| | | new String[] |
| | | { |
| | | String.valueOf(name), |
| | | String.valueOf(isRequired), |
| | | String.valueOf(isMultiValued), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction), |
| | | String.valueOf(value) |
| | | }); |
| | | |
| | | if (value == null) |
| | | { |
| | |
| | | super(name, description, isRequired, isMultiValued, requiresAdminAction, |
| | | getValueSet(values)); |
| | | |
| | | assert debugConstructor(CLASS_NAME, |
| | | new String[] |
| | | { |
| | | String.valueOf(name), |
| | | String.valueOf(isRequired), |
| | | String.valueOf(isMultiValued), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction), |
| | | String.valueOf(values) |
| | | }); |
| | | |
| | | if (values == null) |
| | | { |
| | |
| | | getValueSet(activeValues), (pendingValues != null), |
| | | getValueSet(pendingValues)); |
| | | |
| | | assert debugConstructor(CLASS_NAME, |
| | | new String[] |
| | | { |
| | | String.valueOf(name), |
| | | String.valueOf(isRequired), |
| | | String.valueOf(isMultiValued), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction), |
| | | String.valueOf(activeValues), |
| | | String.valueOf(pendingValues) |
| | | }); |
| | | |
| | | if (activeValues == null) |
| | | { |
| | |
| | | */ |
| | | public String getDataType() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getDataType"); |
| | | |
| | | return "DN"; |
| | | } |
| | |
| | | */ |
| | | public AttributeSyntax getSyntax() |
| | | { |
| | | assert debugEnter(CLASS_NAME,"getSyntax"); |
| | | |
| | | return DirectoryServer.getDefaultStringSyntax(); |
| | | } |
| | |
| | | public DN activeValue() |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeValue"); |
| | | |
| | | if ((activeValues == null) || activeValues.isEmpty()) |
| | | { |
| | |
| | | */ |
| | | public List<DN> activeValues() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeValues"); |
| | | |
| | | return activeValues; |
| | | } |
| | |
| | | public DN pendingValue() |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "pendingValue"); |
| | | |
| | | if (! hasPendingValues()) |
| | | { |
| | |
| | | */ |
| | | public List<DN> pendingValues() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "pendingValues"); |
| | | |
| | | if (! hasPendingValues()) |
| | | { |
| | |
| | | public void setValue(DN value) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setValue", String.valueOf(value)); |
| | | |
| | | if (value == null) |
| | | { |
| | |
| | | public void setValues(List<DN> values) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setValues", String.valueOf(values)); |
| | | |
| | | |
| | | // First check if the set is empty and if that is allowed. |
| | |
| | | */ |
| | | private static LinkedHashSet<AttributeValue> getValueSet(DN value) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getValueSet", String.valueOf(value)); |
| | | |
| | | LinkedHashSet<AttributeValue> valueSet; |
| | | if (value == null) |
| | |
| | | */ |
| | | private static LinkedHashSet<AttributeValue> getValueSet(List<DN> values) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getValueSet", String.valueOf(values)); |
| | | |
| | | if (values == null) |
| | | { |
| | |
| | | */ |
| | | public void applyPendingValues() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "applyPendingValues"); |
| | | |
| | | if (! hasPendingValues()) |
| | | { |
| | |
| | | public boolean valueIsAcceptable(AttributeValue value, |
| | | StringBuilder rejectReason) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "valueIsAcceptable", String.valueOf(value), |
| | | "java.lang.StringBuilder"); |
| | | |
| | | |
| | | // Make sure that the value is not null. |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "valueIsAcceptable", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | rejectReason.append(getMessage(MSGID_CONFIG_ATTR_DN_CANNOT_PARSE, |
| | | value.getStringValue(), getName(), |
| | |
| | | boolean allowFailures) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "stringsToValues", |
| | | String.valueOf(valueStrings), |
| | | String.valueOf(allowFailures)); |
| | | |
| | | if ((valueStrings == null) || valueStrings.isEmpty()) |
| | | { |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "stringsToValues", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE; |
| | | String message = getMessage(msgID, valueString, getName(), |
| | |
| | | */ |
| | | public List<String> activeValuesToStrings() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeValuesToStrings"); |
| | | |
| | | ArrayList<String> valueStrings = new ArrayList<String>(activeValues.size()); |
| | | for (DN dn : activeValues) |
| | |
| | | */ |
| | | public List<String> pendingValuesToStrings() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "pendingValuesToStrings"); |
| | | |
| | | if (hasPendingValues()) |
| | | { |
| | |
| | | public ConfigAttribute getConfigAttribute(List<Attribute> attributeList) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getConfigAttribute", |
| | | String.valueOf(attributeList)); |
| | | |
| | | |
| | | ArrayList<DN> activeValues = null; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "getConfigAttribute", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE; |
| | | String message = getMessage(msgID, v.getStringValue(), |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "getConfigAttribute", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE; |
| | | String message = getMessage(msgID, v.getStringValue(), getName(), |
| | |
| | | */ |
| | | private javax.management.Attribute _toJMXAttribute(boolean pending) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "_toJMXAttribute"); |
| | | |
| | | List<DN> requestedValues ; |
| | | String name ; |
| | |
| | | */ |
| | | public void toJMXAttribute(AttributeList attributeList) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXAttribute", |
| | | String.valueOf(attributeList)); |
| | | |
| | | if (activeValues.size() > 0) |
| | | { |
| | |
| | | */ |
| | | public void toJMXAttributeInfo(List<MBeanAttributeInfo> attributeInfoList) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXAttributeInfo", |
| | | String.valueOf(attributeInfoList)); |
| | | |
| | | |
| | | if (isMultiValued()) |
| | |
| | | */ |
| | | public MBeanParameterInfo toJMXParameterInfo() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXParameterInfo"); |
| | | |
| | | if (isMultiValued()) |
| | | { |
| | |
| | | public void setValue(javax.management.Attribute jmxAttribute) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setValue", String.valueOf(jmxAttribute)); |
| | | |
| | | Object value = jmxAttribute.getValue(); |
| | | if (value == null) |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "setValue", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE; |
| | | String message = getMessage(msgID, (String) value, getName(), |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "setValue", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_DN_CANNOT_PARSE; |
| | | String message = getMessage(msgID, valueStr, getName(), |
| | |
| | | } |
| | | catch (ConfigException ce) |
| | | { |
| | | assert debugException(CLASS_NAME, "setValue", ce); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, ce); |
| | | } |
| | | |
| | | throw ce; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "setValue", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_INVALID_DN_VALUE; |
| | | String message = getMessage(msgID, getName(), String.valueOf(value), |
| | |
| | | */ |
| | | public ConfigAttribute duplicate() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "duplicate"); |
| | | |
| | | return new DNConfigAttribute(getName(), getDescription(), isRequired(), |
| | | isMultiValued(), requiresAdminAction(), |