Package org.apache.tomcat.util.buf
Class MessageBytes
- java.lang.Object
-
- org.apache.tomcat.util.buf.MessageBytes
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
public final class MessageBytes extends java.lang.Object implements java.lang.Cloneable, java.io.Serializable
This class is used to represent a subarray of bytes in an HTTP message. It represents all request/response elements. The byte/char conversions are delayed and cached. Everything is recyclable. The object can represent a byte[], a char[], or a (sub) String. All operations can be made in case sensitive mode or not.- Author:
- dac@eng.sun.com, James Todd [gonzo@eng.sun.com], Costin Manolache
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static int
T_BYTES
getType() is T_BYTES if the the object used to create the MessageBytes was a byte[]static int
T_CHARS
getType() is T_CHARS if the the object used to create the MessageBytes was a char[]static int
T_NULL
static int
T_STR
getType() is T_STR if the the object used to create the MessageBytes was a String
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
void
duplicate(MessageBytes src)
Copy the src into this MessageBytes, allocating more space if needed.boolean
equals(java.lang.Object obj)
boolean
equals(java.lang.String s)
Compares the message bytes to the specified String object.boolean
equals(MessageBytes mb)
boolean
equalsIgnoreCase(java.lang.String s)
Compares the message bytes to the specified String object.ByteChunk
getByteChunk()
Returns the byte chunk, representing the byte[] and offset/length.CharChunk
getCharChunk()
Returns the char chunk, representing the char[] and offset/length.java.nio.charset.Charset
getCharset()
int
getLength()
Returns the length of the original buffer.long
getLong()
Convert the buffer to a long, cache the value.java.lang.String
getString()
Returns the string value.int
getType()
Return the type of the original content.int
hashCode()
int
indexOf(java.lang.String s)
int
indexOf(java.lang.String s, int starting)
int
indexOfIgnoreCase(java.lang.String s, int starting)
boolean
isNull()
static MessageBytes
newInstance()
Construct a new MessageBytes instance.void
recycle()
Resets the message bytes to an uninitialized (NULL) state.void
setBytes(byte[] b, int off, int len)
Sets the content to the specified subarray of bytes.void
setChars(char[] c, int off, int len)
Sets the content to be a char[]void
setCharset(java.nio.charset.Charset charset)
Set the Charset used for string<->byte conversions.void
setLong(long l)
Set the buffer to the representation of a long.void
setString(java.lang.String s)
Set the content to be a stringboolean
startsWithIgnoreCase(java.lang.String s, int pos)
void
toBytes()
Do a char->byte conversion.void
toChars()
Convert to char[] and fill the CharChunk.java.lang.String
toString()
Compute the string value.
-
-
-
Field Detail
-
T_NULL
public static final int T_NULL
- See Also:
- Constant Field Values
-
T_STR
public static final int T_STR
getType() is T_STR if the the object used to create the MessageBytes was a String- See Also:
- Constant Field Values
-
T_BYTES
public static final int T_BYTES
getType() is T_BYTES if the the object used to create the MessageBytes was a byte[]- See Also:
- Constant Field Values
-
T_CHARS
public static final int T_CHARS
getType() is T_CHARS if the the object used to create the MessageBytes was a char[]- See Also:
- Constant Field Values
-
-
Method Detail
-
newInstance
public static MessageBytes newInstance()
Construct a new MessageBytes instance.- Returns:
- the instance
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
- Overrides:
clone
in classjava.lang.Object
- Throws:
java.lang.CloneNotSupportedException
-
isNull
public boolean isNull()
-
recycle
public void recycle()
Resets the message bytes to an uninitialized (NULL) state.
-
setBytes
public void setBytes(byte[] b, int off, int len)
Sets the content to the specified subarray of bytes.- Parameters:
b
- the bytesoff
- the start offset of the byteslen
- the length of the bytes
-
setChars
public void setChars(char[] c, int off, int len)
Sets the content to be a char[]- Parameters:
c
- the charsoff
- the start offset of the charslen
- the length of the chars
-
setString
public void setString(java.lang.String s)
Set the content to be a string- Parameters:
s
- The string
-
toString
public java.lang.String toString()
Compute the string value.- Overrides:
toString
in classjava.lang.Object
- Returns:
- the string
-
getType
public int getType()
Return the type of the original content. Can be T_STR, T_BYTES, T_CHARS or T_NULL- Returns:
- the type
-
getByteChunk
public ByteChunk getByteChunk()
Returns the byte chunk, representing the byte[] and offset/length. Valid only if T_BYTES or after a conversion was made.- Returns:
- the byte chunk
-
getCharChunk
public CharChunk getCharChunk()
Returns the char chunk, representing the char[] and offset/length. Valid only if T_CHARS or after a conversion was made.- Returns:
- the char chunk
-
getString
public java.lang.String getString()
Returns the string value. Valid only if T_STR or after a conversion was made.- Returns:
- the string
-
getCharset
public java.nio.charset.Charset getCharset()
- Returns:
- the Charset used for string<->byte conversions.
-
setCharset
public void setCharset(java.nio.charset.Charset charset)
Set the Charset used for string<->byte conversions.- Parameters:
charset
- The charset
-
toBytes
public void toBytes()
Do a char->byte conversion.
-
toChars
public void toChars()
Convert to char[] and fill the CharChunk. XXX Not optimized - it converts to String first.
-
getLength
public int getLength()
Returns the length of the original buffer. Note that the length in bytes may be different from the length in chars.- Returns:
- the length
-
equals
public boolean equals(java.lang.String s)
Compares the message bytes to the specified String object.- Parameters:
s
- the String to compare- Returns:
true
if the comparison succeeded,false
otherwise
-
equalsIgnoreCase
public boolean equalsIgnoreCase(java.lang.String s)
Compares the message bytes to the specified String object.- Parameters:
s
- the String to compare- Returns:
true
if the comparison succeeded,false
otherwise
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
equals
public boolean equals(MessageBytes mb)
-
startsWithIgnoreCase
public boolean startsWithIgnoreCase(java.lang.String s, int pos)
- Parameters:
s
- the stringpos
- The start position- Returns:
true
if the message bytes starts with the specified string.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
indexOf
public int indexOf(java.lang.String s, int starting)
-
indexOf
public int indexOf(java.lang.String s)
-
indexOfIgnoreCase
public int indexOfIgnoreCase(java.lang.String s, int starting)
-
duplicate
public void duplicate(MessageBytes src) throws java.io.IOException
Copy the src into this MessageBytes, allocating more space if needed.- Parameters:
src
- The source- Throws:
java.io.IOException
- Writing overflow data to the output channel failed
-
setLong
public void setLong(long l)
Set the buffer to the representation of a long.- Parameters:
l
- The long
-
getLong
public long getLong()
Convert the buffer to a long, cache the value.- Returns:
- the long value
-
-