6.35 - Value

The Value class is used to store an attribute’s value. Such a value can be either a String or a byte[], depending on the nature of the AttributeType (the default is that the Value is a String). Each value is associated to an AttributeType, and is used in an Entry or a DN.

We can create a schema aware Value, or just a plain Value. Having a schema aware Value allows further controls to be made on the value injected : its syntax will be checked against the AttributeType syntax.

Value is also a Externalizable class.

Value instances are immutable.

Creating a value

There are two ways to create a value:

  • using a constructor
  • using a static factory (useful for deserialization)

You can create the value passing it an AttributeType, or without it. Here are the possible constructors:

With an AttributeType Without an attributeType Description
Value( AttributeType, byte[] upValue ) Value( byte[] upValue ) Creates a Value with a binary content
Value( AttributeType, String upValue ) Value( String upValue ) Creates a Value with a String content
Value( AttributeType, Value ) - Create a new Value from an existing one, applying the SchemaManager on it

The third constructor is quite specific, as Value is immutable, and it allows you to associate a SchemaManager to a Value instance (creating a new Value in the process). The new Value instance will be schema aware.

Operations on a Value

There are ways to consult the content of the Value, and its status. Here is the list of common operations:

Operation Description
clone() Clone the current Value, creating a new instance
compareTo( byte[] ) Compare the content of the current value to the given byte[]
compareTo( String ) Compare the content of the current value to the given String
compareTo( Value ) Compare the content of the current value to the given Value
deserialize( byte[], int ) Create a Value deserializing it from the byte[], starting at a given position
equals( Object ) Tells if the current Value is equal to the provided object
getAttributeType() Get back the AttributeType associated with this value, if any
getBytes() Get the byte[] representation of this Value
getValue() Get the Value as a String, if the Value is Human Readable
hashCode() Compute the Value hashcode
isHumanReadable() Tells if the Value is Humane Readable (ie, a String)
isInstanceOf( AttributeType ) Tells if the Value is an instance of a given AttributeType, or of one of its parent
isNull() Tells if the contained value is null
isSchemaAware() Tells if teh Value is schema aware
isValid( SyntaxChecker ) Check the contained value
length() Returns the contained value’s length (number of chars for a String, number of bytes for a byte[])
readExternal( ObjectInput ) Read a new Value from a stream of bytes
serialize( byte[], int ) Write the Value into a stream of bytes
toString() Returns a String representation of the Value instance
writeExternal( ObjectOutput ) Write the Value into a stream