Package org.apache.tomcat.util.buf
Class MessageBytes
java.lang.Object
org.apache.tomcat.util.buf.MessageBytes
- All Implemented Interfaces:
Serializable,Cloneable
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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final char[]static final intgetType() is T_BYTES if the the object used to create the MessageBytes was a byte[].static final intgetType() is T_CHARS if the the object used to create the MessageBytes was a char[].static final intstatic final intgetType() is T_STR if the the object used to create the MessageBytes was a String. -
Method Summary
Modifier and TypeMethodDescriptionclone()voidduplicate(MessageBytes src) Copy the src into this MessageBytes, allocating more space if needed.booleanbooleanCompares the message bytes to the specified String object.booleanequals(MessageBytes mb) booleanCompares the message bytes to the specified String object.Returns the byte chunk, representing the byte[] and offset/length.Returns the char chunk, representing the char[] and offset/length.intReturns the length of the original buffer.longgetLong()Convert the buffer to a long, cache the value.Returns the string value.intgetType()Return the type of the original content.inthashCode()intintintindexOfIgnoreCase(String s, int starting) booleanisNull()static MessageBytesConstruct a new MessageBytes instance.voidrecycle()Resets the message bytes to an uninitialized (NULL) state.voidsetBytes(byte[] b, int off, int len) Sets the content to the specified subarray of bytes.voidsetChars(char[] c, int off, int len) Sets the content to be a char[]voidsetCharset(Charset charset) Set the Charset used for string<->byte conversions.voidsetLong(long l) Set the buffer to the representation of a long.voidSet the content to be a stringbooleanstartsWithIgnoreCase(String s, int pos) voidtoBytes()Convert to bytes and fill the ByteChunk with the converted value.voidtoChars()Convert to char[] and fill the CharChunk.toString()Compute the string value.Convert to String (if not already of the String type) and then return the String value.
-
Field Details
-
T_NULL
public static final int T_NULL- See Also:
-
T_STR
public static final int T_STRgetType() is T_STR if the the object used to create the MessageBytes was a String.- See Also:
-
T_BYTES
public static final int T_BYTESgetType() is T_BYTES if the the object used to create the MessageBytes was a byte[].- See Also:
-
T_CHARS
public static final int T_CHARSgetType() is T_CHARS if the the object used to create the MessageBytes was a char[].- See Also:
-
EMPTY_CHAR_ARRAY
public static final char[] EMPTY_CHAR_ARRAY
-
-
Method Details
-
newInstance
Construct a new MessageBytes instance.- Returns:
- the instance
-
clone
- Overrides:
clonein classObject- Throws:
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
Set the content to be a string- Parameters:
s- The string
-
toString
Compute the string value. -
toStringType
Convert to String (if not already of the String type) and then return the String value.- Returns:
- The current value as a 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
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
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
Returns the string value. Valid only if T_STR or after a conversion was made.- Returns:
- the string
-
getCharset
- Returns:
- the Charset used for string<->byte conversions.
-
setCharset
Set the Charset used for string<->byte conversions.- Parameters:
charset- The charset
-
toBytes
public void toBytes()Convert to bytes and fill the ByteChunk with the converted value. -
toChars
public void toChars()Convert to char[] and fill the CharChunk.Note: The conversion from bytes is not optimised - it converts to String first. However, Tomcat doesn't call this method to convert from bytes so there is no benefit from optimising that path.
-
getLength
public int getLength()Returns the length of the original buffer.Note: The length in bytes may be different from the length in chars.
- Returns:
- the length
-
equals
Compares the message bytes to the specified String object.- Parameters:
s- the String to compare- Returns:
trueif the comparison succeeded,falseotherwise
-
equalsIgnoreCase
Compares the message bytes to the specified String object.- Parameters:
s- the String to compare- Returns:
trueif the comparison succeeded,falseotherwise
-
equals
-
equals
-
startsWithIgnoreCase
- Parameters:
s- the stringpos- The start position- Returns:
trueif the message bytes starts with the specified string.
-
hashCode
public int hashCode() -
indexOf
-
indexOf
-
indexOfIgnoreCase
-
duplicate
Copy the src into this MessageBytes, allocating more space if needed.- Parameters:
src- The source- Throws:
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. Used for headers conversion.- Returns:
- the long value
-