# Class AbstractChunk

java.lang.Object
org.apache.tomcat.util.buf.AbstractChunk

All Implemented Interfaces:
  `Serializable, Cloneable`

Direct Known Subclasses:
  `ByteChunk, CharChunk`

public abstract class AbstractChunk extends Object implements Cloneable, Serializable
Base class for the *Chunk implementation to reduce duplication.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `ARRAY_MAX_SIZE`
  `protected int`
  `end`
  `protected boolean`
  `hasHashCode`
  `protected boolean`
  `isSet`
  `protected static final StringManager`
  `sm`
  `protected int`
  `start`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractChunk()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract int`
  `getBufferElement(int index)`
  `int`
  `getEnd()`
  `int`
  `getLength()`
  `int`
  `getLimit()`
  `protected int`
  `getLimitInternal()`
  `int`
  `getOffset()`
  Deprecated.
  Unused.
  `int`
  `getStart()`
  `int`
  `hash()`
  `int`
  `hashCode()`
  `int`
  `indexOf(String src, int srcStart, int srcLen, int myOffset)`
  Return the index of the first occurrence of the subsequence of the given String, or -1 if it is not found.
  `boolean`
  `isNull()`
  `void`
  `recycle()`
  Resets the chunk to an uninitialized state.
  `void`
  `setEnd(int end)`
  Set the end position of the data in the buffer.
  `void`
  `setLimit(int limit)`
  Maximum amount of data in this buffer.
  `void`
  `setOffset(int off)`
  Deprecated.
  Unused.
  `void`
  `setStart(int start)`
  Set the start position of the data in the buffer.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### sm

    protected static final StringManager sm

  - ### ARRAY_MAX_SIZE

    public static final int ARRAY_MAX_SIZE
    See Also:
      - Constant Field Values

  - ### hasHashCode

    protected boolean hasHashCode

  - ### isSet

    protected boolean isSet

  - ### start

    protected int start

  - ### end

    protected int end

- ## Constructor Details

  - ### AbstractChunk

    public AbstractChunk()

- ## Method Details

  - ### setLimit

    public void setLimit(int limit)
    Maximum amount of data in this buffer. If -1 or not set, the buffer will grow to {`ARRAY_MAX_SIZE`. 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.
    Parameters:
      `limit` - The new limit

  - ### getLimit

    public int getLimit()
    Returns:
      the maximum amount of data in the buffer, and -1 if it has not been set

  - ### getLimitInternal

    protected int getLimitInternal()

  - ### getStart

    public int getStart()
    Returns:
      the start position of the data in the buffer

  - ### setStart

    public void setStart(int start)
    Set the start position of the data in the buffer.
    Parameters:
      `start` - the new start position

  - ### getEnd

    public int getEnd()
    Returns:
      the end position of the data in the buffer

  - ### setEnd

    public void setEnd(int end)
    Set the end position of the data in the buffer.
    Parameters:
      `end` - the new end position

  - ### getOffset

    @Deprecated public int getOffset()
    Deprecated.
    Unused. This method will be removed in Tomcat 12.
    Returns:
      start

  - ### setOffset

    @Deprecated public void setOffset(int off)
    Deprecated.
    Unused. This method will be removed in Tomcat 12.
    Set start.
    Parameters:
      `off` - the new start

  - ### getLength

    public int getLength()
    Returns:
      the length of the data in the buffer

  - ### isNull

    public boolean isNull()
    Returns:
      `true` if the buffer contains no data

  - ### indexOf

    public int indexOf(String src, int srcStart, int srcLen, int myOffset)
    Return the index of the first occurrence of the subsequence of the given String, or -1 if it is not found.
    Parameters:
      `src` - the String to look for
      `srcStart` - the subsequence start in the String
      `srcLen` - the subsequence length in the String
      `myOffset` - the index on which to start the search in the buffer
    Returns:
      the position of the first character of the first occurrence of the subsequence in the buffer, or -1 if not found

  - ### recycle

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

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### hash

    public int hash()
    Returns:
      the hash code for this buffer

  - ### getBufferElement

    protected abstract int getBufferElement(int index)
    Parameters:
      `index` - the element location in the buffer
    Returns:
      the element