org.apache.tomcat.util.buf
Class MessageBytes

java.lang.Object
  extended byorg.apache.tomcat.util.buf.MessageBytes
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

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

Nested Class Summary
static class MessageBytes.MessageBytesFactory
           
 
Field Summary
static int T_BYTES
          getType() is T_STR if the the object used to create the MessageBytes was a byte[]
static int T_CHARS
          getType() is T_STR 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
 
Constructor Summary
MessageBytes()
          Deprecated. Use static newInstance() in order to allow future hooks.
 
Method Summary
 void duplicate(MessageBytes src)
          Copy the src into this MessageBytes, allocating more space if needed
 boolean equals(MessageBytes mb)
           
 boolean equals(java.lang.String s)
          Compares the message bytes to the specified String object.
 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.
 MessageBytes getClone()
           
 int getInt()
          Convert the buffer to an int, cache the value
 int getLength()
          Returns the length of the original buffer.
 long getLong()
          Convert the buffer to an long, cache the value
 java.lang.String getString()
          Returns the string value.
 long getTime()
          Deprecated. The buffer are general purpose, caching for headers should be done in headers
 int getType()
          Return the type of the original content.
 int hashCode()
           
 int indexOf(char c)
           
 int indexOf(char c, int starting)
          Returns true if the message bytes starts with the specified string.
 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 resetStringValue()
          Remove the cached string value.
 void setBytes(byte[] b, int off, int len)
          Sets the content to the specified subarray of bytes.
 void setCaseSenitive(boolean b)
          Configure the case sensitivity
 void setChars(char[] c, int off, int len)
          Sets the content to be a char[]
 void setCharset(java.nio.charset.Charset charset)
          Set the encoding.
static void setFactory(MessageBytes.MessageBytesFactory mbf)
           
 void setInt(int i)
          Set the buffer to the representation of an int
 void setLong(long l)
          Set the buffer to the representation of an long
 void setString(java.lang.String s)
          Set the content to be a string
 void setTime(long t)
           
 void setTime(long t, java.text.DateFormat df)
          Deprecated. The buffer are general purpose, caching for headers should be done in headers. The second parameter allows us to pass a date format instance to avoid synchronization problems.
 boolean startsWith(java.lang.String s)
          Returns true if the message bytes starts with the specified string.
 boolean startsWithIgnoreCase(java.lang.String s, int pos)
          Returns true if the message bytes starts with the specified string.
 void toBytes()
          Unimplemented yet.
 void toChars()
          Convert to char[] and fill the CharChunk.
 java.lang.String toString()
          Compute the string value
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

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_STR 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_STR if the the object used to create the MessageBytes was a char[]

See Also:
Constant Field Values
Constructor Detail

MessageBytes

public MessageBytes()
Deprecated. Use static newInstance() in order to allow future hooks.

Creates a new, uninitialized MessageBytes object.

Method Detail

newInstance

public static MessageBytes newInstance()
Construct a new MessageBytes instance


setCaseSenitive

public void setCaseSenitive(boolean b)
Configure the case sensitivity


getClone

public MessageBytes getClone()

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 bytes
off - the start offset of the bytes
len - the length of the bytes

setCharset

public void setCharset(java.nio.charset.Charset charset)
Set the encoding. If the object was constructed from bytes[]. any previous conversion is reset. If no encoding is set, we'll use 8859-1.


setChars

public void setChars(char[] c,
                     int off,
                     int len)
Sets the content to be a char[]

Parameters:
c - the bytes
off - the start offset of the bytes
len - the length of the bytes

resetStringValue

public void resetStringValue()
Remove the cached string value. Use it after a conversion on the byte[] or after the encoding is changed XXX Is this needed ?


setString

public void setString(java.lang.String s)
Set the content to be a string


toString

public java.lang.String toString()
Compute the string value


getType

public int getType()
Return the type of the original content. Can be T_STR, T_BYTES, T_CHARS or T_NULL


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.


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.


getString

public java.lang.String getString()
Returns the string value. Valid only if T_STR or after a conversion was made.


toBytes

public void toBytes()
Unimplemented yet. 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.


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(MessageBytes mb)

startsWith

public boolean startsWith(java.lang.String s)
Returns true if the message bytes starts with the specified string.

Parameters:
s - the string

startsWithIgnoreCase

public boolean startsWithIgnoreCase(java.lang.String s,
                                    int pos)
Returns true if the message bytes starts with the specified string.

Parameters:
s - the string
pos - The start position

hashCode

public int hashCode()

indexOf

public int indexOf(char c)

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)

indexOf

public int indexOf(char c,
                   int starting)
Returns true if the message bytes starts with the specified string.

Parameters:
c - the character
starting - The start position

duplicate

public void duplicate(MessageBytes src)
               throws java.io.IOException
Copy the src into this MessageBytes, allocating more space if needed

Throws:
java.io.IOException

setTime

public void setTime(long t,
                    java.text.DateFormat df)
Deprecated. The buffer are general purpose, caching for headers should be done in headers. The second parameter allows us to pass a date format instance to avoid synchronization problems.


setTime

public void setTime(long t)

setInt

public void setInt(int i)
Set the buffer to the representation of an int


setLong

public void setLong(long l)
Set the buffer to the representation of an long


getTime

public long getTime()
Deprecated. The buffer are general purpose, caching for headers should be done in headers


getInt

public int getInt()
Convert the buffer to an int, cache the value


getLong

public long getLong()
Convert the buffer to an long, cache the value


setFactory

public static void setFactory(MessageBytes.MessageBytesFactory mbf)


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.