Author: norman
Date: Mon May 17 20:37:00 2010
New Revision: 945355
URL: http://svn.apache.org/viewvc?rev=945355&view=rev
Log:
Mailbox instances should only be used within a request. Be sure we use a "new
instance" on each pop3 command (JAMES-1005)
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/NioPOP3Server.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/NioPOP3ServerTest.java
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
Mon May 17 20:37:00 2010
@@ -23,6 +23,7 @@ package org.apache.james.pop3server;
import org.apache.james.imap.mailbox.Mailbox;
+import org.apache.james.imap.mailbox.MailboxException;
import org.apache.james.protocols.api.TLSSupportedSession;
/**
@@ -81,13 +82,6 @@ public interface POP3Session extends TLS
*
* @return mailbox content
*/
- Mailbox getUserMailbox();
-
- /**
- * Sets a new mailbox content
- *
- * @param userMailbox mailbox
- */
- void setUserMailbox(Mailbox mailbox);
+ Mailbox getUserMailbox() throws MailboxException;
}
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java
Mon May 17 20:37:00 2010
@@ -124,7 +124,7 @@ public class ListCmdHandler implements C
response = new POP3Response(POP3Response.ERR_RESPONSE);
}
return response;
- }
+ }
/*
* (non-Javadoc)
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
Mon May 17 20:37:00 2010
@@ -26,7 +26,6 @@ import java.util.List;
import javax.annotation.Resource;
import org.apache.james.imap.mailbox.BadCredentialsException;
-import org.apache.james.imap.mailbox.Mailbox;
import org.apache.james.imap.mailbox.MailboxException;
import org.apache.james.imap.mailbox.MailboxManager;
import org.apache.james.imap.mailbox.MailboxSession;
@@ -61,23 +60,9 @@ public class PassCmdHandler extends Rset
String passArg = parameters;
try {
MailboxSession mSession =
mailboxManager.login(session.getUser(), passArg, session.getLogger());
- StringBuffer sb = new StringBuffer();
- sb.append(mailboxManager.getUserNameSpacePrefix());
- sb.append(mailboxManager.getDelimiter());
- sb.append(session.getUser());
- sb.append(mailboxManager.getDelimiter());
- sb.append("INBOX");
- ;
- String mailboxName = sb.toString();
-
- // check if mailbox exists.. if not just create it
- if (mailboxManager.mailboxExists(mailboxName, mSession) ==
false) {
- mailboxManager.createMailbox(mailboxName, mSession);
- }
- Mailbox mailbox = mailboxManager.getMailbox(mailboxName,
mSession);
-
+
session.getState().put(POP3Session.MAILBOX_SESSION, mSession);
- session.setUserMailbox(mailbox);
+ //session.setUserMailbox(mailbox);
stat(session);
// Store the ipAddress to use it later for pop before smtp
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java
Mon May 17 20:37:00 2010
@@ -83,6 +83,7 @@ public class QuitCmdHandler implements C
mailboxManager.logout(mailboxSession, false);
} catch (MailboxException e) {
// nothing todo on logout
+ session.getLogger().info("Unable to logout from mailboxmanager",
e);
}
return response;
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/NioPOP3Server.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/NioPOP3Server.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/NioPOP3Server.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/NioPOP3Server.java
Mon May 17 20:37:00 2010
@@ -18,10 +18,12 @@
****************************************************************/
package org.apache.james.pop3server.netty;
+import javax.annotation.Resource;
import javax.net.ssl.SSLContext;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.imap.mailbox.MailboxManager;
import org.apache.james.pop3server.POP3HandlerConfigurationData;
import org.apache.james.pop3server.POP3ServerMBean;
import org.apache.james.protocols.api.ProtocolHandlerChain;
@@ -50,6 +52,8 @@ public class NioPOP3Server extends Abstr
private ProtocolHandlerChain handlerChain;
+ private MailboxManager manager;
+
public void setProtocolHandlerChain(ProtocolHandlerChain handlerChain) {
this.handlerChain = handlerChain;
}
@@ -135,7 +139,7 @@ public class NioPOP3Server extends Abstr
@Override
protected ChannelUpstreamHandler createHandler() {
- return new
POP3ChannelUpstreamHandler(NioPOP3Server.this.getProtocolHandlerChain(),
getPOP3HandlerConfiguration(), getLogger(), getSSLContext());
+ return new
POP3ChannelUpstreamHandler(NioPOP3Server.this.getProtocolHandlerChain(),
getPOP3HandlerConfiguration(), manager, getLogger(), getSSLContext());
}
@Override
@@ -177,4 +181,9 @@ public class NioPOP3Server extends Abstr
protected final POP3HandlerConfigurationData getPOP3HandlerConfiguration()
{
return theConfigData;
}
+
+ @Resource(name = "mailboxmanager")
+ public void setMailboxManager(MailboxManager manager) {
+ this.manager = manager;
+ }
}
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
Mon May 17 20:37:00 2010
@@ -21,6 +21,7 @@ package org.apache.james.pop3server.nett
import javax.net.ssl.SSLContext;
import org.apache.commons.logging.Log;
+import org.apache.james.imap.mailbox.MailboxManager;
import org.apache.james.pop3server.POP3HandlerConfigurationData;
import org.apache.james.protocols.api.ProtocolHandlerChain;
import org.apache.james.protocols.api.ProtocolSession;
@@ -38,25 +39,27 @@ public class POP3ChannelUpstreamHandler
private final Log logger;
private final POP3HandlerConfigurationData conf;
private final SSLContext context;
+ private MailboxManager manager;
- public POP3ChannelUpstreamHandler(ProtocolHandlerChain chain,
POP3HandlerConfigurationData conf, Log logger, SSLContext context) {
+ public POP3ChannelUpstreamHandler(ProtocolHandlerChain chain,
POP3HandlerConfigurationData conf, MailboxManager manager,Log logger,
SSLContext context) {
super(chain);
this.logger = logger;
this.conf = conf;
this.context = context;
+ this.manager = manager;
}
- public POP3ChannelUpstreamHandler(ProtocolHandlerChain chain,
POP3HandlerConfigurationData conf, Log logger) {
- this(chain, conf, logger, null);
+ public POP3ChannelUpstreamHandler(ProtocolHandlerChain chain,
POP3HandlerConfigurationData conf, MailboxManager manager, Log logger) {
+ this(chain, conf, manager, logger, null);
}
@Override
protected ProtocolSession createSession(ChannelHandlerContext ctx) throws
Exception {
if (context != null) {
- return new POP3NettySession(conf, logger, ctx,
context.createSSLEngine());
+ return new POP3NettySession(conf, manager, logger, ctx,
context.createSSLEngine());
} else {
- return new POP3NettySession(conf, logger, ctx);
+ return new POP3NettySession(conf, manager, logger, ctx);
}
}
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
Mon May 17 20:37:00 2010
@@ -24,7 +24,11 @@ import java.util.Map;
import javax.net.ssl.SSLEngine;
import org.apache.commons.logging.Log;
+import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.mailbox.Mailbox;
+import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.mailbox.MailboxManager;
+import org.apache.james.imap.mailbox.MailboxSession;
import org.apache.james.pop3server.POP3HandlerConfigurationData;
import org.apache.james.pop3server.POP3Session;
import org.apache.james.socket.netty.AbstractNettySession;
@@ -41,15 +45,16 @@ public class POP3NettySession extends Ab
private int handlerState;
- private Mailbox mailbox;
+ private MailboxManager manager;
- public POP3NettySession(POP3HandlerConfigurationData configData, Log
logger, ChannelHandlerContext handlerContext) {
+ public POP3NettySession(POP3HandlerConfigurationData configData,
MailboxManager manager,Log logger, ChannelHandlerContext handlerContext) {
super(logger, handlerContext);
this.configData = configData;
+ this.manager = manager;
}
- public POP3NettySession(POP3HandlerConfigurationData configData, Log
logger, ChannelHandlerContext handlerContext, SSLEngine engine) {
+ public POP3NettySession(POP3HandlerConfigurationData configData,
MailboxManager manager, Log logger, ChannelHandlerContext handlerContext,
SSLEngine engine) {
super(logger, handlerContext, engine);
this.configData = configData;
}
@@ -106,16 +111,25 @@ public class POP3NettySession extends Ab
* (non-Javadoc)
* @see org.apache.james.pop3server.POP3Session#getUserMailbox()
*/
- public Mailbox getUserMailbox() {
+ public Mailbox getUserMailbox() throws MailboxException {
+ StringBuffer sb = new StringBuffer();
+ sb.append(manager.getUserNameSpacePrefix());
+ sb.append(manager.getDelimiter());
+ sb.append(getUser());
+ sb.append(manager.getDelimiter());
+ sb.append("INBOX");
+ ;
+ String mailboxName = sb.toString();
+
+ MailboxSession session = (MailboxSession)
getState().get(MAILBOX_SESSION);
+ if (session == null) throw new
MailboxException(HumanReadableText.INVALID_LOGIN);
+ // check if mailbox exists.. if not just create it
+ if (manager.mailboxExists(mailboxName,session) == false) {
+ manager.createMailbox(mailboxName, session);
+ }
+ Mailbox mailbox = manager.getMailbox(mailboxName, session);
+
return mailbox;
}
- /*
- * (non-Javadoc)
- * @see
org.apache.james.pop3server.POP3Session#setUserMailbox(org.apache.james.imap.mailbox.Mailbox)
- */
- public void setUserMailbox(Mailbox mailbox) {
- this.mailbox = mailbox;
- }
-
}
Modified:
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
(original)
+++
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
Mon May 17 20:37:00 2010
@@ -65,7 +65,7 @@ public abstract class AbstractAsyncPOP3S
protected DNSService dnsservice;
protected MockFileSystem fSystem;
protected ProtocolHandlerChainImpl chain;
- private InMemoryMailboxManager manager;
+ protected InMemoryMailboxManager manager;
public AbstractAsyncPOP3ServerTest() {
super("AsyncPOP3ServerTest");
Modified:
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/NioPOP3ServerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/NioPOP3ServerTest.java?rev=945355&r1=945354&r2=945355&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/NioPOP3ServerTest.java
(original)
+++
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/NioPOP3ServerTest.java
Mon May 17 20:37:00 2010
@@ -45,6 +45,7 @@ public class NioPOP3ServerTest extends A
log.setLevel(SimpleLog.LOG_LEVEL_DEBUG);
m_pop3Server.setLog(log);
m_pop3Server.setMailServer(m_mailServer);
+ m_pop3Server.setMailboxManager(manager);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]