You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2012/01/28 12:56:57 UTC
svn commit: r1237050 [3/3] - in /james/mailbox/trunk: ./
api/src/main/java/org/apache/james/mailbox/
api/src/test/java/org/apache/james/mailbox/
hbase/src/main/java/org/apache/james/mailbox/hbase/
hbase/src/main/java/org/apache/james/mailbox/hbase/mail...
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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org