Package org.apache.tomcat.util.buf

# 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:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final char[]`
  `EMPTY_CHAR_ARRAY`
  `static final int`
  `T_BYTES`
  getType() is T_BYTES if the the object used to create the MessageBytes was a byte[].
  `static final int`
  `T_CHARS`
  getType() is T_CHARS if the the object used to create the MessageBytes was a char[].
  `static final int`
  `T_NULL`
  `static final int`
  `T_STR`
  getType() is T_STR if the the object used to create the MessageBytes was a String.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  `void`
  `duplicate(MessageBytes src)`
  Copy the src into this MessageBytes, allocating more space if needed.
  `boolean`
  `equals(Object obj)`
  `boolean`
  `equals(String s)`
  Compares the message bytes to the specified String object.
  `boolean`
  `equals(MessageBytes mb)`
  `boolean`
  `equalsIgnoreCase(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.
  `Charset`
  `getCharset()`
  `int`
  `getLength()`
  Returns the length of the original buffer.
  `long`
  `getLong()`
  Convert the buffer to a long, cache the value.
  `String`
  `getString()`
  Returns the string value.
  `int`
  `getType()`
  Return the type of the original content.
  `int`
  `hashCode()`
  `int`
  `indexOf(String s)`
  `int`
  `indexOf(String s, int starting)`
  `int`
  `indexOfIgnoreCase(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(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(String s)`
  Set the content to be a string
  `boolean`
  `startsWithIgnoreCase(String s, int pos)`
  `void`
  `toBytes()`
  Convert to bytes and fill the ByteChunk with the converted value.
  `void`
  `toChars()`
  Convert to char[] and fill the CharChunk.
  `String`
  `toString()`
  Compute the string value.
  `String`
  `toStringType()`
  Convert to String (if not already of the String type) and then return the String value.

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### 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

  - ### 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