Class MessageBytes

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

public final class MessageBytes extends Object implements Cloneable, 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:
  • Field Details

    • T_NULL

      public static final int T_NULL
      See Also:
    • 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:
    • 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:
    • 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:
    • EMPTY_CHAR_ARRAY

      public static final char[] EMPTY_CHAR_ARRAY
  • Method Details

    • newInstance

      public static MessageBytes newInstance()
      Construct a new MessageBytes instance.
      Returns:
      the instance
    • clone

      public Object clone() throws CloneNotSupportedException
      Overrides:
      clone in class Object
      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 bytes
      off - the start offset of the bytes
      len - 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 chars
      off - the start offset of the chars
      len - the length of the chars
    • setString

      public void setString(String s)
      Set the content to be a string
      Parameters:
      s - The string
    • toString

      public String toString()
      Compute the string value.
      Overrides:
      toString in class Object
      Returns:
      the string
    • toStringType

      public String 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

      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 String getString()
      Returns the string value. Valid only if T_STR or after a conversion was made.
      Returns:
      the string
    • getCharset

      public Charset getCharset()
      Returns:
      the Charset used for string<->byte conversions.
    • setCharset

      public void setCharset(Charset charset)
      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

      public boolean equals(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(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(Object obj)
      Overrides:
      equals in class Object
    • equals

      public boolean equals(MessageBytes mb)
    • startsWithIgnoreCase

      public boolean startsWithIgnoreCase(String s, int pos)
      Parameters:
      s - the string
      pos - The start position
      Returns:
      true if the message bytes starts with the specified string.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • indexOf

      public int indexOf(String s, int starting)
    • indexOf

      public int indexOf(String s)
    • indexOfIgnoreCase

      public int indexOfIgnoreCase(String s, int starting)
    • duplicate

      public void duplicate(MessageBytes src) throws IOException
      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