http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java ---------------------------------------------------------------------- diff --git a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java index 1524da0..31e35f0 100644 --- a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java +++ b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.store.search; + import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; @@ -30,6 +31,7 @@ import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.StoreMessageIdManager; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -48,15 +50,17 @@ public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest MailboxSessionMapperFactory mapperFactory = new InMemoryMailboxSessionMapperFactory(); messageSearchIndex = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new PDFTextExtractor()); InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory(); + UnionMailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + SimpleGroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver); storeMailboxManager = new InMemoryMailboxManager( mapperFactory, new FakeAuthenticator(), FakeAuthorizator.defaultReject(), new JVMMailboxPathLocker(), - new UnionMailboxACLResolver(), - new SimpleGroupMembershipResolver(), new MessageParser(), - messageIdFactory); + messageIdFactory, + storeRightManager); DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener(); MailboxEventDispatcher mailboxEventDispatcher = new MailboxEventDispatcher(new DefaultDelegatingMailboxListener()); storeMailboxManager.setDelegatingMailboxListener(delegatingListener);
http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml ---------------------------------------------------------------------- diff --git a/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml b/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml index db43d6a..ca91f42 100644 --- a/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml +++ b/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml @@ -60,4 +60,11 @@ --> <bean id="messageParser" class="org.apache.james.mailbox.store.mail.model.impl.MessageParser"/> + <bean id="storeRightManager" class="org.apache.james.mailbox.store.StoreRightManager" > + <constructor-arg index="0" ref="messageMapperFactory" /> + <constructor-arg index="1" ref="aclResolver" /> + <constructor-arg index="2" ref="groupMembershipResolver" /> + </bean> + + </beans> http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index 64a0bad..173c247 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -41,18 +41,13 @@ import org.apache.commons.io.input.TeeInputStream; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxSession; -import org.apache.james.mailbox.MailboxSession.User; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageUid; -import org.apache.james.mailbox.acl.GroupMembershipResolver; -import org.apache.james.mailbox.acl.MailboxACLResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.ReadOnlyException; -import org.apache.james.mailbox.exception.UnsupportedRightException; import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxACL; -import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights; import org.apache.james.mailbox.model.MailboxCounters; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; @@ -91,7 +86,6 @@ import org.apache.james.util.IteratorWrapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -460,7 +454,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana /** * This mailbox is writable - * + * * @throws MailboxException */ public boolean isWriteable(MailboxSession session) throws MailboxException { @@ -513,7 +507,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana recent = new ArrayList<>(); break; } - MailboxACL resolvedAcl = getResolvedMailboxACL(mailboxSession); + MailboxACL resolvedAcl = storeRightManager.getResolvedMailboxACL(mailbox, mailboxSession); return new MailboxMetaData(recent, permanentFlags, uidValidity, uidNext, highestModSeq, messageCount, unseenCount, firstUnseen, isWriteable(mailboxSession), isModSeqPermanent(mailboxSession), resolvedAcl); } @@ -793,36 +787,6 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana return messageMapper.findFirstUnseenMessageUid(getMailboxEntity()); } - /** - * Applies the global ACL (if there are any) to the mailbox ACL. - * - * @param mailboxSession - * @return the ACL of the present mailbox merged with the global ACL (if - * there are any). - * @throws UnsupportedRightException - */ - protected MailboxACL getResolvedMailboxACL(MailboxSession mailboxSession) throws UnsupportedRightException { - return StoreRightManager.filteredForSession(mailbox, mailbox.getACL(), mailboxSession); - } - - /** - * ACL is sensible information and as such we should expose as few information as possible - * to users. This method allows to filter a {@link MailboxACL} in order to present it to - * the connected user. - */ - @VisibleForTesting static MailboxACL filteredForSession(Mailbox mailbox, MailboxACL acl, MailboxSession mailboxSession) throws UnsupportedRightException { - if (mailboxSession.getUser().isSameUser(mailbox.getUser())) { - return acl; - } - MailboxACL.EntryKey userAsKey = MailboxACL.EntryKey.createUserEntryKey(mailboxSession.getUser().getUserName()); - Rfc4314Rights rights = acl.getEntries().getOrDefault(userAsKey, new Rfc4314Rights()); - if (rights.contains(MailboxACL.Right.Administer)) { - return acl; - } - return new MailboxACL(ImmutableMap.of(userAsKey, rights)); - } - - @Override public MailboxId getId() { return mailbox.getMailboxId(); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/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 new file mode 100644 index 0000000..ea03bc1 --- /dev/null +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java @@ -0,0 +1,161 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.mailbox.store; + +import javax.inject.Inject; +import javax.mail.Flags; + +import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.RightManager; +import org.apache.james.mailbox.acl.GroupMembershipResolver; +import org.apache.james.mailbox.acl.MailboxACLResolver; +import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.exception.UnsupportedRightException; +import org.apache.james.mailbox.model.MailboxACL; +import org.apache.james.mailbox.model.MailboxACL.ACLCommand; +import org.apache.james.mailbox.model.MailboxACL.EntryKey; +import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights; +import org.apache.james.mailbox.model.MailboxACL.Right; +import org.apache.james.mailbox.model.MailboxId; +import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.store.mail.MailboxMapper; +import org.apache.james.mailbox.store.mail.model.Mailbox; +import org.apache.james.mailbox.store.transaction.Mapper; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.ImmutableMap; + +public class StoreRightManager implements RightManager { + + private final MailboxSessionMapperFactory mailboxSessionMapperFactory; + private final MailboxACLResolver aclResolver; + private final GroupMembershipResolver groupMembershipResolver; + + @Inject + public StoreRightManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, + MailboxACLResolver aclResolver, + GroupMembershipResolver groupMembershipResolver) { + this.mailboxSessionMapperFactory = mailboxSessionMapperFactory; + this.aclResolver = aclResolver; + this.groupMembershipResolver = groupMembershipResolver; + } + + @Override + public boolean hasRight(MailboxPath mailboxPath, Right right, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); + return hasRight(mailbox, right, session); + } + + public boolean hasRight(Mailbox mailbox, Right right, MailboxSession session) throws MailboxException { + MailboxSession.User user = session.getUser(); + String userName = user != null ? user.getUserName() : null; + return aclResolver.hasRight(userName, groupMembershipResolver, right, mailbox.getACL(), mailbox.getUser(), new GroupFolderResolver(session).isGroupFolder(mailbox)); + } + + @Override + public Rfc4314Rights myRights(MailboxPath mailboxPath, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); + return myRights(session, mailbox); + } + + @Override + public Rfc4314Rights myRights(MailboxId mailboxId, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxById(mailboxId); + return myRights(session, mailbox); + } + + @Override + public Rfc4314Rights[] listRigths(MailboxPath mailboxPath, EntryKey key, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); + return aclResolver.listRights(key, groupMembershipResolver, mailbox.getUser(), new GroupFolderResolver(session).isGroupFolder(mailbox)); + } + + @Override + public void applyRightsCommand(MailboxPath mailboxPath, ACLCommand mailboxACLCommand, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); + mapper.execute(Mapper.toTransaction(() -> mapper.updateACL(mailbox, mailboxACLCommand))); + } + + @Override + public void setRights(MailboxPath mailboxPath, MailboxACL mailboxACL, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); + mapper.execute(Mapper.toTransaction(() -> mapper.setACL(mailbox, mailboxACL))); + } + + public boolean isReadWrite(MailboxSession session, Mailbox mailbox, Flags sharedPermanentFlags) throws UnsupportedRightException { + return aclResolver.isReadWrite(myRights(session, mailbox), sharedPermanentFlags); + } + + @Override + public void setRights(MailboxId mailboxId, MailboxACL mailboxACL, MailboxSession session) throws MailboxException { + MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); + Mailbox mailbox = mapper.findMailboxById(mailboxId); + setRights(mailbox.generateAssociatedPath(), mailboxACL, session); + } + + /** + * Applies the global ACL (if there are any) to the mailbox ACL. + * + * @param mailboxSession + * @return the ACL of the present mailbox merged with the global ACL (if + * there are any). + * @throws UnsupportedRightException + */ + public MailboxACL getResolvedMailboxACL(Mailbox mailbox, MailboxSession mailboxSession) throws UnsupportedRightException { + MailboxACL acl = aclResolver.applyGlobalACL( + mailbox.getACL(), + new GroupFolderResolver(mailboxSession).isGroupFolder(mailbox)); + + return filteredForSession(mailbox, acl, mailboxSession); + } + + /** + * ACL is sensible information and as such we should expose as few information as possible + * to users. This method allows to filter a {@link MailboxACL} in order to present it to + * the connected user. + */ + @VisibleForTesting + static MailboxACL filteredForSession(Mailbox mailbox, MailboxACL acl, MailboxSession mailboxSession) throws UnsupportedRightException { + if (mailboxSession.getUser().isSameUser(mailbox.getUser())) { + return acl; + } + MailboxACL.EntryKey userAsKey = MailboxACL.EntryKey.createUserEntryKey(mailboxSession.getUser().getUserName()); + Rfc4314Rights rights = acl.getEntries().getOrDefault(userAsKey, new Rfc4314Rights()); + if (rights.contains(MailboxACL.Right.Administer)) { + return acl; + } + return new MailboxACL(ImmutableMap.of(userAsKey, rights)); + } + + private Rfc4314Rights myRights(MailboxSession session, Mailbox mailbox) throws UnsupportedRightException { + MailboxSession.User user = session.getUser(); + if (user != null) { + return aclResolver.resolveRights(user.getUserName(), groupMembershipResolver, mailbox.getACL(), mailbox.getUser(), new GroupFolderResolver(session).isGroupFolder(mailbox)); + } else { + return MailboxACL.NO_RIGHTS; + } + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java index a517fa5..ffc4b94 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java @@ -100,8 +100,14 @@ public class StoreMailboxManagerAnnotationTest { return transaction.run(); }); - storeMailboxManager = spy(new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, aclResolver, groupMembershipResolver, - messageParser, messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE)); + StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, + groupMembershipResolver); + + storeMailboxManager = spy(new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, + messageParser, messageIdFactory, + MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, + MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, + storeRightManager)); storeMailboxManager.init(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java index 2e2b8fb..8c9a76d 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java @@ -73,9 +73,9 @@ public class StoreMailboxManagerTest { FakeAuthenticator authenticator = new FakeAuthenticator(); authenticator.addUser(CURRENT_USER, CURRENT_USER_PASSWORD); authenticator.addUser(ADMIN, ADMIN_PASSWORD); + StoreRightManager storeRightManager = new StoreRightManager(mockedMapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver()); storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, authenticator, FakeAuthorizator.forUserAndAdmin(ADMIN, CURRENT_USER), - new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), - new MessageParser(), messageIdFactory); + new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory, storeRightManager); storeMailboxManager.init(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java deleted file mode 100644 index 54daae9..0000000 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.mailbox.store; - -import static org.apache.james.mailbox.fixture.MailboxFixture.ALICE; -import static org.apache.james.mailbox.fixture.MailboxFixture.BOB; -import static org.apache.james.mailbox.fixture.MailboxFixture.CEDRIC; -import static org.apache.james.mailbox.fixture.MailboxFixture.INBOX_ALICE; -import static org.assertj.core.api.Assertions.assertThat; - -import org.apache.james.mailbox.exception.UnsupportedRightException; -import org.apache.james.mailbox.mock.MockMailboxSession; -import org.apache.james.mailbox.model.MailboxACL; -import org.apache.james.mailbox.model.MailboxACL.Right; -import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; -import org.junit.Test; - -public class StoreMessageManagerTest { - - public static final long UID_VALIDITY = 3421l; - - @Test - public void filteredForSessionShouldBeIdentityWhenOwner() throws UnsupportedRightException { - MailboxACL acl = new MailboxACL() - .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(BOB).asAddition()) - .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(CEDRIC).asAddition()); - MailboxACL actual = StoreMessageManager.filteredForSession( - new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new MockMailboxSession(ALICE)); - assertThat(actual).isEqualTo(acl); - } - - @Test - public void filteredForSessionShouldBeIdentityWhenAdmin() throws UnsupportedRightException { - MailboxACL acl = new MailboxACL() - .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(BOB).asAddition()) - .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(CEDRIC).asAddition()); - MailboxACL actual = StoreMessageManager.filteredForSession( - new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new MockMailboxSession(CEDRIC)); - assertThat(actual).isEqualTo(acl); - } - - @Test - public void filteredForSessionShouldContainOnlyLoggedUserWhenReadWriteAccess() throws UnsupportedRightException { - MailboxACL acl = new MailboxACL() - .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(BOB).asAddition()) - .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(CEDRIC).asAddition()); - MailboxACL actual = StoreMessageManager.filteredForSession( - new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new MockMailboxSession(BOB)); - assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUserEntryKey(BOB)); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/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 new file mode 100644 index 0000000..09f57fc --- /dev/null +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java @@ -0,0 +1,68 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.mailbox.store; + +import static org.apache.james.mailbox.fixture.MailboxFixture.ALICE; +import static org.apache.james.mailbox.fixture.MailboxFixture.BOB; +import static org.apache.james.mailbox.fixture.MailboxFixture.CEDRIC; +import static org.apache.james.mailbox.fixture.MailboxFixture.INBOX_ALICE; +import static org.assertj.core.api.Assertions.assertThat; + +import org.apache.james.mailbox.exception.UnsupportedRightException; +import org.apache.james.mailbox.mock.MockMailboxSession; +import org.apache.james.mailbox.model.MailboxACL; +import org.apache.james.mailbox.model.MailboxACL.Right; +import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; +import org.junit.Test; + +public class StoreRightManagerTest { + + public static final long UID_VALIDITY = 3421l; + + @Test + public void filteredForSessionShouldBeIdentityWhenOwner() throws UnsupportedRightException { + MailboxACL acl = new MailboxACL() + .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(BOB).asAddition()) + .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(CEDRIC).asAddition()); + MailboxACL actual = StoreRightManager.filteredForSession( + new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new MockMailboxSession(ALICE)); + assertThat(actual).isEqualTo(acl); + } + + @Test + public void filteredForSessionShouldBeIdentityWhenAdmin() throws UnsupportedRightException { + MailboxACL acl = new MailboxACL() + .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(BOB).asAddition()) + .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(CEDRIC).asAddition()); + MailboxACL actual = StoreRightManager.filteredForSession( + new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new MockMailboxSession(CEDRIC)); + assertThat(actual).isEqualTo(acl); + } + + @Test + public void filteredForSessionShouldContainOnlyLoggedUserWhenReadWriteAccess() throws UnsupportedRightException { + MailboxACL acl = new MailboxACL() + .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(BOB).asAddition()) + .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(CEDRIC).asAddition()); + MailboxACL actual = StoreRightManager.filteredForSession( + new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new MockMailboxSession(BOB)); + assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUserEntryKey(BOB)); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java ---------------------------------------------------------------------- diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java index 0a0aa30..89d9462 100644 --- a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java +++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java @@ -39,6 +39,7 @@ import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.Authorizator; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.junit.Before; @@ -156,18 +157,17 @@ public class MailboxCopierTest { MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - + InMemoryMailboxSessionMapperFactory mapperFactory = new InMemoryMailboxSessionMapperFactory(); + StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver); return new StoreMailboxManager( - new InMemoryMailboxSessionMapperFactory(), + mapperFactory, (userid, passwd) -> AUTHENTIC, (userId, otherUserId) -> Authorizator.AuthorizationState.NOT_ADMIN, - aclResolver, - groupMembershipResolver, messageParser, new DefaultMessageId.Factory(), MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, - MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE - ); + MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, + storeRightManager); } http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java index dcdd8f4..12a854a 100644 --- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java +++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java @@ -55,6 +55,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory; import org.apache.james.mailbox.inmemory.InMemoryMessageId; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.extractor.DefaultTextExtractor; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -113,8 +114,11 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new StoreMailboxManager(factory, authenticator, authorizator, aclResolver, groupMembershipResolver, messageParser, - messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); + StoreRightManager storeRightManager = new StoreRightManager(factory, aclResolver, groupMembershipResolver); + + mailboxManager = new StoreMailboxManager(factory, authenticator, authorizator, messageParser, + messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, + MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, storeRightManager); mailboxManager.setMessageSearchIndex(searchIndex); try { http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java index bd26353..54b8ccc 100644 --- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java +++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java @@ -41,6 +41,7 @@ import org.apache.james.mailbox.hbase.HBaseMailboxManager; import org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory; import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider; import org.apache.james.mailbox.hbase.mail.HBaseUidProvider; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -101,9 +102,10 @@ public class HBaseHostSystem extends JamesImapHostSystem { MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - - mailboxManager = new HBaseMailboxManager(mapperFactory, authenticator, authorizator, aclResolver, groupMembershipResolver, - messageParser, messageIdFactory); + + StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver); + mailboxManager = new HBaseMailboxManager(mapperFactory, authenticator, authorizator, messageParser, + messageIdFactory, storeRightManager); mailboxManager.init(); SubscriptionManager subscriptionManager = new StoreSubscriptionManager(mapperFactory); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java index 4504737..56451ee 100644 --- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java +++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java @@ -36,6 +36,7 @@ import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager; import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.JVMMailboxPathLocker; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator; @@ -70,8 +71,9 @@ public class InMemoryHostSystem extends JamesImapHostSystem { MessageParser messageParser = new MessageParser(); InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory(); + StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, groupMembershipResolver); mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, - new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, new InMemoryMessageId.Factory()); + new JVMMailboxPathLocker(), messageParser, new InMemoryMessageId.Factory(), storeRightManager); QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mailboxManager.getMapperFactory()); perUserMaxQuotaManager = new InMemoryPerUserMaxQuotaManager(); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java index cc4629f..eb3f7d0 100644 --- a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java +++ b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java @@ -42,6 +42,7 @@ import org.apache.james.mailbox.jcr.JCRUtils; import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider; import org.apache.james.mailbox.jcr.mail.JCRUidProvider; import org.apache.james.mailbox.store.JVMMailboxPathLocker; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; @@ -91,8 +92,9 @@ public class JCRHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new JCRMailboxManager(mf, authenticator, authorizator, aclResolver, groupMembershipResolver, messageParser, - new DefaultMessageId.Factory()); + StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver); + mailboxManager = new JCRMailboxManager(mf, authenticator, authorizator, messageParser, + new DefaultMessageId.Factory(), storeRightManager); mailboxManager.init(); final ImapProcessor defaultImapProcessorFactory = http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java index cb43a65..1dbfbab 100644 --- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java +++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java @@ -47,6 +47,7 @@ import org.apache.james.mailbox.jpa.quota.JPAPerUserMaxQuotaManager; import org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.store.JVMMailboxPathLocker; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; @@ -93,7 +94,12 @@ public class JPAHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new OpenJPAMailboxManager(mapperFactory, authenticator, authorizator, locker, false, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory(), MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); + StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver); + boolean useStreaming = false; + mailboxManager = new OpenJPAMailboxManager(mapperFactory, authenticator, authorizator, locker, useStreaming, + messageParser, new DefaultMessageId.Factory(), + MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, + MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, storeRightManager); DefaultQuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mapperFactory); JpaCurrentQuotaManager currentQuotaManager = new JpaCurrentQuotaManager(entityManagerFactory); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java index cef5b5a..794a163 100644 --- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java +++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java @@ -51,6 +51,7 @@ import org.apache.james.mailbox.lucene.search.LuceneMessageSearchIndex; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.JVMMailboxPathLocker; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; @@ -116,7 +117,13 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new OpenJPAMailboxManager(factory, authenticator, authorizator, locker, false, aclResolver, groupMembershipResolver, messageParser, messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); + StoreRightManager storeRightManager = new StoreRightManager(factory, aclResolver, groupMembershipResolver); + boolean useStreaming = false; + mailboxManager = new OpenJPAMailboxManager(factory, authenticator, authorizator, locker, useStreaming, + messageParser, messageIdFactory, + MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, + MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, + storeRightManager); LuceneMessageSearchIndex searchIndex = new LuceneMessageSearchIndex(factory, mailboxIdFactory, fsDirectory, messageIdFactory); searchIndex.setEnableSuffixMatch(true); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java index 87375a3..f39ab06 100644 --- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java +++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java @@ -35,6 +35,7 @@ import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory; import org.apache.james.mailbox.maildir.MaildirStore; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -69,8 +70,9 @@ public class MaildirHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, - groupMembershipResolver, messageParser, new DefaultMessageId.Factory()); + StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, groupMembershipResolver); + mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, locker, + messageParser, new DefaultMessageId.Factory(), storeRightManager); mailboxManager.init(); final ImapProcessor defaultImapProcessorFactory = http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java ---------------------------------------------------------------------- diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java index 5448922..bf80ffb 100644 --- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java +++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java @@ -39,6 +39,7 @@ import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -63,15 +64,19 @@ public class MailboxManagementTest { @Before public void setUp() throws Exception { inMemoryMapperFactory = new InMemoryMailboxSessionMapperFactory(); + StoreRightManager storeRightManager = new StoreRightManager(inMemoryMapperFactory, + new UnionMailboxACLResolver(), + new SimpleGroupMembershipResolver()); + StoreMailboxManager mailboxManager = new StoreMailboxManager( inMemoryMapperFactory, new FakeAuthenticator(), FakeAuthorizator.defaultReject(), new JVMMailboxPathLocker(), - new UnionMailboxACLResolver(), - new SimpleGroupMembershipResolver(), new MessageParser(), - new DefaultMessageId.Factory()); + new DefaultMessageId.Factory(), + storeRightManager); + mailboxManager.init(); mailboxManagerManagement = new MailboxManagerManagement(); mailboxManagerManagement.setMailboxManager(mailboxManager); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java index 21afe44..ac46f78 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java @@ -37,6 +37,7 @@ import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.NoMailboxPathLocker; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator; import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; @@ -59,9 +60,11 @@ public class IsOverQuotaTest { @Before public void setUp() throws Exception { InMemoryMailboxSessionMapperFactory factory = new InMemoryMailboxSessionMapperFactory(); + StoreRightManager storeRightManager = new StoreRightManager(factory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver()); mailboxManager = new InMemoryMailboxManager(factory, new FakeAuthenticator(), FakeAuthorizator.defaultReject(), - new NoMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), new MessageParser(), - new InMemoryMessageId.Factory()); + new NoMailboxPathLocker(), new MessageParser(), + new InMemoryMessageId.Factory(), + storeRightManager); quotaRootResolver = new DefaultQuotaRootResolver(factory); maxQuotaManager = new InMemoryPerUserMaxQuotaManager(); http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java index 5d7cd74..1fc9a50 100644 --- a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java +++ b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java @@ -52,6 +52,7 @@ import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.Authorizator; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreRightManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.pop3server.netty.POP3Server; @@ -720,6 +721,7 @@ public class POP3ServerTest { MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); + StoreRightManager storeRightManager = new StoreRightManager(factory, aclResolver, groupMembershipResolver); mailboxManager = new StoreMailboxManager(factory, (userid, passwd) -> { try { return usersRepository.test(userid, passwd.toString()); @@ -728,12 +730,11 @@ public class POP3ServerTest { return false; } }, (userId, otherUserId) -> Authorizator.AuthorizationState.NOT_ADMIN, - aclResolver, - groupMembershipResolver, messageParser, new DefaultMessageId.Factory(), MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, - MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); + MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, + storeRightManager); mailboxManager.init(); protocolHandlerChain.put("mailboxmanager", MailboxManager.class, mailboxManager); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
