org.opends.server.config
Class IntegerWithUnitConfigAttribute

java.lang.Object
  extended by org.opends.server.config.ConfigAttribute
      extended by org.opends.server.config.IntegerWithUnitConfigAttribute

@PublicAPI(stability=VOLATILE,
           mayInstantiate=true,
           mayExtend=false,
           mayInvoke=true)
public final class IntegerWithUnitConfigAttribute
extends ConfigAttribute

This class defines a configuration attribute that stores both an integer value and an associated unit. The unit will contain both a string and a floating-point value. When a unit is selected, then the associated value will be used as a multiplier for the integer value to achieve the actual value for this parameter. For example, the attribute could be used to specify a size in bytes, but a value with a unit of "kb" could multiply that value by 1024, or "mb" by 1048576, or "gb" by 1073741824. In this case, a value of "50 gb" would be the logical equivalent of "53687091200 b". Upper and lower bounds may be imposed, and in that case they will be imposed on the actual value not on merely the integer portion. This attribute may only hold a single value and it will always be required.


Constructor Summary
IntegerWithUnitConfigAttribute(java.lang.String name, Message description, boolean requiresAdminAction, java.util.HashMap<java.lang.String,java.lang.Double> units, boolean hasLowerBound, long lowerBound, boolean hasUpperBound, long upperBound)
          Creates a new integer with unit configuration attribute stub with the provided information but no values.
IntegerWithUnitConfigAttribute(java.lang.String name, Message description, boolean requiresAdminAction, java.util.HashMap<java.lang.String,java.lang.Double> units, boolean hasLowerBound, long lowerBound, boolean hasUpperBound, long upperBound, long intValue, java.lang.String selectedUnit)
          Creates a new integer with unit configuration attribute with the provided information.
IntegerWithUnitConfigAttribute(java.lang.String name, Message description, boolean requiresAdminAction, java.util.HashMap<java.lang.String,java.lang.Double> units, boolean hasLowerBound, long lowerBound, boolean hasUpperBound, long upperBound, long activeIntValue, java.lang.String activeSelectedUnit, long pendingIntValue, java.lang.String pendingSelectedUnit)
          Creates a new integer with unit configuration attribute with the provided information.
 
Method Summary
 long activeCalculatedValue()
          Retrieves the calculated active value for this configuration attribute.
 long activeIntValue()
          Retrieves the integer component of the active value for this configuration attribute.
 java.lang.String activeUnit()
          Retrieves the name of the active unit for this configuration attribute.
 java.util.List<java.lang.String> activeValuesToStrings()
          Converts the set of active values for this configuration attribute into a set of strings that may be stored in the configuration or represented over protocol.
 void applyPendingValues()
          Applies the set of pending values, making them the active values for this configuration attribute.
 ConfigAttribute duplicate()
          Creates a duplicate of this configuration attribute.
 ConfigAttribute getConfigAttribute(java.util.List<Attribute> attributeList)
          Retrieves a new configuration attribute of this type that will contain the values from the provided attribute.
 java.lang.String getDataType()
          Retrieves the name of the data type for this configuration attribute.
 long getLowerBound()
          Retrieves the lower bound for the calculated value of this configuration attribute.
 AttributeSyntax getSyntax()
          Retrieves the attribute syntax for this configuration attribute.
 java.util.HashMap<java.lang.String,java.lang.Double> getUnits()
          Retrieves the mapping between the allowed names for the units and their multipliers for this configuration attribute.
 long getUpperBound()
          Retrieves the upper bound for the calculated value of this configuration attribute.
 boolean hasLowerBound()
          Indicates whether a lower bound will be enforced for the calculated value of this configuration attribute.
 boolean hasUpperBound()
          Indicates whether an upper bound will be enforced for the calculated value of this configuration attribute.
 long pendingCalculatedValue()
          Retrieves the calculated pending value for this configuration attribute.
 long pendingIntValue()
          Retrieves the integer component of the pending value for this configuration attribute.
 java.lang.String pendingUnit()
          Retrieves the name of the pending unit for this configuration attribute.
 java.util.List<java.lang.String> pendingValuesToStrings()
          Converts the set of pending values for this configuration attribute into a set of strings that may be stored in the configuration or represented over protocol.
 void setValue(javax.management.Attribute jmxAttribute)
          Attempts to set the value of this configuration attribute based on the information in the provided JMX attribute.
 void setValue(long intValue, java.lang.String unit)
          Sets the value for this configuration attribute.
 void setValue(java.lang.String value)
          Sets the value for this configuration attribute.
 java.util.LinkedHashSet<AttributeValue> stringsToValues(java.util.List<java.lang.String> valueStrings, boolean allowFailures)
          Converts the provided set of strings to a corresponding set of attribute values.
 javax.management.Attribute toJMXAttribute()
          Retrieves a JMX attribute containing the active value set for this configuration attribute.
 void toJMXAttribute(javax.management.AttributeList attributeList)
          Adds information about this configuration attribute to the provided JMX attribute list.
 void toJMXAttributeInfo(java.util.List<javax.management.MBeanAttributeInfo> attributeInfoList)
          Adds information about this configuration attribute to the provided list in the form of a JMX MBeanAttributeInfo object.
 javax.management.Attribute toJMXAttributePending()
          Retrieves a JMX attribute containing the pending value set for this configuration attribute.
 javax.management.MBeanParameterInfo toJMXParameterInfo()
          Retrieves a JMX MBeanParameterInfo object that describes this configuration attribute.
 boolean valueIsAcceptable(AttributeValue value, java.lang.StringBuilder rejectReason)
          Indicates whether the provided value is acceptable for use in this attribute.
 boolean valueIsAcceptable(java.lang.String lowerValue, java.lang.StringBuilder rejectReason)
          Indicates whether the provided value is acceptable for use in this attribute.
 
Methods inherited from class org.opends.server.config.ConfigAttribute
addValues, getActiveValues, getDescription, getName, getPendingValues, hasPendingValues, isMultiValued, isRequired, removeAllValues, removeValues, requiresAdminAction, setActiveValues, setInitialValues, setPendingValues, setValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IntegerWithUnitConfigAttribute

public IntegerWithUnitConfigAttribute(java.lang.String name,
                                      Message description,
                                      boolean requiresAdminAction,
                                      java.util.HashMap<java.lang.String,java.lang.Double> units,
                                      boolean hasLowerBound,
                                      long lowerBound,
                                      boolean hasUpperBound,
                                      long upperBound)
Creates a new integer with unit configuration attribute stub with the provided information but no values. The values will be set using the setInitialValue method. Mo validation will be performed on the set of allowed units.

Parameters:
name - The name for this configuration attribute.
description - The description for this configuration attribute.
requiresAdminAction - Indicates whether changes to this configuration attribute require administrative action before they will take effect.
units - The set of units and their associated multipliers for this configuration attribute.
hasLowerBound - Indicates whether a lower bound will be enforced for the calculated value.
lowerBound - The lower bound for the calculated value.
hasUpperBound - Indicates whether an upper bound will be enforced for the calculated value.
upperBound - The upper bound for the calculated value.

IntegerWithUnitConfigAttribute

public IntegerWithUnitConfigAttribute(java.lang.String name,
                                      Message description,
                                      boolean requiresAdminAction,
                                      java.util.HashMap<java.lang.String,java.lang.Double> units,
                                      boolean hasLowerBound,
                                      long lowerBound,
                                      boolean hasUpperBound,
                                      long upperBound,
                                      long intValue,
                                      java.lang.String selectedUnit)
Creates a new integer with unit configuration attribute with the provided information. No validation will be performed on the provided value or unit, or on the set of allowed units.

Parameters:
name - The name for this configuration attribute.
description - The description for this configuration attribute.
requiresAdminAction - Indicates whether changes to this configuration attribute require administrative action before they will take effect.
units - The set of units and their associated multipliers for this configuration attribute.
hasLowerBound - Indicates whether a lower bound will be enforced for the calculated value.
lowerBound - The lower bound for the calculated value.
hasUpperBound - Indicates whether an upper bound will be enforced for the calculated value.
upperBound - The upper bound for the calculated value.
intValue - The selected value for this configuration attribute.
selectedUnit - The selected unit for this configuration attribute.

IntegerWithUnitConfigAttribute

public IntegerWithUnitConfigAttribute(java.lang.String name,
                                      Message description,
                                      boolean requiresAdminAction,
                                      java.util.HashMap<java.lang.String,java.lang.Double> units,
                                      boolean hasLowerBound,
                                      long lowerBound,
                                      boolean hasUpperBound,
                                      long upperBound,
                                      long activeIntValue,
                                      java.lang.String activeSelectedUnit,
                                      long pendingIntValue,
                                      java.lang.String pendingSelectedUnit)
Creates a new integer with unit configuration attribute with the provided information. No validation will be performed on the provided value or unit, or on the set of allowed units.

Parameters:
name - The name for this configuration attribute.
description - The description for this configuration attribute.
requiresAdminAction - Indicates whether changes to this configuration attribute require administrative action before they will take effect.
units - The set of units and their associated multipliers for this configuration attribute.
hasLowerBound - Indicates whether a lower bound will be enforced for the calculated value.
lowerBound - The lower bound for the calculated value.
hasUpperBound - Indicates whether an upper bound will be enforced for the calculated value.
upperBound - The upper bound for the calculated value.
activeIntValue - The active selected value for this configuration attribute.
activeSelectedUnit - The active selected unit for this configuration attribute.
pendingIntValue - The pending selected value for this configuration attribute.
pendingSelectedUnit - The pending selected unit for this configuration attribute.
Method Detail

getDataType

public java.lang.String getDataType()
Retrieves the name of the data type for this configuration attribute. This is for informational purposes (e.g., inclusion in method signatures and other kinds of descriptions) and does not necessarily need to map to an actual Java type.

Specified by:
getDataType in class ConfigAttribute
Returns:
The name of the data type for this configuration attribute.

getSyntax

public AttributeSyntax getSyntax()
Retrieves the attribute syntax for this configuration attribute.

Specified by:
getSyntax in class ConfigAttribute
Returns:
The attribute syntax for this configuration attribute.

activeIntValue

public long activeIntValue()
Retrieves the integer component of the active value for this configuration attribute.

Returns:
The integer component of the active value for this configuration attribute.

activeUnit

public java.lang.String activeUnit()
Retrieves the name of the active unit for this configuration attribute.

Returns:
The name of the active unit for this configuration attribute.

activeCalculatedValue

public long activeCalculatedValue()
Retrieves the calculated active value for this configuration attribute. This will be the product of the active int value and the multiplier for the associated active unit.

Returns:
The calculated active value for this configuration attribute.

pendingIntValue

public long pendingIntValue()
Retrieves the integer component of the pending value for this configuration attribute. If there is no pending value, then the integer component of the active value will be returned.

Returns:
The integer component of the pending value for this configuration attribute.

pendingUnit

public java.lang.String pendingUnit()
Retrieves the name of the pending unit for this configuration attribute. If there is no pending value, then the unit for the active value will be returned.

Returns:
The name of the pending unit for this configuration attribute.

pendingCalculatedValue

public long pendingCalculatedValue()
Retrieves the calculated pending value for this configuration attribute. This will be the product of the pending int value and the multiplier for the associated pending unit. If there is no pending value, then the calculated active value will be returned.

Returns:
The calculated pending value for this configuration attribute.

getUnits

public java.util.HashMap<java.lang.String,java.lang.Double> getUnits()
Retrieves the mapping between the allowed names for the units and their multipliers for this configuration attribute.

Returns:
The mapping between the allowed names for the units and their multipliers for this configuration attribute.

hasLowerBound

public boolean hasLowerBound()
Indicates whether a lower bound will be enforced for the calculated value of this configuration attribute.

Returns:
true if a lower bound will be enforced for the calculated value of this configuration attribute, or false if not.

getLowerBound

public long getLowerBound()
Retrieves the lower bound for the calculated value of this configuration attribute.

Returns:
The lower bound for the calculated value of this configuration attribute.

hasUpperBound

public boolean hasUpperBound()
Indicates whether an upper bound will be enforced for the calculated value of this configuration attribute.

Returns:
true if an upper bound will be enforced for the calculated value of this configuration attribute, or false if not.

getUpperBound

public long getUpperBound()
Retrieves the upper bound for the calculated value of this configuration attribute.

Returns:
The upper bound for the calculated value of this configuration attribute.

setValue

public void setValue(long intValue,
                     java.lang.String unit)
              throws ConfigException
Sets the value for this configuration attribute.

Parameters:
intValue - The integer component for the value of this configuration attribute.
unit - The unit for the value of this configuration attribute.
Throws:
ConfigException - If the provided unit is not recognized, or if the resulting calculated value is outside the acceptable bounds.

setValue

public void setValue(java.lang.String value)
              throws ConfigException
Sets the value for this configuration attribute.

Parameters:
value - The string representation of the value to use for this configuration attribute.
Throws:
ConfigException - If the provided value is invalid for some reason.

applyPendingValues

public void applyPendingValues()
Applies the set of pending values, making them the active values for this configuration attribute. This will not take any action if there are no pending values.

Overrides:
applyPendingValues in class ConfigAttribute

valueIsAcceptable

public boolean valueIsAcceptable(AttributeValue value,
                                 java.lang.StringBuilder rejectReason)
Indicates whether the provided value is acceptable for use in this attribute. If it is not acceptable, then the reason should be written into the provided buffer.

Specified by:
valueIsAcceptable in class ConfigAttribute
Parameters:
value - The value for which to make the determination.
rejectReason - A buffer into which a human-readable reason for the reject may be written.
Returns:
true if the provided value is acceptable for use in this attribute, or false if not.

valueIsAcceptable

public boolean valueIsAcceptable(java.lang.String lowerValue,
                                 java.lang.StringBuilder rejectReason)
Indicates whether the provided value is acceptable for use in this attribute. If it is not acceptable, then the reason should be written into the provided buffer.

Parameters:
lowerValue - The lowercase version of the value for which to make the determination.
rejectReason - A buffer into which a human-readable reason for the reject may be written.
Returns:
true if the provided value is acceptable for use in this attribute, or false if not.

stringsToValues

public java.util.LinkedHashSet<AttributeValue> stringsToValues(java.util.List<java.lang.String> valueStrings,
                                                               boolean allowFailures)
                                                        throws ConfigException
Converts the provided set of strings to a corresponding set of attribute values.

Specified by:
stringsToValues in class ConfigAttribute
Parameters:
valueStrings - The set of strings to be converted into attribute values.
allowFailures - Indicates whether the decoding process should allow any failures in which one or more values could be decoded but at least one could not. If this is true and such a condition is acceptable for the underlying attribute type, then the returned set of values should simply not include those undecodable values.
Returns:
The set of attribute values converted from the provided strings.
Throws:
ConfigException - If an unrecoverable problem occurs while performing the conversion.

activeValuesToStrings

public java.util.List<java.lang.String> activeValuesToStrings()
Converts the set of active values for this configuration attribute into a set of strings that may be stored in the configuration or represented over protocol. The string representation used by this method should be compatible with the decoding used by the stringsToValues method.

Specified by:
activeValuesToStrings in class ConfigAttribute
Returns:
The string representations of the set of active values for this configuration attribute.

pendingValuesToStrings

public java.util.List<java.lang.String> pendingValuesToStrings()
Converts the set of pending values for this configuration attribute into a set of strings that may be stored in the configuration or represented over protocol. The string representation used by this method should be compatible with the decoding used by the stringsToValues method.

Specified by:
pendingValuesToStrings in class ConfigAttribute
Returns:
The string representations of the set of pending values for this configuration attribute, or null if there are no pending values.

getConfigAttribute

public ConfigAttribute getConfigAttribute(java.util.List<Attribute> attributeList)
                                   throws ConfigException
Retrieves a new configuration attribute of this type that will contain the values from the provided attribute.

Specified by:
getConfigAttribute in class ConfigAttribute
Parameters:
attributeList - The list of attributes to use to create the config attribute. The list must contain either one or two elements, with both attributes having the same base name and the only option allowed is ";pending" and only if this attribute is one that requires admin action before a change may take effect.
Returns:
The generated configuration attribute.
Throws:
ConfigException - If the provided attribute cannot be treated as a configuration attribute of this type (e.g., if one or more of the values of the provided attribute are not suitable for an attribute of this type, or if this configuration attribute is single-valued and the provided attribute has multiple values).

toJMXAttribute

public javax.management.Attribute toJMXAttribute()
Retrieves a JMX attribute containing the active value set for this configuration attribute.

Specified by:
toJMXAttribute in class ConfigAttribute
Returns:
A JMX attribute containing the active value set for this configuration attribute, or null if it does not have any active values.

toJMXAttributePending

public javax.management.Attribute toJMXAttributePending()
Retrieves a JMX attribute containing the pending value set for this configuration attribute.

Specified by:
toJMXAttributePending in class ConfigAttribute
Returns:
A JMX attribute containing the pending value set for this configuration attribute, or null if it does not have any active values.

toJMXAttribute

public void toJMXAttribute(javax.management.AttributeList attributeList)
Adds information about this configuration attribute to the provided JMX attribute list. If this configuration attribute requires administrative action before changes take effect and it has a set of pending values, then two attributes should be added to the list -- one for the active value and one for the pending value. The pending value should be named with the pending option.

Specified by:
toJMXAttribute in class ConfigAttribute
Parameters:
attributeList - The attribute list to which the JMX attribute(s) should be added.

toJMXAttributeInfo

public void toJMXAttributeInfo(java.util.List<javax.management.MBeanAttributeInfo> attributeInfoList)
Adds information about this configuration attribute to the provided list in the form of a JMX MBeanAttributeInfo object. If this configuration attribute requires administrative action before changes take effect and it has a set of pending values, then two attribute info objects should be added to the list -- one for the active value (which should be read-write) and one for the pending value (which should be read-only). The pending value should be named with the pending option.

Specified by:
toJMXAttributeInfo in class ConfigAttribute
Parameters:
attributeInfoList - The list to which the attribute information should be added.

toJMXParameterInfo

public javax.management.MBeanParameterInfo toJMXParameterInfo()
Retrieves a JMX MBeanParameterInfo object that describes this configuration attribute.

Specified by:
toJMXParameterInfo in class ConfigAttribute
Returns:
A JMX MBeanParameterInfo object that describes this configuration attribute.

setValue

public void setValue(javax.management.Attribute jmxAttribute)
              throws ConfigException
Attempts to set the value of this configuration attribute based on the information in the provided JMX attribute.

Specified by:
setValue in class ConfigAttribute
Parameters:
jmxAttribute - The JMX attribute to use to attempt to set the value of this configuration attribute.
Throws:
ConfigException - If the provided JMX attribute does not have an acceptable value for this configuration attribute.

duplicate

public ConfigAttribute duplicate()
Creates a duplicate of this configuration attribute.

Specified by:
duplicate in class ConfigAttribute
Returns:
A duplicate of this configuration attribute.