org.apache.openjpa.lib.util.concurrent
Class NullSafeConcurrentHashMap

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by java.util.concurrent.ConcurrentHashMap
          extended by org.apache.openjpa.lib.util.concurrent.NullSafeConcurrentHashMap
All Implemented Interfaces:
java.io.Serializable, java.util.concurrent.ConcurrentMap, java.util.Map
Direct Known Subclasses:
SizedConcurrentHashMap

public class NullSafeConcurrentHashMap
extends java.util.concurrent.ConcurrentHashMap

A subclass of ConcurrentHashMap that allows null keys and values. In exchange, it weakens the contract of putIfAbsent(java.lang.Object, java.lang.Object) and the other concurrent methods added in #ConcurrentHashMap.

Since:
1.1.0
See Also:
Serialized Form

Nested Class Summary
static interface NullSafeConcurrentHashMap.KeyFilter
           
 
Nested classes/interfaces inherited from class java.util.AbstractMap
java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>
 
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K,V>
 
Constructor Summary
NullSafeConcurrentHashMap()
           
NullSafeConcurrentHashMap(int size, float load, int concurrencyLevel)
           
 
Method Summary
 boolean contains(java.lang.Object value)
           
 boolean containsKey(java.lang.Object key)
           
 boolean containsValue(java.lang.Object value)
           
 java.util.Enumeration elements()
           
 java.util.Set entrySet()
           
 java.lang.Object get(java.lang.Object key)
           
 java.util.Enumeration keys()
           
 java.util.Set keySet()
           
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
           
 java.lang.Object putIfAbsent(java.lang.Object key, java.lang.Object value)
           
 java.util.Iterator<java.util.Map.Entry> randomEntryIterator()
          The returned data structure should not be shared among multiple threads.
 java.lang.Object remove(java.lang.Object key)
           
 boolean remove(java.lang.Object key, java.lang.Object value)
           
 java.util.Map.Entry removeRandom()
           
 java.lang.Object replace(java.lang.Object key, java.lang.Object value)
           
 boolean replace(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
           
 java.util.Collection values()
           
 
Methods inherited from class java.util.concurrent.ConcurrentHashMap
clear, isEmpty, putAll, size
 
Methods inherited from class java.util.AbstractMap
clone, equals, hashCode, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Constructor Detail

NullSafeConcurrentHashMap

public NullSafeConcurrentHashMap(int size,
                                 float load,
                                 int concurrencyLevel)

NullSafeConcurrentHashMap

public NullSafeConcurrentHashMap()
Method Detail

removeRandom

public java.util.Map.Entry removeRandom()

randomEntryIterator

public java.util.Iterator<java.util.Map.Entry> randomEntryIterator()
The returned data structure should not be shared among multiple threads.


remove

public java.lang.Object remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map
Overrides:
remove in class java.util.concurrent.ConcurrentHashMap

remove

public boolean remove(java.lang.Object key,
                      java.lang.Object value)
Specified by:
remove in interface java.util.concurrent.ConcurrentMap
Overrides:
remove in class java.util.concurrent.ConcurrentHashMap

replace

public boolean replace(java.lang.Object key,
                       java.lang.Object oldValue,
                       java.lang.Object newValue)
Specified by:
replace in interface java.util.concurrent.ConcurrentMap
Overrides:
replace in class java.util.concurrent.ConcurrentHashMap

replace

public java.lang.Object replace(java.lang.Object key,
                                java.lang.Object value)
Specified by:
replace in interface java.util.concurrent.ConcurrentMap
Overrides:
replace in class java.util.concurrent.ConcurrentHashMap

putIfAbsent

public java.lang.Object putIfAbsent(java.lang.Object key,
                                    java.lang.Object value)
Specified by:
putIfAbsent in interface java.util.concurrent.ConcurrentMap
Overrides:
putIfAbsent in class java.util.concurrent.ConcurrentHashMap

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
Specified by:
put in interface java.util.Map
Overrides:
put in class java.util.concurrent.ConcurrentHashMap

get

public java.lang.Object get(java.lang.Object key)
Specified by:
get in interface java.util.Map
Overrides:
get in class java.util.concurrent.ConcurrentHashMap

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map
Overrides:
containsKey in class java.util.concurrent.ConcurrentHashMap

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map
Overrides:
containsValue in class java.util.concurrent.ConcurrentHashMap

contains

public boolean contains(java.lang.Object value)
Overrides:
contains in class java.util.concurrent.ConcurrentHashMap

elements

public java.util.Enumeration elements()
Overrides:
elements in class java.util.concurrent.ConcurrentHashMap

entrySet

public java.util.Set entrySet()
Specified by:
entrySet in interface java.util.Map
Overrides:
entrySet in class java.util.concurrent.ConcurrentHashMap

keys

public java.util.Enumeration keys()
Overrides:
keys in class java.util.concurrent.ConcurrentHashMap

keySet

public java.util.Set keySet()
Specified by:
keySet in interface java.util.Map
Overrides:
keySet in class java.util.concurrent.ConcurrentHashMap

values

public java.util.Collection values()
Specified by:
values in interface java.util.Map
Overrides:
values in class java.util.concurrent.ConcurrentHashMap