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]

Reply via email to