public Map<EntryKey, Rfc4314Rights> ofPositiveNameType(NameType nameType) { return this.entries.entrySet().stream() .filter(entry -> !entry.getKey().isNegative()) .filter(entry -> entry.getKey().getNameType().equals(nameType)) .collect(Guavate.entriesToMap()); } }
public boolean equals(Object o) { if (o instanceof EntryKey) { EntryKey other = (EntryKey) o; return Objects.equals(this.name, other.getName()) && Objects.equals(this.nameType, other.getNameType()) && Objects.equals(this.negative, other.isNegative()); } return false; }
private void updateLookupRight(MailboxSession session, MailboxPath mailboxPath, Stream<Entry> entries) { entries .filter(entry -> !entry.getKey().isNegative()) .filter(entry -> entry.getValue().contains(Right.Lookup)) .forEach(entry -> applyLookupRight(session, mailboxPath, entry)); }
resolveRights(queryKey, groupMembershipResolver, userACL.getEntries(), resourceOwner, resourceOwnerIsGroup, positiveNegativePair); if (queryKey.isNegative()) { return toListRightsArray(positiveNegativePair[NEGATIVE_INDEX]); } else {
/** * What needs to be done for both global ACL and the given mailboxe's ACL. * * @param requestUser * @param groupMembershipResolver * @param entries * @param resourceOwner * @param resourceOwnerIsGroup * @param positiveNegativePair * @throws UnsupportedRightException */ private void resolveRights(EntryKey queryKey, GroupMembershipResolver groupMembershipResolver, Map<EntryKey, Rfc4314Rights> entries, String resourceOwner, boolean resourceOwnerIsGroup, Rfc4314Rights[] positiveNegativePair) throws UnsupportedRightException { if (entries != null) { for (Entry<EntryKey, Rfc4314Rights> entry : entries.entrySet()) { final EntryKey key = entry.getKey(); if (applies(key, queryKey, groupMembershipResolver, resourceOwner, resourceOwnerIsGroup)) { if (key.isNegative()) { positiveNegativePair[NEGATIVE_INDEX] = positiveNegativePair[NEGATIVE_INDEX].union(entry.getValue()); } else { positiveNegativePair[POSITIVE_INDEX] = positiveNegativePair[POSITIVE_INDEX].union(entry.getValue()); } } } } }
private static boolean isSupported(EntryKey key) { if (key.isNegative()) { LOGGER.info("Negative keys are not supported"); return false; } if (key.equals(MailboxACL.OWNER_KEY)) { return false; } if (key.getNameType() != MailboxACL.NameType.user) { LOGGER.info("{} is not supported. Only 'user' is.", key.getNameType()); return false; } return true; }
private boolean hasPositiveUserKey(MailboxACL.Entry entry) { return !entry.getKey().isNegative() && entry.getKey().getNameType().equals(MailboxACL.NameType.user); } }