Class CharChunk

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

public final class CharChunk extends AbstractChunk implements CharSequence
Utilities to manipulate char chunks. While String is the easiest way to manipulate chars ( search, substrings, etc), it is known to not be the most efficient solution - Strings are designed as immutable and secure objects.
Author:
dac@sun.com, James Todd [gonzo@sun.com], Costin Manolache, Remy Maucherat
See Also:
  • Constructor Details

    • CharChunk

      public CharChunk()
      Creates a new, uninitialized CharChunk object.
    • CharChunk

      public CharChunk(int initial)
  • Method Details

    • clone

      public Object clone() throws CloneNotSupportedException
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException
    • allocate

      public void allocate(int initial, int limit)
    • setChars

      public void setChars(char[] c, int off, int len)
      Sets the buffer to the specified subarray of characters.
      Parameters:
      c - the characters
      off - the start offset of the characters
      len - the length of the characters
    • getChars

      public char[] getChars()
      Returns:
      the buffer.
    • getBuffer

      public char[] getBuffer()
      Returns:
      the buffer.
    • setCharInputChannel

      public void setCharInputChannel(CharChunk.CharInputChannel in)
      When the buffer is empty, read the data from the input channel.
      Parameters:
      in - The input channel
    • setCharOutputChannel

      public void setCharOutputChannel(CharChunk.CharOutputChannel out)
      When the buffer is full, write the data to the output channel. Also used when large amount of data is appended. If not set, the buffer will grow to the limit.
      Parameters:
      out - The output channel
    • append

      public void append(char c) throws IOException
      Throws:
      IOException
    • append

      public void append(CharChunk src) throws IOException
      Throws:
      IOException
    • append

      public void append(char[] src, int off, int len) throws IOException
      Add data to the buffer.
      Parameters:
      src - Char array
      off - Offset
      len - Length
      Throws:
      IOException - Writing overflow data to the output channel failed
    • append

      public void append(String s) throws IOException
      Append a string to the buffer.
      Parameters:
      s - The string
      Throws:
      IOException - Writing overflow data to the output channel failed
    • append

      public void append(String s, int off, int len) throws IOException
      Append a string to the buffer.
      Parameters:
      s - The string
      off - Offset
      len - Length
      Throws:
      IOException - Writing overflow data to the output channel failed
    • substract

      @Deprecated public int substract() throws IOException
      Deprecated.
      Throws:
      IOException
    • subtract

      public int subtract() throws IOException
      Throws:
      IOException
    • substract

      @Deprecated public int substract(char[] dest, int off, int len) throws IOException
      Deprecated.
      Throws:
      IOException
    • subtract

      public int subtract(char[] dest, int off, int len) throws IOException
      Throws:
      IOException
    • flushBuffer

      public void flushBuffer() throws IOException
      Send the buffer to the sink. Called by append() when the limit is reached. You can also call it explicitly to force the data to be written.
      Throws:
      IOException - Writing overflow data to the output channel failed
    • makeSpace

      public void makeSpace(int count)
      Make space for len chars. If len is small, allocate a reserve space too. Never grow bigger than the limit or AbstractChunk.ARRAY_MAX_SIZE.
      Parameters:
      count - The size
    • toString

      public String toString()
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class Object
    • toStringInternal

      public String toStringInternal()
    • equals

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

      public boolean equals(char[] b2, int off2, int len2)
    • startsWith

      public boolean startsWith(String s)
      Parameters:
      s - The string
      Returns:
      true if the message bytes starts with the specified string.
    • startsWithIgnoreCase

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

      public boolean endsWith(String s)
      Parameters:
      s - The string
      Returns:
      true if the message bytes end with the specified string.
    • getBufferElement

      protected int getBufferElement(int index)
      Specified by:
      getBufferElement in class AbstractChunk
    • indexOf

      public int indexOf(char c)
    • indexOf

      public int indexOf(char c, int starting)
      Returns the first instance of the given character in this CharChunk starting at the specified char. If the character is not found, -1 is returned.
      Parameters:
      c - The character
      starting - The start position
      Returns:
      The position of the first instance of the character or -1 if the character is not found.
    • indexOf

      public static int indexOf(char[] chars, int start, int end, char s)
      Returns the first instance of the given character in the given char array between the specified start and end.
      Parameters:
      chars - The array to search
      start - The point to start searching from in the array
      end - The point to stop searching in the array
      s - The character to search for
      Returns:
      The position of the first instance of the character or -1 if the character is not found.
    • charAt

      public char charAt(int index)
      Specified by:
      charAt in interface CharSequence
    • subSequence

      public CharSequence subSequence(int start, int end)
      Specified by:
      subSequence in interface CharSequence
    • length

      public int length()
      Specified by:
      length in interface CharSequence
    • setOptimizedWrite

      @Deprecated public void setOptimizedWrite(boolean optimizedWrite)
      Deprecated.
      Unused code. This is now a NO-OP and will be removed without replacement in Tomcat 10.
      NO-OP.
      Parameters:
      optimizedWrite - Ignored