org.apache.tomcat.util.buf
Class CharChunk

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

public final class CharChunk
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable, java.lang.CharSequence

Utilities to manipluate 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 imutable and secure objects.

Author:
dac@sun.com, James Todd [gonzo@sun.com], Costin Manolache, Remy Maucherat
See Also:
Serialized Form

Nested Class Summary
static interface CharChunk.CharInputChannel
           
static interface CharChunk.CharOutputChannel
          When we need more space we'll either grow the buffer ( up to the limit ) or send it to a channel.
 
Constructor Summary
CharChunk()
          Creates a new, uninitialized CharChunk object.
CharChunk(int size)
           
 
Method Summary
 void allocate(int initial, int limit)
           
 void append(char b)
           
 void append(char[] src, int off, int len)
          Add data to the buffer
 void append(CharChunk src)
           
 void append(java.lang.String s)
          Append a string to the buffer
 void append(java.lang.StringBuffer sb)
          Add data to the buffer
 void append(java.lang.String s, int off, int len)
          Append a string to the buffer
 char charAt(int index)
           
 boolean equals(byte[] b2, int off2, int len2)
           
 boolean equals(char[] b2, int off2, int len2)
           
 boolean equals(CharChunk cc)
           
 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.
 void flushBuffer()
           
 char[] getBuffer()
           
 char[] getChars()
           
 CharChunk getClone()
           
 int getEnd()
           
 int getInt()
           
 int getLength()
          Returns the length of the bytes.
 int getLimit()
           
 int getOffset()
           
 int getStart()
          Returns the start offset of the bytes.
 int hash()
           
 int hashIgnoreCase()
           
 int indexOf(char c)
           
static int indexOf(char[] chars, int off, int cend, char qq)
           
 int indexOf(char c, int starting)
          Returns true if the message bytes starts with the specified string.
 int indexOf(java.lang.String src, int srcOff, int srcLen, int myOff)
           
 boolean isNull()
           
 int length()
           
 void recycle()
          Resets the message bytes to an uninitialized state.
 void reset()
           
 void setCharInputChannel(CharChunk.CharInputChannel in)
          When the buffer is empty, read the data from the input channel.
 void setCharOutputChannel(CharChunk.CharOutputChannel out)
          When the buffer is full, write the data to the output channel.
 void setChars(char[] c, int off, int len)
           
 void setEnd(int i)
           
 void setLimit(int limit)
          Maximum amount of data in this buffer.
 void setOffset(int off)
          Returns the start offset of the bytes.
 void setOptimizedWrite(boolean optimizedWrite)
           
 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.
 java.lang.CharSequence subSequence(int start, int end)
           
 int substract()
           
 int substract(char[] src, int off, int len)
           
 int substract(CharChunk src)
           
 java.lang.String toString()
           
 java.lang.String toStringInternal()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CharChunk

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


CharChunk

public CharChunk(int size)
Method Detail

getClone

public CharChunk getClone()

isNull

public boolean isNull()

recycle

public void recycle()
Resets the message bytes to an uninitialized state.


reset

public void reset()

allocate

public void allocate(int initial,
                     int limit)

setOptimizedWrite

public void setOptimizedWrite(boolean optimizedWrite)

setChars

public void setChars(char[] c,
                     int off,
                     int len)

setLimit

public void setLimit(int limit)
Maximum amount of data in this buffer. If -1 or not set, the buffer will grow undefinitely. Can be smaller than the current buffer size ( which will not shrink ). When the limit is reached, the buffer will be flushed ( if out is set ) or throw exception.


getLimit

public int getLimit()

setCharInputChannel

public void setCharInputChannel(CharChunk.CharInputChannel in)
When the buffer is empty, read the data from 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.


getChars

public char[] getChars()

getBuffer

public char[] getBuffer()

getStart

public int getStart()
Returns the start offset of the bytes. For output this is the end of the buffer.


getOffset

public int getOffset()

setOffset

public void setOffset(int off)
Returns the start offset of the bytes.


getLength

public int getLength()
Returns the length of the bytes.


getEnd

public int getEnd()

setEnd

public void setEnd(int i)

append

public void append(char b)
            throws java.io.IOException
Throws:
java.io.IOException

append

public void append(CharChunk src)
            throws java.io.IOException
Throws:
java.io.IOException

append

public void append(char[] src,
                   int off,
                   int len)
            throws java.io.IOException
Add data to the buffer

Throws:
java.io.IOException

append

public void append(java.lang.StringBuffer sb)
            throws java.io.IOException
Add data to the buffer

Throws:
java.io.IOException

append

public void append(java.lang.String s)
            throws java.io.IOException
Append a string to the buffer

Throws:
java.io.IOException

append

public void append(java.lang.String s,
                   int off,
                   int len)
            throws java.io.IOException
Append a string to the buffer

Throws:
java.io.IOException

substract

public int substract()
              throws java.io.IOException
Throws:
java.io.IOException

substract

public int substract(CharChunk src)
              throws java.io.IOException
Throws:
java.io.IOException

substract

public int substract(char[] src,
                     int off,
                     int len)
              throws java.io.IOException
Throws:
java.io.IOException

flushBuffer

public void flushBuffer()
                 throws java.io.IOException
Throws:
java.io.IOException

toString

public java.lang.String toString()
Specified by:
toString in interface java.lang.CharSequence

toStringInternal

public java.lang.String toStringInternal()

getInt

public int getInt()

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(CharChunk cc)

equals

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

equals

public boolean equals(byte[] b2,
                      int off2,
                      int len2)

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

hash

public int hash()

hashIgnoreCase

public int hashIgnoreCase()

indexOf

public int indexOf(char c)

indexOf

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

Parameters:
c - the character

indexOf

public static int indexOf(char[] chars,
                          int off,
                          int cend,
                          char qq)

indexOf

public int indexOf(java.lang.String src,
                   int srcOff,
                   int srcLen,
                   int myOff)

charAt

public char charAt(int index)
Specified by:
charAt in interface java.lang.CharSequence

subSequence

public java.lang.CharSequence subSequence(int start,
                                          int end)
Specified by:
subSequence in interface java.lang.CharSequence

length

public int length()
Specified by:
length in interface java.lang.CharSequence


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