# 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