Class DITCacheMap<T>

  • Type Parameters:
    T - arbitrary object type.
    All Implemented Interfaces:
    Map<Dn,​T>

    public final class DITCacheMap<T>
    extends AbstractMap<Dn,​T>
    The DITCacheMap class implements custom Map for structural storage of arbitrary objects in Directory Information Tree (DIT) like structure.

    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 : object3
     
    then invoking a subtree method on this Map with any of these keys:
     ou=Objects,dc=example,dc=com
     dc=example,dc=com
     dc=com
     
    would 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.

    • Constructor Detail

      • DITCacheMap

        public DITCacheMap()
        Default constructor.
    • Method Detail

      • getBaseDn

        public Dn getBaseDn​(Dn entryDn)
        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.
      • getSubtreeValues

        public Collection<T> getSubtreeValues​(Dn key)
        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

        public List<Dn> getChildrenDns​(Dn key,
                                       long maxNumberOfChildren)
        Returns the list of the children's DNs, size bounded. To return the whole list, maxNumberOfChildren should be 0.
        Parameters:
        key - the parent DN
        maxNumberOfChildren - the maximum number of children to return, 0 for all
        Returns:
        the list of children dn
      • hasChildren

        public boolean hasChildren​(Dn key)
        Returns true 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
      • containsSubtree

        public boolean containsSubtree​(Dn key)
        Returns true 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

        public boolean removeSubtree​(Dn key,
                                     Collection<? super T> removedValues)
        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, or null.
        Returns:
        true if the map changed as a result of calling this method, false otherwise.