Class ReferenceHashMap
- All Implemented Interfaces:
Serializable,Map,IterableMap,ReferenceMap,SizedMap
- Since:
- 0.4.0
- Author:
- Abe White
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.openjpa.lib.util.collections.AbstractReferenceMap
AbstractReferenceMap.ReferenceEntry<K,V>, AbstractReferenceMap.ReferenceStrength Nested classes/interfaces inherited from class org.apache.openjpa.lib.util.collections.AbstractHashedMap
AbstractHashedMap.EntrySet<K,V>, AbstractHashedMap.EntrySetIterator<K, V>, AbstractHashedMap.HashEntry<K, V>, AbstractHashedMap.HashIterator<K, V>, AbstractHashedMap.HashMapIterator<K, V>, AbstractHashedMap.KeySet<K>, AbstractHashedMap.KeySetIterator<K>, AbstractHashedMap.Values<V>, AbstractHashedMap.ValuesIterator<V> Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object, V extends Object> -
Field Summary
Fields inherited from class org.apache.openjpa.lib.util.collections.AbstractHashedMap
DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD, GETKEY_INVALID, GETVALUE_INVALID, MAXIMUM_CAPACITY, NO_NEXT_ENTRY, NO_PREVIOUS_ENTRY, NULL, REMOVE_INVALID, SETVALUE_INVALID -
Constructor Summary
ConstructorsConstructorDescriptionReferenceHashMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType) ReferenceHashMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, int capacity, float loadFactor) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddMapping(int hashIndex, int hashCode, Object key, Object value) Adds a new key-value mapping into this map.protected AbstractReferenceMap.ReferenceEntrycreateEntry(AbstractHashedMap.HashEntry next, int hashCode, Object key, Object value) Creates a ReferenceEntry instead of a HashEntry.protected voidReplaces the superclass method to read the state of this class.protected voidReplaces the superclass method to store the state of this class.intThe maximum number of entries, or Integer.MAX_VALUE for no limit.booleanisFull()Whether the map is full.voidkeyExpired(Object value) Overridable callback for when a key reference expires.voidoverflowRemoved(Object key, Object value) Overridable callback for when an overflow entry is automatically removed.voidPurge stale entries.voidsetMaxSize(int maxSize) The maximum number of entries, or Integer.MAX_VALUE for no limit.voidvalueExpired(Object key) Overridable callback for when a value reference expires.Methods inherited from class org.apache.openjpa.lib.util.collections.AbstractReferenceMap
clear, containsKey, containsValue, createEntrySetIterator, createKeySetIterator, createValuesIterator, entrySet, get, getEntry, hashEntry, init, isEmpty, isEqualKey, isKeyType, isValueType, keySet, mapIterator, purge, purge, purgeBeforeRead, purgeBeforeWrite, put, remove, size, valuesMethods inherited from class org.apache.openjpa.lib.util.collections.AbstractHashedMap
addEntry, calculateNewCapacity, calculateThreshold, checkCapacity, clone, convertKey, destroyEntry, ensureCapacity, entryHashCode, entryKey, entryNext, entryValue, equals, hash, hashCode, hashIndex, isEqualValue, putAll, removeEntry, removeMapping, reuseEntry, toString, updateEntryMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keySet, merge, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
-
Constructor Details
-
ReferenceHashMap
public ReferenceHashMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType) -
ReferenceHashMap
public ReferenceHashMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, int capacity, float loadFactor)
-
-
Method Details
-
getMaxSize
public int getMaxSize()Description copied from interface:SizedMapThe maximum number of entries, or Integer.MAX_VALUE for no limit.- Specified by:
getMaxSizein interfaceSizedMap
-
setMaxSize
public void setMaxSize(int maxSize) Description copied from interface:SizedMapThe maximum number of entries, or Integer.MAX_VALUE for no limit.- Specified by:
setMaxSizein interfaceSizedMap
-
isFull
public boolean isFull()Description copied from interface:SizedMapWhether the map is full. -
overflowRemoved
Description copied from interface:SizedMapOverridable callback for when an overflow entry is automatically removed.- Specified by:
overflowRemovedin interfaceSizedMap
-
valueExpired
Description copied from interface:ReferenceMapOverridable callback for when a value reference expires.- Specified by:
valueExpiredin interfaceReferenceMap- Parameters:
key- the key for the expired value
-
keyExpired
Description copied from interface:ReferenceMapOverridable callback for when a key reference expires.- Specified by:
keyExpiredin interfaceReferenceMap- Parameters:
value- the value for the expired key
-
removeExpired
public void removeExpired()Description copied from interface:ReferenceMapPurge stale entries.- Specified by:
removeExpiredin interfaceReferenceMap
-
addMapping
Description copied from class:AbstractHashedMapAdds a new key-value mapping into this map.This implementation calls
createEntry(),addEntry()andcheckCapacity(). It also handles changes tomodCountandsize. Subclasses could override to fully control adds to the map.- Overrides:
addMappingin classAbstractHashedMap- Parameters:
hashIndex- the index into the data array to store athashCode- the hash code of the key to addkey- the key to addvalue- the value to add
-
createEntry
protected AbstractReferenceMap.ReferenceEntry createEntry(AbstractHashedMap.HashEntry next, int hashCode, Object key, Object value) Description copied from class:AbstractReferenceMapCreates a ReferenceEntry instead of a HashEntry.- Overrides:
createEntryin classAbstractReferenceMap- Parameters:
next- the next entry in sequencehashCode- the hash code to usekey- the key to storevalue- the value to store- Returns:
- the newly created entry
-
doWriteObject
Description copied from class:AbstractReferenceMapReplaces the superclass method to store the state of this class.Serialization is not one of the JDK's nicest topics. Normal serialization will initialise the superclass before the subclass. Sometimes however, this isn't what you want, as in this case the
put()method on read can be affected by subclass state.The solution adopted here is to serialize the state data of this class in this protected method. This method must be called by the
writeObject()of the first serializable subclass.Subclasses may override if they have a specific field that must be present on read before this implementation will work. Generally, the read determines what must be serialized here, if anything.
- Overrides:
doWriteObjectin classAbstractReferenceMap- Parameters:
out- the output stream- Throws:
IOException- if an error occurs while writing to the stream
-
doReadObject
Description copied from class:AbstractReferenceMapReplaces the superclass method to read the state of this class.Serialization is not one of the JDK's nicest topics. Normal serialization will initialise the superclass before the subclass. Sometimes however, this isn't what you want, as in this case the
put()method on read can be affected by subclass state.The solution adopted here is to deserialize the state data of this class in this protected method. This method must be called by the
readObject()of the first serializable subclass.Subclasses may override if the subclass has a specific field that must be present before
put()orcalculateThreshold()will work correctly.- Overrides:
doReadObjectin classAbstractReferenceMap- Parameters:
in- the input stream- Throws:
ClassNotFoundException- if an object read from the stream can not be loadedIOException- if an error occurs while reading from the stream
-