# Class StringCache

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

public class StringCache extends Object
This class implements a String cache for ByteChunk and CharChunk.

Author:
  Remy Maucherat

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected static class`
  `StringCache.ByteEntry`
  `protected static class`
  `StringCache.CharEntry`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static int`
  `accessCount`
  Access count.
  `protected static StringCache.ByteEntry[]`
  `bcCache`
  Cache for byte chunk.
  `protected static int`
  `bcCount`
  toString count for byte chunk.
  `protected static final HashMap<StringCache.ByteEntry, int[]>`
  `bcStats`
  Statistics hash map for byte chunk.
  `protected static boolean`
  `byteEnabled`
  Enabled ?
  `protected static int`
  `cacheSize`
  `protected static StringCache.CharEntry[]`
  `ccCache`
  Cache for char chunk.
  `protected static int`
  `ccCount`
  toString count for char chunk.
  `protected static final HashMap<StringCache.CharEntry, int[]>`
  `ccStats`
  Statistics hash map for char chunk.
  `protected static boolean`
  `charEnabled`
  `protected static int`
  `hitCount`
  Hit count.
  `protected static final int`
  `maxStringSize`
  `protected static int`
  `trainThreshold`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StringCache()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected static int`
  `compare(ByteChunk name, byte[] compareTo)`
  Compare given byte chunk with byte array.
  `protected static int`
  `compare(CharChunk name, char[] compareTo)`
  Compare given char chunk with char array.
  `protected static String`
  `find(ByteChunk name, CodingErrorAction malformedInputAction, CodingErrorAction unmappableCharacterAction)`
  Find an entry given its name in the cache and return the associated String.
  `protected static String`
  `find(CharChunk name)`
  Find an entry given its name in the cache and return the associated String.
  `protected static int`
  `findClosest(ByteChunk name, StringCache.ByteEntry[] array, int len)`
  Find an entry given its name in a sorted array of map elements.
  `protected static int`
  `findClosest(CharChunk name, StringCache.CharEntry[] array, int len)`
  Find an entry given its name in a sorted array of map elements.
  `int`
  `getAccessCount()`
  `boolean`
  `getByteEnabled()`
  `int`
  `getCacheSize()`
  `boolean`
  `getCharEnabled()`
  `int`
  `getHitCount()`
  `int`
  `getTrainThreshold()`
  `void`
  `reset()`
  `void`
  `setByteEnabled(boolean byteEnabled)`
  `void`
  `setCacheSize(int cacheSize)`
  `void`
  `setCharEnabled(boolean charEnabled)`
  `void`
  `setTrainThreshold(int trainThreshold)`
  `static String`
  `toString(ByteChunk bc)`
  `static String`
  `toString(ByteChunk bc, CodingErrorAction malformedInputAction, CodingErrorAction unmappableCharacterAction)`
  `static String`
  `toString(CharChunk cc)`

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

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

- ## Field Details

  - ### byteEnabled

    protected static boolean byteEnabled
    Enabled ?

  - ### charEnabled

    protected static boolean charEnabled

  - ### trainThreshold

    protected static int trainThreshold

  - ### cacheSize

    protected static int cacheSize

  - ### maxStringSize

    protected static final int maxStringSize

  - ### bcStats

    protected static final HashMap<StringCache.ByteEntry, int[]> bcStats
    Statistics hash map for byte chunk.

  - ### bcCount

    protected static int bcCount
    toString count for byte chunk.

  - ### bcCache

    protected static volatile StringCache.ByteEntry[] bcCache
    Cache for byte chunk.

  - ### ccStats

    protected static final HashMap<StringCache.CharEntry, int[]> ccStats
    Statistics hash map for char chunk.

  - ### ccCount

    protected static int ccCount
    toString count for char chunk.

  - ### ccCache

    protected static volatile StringCache.CharEntry[] ccCache
    Cache for char chunk.

  - ### accessCount

    protected static int accessCount
    Access count.

  - ### hitCount

    protected static int hitCount
    Hit count.

- ## Constructor Details

  - ### StringCache

    public StringCache()

- ## Method Details

  - ### getCacheSize

    public int getCacheSize()
    Returns:
      Returns the cacheSize.

  - ### setCacheSize

    public void setCacheSize(int cacheSize)
    Parameters:
      `cacheSize` - The cacheSize to set.

  - ### getByteEnabled

    public boolean getByteEnabled()
    Returns:
      Returns the enabled.

  - ### setByteEnabled

    public void setByteEnabled(boolean byteEnabled)
    Parameters:
      `byteEnabled` - The enabled to set.

  - ### getCharEnabled

    public boolean getCharEnabled()
    Returns:
      Returns the enabled.

  - ### setCharEnabled

    public void setCharEnabled(boolean charEnabled)
    Parameters:
      `charEnabled` - The enabled to set.

  - ### getTrainThreshold

    public int getTrainThreshold()
    Returns:
      Returns the trainThreshold.

  - ### setTrainThreshold

    public void setTrainThreshold(int trainThreshold)
    Parameters:
      `trainThreshold` - The trainThreshold to set.

  - ### getAccessCount

    public int getAccessCount()
    Returns:
      Returns the accessCount.

  - ### getHitCount

    public int getHitCount()
    Returns:
      Returns the hitCount.

  - ### reset

    public void reset()

  - ### toString

    public static String toString(ByteChunk bc)

  - ### toString

    public static String toString(ByteChunk bc, CodingErrorAction malformedInputAction, CodingErrorAction unmappableCharacterAction) throws CharacterCodingException
    Throws:
      `CharacterCodingException`

  - ### toString

    public static String toString(CharChunk cc)

  - ### compare

    protected static int compare(ByteChunk name, byte[] compareTo)
    Compare given byte chunk with byte array.
    Parameters:
      `name` - The name to compare
      `compareTo` - The compared to data
    Returns:
      -1, 0 or +1 if inferior, equal, or superior to the String.

  - ### find

    protected static String find(ByteChunk name, CodingErrorAction malformedInputAction, CodingErrorAction unmappableCharacterAction)
    Find an entry given its name in the cache and return the associated String.
    Parameters:
      `name` - The name to find
      `malformedInputAction` - Action to take if a malformed input is encountered
      `unmappableCharacterAction` - Action to take if an unmappable character is encountered
    Returns:
      the corresponding value

  - ### findClosest

    protected static int findClosest(ByteChunk name, StringCache.ByteEntry[] array, int len)
    Find an entry given its name in a sorted array of map elements. This will return the index for the closest inferior or equal item in the given array.
    Parameters:
      `name` - The name to find
      `array` - The array in which to look
      `len` - The effective length of the array
    Returns:
      the position of the best match

  - ### compare

    protected static int compare(CharChunk name, char[] compareTo)
    Compare given char chunk with char array.
    Parameters:
      `name` - The name to compare
      `compareTo` - The compared to data
    Returns:
      -1, 0 or +1 if inferior, equal, or superior to the String.

  - ### find

    protected static String find(CharChunk name)
    Find an entry given its name in the cache and return the associated String.
    Parameters:
      `name` - The name to find
    Returns:
      the corresponding value

  - ### findClosest

    protected static int findClosest(CharChunk name, StringCache.CharEntry[] array, int len)
    Find an entry given its name in a sorted array of map elements. This will return the index for the closest inferior or equal item in the given array.
    Parameters:
      `name` - The name to find
      `array` - The array in which to look
      `len` - The effective length of the array
    Returns:
      the position of the best match