| | |
| | | * 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.AttributeValue; |
| | | 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.debug.DebugLogger.debugCought; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; |
| | | import static org.opends.server.loggers.Error.*; |
| | | import static org.opends.server.messages.ConfigMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | |
| | | public class IntegerWithUnitConfigAttribute |
| | | extends ConfigAttribute |
| | | { |
| | | /** |
| | | * The fully-qualified name of this class for debugging purposes. |
| | | */ |
| | | private static final String CLASS_NAME = |
| | | "org.opends.server.config.IntegerWithUnitConfigAttribute"; |
| | | |
| | | |
| | | |
| | |
| | | { |
| | | super(name, description, true, false, requiresAdminAction); |
| | | |
| | | assert debugConstructor(CLASS_NAME, |
| | | new String[] |
| | | { |
| | | String.valueOf(name), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction), |
| | | String.valueOf(units), |
| | | String.valueOf(hasLowerBound), |
| | | String.valueOf(lowerBound), |
| | | String.valueOf(hasUpperBound), |
| | | String.valueOf(upperBound) |
| | | }); |
| | | |
| | | this.units = units; |
| | | this.hasLowerBound = hasLowerBound; |
| | |
| | | super(name, description, true, false, requiresAdminAction, |
| | | getValueSet(intValue, selectedUnit)); |
| | | |
| | | assert debugConstructor(CLASS_NAME, |
| | | new String[] |
| | | { |
| | | String.valueOf(name), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction), |
| | | String.valueOf(units), |
| | | String.valueOf(hasLowerBound), |
| | | String.valueOf(lowerBound), |
| | | String.valueOf(hasUpperBound), |
| | | String.valueOf(upperBound), |
| | | String.valueOf(intValue), |
| | | String.valueOf(selectedUnit), |
| | | }); |
| | | |
| | | |
| | | this.units = units; |
| | |
| | | (pendingSelectedUnit != null), |
| | | getValueSet(pendingIntValue,pendingSelectedUnit)); |
| | | |
| | | assert debugConstructor(CLASS_NAME, |
| | | new String[] |
| | | { |
| | | String.valueOf(name), |
| | | String.valueOf(description), |
| | | String.valueOf(requiresAdminAction), |
| | | String.valueOf(units), |
| | | String.valueOf(hasLowerBound), |
| | | String.valueOf(lowerBound), |
| | | String.valueOf(hasUpperBound), |
| | | String.valueOf(upperBound), |
| | | String.valueOf(activeIntValue), |
| | | String.valueOf(activeSelectedUnit), |
| | | String.valueOf(pendingIntValue), |
| | | String.valueOf(pendingSelectedUnit) |
| | | }); |
| | | |
| | | |
| | | this.units = units; |
| | |
| | | */ |
| | | public String getDataType() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getDataType"); |
| | | |
| | | return "IntegerWithUnit"; |
| | | } |
| | |
| | | */ |
| | | public AttributeSyntax getSyntax() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getSyntax"); |
| | | |
| | | return DirectoryServer.getDefaultStringSyntax(); |
| | | } |
| | |
| | | */ |
| | | public long activeIntValue() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeIntValue"); |
| | | |
| | | return activeIntValue; |
| | | } |
| | |
| | | */ |
| | | public String activeUnit() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeUnit"); |
| | | |
| | | return activeUnit; |
| | | } |
| | |
| | | */ |
| | | public long activeCalculatedValue() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeCalculatedValue"); |
| | | |
| | | return activeCalculatedValue; |
| | | } |
| | |
| | | */ |
| | | public long pendingIntValue() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "pendingIntValue"); |
| | | |
| | | if (hasPendingValues()) |
| | | { |
| | |
| | | */ |
| | | public String pendingUnit() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "pendingUnit"); |
| | | |
| | | if (hasPendingValues()) |
| | | { |
| | |
| | | */ |
| | | public long pendingCalculatedValue() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "pendingCalculatedValue"); |
| | | |
| | | if (hasPendingValues()) |
| | | { |
| | |
| | | */ |
| | | public HashMap<String,Double> getUnits() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getUnits"); |
| | | |
| | | return units; |
| | | } |
| | |
| | | */ |
| | | public boolean hasLowerBound() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "hasLowerBound"); |
| | | |
| | | return hasLowerBound; |
| | | } |
| | |
| | | */ |
| | | public long getLowerBound() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getLowerBound"); |
| | | |
| | | return lowerBound; |
| | | } |
| | |
| | | */ |
| | | public boolean hasUpperBound() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "hasUpperBound"); |
| | | |
| | | return hasUpperBound; |
| | | } |
| | |
| | | */ |
| | | public long getUpperBound() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getUpperBound"); |
| | | |
| | | return upperBound; |
| | | } |
| | |
| | | public void setValue(long intValue, String unit) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setValue", String.valueOf(intValue), |
| | | String.valueOf(unit)); |
| | | |
| | | if ((unit == null) || (! units.containsKey(unit))) |
| | | { |
| | |
| | | public void setValue(String value) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setValue", String.valueOf(value)); |
| | | |
| | | int spacePos = value.indexOf(' '); |
| | | if (spacePos <= 0) |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "setValue", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ATTR_COULD_NOT_PARSE_INT_COMPONENT; |
| | | String message = getMessage(msgID, String.valueOf(value), getName(), |
| | |
| | | private static LinkedHashSet<AttributeValue> getValueSet(long intValue, |
| | | String unit) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getValueSet", String.valueOf(intValue), |
| | | String.valueOf(unit)); |
| | | |
| | | if (unit == 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"); |
| | | |
| | | |
| | | // Get a string representation of the value and convert it to lowercase. |
| | |
| | | public boolean valueIsAcceptable(String lowerValue, |
| | | StringBuilder rejectReason) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "valueIsAcceptable", |
| | | String.valueOf(lowerValue), "java.lang.StringBuilder"); |
| | | |
| | | |
| | | // Find the first space in the value, since it should separate the integer |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "valueIsAcceptable", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | rejectReason.append(getMessage(MSGID_CONFIG_ATTR_INT_COULD_NOT_PARSE, |
| | | lowerValue, getName(), String.valueOf(e))); |
| | |
| | | stringsToValues(List<String> valueStrings, boolean allowFailures) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "stringsToValues", |
| | | String.valueOf(valueStrings), |
| | | String.valueOf(allowFailures)); |
| | | |
| | | if ((valueStrings == null) || valueStrings.isEmpty()) |
| | | { |
| | |
| | | */ |
| | | public List<String> activeValuesToStrings() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "activeValuesToStrings"); |
| | | |
| | | ArrayList<String> valueStrings = new ArrayList<String>(1); |
| | | valueStrings.add(activeIntValue + " " + activeUnit); |
| | |
| | | */ |
| | | 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)); |
| | | |
| | | |
| | | long activeIntValue = 0; |
| | |
| | | */ |
| | | public javax.management.Attribute toJMXAttribute() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXAttribute"); |
| | | |
| | | return new javax.management.Attribute(getName(), |
| | | activeIntValue + " " + activeUnit); |
| | |
| | | */ |
| | | public javax.management.Attribute toJMXAttributePending() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXAttributePending"); |
| | | |
| | | return new javax.management.Attribute(getName() + ";" |
| | | + OPTION_PENDING_VALUES, pendingIntValue + " " + pendingUnit); |
| | |
| | | */ |
| | | public void toJMXAttribute(AttributeList attributeList) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXAttribute", |
| | | String.valueOf(attributeList)); |
| | | |
| | | String activeValue = activeIntValue + " " + activeUnit; |
| | | attributeList.add(new javax.management.Attribute(getName(), activeValue)); |
| | |
| | | */ |
| | | public void toJMXAttributeInfo(List<MBeanAttributeInfo> attributeInfoList) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXAttributeInfo", |
| | | String.valueOf(attributeInfoList)); |
| | | |
| | | attributeInfoList.add(new MBeanAttributeInfo(getName(), |
| | | String.class.getName(), |
| | |
| | | */ |
| | | public MBeanParameterInfo toJMXParameterInfo() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toJMXParameterInfo"); |
| | | |
| | | return new MBeanParameterInfo(getName(), String.class.getName(), |
| | | getDescription()); |
| | |
| | | public void setValue(javax.management.Attribute jmxAttribute) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setValue", String.valueOf(jmxAttribute)); |
| | | |
| | | Object value = jmxAttribute.getValue(); |
| | | if (value instanceof String) |
| | |
| | | */ |
| | | public ConfigAttribute duplicate() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "duplicate"); |
| | | |
| | | return new IntegerWithUnitConfigAttribute(getName(), getDescription(), |
| | | requiresAdminAction(), units, |