Class DITCacheMap<T>
- Type Parameters:
T
- arbitrary object type.
This Map intended usage is for caching various server objects which can be subject to subtree operations like retrieval or removal of all objects under a specific DN. While using a regular Map it would require the entire Map iteration to achieve, this Map implementation maintains such internal structure that subtree operations are more efficient and do not require iterations over the entire map, instead additional subtree operations methods are provided by this Map to do just that.
API wise it behaves exactly like a regular Map implementation except for providing additional subtree methods. All required linkage and structuring is performed within this Map implementation itself and not exposed via the API in any way. For example, putting these key/value pairs:
cn=Object1,ou=Objects,dc=example,dc=com : object1 cn=Object2,ou=Objects,dc=example,dc=com : object2 cn=Object3,ou=Objects,dc=example,dc=com : object3then invoking a subtree method on this Map with any of these keys:
ou=Objects,dc=example,dc=com dc=example,dc=com dc=comwould bring all three objects previously stored in this map into subtree operation scope. Standard Map API methods can only work with the objects previously stored in this map explicitly.
Note that this Map implementation is not synchronized.
-
Nested Class Summary
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> -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionchildrenIterator
(Dn baseDn) Returns a filtered-view of this map containing only the immediate children of base-dn.void
clear()
boolean
containsKey
(Object key) boolean
containsSubtree
(Dn key) Returnstrue
if there are stored objects associated with the subtree having the provided base DN.boolean
containsValue
(Object value) entrySet()
Find the Base DN of the provided DN.getChildrenDns
(Dn key, long maxNumberOfChildren) Returns the list of the children's DNs, size bounded.getSubtreeValues
(Dn key) Returns values from the stored objects associated with the subtree having the provided base DN.boolean
hasChildren
(Dn key) Returnstrue
if there are objects below the DN, excluding the DN itself.boolean
isEmpty()
void
boolean
removeSubtree
(Dn key, Collection<? super T> removedValues) Removes the stored objects associated with the subtree having the provided base DN.int
size()
Methods inherited from class java.util.AbstractMap
clone, equals, hashCode, keySet, toString, values
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
DITCacheMap
public DITCacheMap()Default constructor.
-
-
Method Details
-
size
public int size() -
isEmpty
public boolean isEmpty() -
containsKey
- Specified by:
containsKey
in interfaceMap<Dn,
T> - Overrides:
containsKey
in classAbstractMap<Dn,
T>
-
containsValue
- Specified by:
containsValue
in interfaceMap<Dn,
T> - Overrides:
containsValue
in classAbstractMap<Dn,
T>
-
get
-
getBaseDn
Find the Base DN of the provided DN.- Parameters:
entryDn
- The DN of the entry for which to retrieve the corresponding base DN.- Returns:
- The base DN if found,
null
otherwise.
-
childrenIterator
Returns a filtered-view of this map containing only the immediate children of base-dn.- Parameters:
baseDn
- The base-dn- Returns:
- A read-only
Iterator
on this map returning only immediate children of baseDn. InvokingIterator.remove()
will throw anUnsupportedOperationException
.
-
getSubtreeValues
Returns values from the stored objects associated with the subtree having the provided base DN.- Parameters:
key
- subtree DN.- Returns:
- values from the stored objects associated with the subtree having the provided base DN
-
getChildrenDns
Returns the list of the children's DNs, size bounded. To return the whole list,maxNumberOfChildren
should be 0.- Parameters:
key
- the parent DNmaxNumberOfChildren
- the maximum number of children to return, 0 for all- Returns:
- the list of children dn
-
hasChildren
Returnstrue
if there are objects below the DN, excluding the DN itself.- Parameters:
key
- subtree DN- Returns:
true
if there are objects below the DN, excluding the DN itself
-
put
-
remove
-
containsSubtree
Returnstrue
if there are stored objects associated with the subtree having the provided base DN.- Parameters:
key
- the subtree DN.- Returns:
true
if there are stored objects associated with the subtree having the provided base DN
-
removeSubtree
Removes the stored objects associated with the subtree having the provided base DN.- Parameters:
key
- subtree DN.removedValues
- Collection in which to put the removed elements, ornull
.- Returns:
true
if the map changed as a result of calling this method,false
otherwise.
-
putAll
-
clear
public void clear() -
entrySet
-