Class DefaultMembershipCache

  • All Implemented Interfaces:
    MembershipCache

    public final class DefaultMembershipCache
    extends Object
    implements MembershipCache
    The cache maps a CachedCrowdMembershipCacheKey representing a user (or group) in a particular directory to a Map<String, String> where each entry in the map represents a group that the user (or group) is a member of.

    The key of each Map entry is the lowercase name of the user or child group. The value is the case-preserved actual name of the entity.

    Since:
    3.5
    • Method Detail

      • isUserDirectMember

        public Boolean isUserDirectMember​(long directoryId,
                                          String userName,
                                          String groupName)
      • isUserDirectMember

        public boolean isUserDirectMember​(long directoryId,
                                          String userName,
                                          String groupName,
                                          Supplier<Iterable<String>> groupMembershipSupplier)
        Description copied from interface: MembershipCache
        Returns true if the groupName is in the cached list of parents of the user, false if groupName is not in the list.
        Specified by:
        isUserDirectMember in interface MembershipCache
        groupMembershipSupplier - a Supplier of group names for the user, if not already present in the cache
      • isGroupDirectMember

        public Boolean isGroupDirectMember​(long directoryId,
                                           String groupName,
                                           String parentGroupName)
      • isGroupDirectMember

        public boolean isGroupDirectMember​(long directoryId,
                                           String childGroupName,
                                           String parentGroupName,
                                           Supplier<Iterable<String>> groupMembershipSupplier)
        Description copied from interface: MembershipCache
        Returns true if the parentGroupName is in the cached list of parents of the child group, false if parentGroupName is not in the list,.
        Specified by:
        isGroupDirectMember in interface MembershipCache
        groupMembershipSupplier - a Supplier of parent group names for the group, if not already present in the cache
      • getGroupsForUser

        public List<String> getGroupsForUser​(long directoryId,
                                             String userName)
      • getGroupsForUser

        public List<String> getGroupsForUser​(long directoryId,
                                             String userName,
                                             Supplier<List<String>> valueSupplier)
        Description copied from interface: MembershipCache
        Returns the list of groups names which the named user is a member of in the specified directory.
        Specified by:
        getGroupsForUser in interface MembershipCache
        valueSupplier - a Supplier of group names for the user, if not already present in the cache
      • getGroupsForGroup

        public List<String> getGroupsForGroup​(long directoryId,
                                              String groupName)
        Description copied from interface: MembershipCache
        Returns the list of groups names which the named group is a member of in the specified directory. or null if there is no cached list.
        Specified by:
        getGroupsForGroup in interface MembershipCache
      • getGroupsForGroup

        public List<String> getGroupsForGroup​(long directoryId,
                                              String groupName,
                                              Supplier<List<String>> valueSupplier)
        Description copied from interface: MembershipCache
        Returns the list of groups names which the named group is a member of in the specified directory.
        Specified by:
        getGroupsForGroup in interface MembershipCache
        valueSupplier - a Supplier of the parent groups of the child group, if not already present in the cache.
      • removeUserGroupMemberships

        public void removeUserGroupMemberships​(long directoryId,
                                               String userName)
        Description copied from interface: MembershipCache
        Removes any cached list of user names which are members of the named group in the specified directory. Does nothing if there is no corresponding entry in the cache.
        Specified by:
        removeUserGroupMemberships in interface MembershipCache
      • removeGroupGroupMemberships

        public void removeGroupGroupMemberships​(long directoryId,
                                                String groupName)
        Description copied from interface: MembershipCache
        Removes any cached list of group names which are members of the named group in the specified directory. Does nothing if there is no corresponding entry in the cache.
        Specified by:
        removeGroupGroupMemberships in interface MembershipCache
      • removeAllUserMemberships

        public void removeAllUserMemberships​(long directoryId,
                                             String userName)
        Description copied from interface: MembershipCache
        Removes any entries in the cache which contain the userName in the specified directory.

        This can be a slow operation if the cache is large. This is a trade-off of the cache design, which is optimised for fast retrieval of all parent groups of a user or group.

        Removes any GROUPS_FOR_USER entry in this cache if it contains this group.

        Specified by:
        removeAllUserMemberships in interface MembershipCache
      • removeAllGroupMemberships

        public void removeAllGroupMemberships​(long directoryId,
                                              String groupName)
        Description copied from interface: MembershipCache
        Removes any entries in the cache which contain the groupName in the specified directory.

        This can be a slow operation if the cache is large. This is a trade-off of the cache design, which is optimised for fast retrieval of all parent groups of a user or group.

        Removes any GROUPS_FOR_GROUP entry in this cache for the passed in group. Removes any GROUPS_FOR_USER entry in this cache if it contains this group.

        Specified by:
        removeAllGroupMemberships in interface MembershipCache
      • removeAllDirectoryMemberships

        public void removeAllDirectoryMemberships​(long directoryId)
        Description copied from interface: MembershipCache
        Removes any entries in the cache which relate to the specified directory.

        This can be a slow operation if the cache is large. This is a trade-off of the cache design, which is optimised for fast retrieval of all parent groups of a user or group.

        Specified by:
        removeAllDirectoryMemberships in interface MembershipCache