MAILBOX-316 StoreRightManager dispatchs even to update 'l' right on parent when set right on child
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2aa77b5e Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2aa77b5e Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2aa77b5e Branch: refs/heads/master Commit: 2aa77b5e45b56affa733bf46ec7cf96d99a093dc Parents: 75622f7 Author: quynhn <[email protected]> Authored: Mon Nov 6 16:06:17 2017 +0700 Committer: quynhn <[email protected]> Committed: Wed Nov 15 09:33:58 2017 +0700 ---------------------------------------------------------------------- .../apache/james/mailbox/store/StoreRightManager.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/2aa77b5e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java index 51c021f..66516c4 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java @@ -28,6 +28,7 @@ import javax.mail.Flags; import org.apache.james.core.User; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.RightManager; +import org.apache.james.mailbox.acl.ACLDiff; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.acl.MailboxACLResolver; import org.apache.james.mailbox.exception.DifferentDomainException; @@ -129,6 +130,9 @@ public class StoreRightManager implements RightManager { MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); mapper.execute(Mapper.toTransaction(() -> mapper.updateACL(mailbox, mailboxACLCommand))); + + ACLDiff aclDiff = ACLDiff.computeDiff(mailbox.getACL(), mailbox.getACL().apply(mailboxACLCommand)); + dispatcher.aclUpdated(session, mailboxPath, aclDiff); } private void assertSharesBelongsToUserDomain(String user, ACLCommand mailboxACLCommand) throws DifferentDomainException { @@ -183,7 +187,7 @@ public class StoreRightManager implements RightManager { MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); - setRights(mailboxACL, mapper, mailbox); + setRights(mailboxACL, mapper, mailbox, session); } @VisibleForTesting @@ -203,8 +207,11 @@ public class StoreRightManager implements RightManager { return !domain.equals(otherDomain); } - private void setRights(MailboxACL mailboxACL, MailboxMapper mapper, Mailbox mailbox) throws MailboxException { + private void setRights(MailboxACL mailboxACL, MailboxMapper mapper, Mailbox mailbox, MailboxSession session) throws MailboxException { mapper.execute(Mapper.toTransaction(() -> mapper.setACL(mailbox, mailboxACL))); + + ACLDiff aclDiff = ACLDiff.computeDiff(mailbox.getACL(), mailboxACL); + dispatcher.aclUpdated(session, mailbox.generateAssociatedPath(), aclDiff); } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
