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 2010/03/10 14:05:12 UTC

svn commit: r921336 - in /james/imap/trunk: deployment/src/test/java/org/apache/james/imap/functional/ deployment/src/test/java/org/apache/james/imap/functional/inmemory/ deployment/src/test/java/org/apache/james/imap/functional/jpa/ deployment/src/tes...

Author: norman
Date: Wed Mar 10 13:05:11 2010
New Revision: 921336

URL: http://svn.apache.org/viewvc?rev=921336&view=rev
Log:
Rewrite api to allow accessing the MailboxSession in abstract method implementation. This is mainly a need for JCR (IMAP-93)

Added:
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareMailboxSession.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareUser.java
Modified:
    james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/ImapHostSystem.java
    james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java
    james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/JPAHostSystem.java
    james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/user/InMemoryUserManager.java
    james/imap/trunk/deployment/src/test/java/org/apache/james/mailboxmanager/torque/SimpleUserManager.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java
    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/JCRSubscriptionManager.java
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.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/JPASubscriptionManager.java
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
    james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java
    james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryStoreMailbox.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/StoreMailbox.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/StoreSubscriptionManager.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/deployment/src/test/java/org/apache/james/imap/functional/ImapHostSystem.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/ImapHostSystem.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/ImapHostSystem.java (original)
+++ james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/ImapHostSystem.java Wed Mar 10 13:05:11 2010
@@ -66,6 +66,7 @@ public abstract class ImapHostSystem imp
 
     public final void reset() throws Exception {
         users.clear();
+        
         resetData();
     }
     

Modified: james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java (original)
+++ james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/inmemory/InMemoryHostSystem.java Wed Mar 10 13:05:11 2010
@@ -57,7 +57,7 @@ public class InMemoryHostSystem extends 
 
     @Override
     protected void resetData() throws Exception {
-        mailboxManager.deleteEverything();
+        //mailboxManager.deleteEverything();
     }
 
 }

Modified: james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/JPAHostSystem.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/JPAHostSystem.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/JPAHostSystem.java (original)
+++ james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/JPAHostSystem.java Wed Mar 10 13:05:11 2010
@@ -32,7 +32,6 @@ import org.apache.james.imap.jpa.JPASubs
 import org.apache.james.imap.jpa.openjpa.OpenJPAMailboxManager;
 import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
-import org.apache.james.imap.store.StoreMailboxManager;
 import org.apache.james.test.functional.HostSystem;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 
@@ -45,7 +44,7 @@ public class JPAHostSystem extends ImapH
         return host;
     }
     
-    private final StoreMailboxManager mailboxManager;
+    private final OpenJPAMailboxManager mailboxManager;
     private final InMemoryUserManager userManager; 
 
     public JPAHostSystem() throws Exception {

Modified: james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/user/InMemoryUserManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/user/InMemoryUserManager.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/user/InMemoryUserManager.java (original)
+++ james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/jpa/user/InMemoryUserManager.java Wed Mar 10 13:05:11 2010
@@ -49,31 +49,31 @@ public class InMemoryUserManager impleme
         return result;
     }
 
-    public void subscribe(String userid, String mailbox)
+    public void subscribe(org.apache.james.imap.mailbox.MailboxSession.User userid, String mailbox)
             throws SubscriptionException {
         User user = (User) users.get(userid);
         if (user == null) {
-            user = new User(userid);
-            users.put(userid, user);
+            user = new User(userid.getUserName());
+            users.put(userid.getUserName(), user);
         }
         user.addSubscription(mailbox);
     }
 
-    public Collection<String> subscriptions(String userid) throws SubscriptionException {
-        User user = (User) users.get(userid);
+    public Collection<String> subscriptions(org.apache.james.imap.mailbox.MailboxSession.User userid) throws SubscriptionException {
+        User user = (User) users.get(userid.getUserName());
         if (user == null) {
-            user = new User(userid);
-            users.put(userid, user);
+            user = new User(userid.getUserName());
+            users.put(userid.getUserName(), user);
         }
         return user.getSubscriptions();
     }
 
-    public void unsubscribe(String userid, String mailbox)
+    public void unsubscribe(org.apache.james.imap.mailbox.MailboxSession.User userid, String mailbox)
             throws SubscriptionException {
-        User user = (User) users.get(userid);
+        User user = (User) users.get(userid.getUserName());
         if (user == null) {
-            user = new User(userid);
-            users.put(userid, user);
+            user = new User(userid.getUserName());
+            users.put(userid.getUserName(), user);
         }
         user.removeSubscription(mailbox);
     }

Modified: james/imap/trunk/deployment/src/test/java/org/apache/james/mailboxmanager/torque/SimpleUserManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/java/org/apache/james/mailboxmanager/torque/SimpleUserManager.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/deployment/src/test/java/org/apache/james/mailboxmanager/torque/SimpleUserManager.java (original)
+++ james/imap/trunk/deployment/src/test/java/org/apache/james/mailboxmanager/torque/SimpleUserManager.java Wed Mar 10 13:05:11 2010
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.james.imap.mailbox.SubscriptionException;
+import org.apache.james.imap.mailbox.MailboxSession.User;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.Subscriber;
 
@@ -35,31 +36,31 @@ public class SimpleUserManager implement
         this.users = new HashMap<String, UserDetails>();
     }
     
-    public void subscribe(String userid, String mailbox)
+    public void subscribe(User u, String mailbox)
             throws SubscriptionException {
-        UserDetails user = (UserDetails) users.get(userid);
+        UserDetails user = (UserDetails) users.get(u.getUserName());
         if (user == null) {
-            user = new UserDetails(userid);
-            users.put(userid, user);
+            user = new UserDetails(u.getUserName());
+            users.put(u.getUserName(), user);
         }
         user.addSubscription(mailbox);
     }
 
-    public Collection<String> subscriptions(String userid) throws SubscriptionException {
-        UserDetails user = (UserDetails) users.get(userid);
+    public Collection<String> subscriptions(User u) throws SubscriptionException {
+        UserDetails user = (UserDetails) users.get(u.getUserName());
         if (user == null) {
-            user = new UserDetails(userid);
-            users.put(userid, user);
+            user = new UserDetails(u.getUserName());
+            users.put(u.getUserName(), user);
         }
         return user.getSubscriptions();
     }
 
-    public void unsubscribe(String userid, String mailbox)
+    public void unsubscribe(User userid, String mailbox)
             throws SubscriptionException {
-        UserDetails user = (UserDetails) users.get(userid);
+        UserDetails user = (UserDetails) users.get(userid.getUserName());
         if (user == null) {
-            user = new UserDetails(userid);
-            users.put(userid, user);
+            user = new UserDetails(userid.getUserName());
+            users.put(userid.getUserName(), user);
         }
         user.removeSubscription(mailbox);
     }

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java Wed Mar 10 13:05:11 2010
@@ -3,11 +3,14 @@ package org.apache.james.imap.jcr;
 import java.util.Date;
 import java.util.List;
 
+import javax.jcr.Repository;
 import javax.jcr.Session;
 import javax.mail.Flags;
+import javax.swing.RepaintManager;
 
 import org.apache.james.imap.jcr.mail.model.JCRHeader;
 import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.StoreMailbox;
 import org.apache.james.imap.store.mail.MessageMapper;
 import org.apache.james.imap.store.mail.model.Header;
@@ -17,11 +20,11 @@ import org.apache.james.imap.store.mail.
 
 public class JCRMailbox extends StoreMailbox{
 
-    private final Session session;
+    private final Repository repos;
 
-    public JCRMailbox(Mailbox mailbox, Session session) {
-        super(mailbox);
-        this.session = session;
+    public JCRMailbox(final Mailbox mailbox, final MailboxSession session, final Repository repos) {
+        super(mailbox, session );
+        this.repos = repos;
     }
 
     @Override
@@ -42,7 +45,7 @@ public class JCRMailbox extends StoreMai
     }
 
     @Override
-    protected MessageMapper createMessageMapper() {
+    protected MessageMapper createMessageMapper(MailboxSession session) {
         
         return null;
     }

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -18,11 +18,23 @@
  ****************************************************************/
 package org.apache.james.imap.jcr;
 
-import javax.jcr.Session;
+import java.util.ArrayList;
+import java.util.Locale;
 
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.SimpleCredentials;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.jcr.mail.JCRMailboxMapper;
+import org.apache.james.imap.mailbox.BadCredentialsException;
 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.PasswordAwareMailboxSession;
+import org.apache.james.imap.store.PasswordAwareUser;
 import org.apache.james.imap.store.StoreMailbox;
 import org.apache.james.imap.store.StoreMailboxManager;
 import org.apache.james.imap.store.Subscriber;
@@ -37,28 +49,35 @@ import org.apache.james.imap.store.trans
  */
 public class JCRMailboxManager extends StoreMailboxManager{
 
-    private final Session session;
+	private final Repository repository;
 
-    public JCRMailboxManager(final Authenticator authenticator, final Subscriber subscriber, final Session session) {
+    public JCRMailboxManager(final Authenticator authenticator, final Subscriber subscriber, final Repository repository) {
         super(authenticator, subscriber);
-        this.session = session;
+        this.repository = repository;
     }
 
     @Override
-    protected StoreMailbox createMailbox(Mailbox mailboxRow) {
+    protected StoreMailbox createMailbox(Mailbox mailboxRow, MailboxSession session) {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
-    protected MailboxMapper createMailboxMapper() {
-        return new JCRMailboxMapper(session);
+    protected MailboxMapper createMailboxMapper(MailboxSession session) throws MailboxException{
+    	PasswordAwareUser s = (PasswordAwareUser) session.getUser();
+        try {
+			return new JCRMailboxMapper(repository.login(new SimpleCredentials(s.getUserName(), s.getPassword().toCharArray())));
+		} catch (LoginException e) {
+			throw new MailboxException(HumanReadableText.INVALID_LOGIN, e);
+		} catch (RepositoryException e) {
+			throw new MailboxException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e);
+		}
     }
 
     @Override
-    protected void doCreate(String namespaceName) throws MailboxException {
+    protected void doCreate(String namespaceName, MailboxSession session) throws MailboxException {
         final Mailbox mailbox = new org.apache.james.imap.jcr.mail.model.JCRMailbox(namespaceName, randomUidValidity());
-        final MailboxMapper mapper = createMailboxMapper();
+        final MailboxMapper mapper = createMailboxMapper(session);
         mapper.execute(new TransactionalMapper.Transaction(){
 
             public void run() throws MailboxException {
@@ -67,5 +86,18 @@ public class JCRMailboxManager extends S
             
         });
     }
+    
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.MailboxManager#login(java.lang.String, java.lang.String, org.apache.commons.logging.Log)
+     */
+    public MailboxSession login(String userid, String passwd, Log log) throws BadCredentialsException, MailboxException {
+        if (login(userid, passwd)) {
+        	
+            return new PasswordAwareMailboxSession(randomId(), userid, passwd, log, getDelimiter(), new ArrayList<Locale>());
+        } else {
+            throw new BadCredentialsException();
+        }
+    }
 
 }

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java Wed Mar 10 13:05:11 2010
@@ -18,10 +18,17 @@
  ****************************************************************/
 package org.apache.james.imap.jcr;
 
-import javax.jcr.Session;
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.SimpleCredentials;
 
+import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.jcr.user.JCRSubscriptionMapper;
 import org.apache.james.imap.jcr.user.model.JCRSubscription;
+import org.apache.james.imap.mailbox.SubscriptionException;
+import org.apache.james.imap.mailbox.MailboxSession.User;
+import org.apache.james.imap.store.PasswordAwareUser;
 import org.apache.james.imap.store.StoreSubscriptionManager;
 import org.apache.james.imap.store.user.SubscriptionMapper;
 import org.apache.james.imap.store.user.model.Subscription;
@@ -33,23 +40,33 @@ import org.apache.james.imap.store.user.
  */
 public class JCRSubscriptionManager extends StoreSubscriptionManager{
 
-    private final Session session;
+    private final Repository repos;
 
-    public JCRSubscriptionManager(final Session session) {
+    public JCRSubscriptionManager(final Repository repos) {
         super();
 
-        this.session = session;
+        this.repos = repos;
     }
     
     @Override
-    protected SubscriptionMapper createMapper() {
-        JCRSubscriptionMapper mapper = new JCRSubscriptionMapper(session);
-        return mapper;
+    protected SubscriptionMapper createMapper(User user) throws SubscriptionException{
+    	PasswordAwareUser pUser = (PasswordAwareUser) user;
+    	
+		try {
+			JCRSubscriptionMapper mapper = new JCRSubscriptionMapper(repos.login(new SimpleCredentials(pUser.getUserName(), pUser.getPassword().toCharArray())));
+	        return mapper;
+
+		} catch (LoginException e) {
+			throw new SubscriptionException(HumanReadableText.INVALID_LOGIN, e);
+		} catch (RepositoryException e) {
+			throw new SubscriptionException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e);
+
+		}
     }
 
     @Override
-    protected Subscription createSubscription(String user, String mailbox) {
-        return new JCRSubscription(user, mailbox);
+    protected Subscription createSubscription(User user, String mailbox) {
+        return new JCRSubscription(user.getUserName(), mailbox);
     }
 
 }

Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java (original)
+++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java Wed Mar 10 13:05:11 2010
@@ -30,6 +30,7 @@ import org.apache.james.imap.jpa.mail.JP
 import org.apache.james.imap.jpa.mail.model.JPAHeader;
 import org.apache.james.imap.jpa.mail.model.JPAMailboxMembership;
 import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.StoreMailbox;
 import org.apache.james.imap.store.mail.MailboxMapper;
 import org.apache.james.imap.store.mail.MessageMapper;
@@ -47,8 +48,8 @@ public abstract class JPAMailbox extends
 
     protected final EntityManagerFactory entityManagerFactory;
 
-    public JPAMailbox(final Mailbox mailbox, final EntityManagerFactory entityManagerfactory) {
-        super(mailbox);
+    public JPAMailbox(final Mailbox mailbox, MailboxSession session, final EntityManagerFactory entityManagerfactory) {
+        super(mailbox, session);
         this.entityManagerFactory = entityManagerfactory;
     }    
 
@@ -67,7 +68,7 @@ public abstract class JPAMailbox extends
 
     
     @Override
-    protected MessageMapper createMessageMapper() {
+    protected MessageMapper createMessageMapper(MailboxSession session) {
         final MessageMapper mapper = new JPAMessageMapper(entityManagerFactory.createEntityManager(), mailboxId);
         return mapper;
     }

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.jpa;
 import javax.persistence.EntityManagerFactory;
 
 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;
@@ -40,9 +41,9 @@ public abstract class JPAMailboxManager 
     
     
     @Override
-    protected void doCreate(String namespaceName) throws MailboxException {
+    protected void doCreate(String namespaceName, MailboxSession session) throws MailboxException {
         final Mailbox mailbox = new org.apache.james.imap.jpa.mail.model.JPAMailbox(namespaceName, randomUidValidity());
-        final MailboxMapper mapper = createMailboxMapper();
+        final MailboxMapper mapper = createMailboxMapper(session);
         mapper.execute(new TransactionalMapper.Transaction(){
 
             public void run() throws MailboxException {
@@ -52,4 +53,22 @@ public abstract class JPAMailboxManager 
         });
     }
     
+    /**
+     * Delete every Mailbox which exists
+     * 
+     * @throws MailboxException
+     */
+
+    public void deleteEverything() throws MailboxException {
+        final MailboxMapper mapper = createMailboxMapper(null);
+        mapper.execute(new TransactionalMapper.Transaction() {
+
+            public void run() throws MailboxException {
+                mapper.deleteAll(); 
+                mailboxes.clear();
+            }
+            
+        });
+    }
+    
 }

Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPASubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPASubscriptionManager.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPASubscriptionManager.java (original)
+++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPASubscriptionManager.java Wed Mar 10 13:05:11 2010
@@ -22,6 +22,7 @@ import javax.persistence.EntityManagerFa
 
 import org.apache.james.imap.jpa.user.JPASubscriptionMapper;
 import org.apache.james.imap.jpa.user.model.JPASubscription;
+import org.apache.james.imap.mailbox.MailboxSession.User;
 import org.apache.james.imap.store.StoreSubscriptionManager;
 import org.apache.james.imap.store.user.SubscriptionMapper;
 import org.apache.james.imap.store.user.model.Subscription;
@@ -34,13 +35,13 @@ public class JPASubscriptionManager exte
         this.factory = factory;
     }
 
-    protected SubscriptionMapper createMapper() {
+    protected SubscriptionMapper createMapper(User user) {
         final JPASubscriptionMapper mapper = new JPASubscriptionMapper(factory.createEntityManager());
         return mapper;
     }
     
-    protected Subscription createSubscription(final String user, final String mailbox) {
-        final Subscription newSubscription = new JPASubscription(user, mailbox);
+    protected Subscription createSubscription(final User user, final String mailbox) {
+        final Subscription newSubscription = new JPASubscription(user.getUserName(), mailbox);
         return newSubscription;
     }
 }

Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java (original)
+++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java Wed Mar 10 13:05:11 2010
@@ -24,6 +24,7 @@ import javax.persistence.EntityManagerFa
 import org.apache.james.imap.jpa.JPAMailbox;
 import org.apache.james.imap.jpa.mail.JPAMailboxMapper;
 import org.apache.james.imap.jpa.mail.openjpa.OpenJPAMailboxMapper;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.mail.model.Mailbox;
 
 /**
@@ -33,8 +34,8 @@ import org.apache.james.imap.store.mail.
 public class OpenJPAMailbox extends JPAMailbox{
 
     public OpenJPAMailbox(Mailbox mailbox,
-			EntityManagerFactory entityManagerfactory) {
-		super(mailbox, entityManagerfactory);
+    		MailboxSession session, EntityManagerFactory entityManagerfactory) {
+		super(mailbox, session, entityManagerfactory);
 	}
 
     /*

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -23,6 +23,7 @@ import javax.persistence.EntityManagerFa
 
 import org.apache.james.imap.jpa.JPAMailboxManager;
 import org.apache.james.imap.jpa.mail.openjpa.OpenJPAMailboxMapper;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.StoreMailbox;
 import org.apache.james.imap.store.Subscriber;
@@ -41,15 +42,15 @@ public class OpenJPAMailboxManager exten
 	}
 
 	@Override
-	protected MailboxMapper createMailboxMapper() {
+	protected MailboxMapper createMailboxMapper(MailboxSession session) {
         return new OpenJPAMailboxMapper(entityManagerFactory.createEntityManager());
 	}
 
 
     @Override
-    protected StoreMailbox createMailbox(Mailbox mailboxRow) {
+    protected StoreMailbox createMailbox(Mailbox mailboxRow, MailboxSession session) {
         StoreMailbox result;
-        result = new OpenJPAMailbox(mailboxRow, entityManagerFactory);
+        result = new OpenJPAMailbox(mailboxRow, session, entityManagerFactory);
         return result;
     }
 }

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -26,6 +26,7 @@ import java.util.concurrent.ConcurrentHa
 
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxNotFoundException;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.StorageException;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.StoreMailbox;
@@ -33,6 +34,7 @@ import org.apache.james.imap.store.Store
 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;
 
 public class InMemoryMailboxManager extends StoreMailboxManager implements MailboxMapper {
 
@@ -45,18 +47,18 @@ public class InMemoryMailboxManager exte
     }
 
     @Override
-    protected StoreMailbox createMailbox(Mailbox mailboxRow) {
-        final InMemoryStoreMailbox storeMailbox = new InMemoryStoreMailbox((InMemoryMailbox)mailboxRow);
+    protected StoreMailbox createMailbox(Mailbox mailboxRow, MailboxSession session) {
+        final InMemoryStoreMailbox storeMailbox = new InMemoryStoreMailbox((InMemoryMailbox)mailboxRow, session);
         return storeMailbox;
     }
 
     @Override
-    protected MailboxMapper createMailboxMapper() {
+    protected MailboxMapper createMailboxMapper(MailboxSession session) {
         return this;
     }
 
     @Override
-    protected void doCreate(String namespaceName) throws StorageException {
+    protected void doCreate(String namespaceName, MailboxSession session) throws StorageException {
         InMemoryMailbox mailbox = new InMemoryMailbox(randomId(), namespaceName, randomUidValidity());
         save(mailbox);
     }
@@ -125,4 +127,22 @@ public class InMemoryMailboxManager exte
         transaction.run();
     }
 
+    /**
+     * Delete every Mailbox which exists
+     * 
+     * @throws MailboxException
+     */
+
+    public void deleteEverything() throws MailboxException {
+        final MailboxMapper mapper = createMailboxMapper(null);
+        mapper.execute(new TransactionalMapper.Transaction() {
+
+            public void run() throws MailboxException {
+                mapper.deleteAll(); 
+                mailboxes.clear();
+            }
+            
+        });
+    }
+    
 }

Modified: james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryStoreMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryStoreMailbox.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryStoreMailbox.java (original)
+++ james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryStoreMailbox.java Wed Mar 10 13:05:11 2010
@@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHa
 import javax.mail.Flags;
 
 import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.SearchQuery;
 import org.apache.james.imap.mailbox.StorageException;
@@ -47,8 +48,8 @@ public class InMemoryStoreMailbox extend
     private Map<Long, MailboxMembership> membershipByUid;
     private InMemoryMailbox mailbox;
 
-    public InMemoryStoreMailbox(InMemoryMailbox mailbox) {
-        super(mailbox);
+    public InMemoryStoreMailbox(InMemoryMailbox mailbox, MailboxSession session) {
+        super(mailbox,session);
         this.mailbox = mailbox;
         this.membershipByUid = new ConcurrentHashMap<Long, MailboxMembership>(INITIAL_SIZE);
     }
@@ -70,7 +71,7 @@ public class InMemoryStoreMailbox extend
     }
 
     @Override
-    protected MessageMapper createMessageMapper() {
+    protected MessageMapper createMessageMapper(MailboxSession session) {
         return this;
     }
 

Modified: james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemorySubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemorySubscriptionManager.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemorySubscriptionManager.java (original)
+++ james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemorySubscriptionManager.java Wed Mar 10 13:05:11 2010
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.mailbox.MailboxSession.User;
 import org.apache.james.imap.store.StoreSubscriptionManager;
 import org.apache.james.imap.store.user.SubscriptionMapper;
 import org.apache.james.imap.store.user.model.Subscription;
@@ -44,12 +45,12 @@ public class InMemorySubscriptionManager
     }
 
     @Override
-    protected SubscriptionMapper createMapper() {
+    protected SubscriptionMapper createMapper(User user) {
         return this;
     }
 
     @Override
-    protected Subscription createSubscription(String user, String mailbox) {
+    protected Subscription createSubscription(User user, String mailbox) {
         return new InMemorySubscription(mailbox, user);
     }
 
@@ -105,10 +106,10 @@ public class InMemorySubscriptionManager
         private final String mailbox;
         private final String user;
         
-        public InMemorySubscription(final String mailbox, final String user) {
+        public InMemorySubscription(final String mailbox, final User user) {
             super();
             this.mailbox = mailbox;
-            this.user = user;
+            this.user = user.getUserName();
         }
 
         public String getMailbox() {

Added: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareMailboxSession.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareMailboxSession.java?rev=921336&view=auto
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareMailboxSession.java (added)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareMailboxSession.java Wed Mar 10 13:05:11 2010
@@ -0,0 +1,60 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.imap.store;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+
+/**
+ * Mailbox session which holds a PasswordAwareUser
+ * 
+ *
+ */
+public class PasswordAwareMailboxSession extends SimpleMailboxSession implements PasswordAwareUser{
+
+	private final String password;
+
+	public PasswordAwareMailboxSession(long sessionId, String userName,String password,
+			Log log, char deliminator, List<Locale> localePreferences) {
+		super(sessionId, userName, log, deliminator, localePreferences);
+		this.password = password;
+	}
+	
+
+	/**
+	 * Return the User which is bound the the MailboxSession. This User is in fact an
+	 * instance of PasswordAwareUser. 
+	 * 
+	 * return user
+	 */
+	public User getUser() {
+		return this;
+	}
+	
+	/**
+	 * Return the Password for the logged in user
+	 * 
+	 * @return password
+	 */
+	public String getPassword() {
+		return password;
+	}
+}

Added: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareUser.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareUser.java?rev=921336&view=auto
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareUser.java (added)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/PasswordAwareUser.java Wed Mar 10 13:05:11 2010
@@ -0,0 +1,38 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.imap.store;
+
+import org.apache.james.imap.mailbox.MailboxSession;
+
+/**
+ * User which holds a reference to the password
+ * 
+ *
+ */
+public interface PasswordAwareUser extends MailboxSession.User {
+	
+	/**
+	 * Return the Password for the logged in user
+	 * 
+	 * @return password
+	 */
+	public String getPassword();
+	
+	
+}

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java Wed Mar 10 13:05:11 2010
@@ -68,10 +68,12 @@ public abstract class StoreMailbox imple
     protected final long mailboxId;
 
     private final UidChangeTracker tracker;
-
-    public StoreMailbox(final Mailbox mailbox) {
+    private final MailboxSession session;
+    
+    public StoreMailbox(final Mailbox mailbox, MailboxSession session) {
         this.mailboxId = mailbox.getMailboxId();
         this.tracker = new UidChangeTracker(mailbox.getLastUid());
+        this.session = session;
     }
 
     /**
@@ -88,7 +90,7 @@ public abstract class StoreMailbox imple
      * 
      * @return mapper
      */
-    protected abstract MessageMapper createMessageMapper();
+    protected abstract MessageMapper createMessageMapper(MailboxSession session);
     
     
     protected abstract Mailbox getMailboxRow() throws MailboxException;
@@ -107,7 +109,7 @@ public abstract class StoreMailbox imple
      * @see org.apache.james.imap.mailbox.Mailbox#getMessageCount(org.apache.james.imap.mailbox.MailboxSession)
      */
     public int getMessageCount(MailboxSession mailboxSession) throws MailboxException {
-        final MessageMapper messageMapper = createMessageMapper();
+        final MessageMapper messageMapper = createMessageMapper(session);
         return (int) messageMapper.countMessagesInMailbox();
     }
 
@@ -224,7 +226,7 @@ public abstract class StoreMailbox imple
                 }
                 
                 final MailboxMembership message = createMessage(internalDate, uid, size, bodyStartOctet, messageBytes, flags, headers, propertyBuilder);
-                final MessageMapper mapper = createMessageMapper();
+                final MessageMapper mapper = createMessageMapper(session);
 
                 mapper.execute(new TransactionalMapper.Transaction() {
 
@@ -298,7 +300,7 @@ public abstract class StoreMailbox imple
     public Iterator<MessageResult> getMessages(final MessageRange set, FetchGroup fetchGroup,
             MailboxSession mailboxSession) throws MailboxException {
         UidRange range = uidRangeForMessageSet(set);
-        final MessageMapper messageMapper = createMessageMapper();
+        final MessageMapper messageMapper = createMessageMapper(session);
         final List<MailboxMembership> rows = new ArrayList<MailboxMembership>(messageMapper.findInMailbox(set));
         return getMessages(fetchGroup, range, rows);
     }
@@ -338,7 +340,7 @@ public abstract class StoreMailbox imple
     }
 
     public long[] recent(final boolean reset, MailboxSession mailboxSession) throws MailboxException {
-        final MessageMapper mapper = createMessageMapper();
+        final MessageMapper mapper = createMessageMapper(session);
         final List<Long> results = new ArrayList<Long>();
 
         mapper.execute(new TransactionalMapper.Transaction() {
@@ -361,7 +363,7 @@ public abstract class StoreMailbox imple
 
     public Long getFirstUnseen(MailboxSession mailboxSession) throws MailboxException {
         try {
-            final MessageMapper messageMapper = createMessageMapper();
+            final MessageMapper messageMapper = createMessageMapper(session);
             final List<MailboxMembership> members = messageMapper.findUnseenMessagesInMailboxOrderByUid();
             final Iterator<MailboxMembership> it = members.iterator();
             final Long result;
@@ -379,7 +381,7 @@ public abstract class StoreMailbox imple
     }
 
     public int getUnseenCount(MailboxSession mailboxSession) throws MailboxException {
-        final MessageMapper messageMapper = createMessageMapper();
+        final MessageMapper messageMapper = createMessageMapper(session);
         final int count = (int) messageMapper.countUnseenMessagesInMailbox();
         return count;
     }
@@ -394,7 +396,7 @@ public abstract class StoreMailbox imple
 
     private Iterator<Long> doExpunge(final MessageRange set)
     throws MailboxException {
-        final MessageMapper mapper = createMessageMapper();
+        final MessageMapper mapper = createMessageMapper(session);
         final Collection<Long> uids = new TreeSet<Long>();
         
         mapper.execute(new TransactionalMapper.Transaction() {
@@ -424,7 +426,7 @@ public abstract class StoreMailbox imple
 
     private Map<Long, Flags> doSetFlags(final Flags flags, final boolean value, final boolean replace,
             final MessageRange set, final MailboxSession mailboxSession) throws MailboxException {
-        final MessageMapper mapper = createMessageMapper();
+        final MessageMapper mapper = createMessageMapper(session);
         final SortedMap<Long, Flags> newFlagsByUid = new TreeMap<Long, Flags>();
         final Map<Long, Flags> originalFlagsByUid = new HashMap<Long, Flags>(INITIAL_SIZE_FLAGS);
         mapper.execute(new TransactionalMapper.Transaction(){
@@ -479,7 +481,7 @@ public abstract class StoreMailbox imple
      * @see org.apache.james.imap.mailbox.Mailbox#search(org.apache.james.imap.mailbox.SearchQuery, org.apache.james.imap.mailbox.MailboxSession)
      */
     public Iterator<Long> search(SearchQuery query, MailboxSession mailboxSession) throws MailboxException {
-        final MessageMapper messageMapper = createMessageMapper();
+        final MessageMapper messageMapper = createMessageMapper(session);
         final List<MailboxMembership> members = messageMapper.searchMailbox(query);
         final Set<Long> uids = new TreeSet<Long>();
         for (MailboxMembership member:members) {
@@ -514,7 +516,7 @@ public abstract class StoreMailbox imple
     public void copy(final List<MailboxMembership> originalRows, MailboxSession session) throws MailboxException {
         try {
             final List<MailboxMembership> copiedRows = new ArrayList<MailboxMembership>();
-            final MessageMapper mapper = createMessageMapper();
+            final MessageMapper mapper = createMessageMapper(session);
             mapper.execute(new TransactionalMapper.Transaction() {
 
                 public void run() throws MailboxException {
@@ -545,7 +547,7 @@ public abstract class StoreMailbox imple
 
     public void copyTo(MessageRange set, StoreMailbox toMailbox, MailboxSession session) throws MailboxException {
         try {
-            final MessageMapper mapper = createMessageMapper();
+            final MessageMapper mapper = createMessageMapper(session);
             
             final List<MailboxMembership> originalRows = mapper.findInMailbox(set);
             toMailbox.copy(originalRows, session);

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -57,7 +57,7 @@ public abstract class StoreMailboxManage
 
     private final static Random random = new Random();
 
-    private final Map<String, StoreMailbox> mailboxes;
+    protected final Map<String, StoreMailbox> mailboxes;
 
     private final Authenticator authenticator;    
     private final Subscriber subscriber;    
@@ -82,14 +82,14 @@ public abstract class StoreMailboxManage
      * @param mailboxRow
      * @return storeMailbox
      */
-    protected abstract StoreMailbox createMailbox(Mailbox mailboxRow);
+    protected abstract StoreMailbox createMailbox(Mailbox mailboxRow, MailboxSession session);
     
     /**
      * Create the MailboxMapper which should get used 
      * 
      * @return mailboxMapper
      */
-    protected abstract MailboxMapper createMailboxMapper();
+    protected abstract MailboxMapper createMailboxMapper(MailboxSession session) throws MailboxException;
     
     /**
      * Create a Mailbox for the given namespace and store it to the underlying storage
@@ -97,7 +97,7 @@ public abstract class StoreMailboxManage
      * @param namespaceName
      * @throws MailboxException
      */
-    protected abstract void doCreate(String namespaceName) throws MailboxException;
+    protected abstract void doCreate(String namespaceName, MailboxSession session) throws MailboxException;
     
     
     /*
@@ -106,7 +106,7 @@ public abstract class StoreMailboxManage
      */
     public org.apache.james.imap.mailbox.Mailbox getMailbox(String mailboxName, MailboxSession session)
     throws MailboxException {
-        return doGetMailbox(mailboxName);
+        return doGetMailbox(mailboxName, session);
     }
 
     /**
@@ -116,9 +116,9 @@ public abstract class StoreMailboxManage
      * @return mailbox the mailbox for the given name
      * @throws MailboxException get thrown if no Mailbox could be found for the given name
      */
-    private StoreMailbox doGetMailbox(String mailboxName) throws MailboxException {
+    private StoreMailbox doGetMailbox(String mailboxName, MailboxSession session) throws MailboxException {
         synchronized (mailboxes) {
-            final MailboxMapper mapper = createMailboxMapper();
+            final MailboxMapper mapper = createMailboxMapper(session);
             Mailbox mailboxRow = mapper.findMailboxByName(mailboxName);
 
             if (mailboxRow == null) {
@@ -130,7 +130,7 @@ public abstract class StoreMailboxManage
 
                 StoreMailbox result = (StoreMailbox) mailboxes.get(mailboxName);
                 if (result == null) {
-                    result = createMailbox(mailboxRow);
+                    result = createMailbox(mailboxRow, session);
                     mailboxes.put(mailboxName, result);
                 }
                 return result;
@@ -166,7 +166,7 @@ public abstract class StoreMailboxManage
                         final String mailbox = namespaceName
                         .substring(0, index);
                         if (!mailboxExists(mailbox, mailboxSession)) {
-                            doCreate(mailbox);
+                            doCreate(mailbox, mailboxSession);
                         }
                     }
                     index = namespaceName.indexOf(delimiter, ++index);
@@ -174,7 +174,7 @@ public abstract class StoreMailboxManage
                 if (mailboxExists(namespaceName, mailboxSession)) {
                     throw new MailboxExistsException(namespaceName); 
                 } else {
-                    doCreate(namespaceName);
+                    doCreate(namespaceName, mailboxSession);
                 }
             }
         }
@@ -189,7 +189,7 @@ public abstract class StoreMailboxManage
         session.getLog().info("deleteMailbox " + mailboxName);
         synchronized (mailboxes) {
             // TODO put this into a serilizable transaction
-            final MailboxMapper mapper = createMailboxMapper();
+            final MailboxMapper mapper = createMailboxMapper(session);
             mapper.execute(new TransactionalMapper.Transaction() {
 
                 public void run() throws MailboxException {
@@ -222,7 +222,7 @@ public abstract class StoreMailboxManage
                 throw new MailboxExistsException(to);
             }
 
-            final MailboxMapper mapper = createMailboxMapper();                
+            final MailboxMapper mapper = createMailboxMapper(session);                
             mapper.execute(new TransactionalMapper.Transaction() {
 
                 public void run() throws MailboxException {
@@ -285,8 +285,8 @@ public abstract class StoreMailboxManage
      */
     public void copyMessages(MessageRange set, String from, String to,
             MailboxSession session) throws MailboxException {
-        StoreMailbox toMailbox = doGetMailbox(to);
-        StoreMailbox fromMailbox = doGetMailbox(from);
+        StoreMailbox toMailbox = doGetMailbox(to, session);
+        StoreMailbox fromMailbox = doGetMailbox(from, session);
         fromMailbox.copyTo(set, toMailbox, session);
     }
 
@@ -310,7 +310,7 @@ public abstract class StoreMailboxManage
                 delimiter).replace(freeWildcard, SQL_WILDCARD_CHAR)
                 .replace(localWildcard, SQL_WILDCARD_CHAR);
 
-        final MailboxMapper mapper = createMailboxMapper();
+        final MailboxMapper mapper = createMailboxMapper(session);
         final List<Mailbox> mailboxes = mapper.findMailboxWithNameLike(search);
         final List<MailboxMetaData> results = new ArrayList<MailboxMetaData>(mailboxes.size());
         for (Mailbox mailbox: mailboxes) {
@@ -350,7 +350,7 @@ public abstract class StoreMailboxManage
      */
     public boolean mailboxExists(String mailboxName, MailboxSession session) throws MailboxException {
         synchronized (mailboxes) {
-            final MailboxMapper mapper = createMailboxMapper();
+            final MailboxMapper mapper = createMailboxMapper(session);
             final long count = mapper.countMailboxesWithName(mailboxName);
             if (count == 0) {
                 mailboxes.remove(mailboxName);
@@ -366,23 +366,8 @@ public abstract class StoreMailboxManage
         }
     }
 
-    /**
-     * Delete every Mailbox which exists
-     * 
-     * @throws MailboxException
-     */
-    public void deleteEverything() throws MailboxException {
-        final MailboxMapper mapper = createMailboxMapper();
-        mapper.execute(new TransactionalMapper.Transaction() {
-
-            public void run() throws MailboxException {
-                mapper.deleteAll(); 
-                mailboxes.clear();
-            }
-            
-        });
-    }
-
+  
+    
     /*
      * (non-Javadoc)
      * @see org.apache.james.imap.mailbox.MailboxManager#createSystemSession(java.lang.String, org.apache.commons.logging.Log)
@@ -443,7 +428,7 @@ public abstract class StoreMailboxManage
      */
     public void subscribe(MailboxSession session, String mailbox)
     throws SubscriptionException {
-        subscriber.subscribe(session.getUser().getUserName(), mailbox);
+        subscriber.subscribe(session.getUser(), mailbox);
     }
 
     /*
@@ -451,7 +436,7 @@ public abstract class StoreMailboxManage
      * @see org.apache.james.imap.mailbox.MailboxManager#subscriptions(org.apache.james.imap.mailbox.MailboxSession)
      */
     public Collection<String> subscriptions(MailboxSession session) throws SubscriptionException {
-        return subscriber.subscriptions(session.getUser().getUserName());
+        return subscriber.subscriptions(session.getUser());
     }
 
     /*
@@ -460,7 +445,7 @@ public abstract class StoreMailboxManage
      */
     public void unsubscribe(MailboxSession session, String mailbox)
     throws SubscriptionException {
-        subscriber.unsubscribe(session.getUser().getUserName(), mailbox);
+        subscriber.unsubscribe(session.getUser(), mailbox);
     }
 
     /*
@@ -468,7 +453,7 @@ public abstract class StoreMailboxManage
      * @see org.apache.james.imap.mailbox.MailboxManager#addListener(java.lang.String, org.apache.james.imap.mailbox.MailboxListener, org.apache.james.imap.mailbox.MailboxSession)
      */
     public void addListener(String mailboxName, MailboxListener listener, MailboxSession session) throws MailboxException {
-        final StoreMailbox mailbox = doGetMailbox(mailboxName);
+        final StoreMailbox mailbox = doGetMailbox(mailboxName,session);
         mailbox.addListener(listener);
     }
 
@@ -492,4 +477,13 @@ public abstract class StoreMailboxManage
     public void logout(MailboxSession session, boolean force) throws MailboxException {
         // fine
     }
+    
+    /**
+     * Return the delemiter to use
+     * 
+     * @return delemiter
+     */
+    protected char getDelimiter() {
+    	return delimiter;
+    }
 }

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreSubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreSubscriptionManager.java?rev=921336&r1=921335&r2=921336&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreSubscriptionManager.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreSubscriptionManager.java Wed Mar 10 13:05:11 2010
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.SubscriptionException;
+import org.apache.james.imap.mailbox.MailboxSession.User;
 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;
@@ -44,19 +45,20 @@ public abstract class StoreSubscriptionM
      * 
      * @return mapper
      */
-    protected abstract SubscriptionMapper createMapper();
+    protected abstract SubscriptionMapper createMapper(User user) throws SubscriptionException;
     
+
     /*
      * (non-Javadoc)
-     * @see org.apache.james.imap.store.Subscriber#subscribe(java.lang.String, java.lang.String)
+     * @see org.apache.james.imap.store.Subscriber#subscribe(org.apache.james.imap.mailbox.MailboxSession.User, java.lang.String)
      */
-    public void subscribe(final String user, final String mailbox) throws SubscriptionException {
-        final SubscriptionMapper mapper = createMapper();
+    public void subscribe(final User user, final String mailbox) throws SubscriptionException {
+        final SubscriptionMapper mapper = createMapper(user);
         try {
             mapper.execute(new TransactionalMapper.Transaction() {
 
                 public void run() throws MailboxException {
-                    final Subscription subscription = mapper.findFindMailboxSubscriptionForUser(user, mailbox);
+                    final Subscription subscription = mapper.findFindMailboxSubscriptionForUser(user.getUserName(), mailbox);
                     if (subscription == null) {
                         final Subscription newSubscription = createSubscription(user, mailbox);
                         mapper.save(newSubscription);
@@ -78,15 +80,15 @@ public abstract class StoreSubscriptionM
      * @param mailbox
      * @return subscription 
      */
-    protected abstract Subscription createSubscription(final String user, final String mailbox);
+    protected abstract Subscription createSubscription(final User user, final String mailbox);
 
     /*
      * (non-Javadoc)
      * @see org.apache.james.imap.store.Subscriber#subscriptions(java.lang.String)
      */
-    public Collection<String> subscriptions(final String user) throws SubscriptionException {
-        final SubscriptionMapper mapper = createMapper();
-        final List<Subscription> subscriptions = mapper.findSubscriptionsForUser(user);
+    public Collection<String> subscriptions(final User user) throws SubscriptionException {
+        final SubscriptionMapper mapper = createMapper(user);
+        final List<Subscription> subscriptions = mapper.findSubscriptionsForUser(user.getUserName());
         final Collection<String> results = new HashSet<String>(INITIAL_SIZE);
         for (Subscription subscription:subscriptions) {
             results.add(subscription.getMailbox());
@@ -98,13 +100,13 @@ public abstract class StoreSubscriptionM
      * (non-Javadoc)
      * @see org.apache.james.imap.store.Subscriber#unsubscribe(java.lang.String, java.lang.String)
      */
-    public void unsubscribe(final String user, final String mailbox) throws SubscriptionException {
-        final SubscriptionMapper mapper = createMapper();
+    public void unsubscribe(final User user, final String mailbox) throws SubscriptionException {
+        final SubscriptionMapper mapper = createMapper(user);
         try {
             mapper.execute(new TransactionalMapper.Transaction() {
 
                 public void run() throws MailboxException {
-                    final Subscription subscription = mapper.findFindMailboxSubscriptionForUser(user, mailbox);
+                    final Subscription subscription = mapper.findFindMailboxSubscriptionForUser(user.getUserName(), mailbox);
                     if (subscription != null) {
                         mapper.delete(subscription);
                     }

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -22,6 +22,7 @@ package org.apache.james.imap.store;
 import java.util.Collection;
 
 import org.apache.james.imap.mailbox.SubscriptionException;
+import org.apache.james.imap.mailbox.MailboxSession.User;
 
 /**
  * Subscribes users.
@@ -34,7 +35,7 @@ public interface Subscriber {
      * @param mailbox not null
      * @throws SubscriptionException when subscription fails
      */
-    public void subscribe(String user, String mailbox)
+    public void subscribe(User user, String mailbox)
             throws SubscriptionException;
 
     /**
@@ -43,7 +44,7 @@ public interface Subscriber {
      * @return not null
      * @throws SubscriptionException when subscriptions cannot be read
      */
-    public Collection<String> subscriptions(String user) throws SubscriptionException;
+    public Collection<String> subscriptions(User user) throws SubscriptionException;
 
     /**
      * Unsubscribes the given user from the given mailbox.
@@ -51,6 +52,6 @@ public interface Subscriber {
      * @param mailbox not null
      * @throws SubscriptionException when subscriptions cannot be read
      */
-    public void unsubscribe(String user, String mailbox)
+    public void unsubscribe(User user, String mailbox)
             throws SubscriptionException;
 }

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=921336&r1=921335&r2=921336&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 Wed Mar 10 13:05:11 2010
@@ -378,16 +378,16 @@ public class TorqueMailboxManager implem
 
     public void subscribe(MailboxSession session, String mailbox)
             throws SubscriptionException {
-        subscriper.subscribe(session.getUser().getUserName(), mailbox);
+        subscriper.subscribe(session.getUser(), mailbox);
     }
 
     public Collection<String> subscriptions(MailboxSession session) throws SubscriptionException {
-        return subscriper.subscriptions(session.getUser().getUserName());
+        return subscriper.subscriptions(session.getUser());
     }
 
     public void unsubscribe(MailboxSession session, String mailbox)
             throws SubscriptionException {
-        subscriper.unsubscribe(session.getUser().getUserName(), mailbox);
+        subscriper.unsubscribe(session.getUser(), mailbox);
     }
 
     public void addListener(String mailboxName, MailboxListener listener, MailboxSession session) throws MailboxException {



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org