Author: norman
Date: Sat Aug 21 08:21:29 2010
New Revision: 987709

URL: http://svn.apache.org/viewvc?rev=987709&view=rev
Log:
Deprecate Subscriper interface so we can remove it once torque impl is removed 
(IMAP-205)

Removed:
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPASubscriptionManager.java
    
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/MaildirSubscriptionManager.java
    
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemorySubscriptionManager.java
    
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreSubscriptionManager.java
Modified:
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxSessionMapperFactory.java
    
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRHostSystem.java
    
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRStressTest.java
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
    
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAHostSystem.java
    
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAStressTest.java
    
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/MaildirMailboxManager.java
    
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirHostSystem.java
    
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirStressTest.java
    
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java
    
james/imap/trunk/memory/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java
    
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/DelegatingMailboxManager.java
    
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
    
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/Subscriber.java
    
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java

Modified: 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -23,15 +23,16 @@ import org.apache.commons.logging.LogFac
 import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.jcr.mail.JCRMailboxMapper;
 import org.apache.james.imap.jcr.mail.model.JCRMailbox;
+import org.apache.james.imap.jcr.user.model.JCRSubscription;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.util.MailboxEventDispatcher;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.StoreMailboxManager;
 import org.apache.james.imap.store.MapperStoreMessageManager;
-import org.apache.james.imap.store.Subscriber;
 import org.apache.james.imap.store.mail.model.Mailbox;
 import org.apache.james.imap.store.transaction.TransactionalMapper;
+import org.apache.james.imap.store.user.model.Subscription;
 
 /**
  * JCR implementation of a MailboxManager
@@ -42,12 +43,12 @@ public class JCRMailboxManager extends S
     private final JCRMailboxSessionMapperFactory mapperFactory;
     private final Log logger = LogFactory.getLog(JCRMailboxManager.class);
     
-    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, 
final Authenticator authenticator, final Subscriber subscriber) {
-           this(mapperFactory, authenticator, subscriber, new 
JCRVmNodeLocker());
+    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, 
final Authenticator authenticator) {
+           this(mapperFactory, authenticator, new JCRVmNodeLocker());
     }
 
-    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, 
final Authenticator authenticator, final Subscriber subscriber, final 
NodeLocker locker) {
-        super(mapperFactory, authenticator, subscriber);
+    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, 
final Authenticator authenticator, final NodeLocker locker) {
+        super(mapperFactory, authenticator);
         this.mapperFactory = mapperFactory;
     }
 
@@ -69,5 +70,15 @@ public class JCRMailboxManager extends S
 
         });
     }
+    
+
+   
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.imap.store.StoreMailboxManager#createSubscription(org.apache.james.imap.mailbox.MailboxSession,
 java.lang.String)
+     */
+    protected Subscription createSubscription(MailboxSession session, String 
mailbox) {
+        return new JCRSubscription(session.getUser().getUserName(), mailbox, 
logger);
+    }
 
 }

Modified: 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxSessionMapperFactory.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxSessionMapperFactory.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxSessionMapperFactory.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxSessionMapperFactory.java
 Sat Aug 21 08:21:29 2010
@@ -52,7 +52,7 @@ public class JCRMailboxSessionMapperFact
 
     public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository 
repository, final NodeLocker locker, final int scaling, final int 
messageScaling) {
         this.repository = repository;
-        this.logger = LogFactory.getLog(JCRSubscriptionManager.class);
+        this.logger = LogFactory.getLog(JCRMailboxSessionMapperFactory.class);
         this.locker = locker;
         this.scaling = scaling;
         this.messageScaling = messageScaling;

Modified: 
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRHostSystem.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRHostSystem.java 
(original)
+++ 
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRHostSystem.java 
Sat Aug 21 08:21:29 2010
@@ -30,7 +30,6 @@ import org.apache.james.imap.functional.
 import org.apache.james.imap.jcr.GlobalMailboxSessionJCRRepository;
 import org.apache.james.imap.jcr.JCRMailboxManager;
 import org.apache.james.imap.jcr.JCRMailboxSessionMapperFactory;
-import org.apache.james.imap.jcr.JCRSubscriptionManager;
 import org.apache.james.imap.jcr.JCRUtils;
 import org.apache.james.imap.jcr.JCRVmNodeLocker;
 import org.apache.james.imap.mailbox.MailboxSession;
@@ -72,7 +71,7 @@ public class JCRHostSystem extends ImapH
             JCRMailboxSessionMapperFactory mf = new 
JCRMailboxSessionMapperFactory(sessionRepos, new JCRVmNodeLocker());
 
             //TODO: Fix the scaling stuff so the tests will pass with max 
scaling too
-            mailboxManager = new JCRMailboxManager(mf, userManager, new 
JCRSubscriptionManager(mf));
+            mailboxManager = new JCRMailboxManager(mf, userManager);
             final DefaultImapProcessorFactory defaultImapProcessorFactory = 
new DefaultImapProcessorFactory();
             resetUserMetaData();
             MailboxSession session = 
mailboxManager.createSystemSession("test", new SimpleLog("TestLog"));

Modified: 
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRStressTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRStressTest.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRStressTest.java 
(original)
+++ 
james/imap/trunk/jcr/src/test/java/org/apache/james/imap/jcr/JCRStressTest.java 
Sat Aug 21 08:21:29 2010
@@ -29,7 +29,6 @@ import org.apache.james.imap.functional.
 import org.apache.james.imap.jcr.GlobalMailboxSessionJCRRepository;
 import org.apache.james.imap.jcr.JCRMailboxManager;
 import org.apache.james.imap.jcr.JCRMailboxSessionMapperFactory;
-import org.apache.james.imap.jcr.JCRSubscriptionManager;
 import org.apache.james.imap.jcr.JCRUtils;
 import org.apache.james.imap.jcr.JCRVmNodeLocker;
 import org.apache.james.imap.jcr.MailboxSessionJCRRepository;
@@ -64,7 +63,7 @@ public class JCRStressTest extends Abstr
 
         MailboxSessionJCRRepository sessionRepos = new 
GlobalMailboxSessionJCRRepository(repository, workspace, user, pass);
         JCRMailboxSessionMapperFactory mf = new 
JCRMailboxSessionMapperFactory(sessionRepos, new JCRVmNodeLocker());
-        mailboxManager = new JCRMailboxManager(mf, null, new 
JCRSubscriptionManager(mf));
+        mailboxManager = new JCRMailboxManager(mf, null);
 
     }
     

Modified: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
 (original)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -20,14 +20,15 @@ package org.apache.james.imap.jpa;
 
 import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.jpa.mail.model.JPAMailbox;
+import org.apache.james.imap.jpa.user.model.JPASubscription;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.StoreMailboxManager;
-import org.apache.james.imap.store.Subscriber;
 import org.apache.james.imap.store.mail.MailboxMapper;
 import org.apache.james.imap.store.mail.model.Mailbox;
 import org.apache.james.imap.store.transaction.TransactionalMapper;
+import org.apache.james.imap.store.user.model.Subscription;
 
 /**
  * JPA implementation of {...@link StoreMailboxManager}
@@ -35,8 +36,8 @@ import org.apache.james.imap.store.trans
 public abstract class JPAMailboxManager extends StoreMailboxManager<Long> {
     
     public JPAMailboxManager(JPAMailboxSessionMapperFactory 
mailboxSessionMapperFactory,
-            final Authenticator authenticator, final Subscriber subscriber) {
-        super(mailboxSessionMapperFactory, authenticator, subscriber);
+            final Authenticator authenticator) {
+        super(mailboxSessionMapperFactory, authenticator);
     }
     
     @Override
@@ -68,5 +69,14 @@ public abstract class JPAMailboxManager 
             
         });
     }
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.imap.store.StoreMailboxManager#createSubscription(org.apache.james.imap.mailbox.MailboxSession,
 java.lang.String)
+     */
+    protected Subscription createSubscription(final MailboxSession session, 
final String mailbox) {
+        final Subscription newSubscription = new 
JPASubscription(session.getUser().getUserName(), mailbox);
+        return newSubscription;
+    }
     
 }

Modified: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
 (original)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -27,7 +27,6 @@ import org.apache.james.imap.mailbox.Mai
 import org.apache.james.imap.mailbox.util.MailboxEventDispatcher;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.MapperStoreMessageManager;
-import org.apache.james.imap.store.Subscriber;
 import org.apache.james.imap.store.mail.model.Mailbox;
 
 /**
@@ -38,13 +37,13 @@ public class OpenJPAMailboxManager exten
 
     private boolean useStreaming;
 
-    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Subscriber subscriber, boolean useStreaming) {
-        super(mapperFactory, authenticator, subscriber);
+    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, boolean useStreaming) {
+        super(mapperFactory, authenticator);
         this.useStreaming = useStreaming;
     }
 
-    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Subscriber subscriber) {
-        this(mapperFactory, authenticator, subscriber, false);
+    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator) {
+        this(mapperFactory, authenticator, false);
     }
 
     @Override

Modified: 
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAHostSystem.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAHostSystem.java 
(original)
+++ 
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAHostSystem.java 
Sat Aug 21 08:21:29 2010
@@ -30,7 +30,6 @@ import org.apache.james.imap.encode.main
 import org.apache.james.imap.functional.ImapHostSystem;
 import org.apache.james.imap.functional.InMemoryUserManager;
 import org.apache.james.imap.jpa.JPAMailboxSessionMapperFactory;
-import org.apache.james.imap.jpa.JPASubscriptionManager;
 import org.apache.james.imap.jpa.mail.model.JPAMailbox;
 import org.apache.james.imap.jpa.mail.model.JPAProperty;
 import 
org.apache.james.imap.jpa.mail.model.openjpa.AbstractJPAMailboxMembership;
@@ -76,7 +75,7 @@ public class JPAHostSystem extends ImapH
         userManager = new InMemoryUserManager();
         entityManagerFactory = 
OpenJPAPersistence.getEntityManagerFactory(properties);
         JPAMailboxSessionMapperFactory mf = new 
JPAMailboxSessionMapperFactory(entityManagerFactory);
-        mailboxManager = new OpenJPAMailboxManager(mf, userManager, new 
JPASubscriptionManager(mf));
+        mailboxManager = new OpenJPAMailboxManager(mf, userManager);
         
         final DefaultImapProcessorFactory defaultImapProcessorFactory = new 
DefaultImapProcessorFactory();
         resetUserMetaData();

Modified: 
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAStressTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAStressTest.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAStressTest.java 
(original)
+++ 
james/imap/trunk/jpa/src/test/java/org/apache/james/imap/jpa/JPAStressTest.java 
Sat Aug 21 08:21:29 2010
@@ -26,7 +26,6 @@ import javax.persistence.EntityManagerFa
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.james.imap.functional.AbstractStressTest;
 import org.apache.james.imap.jpa.JPAMailboxSessionMapperFactory;
-import org.apache.james.imap.jpa.JPASubscriptionManager;
 import org.apache.james.imap.jpa.mail.model.JPAMailbox;
 import org.apache.james.imap.jpa.mail.model.JPAProperty;
 import 
org.apache.james.imap.jpa.mail.model.openjpa.AbstractJPAMailboxMembership;
@@ -72,7 +71,7 @@ public class JPAStressTest extends Abstr
        
         entityManagerFactory = 
OpenJPAPersistence.getEntityManagerFactory(properties);
         JPAMailboxSessionMapperFactory mf = new 
JPAMailboxSessionMapperFactory(entityManagerFactory);
-        mailboxManager = new OpenJPAMailboxManager(mf, null, new 
JPASubscriptionManager(mf));
+        mailboxManager = new OpenJPAMailboxManager(mf, null);
         
         // Set the lock timeout via SQL because of a bug in openJPA
         // https://issues.apache.org/jira/browse/OPENJPA-1656

Modified: 
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/MaildirMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/MaildirMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/MaildirMailboxManager.java
 (original)
+++ 
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/MaildirMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -23,20 +23,21 @@ import org.apache.james.imap.mailbox.Mai
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.util.MailboxEventDispatcher;
 import org.apache.james.imap.maildir.mail.model.MaildirMailbox;
+import org.apache.james.imap.maildir.user.model.MaildirSubscription;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.MailboxSessionMapperFactory;
 import org.apache.james.imap.store.StoreMailboxManager;
 import org.apache.james.imap.store.MapperStoreMessageManager;
-import org.apache.james.imap.store.Subscriber;
 import org.apache.james.imap.store.mail.MailboxMapper;
 import org.apache.james.imap.store.mail.model.Mailbox;
+import org.apache.james.imap.store.user.model.Subscription;
 
 public class MaildirMailboxManager extends StoreMailboxManager<Integer> {
 
     public MaildirMailboxManager(
             MailboxSessionMapperFactory<Integer> mailboxSessionMapperFactory,
-            Authenticator authenticator, Subscriber subscriber) {
-        super(mailboxSessionMapperFactory, authenticator, subscriber);
+            Authenticator authenticator) {
+        super(mailboxSessionMapperFactory, authenticator);
     }
 
     @Override
@@ -52,5 +53,11 @@ public class MaildirMailboxManager exten
         final MailboxMapper<Integer> mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
         mapper.save(mailbox);
     }
+    
+    @Override
+    protected Subscription createSubscription(MailboxSession session, String 
mailbox) {
+        return new MaildirSubscription(session.getUser().getUserName(), 
mailbox);
+    }
+
 
 }

Modified: 
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirHostSystem.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirHostSystem.java
 (original)
+++ 
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirHostSystem.java
 Sat Aug 21 08:21:29 2010
@@ -26,7 +26,6 @@ import org.apache.james.imap.functional.
 import org.apache.james.imap.functional.InMemoryUserManager;
 import org.apache.james.imap.maildir.MaildirMailboxManager;
 import org.apache.james.imap.maildir.MaildirMailboxSessionMapperFactory;
-import org.apache.james.imap.maildir.MaildirSubscriptionManager;
 import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.test.functional.HostSystem;
@@ -47,8 +46,7 @@ public class MaildirHostSystem extends I
     public MaildirHostSystem() {
         userManager = new InMemoryUserManager();
         mailboxSessionMapperFactory = new 
MaildirMailboxSessionMapperFactory(MAILDIR_HOME + "/%user");
-        MaildirSubscriptionManager sm = new 
MaildirSubscriptionManager(mailboxSessionMapperFactory);
-        mailboxManager = new 
MaildirMailboxManager(mailboxSessionMapperFactory, userManager, sm);
+        mailboxManager = new 
MaildirMailboxManager(mailboxSessionMapperFactory, userManager);
         
         final DefaultImapProcessorFactory defaultImapProcessorFactory = new 
DefaultImapProcessorFactory();
         defaultImapProcessorFactory.configure(mailboxManager);

Modified: 
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirStressTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirStressTest.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirStressTest.java
 (original)
+++ 
james/imap/trunk/maildir/src/test/java/org/apache/james/imap/functional/maildir/MaildirStressTest.java
 Sat Aug 21 08:21:29 2010
@@ -26,7 +26,6 @@ import org.apache.james.imap.functional.
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.maildir.MaildirMailboxManager;
 import org.apache.james.imap.maildir.MaildirMailboxSessionMapperFactory;
-import org.apache.james.imap.maildir.MaildirSubscriptionManager;
 import org.apache.james.imap.store.StoreMailboxManager;
 import org.junit.After;
 import org.junit.Before;
@@ -39,7 +38,7 @@ public class MaildirStressTest extends A
     @Before
     public void setUp() {
         MaildirMailboxSessionMapperFactory mf = new 
MaildirMailboxSessionMapperFactory(MAILDIR_HOME + "/%user");
-        mailboxManager = new MaildirMailboxManager(mf, null, new 
MaildirSubscriptionManager(mf));
+        mailboxManager = new MaildirMailboxManager(mf, null);
     }
     
     @After

Modified: 
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java
 (original)
+++ 
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.inmemory;
 
 import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.inmemory.mail.model.InMemoryMailbox;
+import org.apache.james.imap.inmemory.user.model.InMemorySubscription;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.StorageException;
@@ -29,13 +30,13 @@ import org.apache.james.imap.store.Authe
 import org.apache.james.imap.store.MailboxSessionMapperFactory;
 import org.apache.james.imap.store.StoreMailboxManager;
 import org.apache.james.imap.store.MapperStoreMessageManager;
-import org.apache.james.imap.store.Subscriber;
 import org.apache.james.imap.store.mail.model.Mailbox;
+import org.apache.james.imap.store.user.model.Subscription;
 
 public class InMemoryMailboxManager extends StoreMailboxManager<Long> {
 
-    public InMemoryMailboxManager(MailboxSessionMapperFactory<Long> 
mapperFactory, Authenticator authenticator, Subscriber subscriber) {
-        super(mapperFactory, authenticator, subscriber);
+    public InMemoryMailboxManager(MailboxSessionMapperFactory<Long> 
mapperFactory, Authenticator authenticator) {
+        super(mapperFactory, authenticator);
     }
 
     @Override
@@ -61,7 +62,11 @@ public class InMemoryMailboxManager exte
     public synchronized void deleteEverything() throws MailboxException {
         ((InMemoryMailboxSessionMapperFactory) 
mailboxSessionMapperFactory).deleteAll();
     }
-
+    
+    @Override
+    protected Subscription createSubscription(MailboxSession session, String 
mailbox) {
+        return new InMemorySubscription(mailbox, session.getUser());
+    }
 
     
 }

Modified: 
james/imap/trunk/memory/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/memory/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/memory/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java
 (original)
+++ 
james/imap/trunk/memory/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java
 Sat Aug 21 08:21:29 2010
@@ -24,7 +24,6 @@ import org.apache.james.imap.functional.
 import org.apache.james.imap.functional.InMemoryUserManager;
 import org.apache.james.imap.inmemory.InMemoryMailboxManager;
 import org.apache.james.imap.inmemory.InMemoryMailboxSessionMapperFactory;
-import org.apache.james.imap.inmemory.InMemorySubscriptionManager;
 import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.test.functional.HostSystem;
@@ -42,7 +41,7 @@ public class InMemoryHostSystem extends 
     private InMemoryHostSystem() {
         userManager = new InMemoryUserManager();
         factory = new InMemoryMailboxSessionMapperFactory();
-        mailboxManager = new InMemoryMailboxManager(factory, userManager, new 
InMemorySubscriptionManager(factory));
+        mailboxManager = new InMemoryMailboxManager(factory, userManager);
         final DefaultImapProcessorFactory defaultImapProcessorFactory = new 
DefaultImapProcessorFactory();
         defaultImapProcessorFactory.configure(mailboxManager);
         configure(new DefaultImapDecoderFactory().buildImapDecoder(),

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/DelegatingMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/DelegatingMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/DelegatingMailboxManager.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/DelegatingMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -20,7 +20,6 @@
 package org.apache.james.imap.store;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Locale;
 import java.util.Random;
 
@@ -31,7 +30,6 @@ import org.apache.james.imap.mailbox.Mai
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxSession;
-import org.apache.james.imap.mailbox.SubscriptionException;
 
 /**
  * Abstract {...@link MailboxManager} which delegates various stuff to the 
{...@link Authenticator} and {...@link Subscriber}
@@ -40,11 +38,9 @@ import org.apache.james.imap.mailbox.Sub
 public abstract class DelegatingMailboxManager implements MailboxManager {
 
     private final Authenticator authenticator;
-    private final Subscriber subscriper;
     private final static Random RANDOM = new Random();
 
-    public DelegatingMailboxManager(final Authenticator authenticator, final 
Subscriber subscriper) {
-        this.subscriper = subscriper;
+    public DelegatingMailboxManager(final Authenticator authenticator) {
         this.authenticator = authenticator;
     }
 
@@ -149,30 +145,4 @@ public abstract class DelegatingMailboxM
         // Default do nothing
         
     }
-
-
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.james.imap.mailbox.MailboxManager#subscribe(org.apache.james.imap.mailbox.MailboxSession,
 java.lang.String)
-     */
-    public void subscribe(MailboxSession session, String mailbox) throws 
SubscriptionException {
-        subscriper.subscribe(session, mailbox);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.james.imap.mailbox.MailboxManager#subscriptions(org.apache.james.imap.mailbox.MailboxSession)
-     */
-    public Collection<String> subscriptions(MailboxSession session) throws 
SubscriptionException {
-        return subscriper.subscriptions(session);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.james.imap.mailbox.MailboxManager#unsubscribe(org.apache.james.imap.mailbox.MailboxSession,
 java.lang.String)
-     */
-    public void unsubscribe(MailboxSession session, String mailbox) throws 
SubscriptionException {
-        subscriper.unsubscribe(session, mailbox);
-    }
-
 }

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -20,7 +20,9 @@
 package org.apache.james.imap.store;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 
 import org.apache.commons.logging.Log;
@@ -36,12 +38,15 @@ import org.apache.james.imap.mailbox.Mai
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.StandardMailboxMetaDataComparator;
+import org.apache.james.imap.mailbox.SubscriptionException;
 import org.apache.james.imap.mailbox.MailboxMetaData.Selectability;
 import org.apache.james.imap.mailbox.util.MailboxEventDispatcher;
 import org.apache.james.imap.mailbox.util.SimpleMailboxMetaData;
 import org.apache.james.imap.store.mail.MailboxMapper;
 import org.apache.james.imap.store.mail.model.Mailbox;
 import org.apache.james.imap.store.transaction.TransactionalMapper;
+import org.apache.james.imap.store.user.SubscriptionMapper;
+import org.apache.james.imap.store.user.model.Subscription;
 
 /**
  * This abstract base class of an {...@link MailboxManager} implementation 
provides a high-level api for writing your own
@@ -61,8 +66,8 @@ public abstract class StoreMailboxManage
     private final MailboxPathLock lock = new MailboxPathLock();
     protected final MailboxSessionMapperFactory<Id> 
mailboxSessionMapperFactory;    
     
-    public StoreMailboxManager(MailboxSessionMapperFactory<Id> 
mailboxSessionMapperFactory, final Authenticator authenticator, final 
Subscriber subscriber) {
-        super(authenticator, subscriber);
+    public StoreMailboxManager(MailboxSessionMapperFactory<Id> 
mailboxSessionMapperFactory, final Authenticator authenticator) {
+        super(authenticator);
         this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
         
         // The dispatcher need to have the delegating listener added
@@ -307,5 +312,75 @@ public abstract class StoreMailboxManage
     public void endProcessingRequest(MailboxSession session) {
         mailboxSessionMapperFactory.endRequest(session);
     }
+    
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.imap.store.Subscriber#subscribe(org.apache.james.imap.mailbox.MailboxSession,
 java.lang.String)
+     */
+    public void subscribe(final MailboxSession session, final String mailbox) 
throws SubscriptionException {
+        final SubscriptionMapper mapper = 
mailboxSessionMapperFactory.getSubscriptionMapper(session);
+        try {
+            mapper.execute(new TransactionalMapper.VoidTransaction() {
+
+                public void runVoid() throws MailboxException {
+                    final Subscription subscription = 
mapper.findMailboxSubscriptionForUser(session.getUser().getUserName(), mailbox);
+                    if (subscription == null) {
+                        final Subscription newSubscription = 
createSubscription(session, mailbox);
+                        mapper.save(newSubscription);
+                    }
+                }
+                
+            });
+        } catch (MailboxException e) {
+            throw new SubscriptionException(e.getKey(), (Exception) 
e.getCause());
+        }
+    }
+
+    /**
+     * Create Subscription for the given user and mailbox
+     * 
+     * @param session
+     * @param mailbox
+     * @return subscription 
+     */
+    protected abstract Subscription createSubscription(final MailboxSession 
session, final String mailbox);
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.imap.mailbox.MailboxManager#subscriptions(org.apache.james.imap.mailbox.MailboxSession)
+     */
+    public Collection<String> subscriptions(final MailboxSession session) 
throws SubscriptionException {
+        final SubscriptionMapper mapper = 
mailboxSessionMapperFactory.getSubscriptionMapper(session);
+        final List<Subscription> subscriptions = 
mapper.findSubscriptionsForUser(session.getUser().getUserName());
+        final Collection<String> results = new HashSet<String>();
+        for (Subscription subscription:subscriptions) {
+            results.add(subscription.getMailbox());
+        }        
+        return results;
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.imap.mailbox.MailboxManager#unsubscribe(org.apache.james.imap.mailbox.MailboxSession,
 java.lang.String)
+     */
+    public void unsubscribe(final MailboxSession session, final String 
mailbox) throws SubscriptionException {
+        final SubscriptionMapper mapper = 
mailboxSessionMapperFactory.getSubscriptionMapper(session);
+        try {
+            mapper.execute(new TransactionalMapper.VoidTransaction() {
+
+                public void runVoid() throws MailboxException {
+                    final Subscription subscription = 
mapper.findMailboxSubscriptionForUser(session.getUser().getUserName(), mailbox);
+                    if (subscription != null) {
+                        mapper.delete(subscription);
+                    }
+                }
+
+            });
+        } catch (MailboxException e) {
+            throw new SubscriptionException(e.getKey(), 
(Exception)e.getCause());
+        }
+    }
 
 }

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/Subscriber.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/Subscriber.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/Subscriber.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/Subscriber.java
 Sat Aug 21 08:21:29 2010
@@ -21,12 +21,16 @@ package org.apache.james.imap.store;
 
 import java.util.Collection;
 
+import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.SubscriptionException;
 
 /**
  * Subscribes users.
+ * 
+ * @deprecated Use {...@link MailboxManager}
  */
+...@deprecated
 public interface Subscriber {
     
     /**

Modified: 
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java?rev=987709&r1=987708&r2=987709&view=diff
==============================================================================
--- 
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
 (original)
+++ 
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
 Sat Aug 21 08:21:29 2010
@@ -20,6 +20,7 @@
 package org.apache.james.mailboxmanager.torque;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -40,6 +41,7 @@ import org.apache.james.imap.mailbox.Mai
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.StandardMailboxMetaDataComparator;
+import org.apache.james.imap.mailbox.SubscriptionException;
 import org.apache.james.imap.mailbox.MailboxMetaData.Selectability;
 import org.apache.james.imap.mailbox.util.SimpleMailboxMetaData;
 import org.apache.james.imap.store.Authenticator;
@@ -63,11 +65,14 @@ public class TorqueMailboxManager extend
     private final ReentrantReadWriteLock lock;
 
     private final Map<String, TorqueMailbox> mailboxes;
+
+    private Subscriber subscriper;
     
     public TorqueMailboxManager(final Authenticator authenticator, final 
Subscriber subscriper) {
-        super(authenticator, subscriper);
+        super(authenticator);
         this.lock = new ReentrantReadWriteLock();
         mailboxes = new HashMap<String, TorqueMailbox>();
+        this.subscriper = subscriper;
     }
 
     public Mailbox getMailbox(MailboxPath path, MailboxSession session)
@@ -370,4 +375,16 @@ public class TorqueMailboxManager extend
         mailbox.addListener(listener);
     }
 
+    public void subscribe(MailboxSession session, String mailbox) throws 
SubscriptionException {
+        subscriper.subscribe(session, mailbox);
+    }
+
+    public Collection<String> subscriptions(MailboxSession session) throws 
SubscriptionException {
+        return subscriper.subscriptions(session);
+    }
+
+    public void unsubscribe(MailboxSession session, String mailbox) throws 
SubscriptionException {
+        subscriper.unsubscribe(session, mailbox);
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to