Class ByteArrayBuilder
- java.lang.Object
-
- org.opends.server.replication.protocol.ByteArrayBuilder
-
public final class ByteArrayBuilder extends Object
Byte array builder class encodes data into byte arrays to send messages over the replication protocol. Built on top ofByteStringBuilder
, it isolates the latter against legacy type conversions from the replication protocol. It exposes a fluent API.
-
-
Constructor Summary
Constructors Constructor Description ByteArrayBuilder()
Constructs a ByteArrayBuilder.ByteArrayBuilder(int capacity)
Constructs a ByteArrayBuilder.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ByteArrayBuilder
appendBoolean(boolean b)
Append a boolean to this ByteArrayBuilder.ByteArrayBuilder
appendByte(int b)
Append a byte to this ByteArrayBuilder.ByteArrayBuilder
appendByteArray(byte[] bytes)
Append all the bytes from the byte array to this ByteArrayBuilder.ByteArrayBuilder
appendCsn(CSN csn, CSN.CsnVersion version)
Append a CSN to this ByteArrayBuilder.ByteArrayBuilder
appendCsnUtf8(CSN csn, CSN.CsnVersion version)
Append a CSN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.ByteArrayBuilder
appendDn(Dn dn)
Append a DN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.ByteArrayBuilder
appendGroupId(com.forgerock.opendj.discovery.GroupId groupId)
Appends the encoded version of aGroupId
to this ByteArrayBuilder.ByteArrayBuilder
appendInt(int i)
Append an int to this ByteArrayBuilder.ByteArrayBuilder
appendIntUtf8(int i)
Append an int to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.ByteArrayBuilder
appendLong(long l)
Append a long to this ByteArrayBuilder.ByteArrayBuilder
appendLongUtf8(long l)
Append a long to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.ByteArrayBuilder
appendRdn(Rdn rdn)
Append an RDN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.ByteArrayBuilder
appendReplicaId(ReplicaId replicaId)
Appends the encoded version of thisReplicaId
to this ByteArrayBuilder.ByteArrayBuilder
appendReplicationServerId(ReplicationServerId replicationServerId)
Appends the encoded version of thisReplicationServerId
to this ByteArrayBuilder.ByteArrayBuilder
appendServerId(ServerId<?> serverId)
Appends a server id.ByteArrayBuilder
appendServerStateMustComeLast(ServerState serverState)
Append the byte representation of a ServerState to this ByteArrayBuilder and then append a final zero byte separator.ByteArrayBuilder
appendShort(int s)
Append a short to this ByteArrayBuilder.ByteArrayBuilder
appendString(String s)
Append a String with a zero separator to this ByteArrayBuilder, or only the zero separator if the string is null or if the string length is zero.ByteArrayBuilder
appendStrings(Collection<String> col)
Append a Collection of Strings to this ByteArrayBuilder.ByteArrayBuilder
appendUUID(UUID uuid)
Append an UUID with a zero separator to this ByteArrayBuilder, or only the zero separator if the UUID isnull
.ByteArrayBuilder
appendZeroTerminatedByteArray(byte[] bytes)
Append all the bytes from the byte array to this ByteArrayBuilder and then append a final zero byte separator for compatibility with legacy implementations.static int
bytes(int nbFields)
Helper method that returns the number of bytes that would be used by the byte fields when appended to a ByteArrayBuilder.static int
csnsV1(int nbFields)
Helper method that returns the number of bytes that would be used by the CSN fields when appended to a ByteArrayBuilder.Asn1Writer
getAsn1Writer()
Returns a new ASN1Writer that will append bytes to this ByteArrayBuilder.static int
shorts(int nbFields)
Helper method that returns the number of bytes that would be used by the short fields when appended to a ByteArrayBuilder.byte[]
toByteArray()
Converts the content of this ByteStringBuilder to a byte array.String
toString()
-
-
-
Method Detail
-
appendBoolean
public ByteArrayBuilder appendBoolean(boolean b)
Append a boolean to this ByteArrayBuilder.- Parameters:
b
- the boolean to append.- Returns:
- this ByteArrayBuilder
-
appendByte
public ByteArrayBuilder appendByte(int b)
Append a byte to this ByteArrayBuilder.- Parameters:
b
- the byte to append.- Returns:
- this ByteArrayBuilder
-
appendShort
public ByteArrayBuilder appendShort(int s)
Append a short to this ByteArrayBuilder.- Parameters:
s
- the short to append.- Returns:
- this ByteArrayBuilder
-
appendInt
public ByteArrayBuilder appendInt(int i)
Append an int to this ByteArrayBuilder.- Parameters:
i
- the long to append.- Returns:
- this ByteArrayBuilder
-
appendLong
public ByteArrayBuilder appendLong(long l)
Append a long to this ByteArrayBuilder.- Parameters:
l
- the long to append.- Returns:
- this ByteArrayBuilder
-
appendIntUtf8
public ByteArrayBuilder appendIntUtf8(int i)
Append an int to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
i
- the int to append.- Returns:
- this ByteArrayBuilder
-
appendLongUtf8
public ByteArrayBuilder appendLongUtf8(long l)
Append a long to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
l
- the long to append.- Returns:
- this ByteArrayBuilder
-
appendStrings
public ByteArrayBuilder appendStrings(Collection<String> col)
Append a Collection of Strings to this ByteArrayBuilder.- Parameters:
col
- the Collection of Strings to append.- Returns:
- this ByteArrayBuilder
-
appendString
public ByteArrayBuilder appendString(String s)
Append a String with a zero separator to this ByteArrayBuilder, or only the zero separator if the string is null or if the string length is zero.- Parameters:
s
- the String to append. Can be null.- Returns:
- this ByteArrayBuilder
-
appendUUID
public ByteArrayBuilder appendUUID(UUID uuid)
Append an UUID with a zero separator to this ByteArrayBuilder, or only the zero separator if the UUID isnull
.- Parameters:
uuid
- the UUID to append. Can benull
.- Returns:
- this ByteArrayBuilder
-
appendGroupId
public ByteArrayBuilder appendGroupId(com.forgerock.opendj.discovery.GroupId groupId)
Appends the encoded version of aGroupId
to this ByteArrayBuilder.- Parameters:
groupId
- the group id to append.- Returns:
- this ByteArrayBuilder
-
appendReplicaId
public ByteArrayBuilder appendReplicaId(ReplicaId replicaId)
Appends the encoded version of thisReplicaId
to this ByteArrayBuilder.- Parameters:
replicaId
- the replica id to append.- Returns:
- this ByteArrayBuilder
-
appendReplicationServerId
public ByteArrayBuilder appendReplicationServerId(ReplicationServerId replicationServerId)
Appends the encoded version of thisReplicationServerId
to this ByteArrayBuilder.- Parameters:
replicationServerId
- the replication server id to append.- Returns:
- this ByteArrayBuilder
-
appendServerId
public ByteArrayBuilder appendServerId(ServerId<?> serverId)
Appends a server id.- Parameters:
serverId
- theServerId
to append.- Returns:
- this ByteArrayBuilder
-
appendCsn
public ByteArrayBuilder appendCsn(CSN csn, CSN.CsnVersion version)
Append a CSN to this ByteArrayBuilder.- Parameters:
csn
- the CSN to append.version
- the CSN version to use for encoding- Returns:
- this ByteArrayBuilder
-
appendCsnUtf8
public ByteArrayBuilder appendCsnUtf8(CSN csn, CSN.CsnVersion version)
Append a CSN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
csn
- the CSN to append.version
- the CSN version to use for encoding.- Returns:
- this ByteArrayBuilder
-
appendDn
public ByteArrayBuilder appendDn(Dn dn)
Append a DN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
dn
- the DN to append.- Returns:
- this ByteArrayBuilder
-
appendRdn
public ByteArrayBuilder appendRdn(Rdn rdn)
Append an RDN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
rdn
- the RDN to append.- Returns:
- this ByteArrayBuilder
-
appendByteArray
public ByteArrayBuilder appendByteArray(byte[] bytes)
Append all the bytes from the byte array to this ByteArrayBuilder.- Parameters:
bytes
- the byte array to append.- Returns:
- this ByteArrayBuilder
-
appendZeroTerminatedByteArray
public ByteArrayBuilder appendZeroTerminatedByteArray(byte[] bytes)
Append all the bytes from the byte array to this ByteArrayBuilder and then append a final zero byte separator for compatibility with legacy implementations.Note: the super long method name it is intentional: nobody will want to use it, which is good because nobody should.
- Parameters:
bytes
- the byte array to append.- Returns:
- this ByteArrayBuilder
-
appendServerStateMustComeLast
public ByteArrayBuilder appendServerStateMustComeLast(ServerState serverState)
Append the byte representation of a ServerState to this ByteArrayBuilder and then append a final zero byte separator.Caution: ServerState MUST be the last field. Because ServerState can contain null character (string termination of replica id string ..) it cannot be decoded using
ByteArrayScanner.nextString()
like the other fields. The only way is to rely on the end of the input buffer: and that forces the ServerState to be the last field. This should be changed if we want to have more than one ServerState field.Note: the super long method name it is intentional: nobody will want to use it, which is good because nobody should.
- Parameters:
serverState
- the ServerState to append.- Returns:
- this ByteArrayBuilder
- See Also:
ByteArrayScanner.nextServerStateMustComeLast()
-
getAsn1Writer
public Asn1Writer getAsn1Writer()
Returns a new ASN1Writer that will append bytes to this ByteArrayBuilder.- Returns:
- a new ASN1Writer that will append bytes to this ByteArrayBuilder.
-
toByteArray
public byte[] toByteArray()
Converts the content of this ByteStringBuilder to a byte array.- Returns:
- the content of this ByteStringBuilder converted to a byte array.
-
bytes
public static int bytes(int nbFields)
Helper method that returns the number of bytes that would be used by the byte fields when appended to a ByteArrayBuilder.- Parameters:
nbFields
- the number of byte fields that will be appended to a ByteArrayBuilder- Returns:
- the number of bytes occupied by the appended byte fields.
-
shorts
public static int shorts(int nbFields)
Helper method that returns the number of bytes that would be used by the short fields when appended to a ByteArrayBuilder.- Parameters:
nbFields
- the number of short fields that will be appended to a ByteArrayBuilder- Returns:
- the number of bytes occupied by the appended short fields.
-
csnsV1
public static int csnsV1(int nbFields)
Helper method that returns the number of bytes that would be used by the CSN fields when appended to a ByteArrayBuilder.- Parameters:
nbFields
- the number of CSN fields that will be appended to a ByteArrayBuilder- Returns:
- the number of bytes occupied by the appended CSN fields.
-
-