org.apache.directory.shared.asn1.ber.tlv
Class Value

java.lang.Object
  extended by org.apache.directory.shared.asn1.ber.tlv.Value
All Implemented Interfaces:
java.io.Serializable

public class Value
extends java.lang.Object
implements java.io.Serializable

This class stores the data decoded from a TLV.

Version:
$Rev: 912399 $, $Date: 2010-02-21 21:52:31 +0100 (Sun, 21 Feb 2010) $
Author:
Apache Directory Project
See Also:
Serialized Form

Field Summary
static byte FALSE_VALUE
          The encoded byte for a FALSE value
static byte TRUE_VALUE
          The encoded byte for a TRUE value
 
Constructor Summary
Value()
          The constructor.
Value(byte[] value)
          The constructor.
 
Method Summary
 void addData(byte[] array)
          Append some bytes to the data buffer.
 void addData(java.nio.ByteBuffer buffer)
          Append some bytes to the data buffer.
static void encode(java.nio.ByteBuffer buffer, BitString bitString)
          Encode a BIT STRING value
static void encode(java.nio.ByteBuffer buffer, boolean bool)
          Encode a boolean value
static void encode(java.nio.ByteBuffer buffer, byte[] bytes)
          Encode an OctetString value
static void encode(java.nio.ByteBuffer buffer, byte tag, int value)
          Encode an integer value
static void encode(java.nio.ByteBuffer buffer, int value)
          Encode an integer value
static void encode(java.nio.ByteBuffer buffer, long value)
          Encode a long value
static void encode(java.nio.ByteBuffer buffer, OID oid)
          Encode an OID value
static void encode(java.nio.ByteBuffer buffer, java.lang.String string)
          Encode a String value
static void encodeEnumerated(java.nio.ByteBuffer buffer, int value)
          Encode an enumerated value
static byte[] getBytes(int value)
          Utility function that return a byte array representing the Value We must respect the ASN.1 BER encoding scheme : 1) positive integer - [0 - 0x7F] : 0xVV - [0x80 - 0xFF] : 0x00 0xVV - [0x0100 - 0x7FFF] : 0xVV 0xVV - [0x8000 - 0xFFFF] : 0x00 0xVV 0xVV - [0x010000 - 0x7FFFFF] : 0xVV 0xVV 0xVV - [0x800000 - 0xFFFFFF] : 0x00 0xVV 0xVV 0xVV - [0x01000000 - 0x7FFFFFFF] : 0xVV 0xVV 0xVV 0xVV 2) Negative number - (~value) + 1
static byte[] getBytes(long value)
          Utility function that return a byte array representing the Value.
 int getCurrentLength()
           
 byte[] getData()
          Get the Values'data
static int getNbBytes(int value)
          Utility function that return the number of bytes necessary to store an integer value.
static int getNbBytes(long value)
          Utility function that return the number of bytes necessary to store a long value.
 void init(int size)
          Initialize the Value
 void reset()
          Reset the Value so that it can be reused
 void setData(byte[] data)
          Set a block of bytes in the Value
 void setData(java.nio.ByteBuffer data)
          Set a block of bytes in the Value
 java.lang.String toString()
          Return a string representing the Value
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TRUE_VALUE

public static final byte TRUE_VALUE
The encoded byte for a TRUE value

See Also:
Constant Field Values

FALSE_VALUE

public static final byte FALSE_VALUE
The encoded byte for a FALSE value

See Also:
Constant Field Values
Constructor Detail

Value

public Value(byte[] value)
The constructor.

Parameters:
value - the associated value

Value

public Value()
The constructor.

Method Detail

init

public void init(int size)
Initialize the Value

Parameters:
size - The data size to allocate.

reset

public void reset()
Reset the Value so that it can be reused


getData

public byte[] getData()
Get the Values'data

Returns:
Returns the data.

setData

public void setData(java.nio.ByteBuffer data)
Set a block of bytes in the Value

Parameters:
data - The data to set.

addData

public void addData(java.nio.ByteBuffer buffer)
Append some bytes to the data buffer.

Parameters:
buffer - The data to append.

setData

public void setData(byte[] data)
Set a block of bytes in the Value

Parameters:
data - The data to set.

addData

public void addData(byte[] array)
Append some bytes to the data buffer.

Parameters:
array - The data to append.

getCurrentLength

public int getCurrentLength()
Returns:
The number of bytes actually stored

getNbBytes

public static int getNbBytes(int value)
Utility function that return the number of bytes necessary to store an integer value. Note that this value must be in [Integer.MIN_VALUE, Integer.MAX_VALUE].

Parameters:
value - The value to store in a byte array
Returns:
The number of bytes necessary to store the value.

getNbBytes

public static int getNbBytes(long value)
Utility function that return the number of bytes necessary to store a long value. Note that this value must be in [Long.MIN_VALUE, Long.MAX_VALUE].

Parameters:
value - The value to store in a byte array
Returns:
The number of bytes necessary to store the value.

getBytes

public static byte[] getBytes(int value)
Utility function that return a byte array representing the Value We must respect the ASN.1 BER encoding scheme : 1) positive integer - [0 - 0x7F] : 0xVV - [0x80 - 0xFF] : 0x00 0xVV - [0x0100 - 0x7FFF] : 0xVV 0xVV - [0x8000 - 0xFFFF] : 0x00 0xVV 0xVV - [0x010000 - 0x7FFFFF] : 0xVV 0xVV 0xVV - [0x800000 - 0xFFFFFF] : 0x00 0xVV 0xVV 0xVV - [0x01000000 - 0x7FFFFFFF] : 0xVV 0xVV 0xVV 0xVV 2) Negative number - (~value) + 1

Parameters:
value - The value to store in a byte array
Returns:
The byte array representing the value.

getBytes

public static byte[] getBytes(long value)
Utility function that return a byte array representing the Value. We must respect the ASN.1 BER encoding scheme :
1) positive integer
- [0 - 0x7F] : 0xVV
- [0x80 - 0xFF] : 0x00 0xVV
- [0x0100 - 0x7FFF] : 0xVV 0xVV
- [0x8000 - 0xFFFF] : 0x00 0xVV 0xVV
- [0x010000 - 0x7FFFFF] : 0xVV 0xVV 0xVV
- [0x800000 - 0xFFFFFF] : 0x00 0xVV 0xVV 0xVV
- [0x01000000 - 0x7FFFFFFF] : 0xVV 0xVV 0xVV 0xVV
2) Negative number - (~value) + 1
They are encoded following the table (the
encode bytes are those enclosed by squared braquets) :

-1 -> FF FF FF FF FF FF FF [FF]
-127 -> FF FF FF FF FF FF FF [81]
-128 -> FF FF FF FF FF FF FF [80]
-129 -> FF FF FF FF FF FF [FF 7F]
-255 -> FF FF FF FF FF FF [FF 01]
-256 -> FF FF FF FF FF FF [FF 00]
-257 -> FF FF FF FF FF FF [FE FF]
-32767 -> FF FF FF FF FF FF [80 01]
-32768 -> FF FF FF FF FF FF [80 00]
-32769 -> FF FF FF FF FF [FF 7F FF]
-65535 -> FF FF FF FF FF [FF 00 01]
-65536 -> FF FF FF FF FF [FF 00 00]
-65537 -> FF FF FF FF FF [FE FF FF]
-8388607 -> FF FF FF FF FF [80 00 01]
-8388608 -> FF FF FF FF FF [80 00 00]
-8388609 -> FF FF FF FF [FF 7F FF FF]
-16777215 -> FF FF FF FF [FF 00 00 01]
-16777216 -> FF FF FF FF [FF 00 00 00]
-16777217 -> FF FF FF FF [FE FF FF FF]
-2147483647 -> FF FF FF FF [80 00 00 01]
-2147483648 -> FF FF FF FF [80 00 00 00]
-2147483649 -> FF FF FF [FF 7F FF FF FF]
-4294967295 -> FF FF FF [FF 00 00 00 01]
-4294967296 -> FF FF FF [FF 00 00 00 00]
-4294967297 -> FF FF FF [FE FF FF FF FF]
-549755813887 -> FF FF FF [80 00 00 00 01]
-549755813888 -> FF FF FF [80 00 00 00 00]
-549755813889 -> FF FF [FF 7F FF FF FF FF]
-1099511627775 -> FF FF [FF 00 00 00 00 01]
-1099511627776 -> FF FF [FF 00 00 00 00 00]
-1099511627777 -> FF FF [FE FF FF FF FF FF]
-140737488355327 -> FF FF [80 00 00 00 00 01]
-140737488355328 -> FF FF [80 00 00 00 00 00]
-140737488355329 -> FF [FF 7F FF FF FF FF FF]
-281474976710655 -> FF [FF 00 00 00 00 00 01]
-281474976710656 -> FF [FF 00 00 00 00 00 00]
-281474976710657 -> FF [FE FF FF FF FF FF FF]
-36028797018963967 -> FF [80 00 00 00 00 00 01]
-36028797018963968 -> FF [80 00 00 00 00 00 00]
-36028797018963969 -> [FF 7F FF FF FF FF FF FF]
-72057594037927935 -> [FF 00 00 00 00 00 00 01]
-72057594037927936 -> [FF 00 00 00 00 00 00 00]
-72057594037927937 -> [FE FF FF FF FF FF FF FF]
-9223372036854775807 -> [80 00 00 00 00 00 00 01]
-9223372036854775808 -> [80 00 00 00 00 00 00 00]

Parameters:
value - The value to store in a byte array
Returns:
The byte array representing the value.

encode

public static void encode(java.nio.ByteBuffer buffer,
                          java.lang.String string)
                   throws EncoderException
Encode a String value

Parameters:
buffer - The PDU in which the value will be put
string - The String to be encoded. It is supposed to be UTF-8
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          BitString bitString)
                   throws EncoderException
Encode a BIT STRING value

Parameters:
buffer - The PDU in which the value will be put
bitString - The BitString to be encoded.
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          byte[] bytes)
                   throws EncoderException
Encode an OctetString value

Parameters:
buffer - The PDU in which the value will be put
bytes - The bytes to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          OID oid)
                   throws EncoderException
Encode an OID value

Parameters:
buffer - The PDU in which the value will be put
oid - The OID to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          int value)
                   throws EncoderException
Encode an integer value

Parameters:
buffer - The PDU in which the value will be put
value - The integer to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          long value)
                   throws EncoderException
Encode a long value

Parameters:
buffer - The PDU in which the value will be put
value - The long to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          byte tag,
                          int value)
                   throws EncoderException
Encode an integer value

Parameters:
buffer - The PDU in which the value will be put
tag - The tag if it's not an UNIVERSAL one
value - The integer to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encodeEnumerated

public static void encodeEnumerated(java.nio.ByteBuffer buffer,
                                    int value)
                             throws EncoderException
Encode an enumerated value

Parameters:
buffer - The PDU in which the value will be put
value - The integer to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

encode

public static void encode(java.nio.ByteBuffer buffer,
                          boolean bool)
                   throws EncoderException
Encode a boolean value

Parameters:
buffer - The PDU in which the value will be put
bool - The boolean to be encoded
Throws:
EncoderException - if the PDU in which the value should be encoded is two small

toString

public java.lang.String toString()
Return a string representing the Value

Overrides:
toString in class java.lang.Object
Returns:
A string representing the value


Copyright © 2003-2011 Apache Software Foundation. All Rights Reserved.