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