Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java (original) +++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java Sat Jan 28 11:56:55 2012 @@ -24,6 +24,8 @@ import java.util.Date; import javax.mail.Flags; import javax.mail.internet.SharedInputStream; +import org.apache.james.mailbox.MailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.jpa.JPAMessageManager; @@ -51,13 +53,13 @@ public class OpenJPAMessageManager exten } public OpenJPAMessageManager(MailboxSessionMapperFactory<Long> mapperFactory, MessageSearchIndex<Long> index, - MailboxEventDispatcher<Long> dispatcher, MailboxPathLocker locker, Mailbox<Long> mailbox) throws MailboxException { - this(mapperFactory, index, dispatcher, locker, mailbox, AdvancedFeature.None); + MailboxEventDispatcher<Long> dispatcher, MailboxPathLocker locker, Mailbox<Long> mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) throws MailboxException { + this(mapperFactory, index, dispatcher, locker, mailbox, AdvancedFeature.None, aclResolver, groupMembershipResolver); } public OpenJPAMessageManager(MailboxSessionMapperFactory<Long> mapperFactory, MessageSearchIndex<Long> index, - MailboxEventDispatcher<Long> dispatcher, MailboxPathLocker locker, Mailbox<Long> mailbox, final AdvancedFeature f) throws MailboxException { - super(mapperFactory, index, dispatcher, locker, mailbox); + MailboxEventDispatcher<Long> dispatcher, MailboxPathLocker locker, Mailbox<Long> mailbox, final AdvancedFeature f, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) throws MailboxException { + super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver); this.feature = f; }
Modified: james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java (original) +++ james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java Sat Jan 28 11:56:55 2012 @@ -23,9 +23,13 @@ import java.util.HashMap; import javax.persistence.EntityManagerFactory; import org.apache.james.mailbox.BadCredentialsException; +import org.apache.james.mailbox.MailboxACLResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.AbstractMailboxManagerTest; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.SimpleGroupMembershipResolver; +import org.apache.james.mailbox.UnionMailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider; import org.apache.james.mailbox.jpa.mail.JPAUidProvider; import org.apache.james.mailbox.jpa.mail.model.JPAMailbox; @@ -99,7 +103,10 @@ public class JPAMailboxManagerTest exten JVMMailboxPathLocker locker = new JVMMailboxPathLocker(); JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, new JPAUidProvider(locker, entityManagerFactory), new JPAModSeqProvider(locker, entityManagerFactory)); - JPAMailboxManager mailboxManager = new OpenJPAMailboxManager(mf, null); + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + JPAMailboxManager mailboxManager = new OpenJPAMailboxManager(mf, null, aclResolver, groupMembershipResolver); mailboxManager.init(); setMailboxManager(mailboxManager); Modified: james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java (original) +++ james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java Sat Jan 28 11:56:55 2012 @@ -24,9 +24,13 @@ import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.apache.james.mailbox.AbstractStressTest; +import org.apache.james.mailbox.MailboxACLResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.SimpleGroupMembershipResolver; +import org.apache.james.mailbox.UnionMailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider; import org.apache.james.mailbox.jpa.mail.JPAUidProvider; import org.apache.james.mailbox.jpa.mail.model.JPAMailbox; @@ -75,7 +79,10 @@ public class JPAStressTest extends Abstr JVMMailboxPathLocker locker = new JVMMailboxPathLocker(); JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, new JPAUidProvider(locker, entityManagerFactory), new JPAModSeqProvider(locker, entityManagerFactory)); - mailboxManager = new OpenJPAMailboxManager(mf, null); + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + mailboxManager = new OpenJPAMailboxManager(mf, null, aclResolver, groupMembershipResolver); mailboxManager.init(); // Set the lock timeout via SQL because of a bug in openJPA Modified: james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java (original) +++ james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java Sat Jan 28 11:56:55 2012 @@ -34,7 +34,9 @@ import java.util.Map; import javax.mail.Flags; import javax.mail.Flags.Flag; +import org.apache.james.mailbox.MailboxACL; import org.apache.james.mailbox.SearchQuery; +import org.apache.james.mailbox.SimpleMailboxACL; import org.apache.james.mailbox.SearchQuery.AddressType; import org.apache.james.mailbox.SearchQuery.DateResolution; import org.apache.james.mailbox.SearchQuery.Sort.SortClause; @@ -742,5 +744,22 @@ public class LuceneMessageSearchIndexTes return 0; } + /* (non-Javadoc) + * @see org.apache.james.mailbox.store.mail.model.Mailbox#getACL() + */ + @Override + public MailboxACL getACL() { + return SimpleMailboxACL.OWNER_FULL_ACL; + } + + /* (non-Javadoc) + * @see org.apache.james.mailbox.store.mail.model.Mailbox#setACL(org.apache.james.mailbox.MailboxACL) + */ + @Override + public void setACL(MailboxACL acl) { + throw new UnsupportedOperationException("Not supported"); + } + + } } Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java (original) +++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java Sat Jan 28 11:56:55 2012 @@ -21,11 +21,14 @@ package org.apache.james.mailbox.maildir import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FilenameFilter; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; @@ -33,14 +36,19 @@ import java.util.LinkedList; import java.util.Map; import java.util.Map.Entry; import java.util.NoSuchElementException; +import java.util.Properties; import java.util.SortedMap; import java.util.TreeMap; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; +import org.apache.james.mailbox.MailboxACL; +import org.apache.james.mailbox.MailboxACL.MailboxACLEntryKey; +import org.apache.james.mailbox.MailboxACL.MailboxACLRights; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxPath; import org.apache.james.mailbox.MailboxPathLocker; +import org.apache.james.mailbox.SimpleMailboxACL; import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution; import org.apache.james.mailbox.MailboxSession; @@ -48,6 +56,7 @@ public class MaildirFolder { public static final String VALIDITY_FILE = "james-uidvalidity"; public static final String UIDLIST_FILE = "james-uidlist"; + public static final String ACL_FILE = "james-acl"; public static final String CUR = "cur"; public static final String NEW = "new"; public static final String TMP = "tmp"; @@ -57,10 +66,12 @@ public class MaildirFolder { private File newFolder; private File tmpFolder; private File uidFile; + private File aclFile; private long lastUid = -1; private int messageCount = 0; private long uidValidity = -1; + private MailboxACL acl; private final MailboxPathLocker locker; @@ -77,6 +88,7 @@ public class MaildirFolder { this.newFolder = new File(rootFolder, NEW); this.tmpFolder = new File(rootFolder, TMP); this.uidFile = new File(rootFolder, UIDLIST_FILE); + this.aclFile = new File(rootFolder, ACL_FILE); this.locker = locker; this.path = path; } @@ -201,7 +213,7 @@ public class MaildirFolder { } - + /** * Returns the uidValidity of this mailbox * @return The uidValidity @@ -885,4 +897,93 @@ public class MaildirFolder { return getRootFile().getAbsolutePath(); } + public MailboxACL getACL(final MailboxSession session) throws MailboxException { + if (acl == null) { + acl = readACL(session); + } + return acl; + } + + /** + * Read the ACL of the given mailbox from the file system. + * + * @param session + * @throws MailboxException if there are problems with the aclFile file + */ + private MailboxACL readACL(MailboxSession session) throws MailboxException { + // FIXME Do we need this locking? + return locker.executeWithLock(session, path, new LockAwareExecution<MailboxACL>() { + + @Override + public MailboxACL execute() throws MailboxException { + File f = aclFile; + InputStream in = null; + Properties props = new Properties(); + if (f.exists()) { + try { + in = new FileInputStream(f); + props.load(in); + } catch (FileNotFoundException e) { + throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); + } catch (IOException e) { + throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); + } + finally { + IOUtils.closeQuietly(in); + } + } + + return new SimpleMailboxACL(props); + + } + }, true); + + } + + public void setACL(final MailboxSession session, final MailboxACL acl) throws MailboxException { + MailboxACL old = this.acl; + if (old != acl && (old == null || !old.equals(acl))) { + /* change only if different */ + saveACL(acl, session); + this.acl = acl; + } + + } + + private void saveACL(final MailboxACL acl, final MailboxSession session) throws MailboxException { + // FIXME Do we need this locking? + locker.executeWithLock(session, path, new LockAwareExecution<Void>() { + + @Override + public Void execute() throws MailboxException { + File f = aclFile; + OutputStream out = null; + Properties props = new Properties(); + Map<MailboxACLEntryKey, MailboxACLRights> entries = acl.getEntries(); + if (entries != null) { + for (Entry<MailboxACLEntryKey, MailboxACLRights> en : entries.entrySet()) { + props.put(en.getKey().serialize(), en.getValue().serialize()); + } + } + if (f.exists()) { + try { + out = new FileOutputStream(f); + props.store(out, "written by "+ getClass().getName()); + } catch (FileNotFoundException e) { + throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); + } catch (IOException e) { + throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); + } + finally { + IOUtils.closeQuietly(out); + } + } + + return null; + + } + }, true); + } + + } Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java (original) +++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java Sat Jan 28 11:56:55 2012 @@ -28,6 +28,7 @@ import org.apache.james.mailbox.MailboxN import org.apache.james.mailbox.MailboxPath; import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.maildir.mail.model.MaildirMailbox; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.mail.ModSeqProvider; import org.apache.james.mailbox.store.mail.UidProvider; @@ -118,12 +119,9 @@ public class MaildirStore implements Uid * @throws MailboxException If the mailbox folder doesn't exist or can't be read */ private Mailbox<Integer> loadMailbox(MailboxSession session, File mailboxFile, MailboxPath mailboxPath) throws MailboxException { - long uidValidity; MaildirFolder folder = new MaildirFolder(mailboxFile.getAbsolutePath(), mailboxPath, locker); try { - uidValidity = folder.getUidValidity(); - return new SimpleMailbox<Integer>(mailboxPath, uidValidity); - + return new MaildirMailbox<Integer>(session, mailboxPath, folder); } catch (IOException e) { throw new MailboxException("Unable to load Mailbox " + mailboxPath, e); } Added: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailbox.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailbox.java?rev=1237050&view=auto ============================================================================== --- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailbox.java (added) +++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailbox.java Sat Jan 28 11:56:55 2012 @@ -0,0 +1,41 @@ +package org.apache.james.mailbox.maildir.mail.model; + +import java.io.IOException; + +import org.apache.james.mailbox.MailboxACL; +import org.apache.james.mailbox.MailboxException; +import org.apache.james.mailbox.MailboxPath; +import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.maildir.MaildirFolder; +import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; + +public class MaildirMailbox<Id> extends SimpleMailbox<Id> { + + private MaildirFolder folder; + private MailboxSession session; + + public MaildirMailbox(MailboxSession session, MailboxPath path, MaildirFolder folder) throws IOException { + super(path, folder.getUidValidity()); + this.folder = folder; + this.session = session; + } + + @Override + public MailboxACL getACL() { + try { + return folder.getACL(session); + } catch (MailboxException e) { + throw new RuntimeException(e); + } + } + + @Override + public void setACL(MailboxACL acl) { + try { + folder.setACL(session, acl); + } catch (MailboxException e) { + throw new RuntimeException(e); + } + } + +} Propchange: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailbox.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java (original) +++ james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java Sat Jan 28 11:56:55 2012 @@ -27,8 +27,12 @@ import java.io.UnsupportedEncodingExcept import org.apache.commons.io.FileUtils; import org.apache.james.mailbox.AbstractMailboxManagerTest; import org.apache.james.mailbox.BadCredentialsException; +import org.apache.james.mailbox.MailboxACLResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxExistsException; +import org.apache.james.mailbox.SimpleGroupMembershipResolver; +import org.apache.james.mailbox.UnionMailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; import org.junit.After; @@ -110,7 +114,11 @@ public class MaildirMailboxManagerTest e MaildirStore store = new MaildirStore(MAILDIR_HOME + "/%domain/%user", new JVMMailboxPathLocker()); MaildirMailboxSessionMapperFactory mf = new MaildirMailboxSessionMapperFactory(store); - StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker()); + + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver); manager.init(); setMailboxManager(manager); try { @@ -140,7 +148,10 @@ public class MaildirMailboxManagerTest e MaildirStore store = new MaildirStore(MAILDIR_HOME + "/%domain/%user", new JVMMailboxPathLocker()); MaildirMailboxSessionMapperFactory mf = new MaildirMailboxSessionMapperFactory(store); - StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker()); + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver); manager.init(); setMailboxManager(manager); try { @@ -169,7 +180,10 @@ public class MaildirMailboxManagerTest e private void doTestListWithMaildirStoreConfiguration(String maildirStoreConfiguration) throws MailboxException, UnsupportedEncodingException { MaildirStore store = new MaildirStore(MAILDIR_HOME + maildirStoreConfiguration, new JVMMailboxPathLocker()); MaildirMailboxSessionMapperFactory mf = new MaildirMailboxSessionMapperFactory(store); - StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker()); + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver); manager.init(); setMailboxManager(manager); try { Modified: james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java (original) +++ james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java Sat Jan 28 11:56:55 2012 @@ -23,8 +23,12 @@ import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.james.mailbox.AbstractStressTest; +import org.apache.james.mailbox.MailboxACLResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxManager; +import org.apache.james.mailbox.SimpleGroupMembershipResolver; +import org.apache.james.mailbox.UnionMailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; import org.junit.After; @@ -41,7 +45,10 @@ public class MaildirStressTest extends A MaildirStore store = new MaildirStore(MAILDIR_HOME + "/%user", new JVMMailboxPathLocker()); MaildirMailboxSessionMapperFactory mf = new MaildirMailboxSessionMapperFactory(store); - mailboxManager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker()); + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + mailboxManager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver); mailboxManager.init(); } Modified: james/mailbox/trunk/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java (original) +++ james/mailbox/trunk/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java Sat Jan 28 11:56:55 2012 @@ -19,9 +19,13 @@ package org.apache.james.mailbox.inmemory; import org.apache.james.mailbox.BadCredentialsException; +import org.apache.james.mailbox.MailboxACLResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.AbstractMailboxManagerTest; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.SimpleGroupMembershipResolver; +import org.apache.james.mailbox.UnionMailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.store.MockAuthenticator; import org.apache.james.mailbox.store.StoreMailboxManager; import org.junit.After; @@ -62,7 +66,10 @@ public class InMemoryMailboxManagerTest protected void createMailboxManager() throws MailboxException { InMemoryMailboxSessionMapperFactory factory = new InMemoryMailboxSessionMapperFactory(); - StoreMailboxManager<Long> mailboxManager = new StoreMailboxManager<Long>(factory, new MockAuthenticator()); + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + + StoreMailboxManager<Long> mailboxManager = new StoreMailboxManager<Long>(factory, new MockAuthenticator(), aclResolver, groupMembershipResolver); mailboxManager.init(); setMailboxManager(mailboxManager); Modified: james/mailbox/trunk/pom.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/pom.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/pom.xml (original) +++ james/mailbox/trunk/pom.xml Sat Jan 28 11:56:55 2012 @@ -26,7 +26,7 @@ <parent> <artifactId>james-project</artifactId> <groupId>org.apache.james</groupId> - <version>1.9-SNAPSHOT</version> + <version>1.8</version> <relativePath></relativePath> </parent> Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml (original) +++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml Sat Jan 28 11:56:55 2012 @@ -41,6 +41,8 @@ <constructor-arg index="0" ref="hbase-sessionMapperFactory"/> <constructor-arg index="1" ref="authenticator"/> <constructor-arg index="2" ref="hbase-locker"/> + <constructor-arg index="3" ref="aclResolver"/> + <constructor-arg index="4" ref="groupMembershipResolver"/> </bean> <bean id="hbase-sessionMapperFactory" class="org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory"> Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jcr.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jcr.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jcr.xml (original) +++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jcr.xml Sat Jan 28 11:56:55 2012 @@ -31,6 +31,8 @@ <constructor-arg index="0" ref="jcr-sessionMapperFactory"/> <constructor-arg index="1" ref="authenticator"/> <constructor-arg index="2" ref="jcr-locker"/> + <constructor-arg index="3" ref="aclResolver"/> + <constructor-arg index="4" ref="groupMembershipResolver"/> </bean> <bean id ="jcr-subscriptionManager" class="org.apache.james.mailbox.jcr.JCRSubscriptionManager"> <constructor-arg index="0" ref="jcr-sessionMapperFactory"/> Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jpa.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jpa.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jpa.xml (original) +++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-jpa.xml Sat Jan 28 11:56:55 2012 @@ -34,6 +34,8 @@ <constructor-arg index="1" ref="authenticator"/> <constructor-arg index="2" ref="jpa-locker"/> <constructor-arg index="3" type="boolean" value="false"/> + <constructor-arg index="4" ref="aclResolver"/> + <constructor-arg index="5" ref="groupMembershipResolver"/> </bean> <bean id ="jpa-subscriptionManager" class="org.apache.james.mailbox.jpa.JPASubscriptionManager"> <constructor-arg index="0" ref="jpa-sessionMapperFactory"/> Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml (original) +++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml Sat Jan 28 11:56:55 2012 @@ -37,6 +37,8 @@ <constructor-arg index="0" ref="maildir-sessionMapperFactory"/> <constructor-arg index="1" ref="authenticator"/> <constructor-arg index="2" ref="maildir-locker"/> + <constructor-arg index="3" ref="aclResolver"/> + <constructor-arg index="4" ref="groupMembershipResolver"/> <!-- <property name="messageSearchIndex" ref="lazyIndex"/> --> </bean> <bean id ="maildir-subscriptionManager" class="org.apache.james.mailbox.store.StoreSubscriptionManager"> Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-memory.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-memory.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-memory.xml (original) +++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-memory.xml Sat Jan 28 11:56:55 2012 @@ -33,6 +33,8 @@ <constructor-arg index="0" ref="maildir-sessionMapperFactory"/> <constructor-arg index="1" ref="authenticator"/> <constructor-arg index="2" ref="memory-locker"/> + <constructor-arg index="3" ref="aclResolver"/> + <constructor-arg index="4" ref="groupMembershipResolver"/> <!-- <property name="messageSearchIndex" ref="lazyIndex"/> --> </bean> <bean id ="memory-subscriptionManager" class="org.apache.james.mailbox.store.StoreSubscriptionManager"> Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox.xml URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox.xml?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox.xml (original) +++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox.xml Sat Jan 28 11:56:55 2012 @@ -41,10 +41,21 @@ --> <import resource="classpath:META-INF/org/apache/james/spring-mailbox-maildir.xml" /> <import resource="classpath:META-INF/org/apache/james/spring-mailbox-memory.xml" /> + <!-- <import resource="classpath:META-INF/org/apache/james/spring-mailbox-hbase.xml" /> + --> <!-- Mailbox Copier --> <bean id="mailboxcopier" class="org.apache.james.mailbox.copier.MailboxCopierImpl"/> + + <!-- + Mailbox ACL Resolver + --> + <bean id="aclResolver" class="org.apache.james.mailbox.UnionMailboxACLResolver"/> + <!-- + Group Membership Resolver + --> + <bean id="groupMembershipResolver" class="org.apache.james.mailbox.SimpleGroupMembershipResolver"/> </beans> Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java (original) +++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java Sat Jan 28 11:56:55 2012 @@ -24,9 +24,9 @@ import java.util.List; import javax.mail.Flags; +import org.apache.james.mailbox.MailboxACL; import org.apache.james.mailbox.MessageManager; - /** * Describes the current state of a mailbox. */ @@ -43,9 +43,9 @@ public class MailboxMetaData implements private final boolean writeable; private final long highestModSeq; private final boolean modSeqPermanent; - - public MailboxMetaData(final List<Long> recent, final Flags premanentFlags, final long uidValidity, final long nextUid, final long highestModSeq, - final long messageCount, final long unseenCount, final Long firstUnseen, final boolean writeable, final boolean modSeqPermanent) { + private final MailboxACL acl; + + public MailboxMetaData(final List<Long> recent, final Flags premanentFlags, final long uidValidity, final long nextUid, final long highestModSeq, final long messageCount, final long unseenCount, final Long firstUnseen, final boolean writeable, final boolean modSeqPermanent, MailboxACL acl) { super(); if (recent == null) { this.recent = new ArrayList<Long>(); @@ -64,6 +64,7 @@ public class MailboxMetaData implements this.firstUnseen = firstUnseen; this.writeable = writeable; this.modSeqPermanent = modSeqPermanent; + this.acl = acl; } /** @@ -142,4 +143,14 @@ public class MailboxMetaData implements public boolean isModSeqPermanent() { return modSeqPermanent; } + + /* + * (non-Javadoc) + * + * @see org.apache.james.mailbox.MessageManager.MetaData#getACL() + */ + @Override + public MailboxACL getACL() { + return acl; + } } Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java (original) +++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java Sat Jan 28 11:56:55 2012 @@ -27,24 +27,26 @@ import java.util.Locale; import java.util.Random; import org.apache.james.mailbox.BadCredentialsException; +import org.apache.james.mailbox.MailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.MailboxConstants; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxExistsException; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxMetaData; +import org.apache.james.mailbox.MailboxMetaData.Selectability; import org.apache.james.mailbox.MailboxNotFoundException; import org.apache.james.mailbox.MailboxPath; import org.apache.james.mailbox.MailboxPathLocker; +import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution; import org.apache.james.mailbox.MailboxQuery; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MailboxSession.SessionType; import org.apache.james.mailbox.MailboxSessionIdGenerator; import org.apache.james.mailbox.MessageRange; import org.apache.james.mailbox.RequestAware; import org.apache.james.mailbox.StandardMailboxMetaDataComparator; -import org.apache.james.mailbox.MailboxMetaData.Selectability; -import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution; -import org.apache.james.mailbox.MailboxSession.SessionType; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; @@ -74,11 +76,14 @@ public class StoreMailboxManager<Id> imp private final MailboxSessionMapperFactory<Id> mailboxSessionMapperFactory; private final Authenticator authenticator; - private final static Random RANDOM = new Random(); - private int copyBatchSize = 0; + private final MailboxACLResolver aclResolver; + + private final GroupMembershipResolver groupMembershipResolver; + private final static Random RANDOM = new Random(); + private int copyBatchSize = 0; private MailboxPathLocker locker; @@ -89,14 +94,16 @@ public class StoreMailboxManager<Id> imp private int fetchBatchSize = DEFAULT_FETCH_BATCH_SIZE; - public StoreMailboxManager(MailboxSessionMapperFactory<Id> mailboxSessionMapperFactory, final Authenticator authenticator, final MailboxPathLocker locker) { + public StoreMailboxManager(MailboxSessionMapperFactory<Id> mailboxSessionMapperFactory, final Authenticator authenticator, final MailboxPathLocker locker, final MailboxACLResolver aclResolver, final GroupMembershipResolver groupMembershipResolver) { this.authenticator = authenticator; this.locker = locker; - this.mailboxSessionMapperFactory = mailboxSessionMapperFactory; + this.mailboxSessionMapperFactory = mailboxSessionMapperFactory; + this.aclResolver = aclResolver; + this.groupMembershipResolver = groupMembershipResolver; } - public StoreMailboxManager(MailboxSessionMapperFactory<Id> mailboxSessionMapperFactory, final Authenticator authenticator) { - this(mailboxSessionMapperFactory, authenticator, new JVMMailboxPathLocker()); + public StoreMailboxManager(MailboxSessionMapperFactory<Id> mailboxSessionMapperFactory, final Authenticator authenticator, final MailboxACLResolver aclResolver, final GroupMembershipResolver groupMembershipResolver) { + this(mailboxSessionMapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver); } public void setMailboxSessionIdGenerator(MailboxSessionIdGenerator idGenerator) { @@ -179,6 +186,13 @@ public class StoreMailboxManager<Id> imp return locker; } + public MailboxACLResolver getAclResolver() { + return aclResolver; + } + + public GroupMembershipResolver getGroupMembershipResolver() { + return groupMembershipResolver; + } /** * Set the {@link AbstractDelegatingMailboxListener} to use with this {@link MailboxManager} instance. If none is set here a {@link HashMapDelegatingMailboxListener} instance will @@ -284,7 +298,7 @@ public class StoreMailboxManager<Id> imp * @return storeMailbox */ protected StoreMessageManager<Id> createMessageManager(Mailbox<Id> mailbox, MailboxSession session) throws MailboxException { - return new StoreMessageManager<Id>(getMapperFactory(), getMessageSearchIndex(), getEventDispatcher(), getLocker(), mailbox); + return new StoreMessageManager<Id>(getMapperFactory(), getMessageSearchIndex(), getEventDispatcher(), getLocker(), mailbox, getAclResolver(), getGroupMembershipResolver()); } /** Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java (original) +++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java Sat Jan 28 11:56:55 2012 @@ -38,18 +38,24 @@ import javax.mail.util.SharedFileInputSt import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.TeeInputStream; +import org.apache.james.mailbox.MailboxACL; +import org.apache.james.mailbox.MailboxACL.MailboxACLRight; +import org.apache.james.mailbox.MailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.MailboxException; 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.MessageMetaData; import org.apache.james.mailbox.MessageRange; +import org.apache.james.mailbox.MessageResult.FetchGroup; import org.apache.james.mailbox.MessageResultIterator; import org.apache.james.mailbox.ReadOnlyException; import org.apache.james.mailbox.SearchQuery; +import org.apache.james.mailbox.UnsupportedRightException; import org.apache.james.mailbox.UpdatedFlags; -import org.apache.james.mailbox.MessageResult.FetchGroup; import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.MessageMapper.FetchType; import org.apache.james.mailbox.store.mail.MessageMapperFactory; @@ -103,17 +109,23 @@ public class StoreMessageManager<Id> imp private final MessageMapperFactory<Id> mapperFactory; private final MessageSearchIndex<Id> index; + + private final MailboxACLResolver aclResolver; + + private final GroupMembershipResolver groupMembershipResolver; private MailboxPathLocker locker; private int fetchBatchSize; - public StoreMessageManager(final MessageMapperFactory<Id> mapperFactory, final MessageSearchIndex<Id> index, final MailboxEventDispatcher<Id> dispatcher, final MailboxPathLocker locker, final Mailbox<Id> mailbox) throws MailboxException { + public StoreMessageManager(final MessageMapperFactory<Id> mapperFactory, final MessageSearchIndex<Id> index, final MailboxEventDispatcher<Id> dispatcher, final MailboxPathLocker locker, final Mailbox<Id> mailbox, final MailboxACLResolver aclResolver, final GroupMembershipResolver groupMembershipResolver) throws MailboxException { this.mailbox = mailbox; this.dispatcher = dispatcher; this.mapperFactory = mapperFactory; this.index = index; this.locker = locker; + this.aclResolver = aclResolver; + this.groupMembershipResolver = groupMembershipResolver; } public void setFetchBatchSize(int fetchBatchSize) { @@ -395,6 +407,7 @@ public class StoreMessageManager<Id> imp */ public MetaData getMetaData(boolean resetRecent, MailboxSession mailboxSession, org.apache.james.mailbox.MessageManager.MetaData.FetchGroup fetchGroup) throws MailboxException { + final List<Long> recent; final Flags permanentFlags = getPermanentFlags(mailboxSession); final long uidValidity = getMailboxEntity().getUidValidity(); @@ -436,7 +449,10 @@ public class StoreMessageManager<Id> imp recent = new ArrayList<Long>(); break; } - return new MailboxMetaData(recent, permanentFlags, uidValidity, uidNext,highestModSeq, messageCount, unseenCount, firstUnseen, isWriteable(mailboxSession), isModSeqPermanent(mailboxSession)); + // FIXME + boolean resourceOwnerIsGroup = false; + MailboxACL resolvedAcl = aclResolver.applyGlobalACL(mailbox.getACL(), resourceOwnerIsGroup ); + return new MailboxMetaData(recent, permanentFlags, uidValidity, uidNext,highestModSeq, messageCount, unseenCount, firstUnseen, isWriteable(mailboxSession), isModSeqPermanent(mailboxSession), resolvedAcl ); } @@ -676,4 +692,15 @@ public class StoreMessageManager<Id> imp MessageMapper<Id> messageMapper = mapperFactory.getMessageMapper(session); return messageMapper.findFirstUnseenMessageUid(getMailboxEntity()); } + + public boolean hasRight(MailboxACLRight right, MailboxSession session) throws UnsupportedRightException { + User user = session.getUser(); + String userName = user != null ? user.getUserName() : null; + + // FIXME probably mailbox should provide the information whether the resource owner is group; otherwise user names and group names may clash + boolean resourceOwnerIsGroup = false; + + return aclResolver.hasRight(userName, groupMembershipResolver, right, mailbox.getACL(), mailbox.getUser(), resourceOwnerIsGroup); + } + } Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Mailbox.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Mailbox.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Mailbox.java (original) +++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/Mailbox.java Sat Jan 28 11:56:55 2012 @@ -18,6 +18,8 @@ ****************************************************************/ package org.apache.james.mailbox.store.mail.model; +import org.apache.james.mailbox.MailboxACL; + /** * Models long term mailbox data. */ @@ -70,4 +72,20 @@ public interface Mailbox<Id> { * @return uid validity */ long getUidValidity(); + + + /** + * Gets the current ACL for this mailbox. + * + * @return ACL + */ + MailboxACL getACL(); + + /** + * Sets the current ACL for this mailbox. + * + * @param acl + */ + void setACL(MailboxACL acl); + } \ No newline at end of file Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java (original) +++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java Sat Jan 28 11:56:55 2012 @@ -18,7 +18,9 @@ ****************************************************************/ package org.apache.james.mailbox.store.mail.model.impl; +import org.apache.james.mailbox.MailboxACL; import org.apache.james.mailbox.MailboxPath; +import org.apache.james.mailbox.SimpleMailboxACL; import org.apache.james.mailbox.store.mail.model.Mailbox; public class SimpleMailbox<Id> implements Mailbox<Id> { @@ -28,6 +30,7 @@ public class SimpleMailbox<Id> implement private String user; private String name; private long uidValidity; + private MailboxACL acl = SimpleMailboxACL.EMPTY; public SimpleMailbox(MailboxPath path, long uidValidity) { this.namespace = path.getNamespace(); @@ -148,4 +151,20 @@ public class SimpleMailbox<Id> implement this.id = id; } + /* (non-Javadoc) + * @see org.apache.james.mailbox.store.mail.model.Mailbox#getACL() + */ + @Override + public MailboxACL getACL() { + return acl; + } + + /* (non-Javadoc) + * @see org.apache.james.mailbox.store.mail.model.Mailbox#setACL(org.apache.james.mailbox.MailboxACL) + */ + @Override + public void setACL(MailboxACL acl) { + this.acl = acl; + } + } Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java (original) +++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java Sat Jan 28 11:56:55 2012 @@ -26,9 +26,11 @@ import java.util.Iterator; import javax.mail.Flags; +import org.apache.james.mailbox.MailboxACL; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageResult; +import org.apache.james.mailbox.SimpleMailboxACL; import org.apache.james.mailbox.UpdatedFlags; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.store.MailboxEventDispatcher; @@ -102,6 +104,16 @@ public class MailboxEventDispatcherFlags public long getUidValidity() { return 0; } + + @Override + public MailboxACL getACL() { + return SimpleMailboxACL.EMPTY; + } + + @Override + public void setACL(MailboxACL acl) { + } + }; @Before Modified: james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java?rev=1237050&r1=1237049&r2=1237050&view=diff ============================================================================== --- james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java (original) +++ james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java Sat Jan 28 11:56:55 2012 @@ -24,11 +24,15 @@ import java.util.List; import junit.framework.Assert; import org.apache.james.mailbox.BadCredentialsException; +import org.apache.james.mailbox.MailboxACLResolver; import org.apache.james.mailbox.MailboxException; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxPath; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.SimpleGroupMembershipResolver; +import org.apache.james.mailbox.UnionMailboxACLResolver; +import org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver; import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory; import org.apache.james.mailbox.mock.MockMailboxManager; import org.apache.james.mailbox.store.Authenticator; @@ -147,14 +151,19 @@ public class MailboxCopierTest { * @return a new InMemoryMailboxManager */ private MailboxManager newInMemoryMailboxManager() { - + MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); + GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); + return new StoreMailboxManager<Long>( new InMemoryMailboxSessionMapperFactory(), new Authenticator() { public boolean isAuthentic(String userid, CharSequence passwd) { return true; } - }); + }, + aclResolver, + groupMembershipResolver + ); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org