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 sub array 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.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final char[]
    Empty character array.
    static final int
    getType() is T_BYTES if the object used to create the MessageBytes was a byte[].
    static final int
    getType() is T_CHARS if the object used to create the MessageBytes was a char[].
    static final int
    Type is NULL.
    static final int
    getType() is T_STR if the object used to create the MessageBytes was a String.
  • Method Summary

    Modifier and Type
    Method
    Description
     
    void
    Copy the src into this MessageBytes, allocating more space if needed.
    boolean
     
    boolean
    Compares the message bytes to the specified String object.
    boolean
    Compare this message bytes to another.
    boolean
    Compares 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.
    Return the Charset used for string<->byte conversions.
    int
    Returns the length of the original buffer.
    long
    Convert the buffer to a long, cache the value.
    Returns the string value.
    int
    Return the type of the original content.
    int
     
    int
    Find the index of a string.
    int
    indexOf(String s, int starting)
    Find the index of a string.
    int
    indexOfIgnoreCase(String s, int starting)
    Find the index of a string, ignoring case.
    boolean
    Check if the message bytes is null.
    Construct a new MessageBytes instance.
    void
    Resets the message bytes to an uninitialized (NULL) state.
    void
    setBytes(byte[] b, int off, int len)
    Sets the content to the specified sub array of bytes.
    void
    setChars(char[] c, int off, int len)
    Sets the content to be a char[]
    void
    Set the Charset used for string<->byte conversions.
    void
    setLong(long l)
    Set the buffer to the representation of a long.
    void
    Set the content to be a string
    boolean
    Check if the message bytes starts with the specified string, ignoring case.
    void
    Convert to bytes and fill the ByteChunk with the converted value.
    void
    Convert to char[] and fill the CharChunk.
    Compute the string value.
    Convert to String (if not already of the String type) and then return the String value.

    Methods inherited from class Object

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • T_NULL

      public static final int T_NULL
      Type is NULL.
      See Also:
    • T_STR

      public static final int T_STR
      getType() is T_STR if 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 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 object used to create the MessageBytes was a char[].
      See Also:
    • EMPTY_CHAR_ARRAY

      public static final char[] EMPTY_CHAR_ARRAY
      Empty character 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()
      Check if the message bytes is null.
      Returns:
      true if null
    • 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 sub array 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()
      Return the Charset used for string<->byte conversions.
      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)
      Compare this message bytes to another.
      Parameters:
      mb - the other message bytes
      Returns:
      true if equal
    • startsWithIgnoreCase

      public boolean startsWithIgnoreCase(String s, int pos)
      Check if the message bytes starts with the specified string, ignoring case.
      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)
      Find the index of a string.
      Parameters:
      s - the string
      starting - the starting position
      Returns:
      the index
    • indexOf

      public int indexOf(String s)
      Find the index of a string.
      Parameters:
      s - the string
      Returns:
      the index
    • indexOfIgnoreCase

      public int indexOfIgnoreCase(String s, int starting)
      Find the index of a string, ignoring case.
      Parameters:
      s - the string
      starting - the starting position
      Returns:
      the index
    • 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