JAMES-2186 clean isReadWrite method
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/52e3f6c0 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/52e3f6c0 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/52e3f6c0 Branch: refs/heads/master Commit: 52e3f6c09bb4c90ebf72b05d92f81dbb75348c64 Parents: b0ebcc2 Author: Luc DUZAN <[email protected]> Authored: Mon Oct 23 14:17:28 2017 +0700 Committer: Raphael Ouazana <[email protected]> Committed: Wed Oct 25 17:40:11 2017 +0200 ---------------------------------------------------------------------- .../james/mailbox/store/StoreRightManager.java | 51 ++++++++++---------- .../mailbox/store/StoreRightManagerTest.java | 2 +- 2 files changed, 26 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/52e3f6c0/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 00bb652..226510c 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 @@ -116,38 +116,37 @@ public class StoreRightManager implements RightManager { } public boolean isReadWrite(MailboxSession session, Mailbox mailbox, Flags sharedPermanentFlags) throws UnsupportedRightException { - return isReadWrite(myRights(mailbox, session), sharedPermanentFlags); - } - - private boolean isReadWrite(Rfc4314Rights rights, Flags sharedPermanentFlags) { - if (rights.contains(Right.Insert) || rights.contains(Right.PerformExpunge)) { - return true; - } + Rfc4314Rights rights = myRights(mailbox, session); /* * then go through shared flags. RFC 4314 section 4: * Changing flags: STORE - * - the server MUST check if the user has "t" right - * - when the user modifies \Deleted flag "s" right - * - when the user modifies \Seen flag "w" right - for all other message flags. + * - the server MUST check if the user has "t" (expunge) right + * - when the user modifies \Deleted flag "s" (seen) right + * - when the user modifies \Seen flag "w" (write) - for all other message flags. */ - if (sharedPermanentFlags != null) { - if (sharedPermanentFlags.contains(Flags.Flag.DELETED) && rights.contains(Right.DeleteMessages)) { - return true; - } else if (sharedPermanentFlags.contains(Flags.Flag.SEEN) && rights.contains(Right.WriteSeenFlag)) { - return true; - } else { - boolean hasWriteRight = rights.contains(Right.Write); - return hasWriteRight && - (sharedPermanentFlags.contains(Flags.Flag.ANSWERED) || - sharedPermanentFlags.contains(Flags.Flag.DRAFT) || - sharedPermanentFlags.contains(Flags.Flag.FLAGGED) || - sharedPermanentFlags.contains(Flags.Flag.RECENT) || - sharedPermanentFlags.contains(Flags.Flag.USER)); - } - } + return rights.contains(Right.Insert) || + rights.contains(Right.PerformExpunge) || + checkDeleteFlag(rights, sharedPermanentFlags) || + checkSeenFlag(rights, sharedPermanentFlags) || + checkWriteFlag(rights, sharedPermanentFlags); + } + + private boolean checkWriteFlag(Rfc4314Rights rights, Flags sharedPermanentFlags) { + return rights.contains(Right.Write) && + (sharedPermanentFlags.contains(Flags.Flag.ANSWERED) || + sharedPermanentFlags.contains(Flags.Flag.DRAFT) || + sharedPermanentFlags.contains(Flags.Flag.FLAGGED) || + sharedPermanentFlags.contains(Flags.Flag.RECENT) || + sharedPermanentFlags.contains(Flags.Flag.USER)); + } + + private boolean checkSeenFlag(Rfc4314Rights rights, Flags sharedPermanentFlags) { + return sharedPermanentFlags.contains(Flags.Flag.SEEN) && rights.contains(Right.WriteSeenFlag); + } - return false; + private boolean checkDeleteFlag(Rfc4314Rights rights, Flags sharedPermanentFlags) { + return sharedPermanentFlags.contains(Flags.Flag.DELETED) && rights.contains(Right.DeleteMessages); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/52e3f6c0/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java index 81493fd..c89c74e 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java @@ -191,7 +191,7 @@ public class StoreRightManagerTest { public void isReadWriteShouldReturnFalseWhenUserDoesNotHaveInsertOrPerformExpungeRightOnMailboxAndNullFlag() throws Exception { Mailbox mailbox = mock(Mailbox.class); when(mailbox.getACL()).thenReturn(new MailboxACL(new MailboxACL.Entry(alice, Right.Administer))); - assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, null)) + assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, new Flags())) .isFalse(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
