You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2012/01/11 16:35:28 UTC
svn commit: r1230094 - in /james/server/trunk/pop3server/src:
main/java/org/apache/james/pop3server/core/
main/java/org/apache/james/pop3server/mailbox/
main/java/org/apache/james/pop3server/netty/
test/java/org/apache/james/pop3server/
Author: norman
Date: Wed Jan 11 15:35:28 2012
New Revision: 1230094
URL: http://svn.apache.org/viewvc?rev=1230094&view=rev
Log:
Adjust for latest protocols changes
Added:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
Removed:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/JamesPassCmdHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java?rev=1230094&r1=1230093&r2=1230094&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java Wed Jan 11 15:35:28 2012
@@ -37,12 +37,13 @@ import org.apache.james.protocols.pop3.c
import org.apache.james.protocols.pop3.core.UidlCmdHandler;
import org.apache.james.protocols.pop3.core.UnknownCmdHandler;
import org.apache.james.protocols.pop3.core.UserCmdHandler;
+import org.apache.james.protocols.pop3.core.WelcomeMessageHandler;
public class CoreCmdHandlerLoader implements HandlersPackage {
private final static String CAPACMDHANDLER = CapaCmdHandler.class.getName();
private final static String USERCMDHANDLER = UserCmdHandler.class.getName();
- private final static String PASSCMDHANDLER = JamesPassCmdHandler.class.getName();
+ private final static String PASSCMDHANDLER = PassCmdHandler.class.getName();
private final static String LISTCMDHANDLER = ListCmdHandler.class.getName();
private final static String UIDLCMDHANDLER = UidlCmdHandler.class.getName();
private final static String RSETCMDHANDLER = RsetCmdHandler.class.getName();
Added: 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=1230094&view=auto
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java (added)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java Wed Jan 11 15:35:28 2012
@@ -0,0 +1,90 @@
+/****************************************************************
+ * 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.pop3server.core;
+
+import java.io.IOException;
+
+import javax.annotation.Resource;
+
+import org.apache.james.mailbox.BadCredentialsException;
+import org.apache.james.mailbox.MailboxException;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxPath;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.pop3server.mailbox.MailboxAdapter;
+import org.apache.james.protocols.api.Request;
+import org.apache.james.protocols.api.Response;
+import org.apache.james.protocols.lib.POP3BeforeSMTPHelper;
+import org.apache.james.protocols.lib.Slf4jLoggerAdapter;
+import org.apache.james.protocols.pop3.POP3Response;
+import org.apache.james.protocols.pop3.POP3Session;
+import org.apache.james.protocols.pop3.core.AbstractPassCmdHandler;
+import org.apache.james.protocols.pop3.mailbox.Mailbox;
+
+/**
+ * {@link PassCmdHandler} which also handles POP3 Before SMTP
+ *
+ */
+public class PassCmdHandler extends AbstractPassCmdHandler {
+
+ private MailboxManager manager;
+
+
+ @Resource(name = "mailboxmanager")
+ public void setMailboxManager(MailboxManager manager) {
+ this.manager = manager;
+ }
+
+ public Response onCommand(POP3Session session, Request request) {
+ Response response = super.onCommand(session, request);
+ if (POP3Response.OK_RESPONSE.equals(response.getRetCode())) {
+ POP3BeforeSMTPHelper.addIPAddress(session.getRemoteAddress().getAddress().getHostAddress());
+ }
+ return response;
+ }
+
+
+ @Override
+ protected Mailbox auth(POP3Session session, String password) throws Exception {
+ MailboxSession mSession = null;
+ try {
+ mSession = manager.login(session.getUser(), password, new Slf4jLoggerAdapter(session.getLogger()));
+ manager.startProcessingRequest(mSession);
+ MailboxPath inbox = MailboxPath.inbox(mSession);
+
+ // check if the mailbox exists, if not create it
+ if (!manager.mailboxExists(inbox, mSession)) {
+ manager.createMailbox(inbox, mSession);
+ }
+ MessageManager mailbox = manager.getMailbox(MailboxPath.inbox(mSession), mSession);
+ return new MailboxAdapter(manager, mailbox, mSession);
+ } catch (BadCredentialsException e) {
+ return null;
+ } catch (MailboxException e) {
+ throw new IOException("Unable to access mailbox for user " + session.getUser(), e);
+ } finally {
+ if (mSession != null) {
+ manager.endProcessingRequest(mSession);
+ }
+ }
+
+ }
+
+}
Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java?rev=1230094&r1=1230093&r2=1230094&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java Wed Jan 11 15:35:28 2012
@@ -21,11 +21,11 @@ package org.apache.james.pop3server.nett
import org.apache.james.pop3server.core.CoreCmdHandlerLoader;
import org.apache.james.pop3server.jmx.JMXHandlersLoader;
+import org.apache.james.protocols.api.ProtocolConfiguration;
import org.apache.james.protocols.api.logger.ProtocolLoggerAdapter;
import org.apache.james.protocols.lib.handler.HandlersPackage;
import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.apache.james.protocols.netty.BasicChannelUpstreamHandler;
-import org.apache.james.protocols.pop3.POP3Configuration;
import org.apache.james.protocols.pop3.POP3Protocol;
import org.jboss.netty.channel.ChannelUpstreamHandler;
@@ -36,7 +36,7 @@ public class POP3Server extends Abstract
/**
* The configuration data to be passed to the handler
*/
- private POP3Configuration theConfigData = new POP3HandlerConfigurationDataImpl();
+ private ProtocolConfiguration theConfigData = new POP3Configuration();
private BasicChannelUpstreamHandler coreHandler;
@Override
@@ -54,7 +54,7 @@ public class POP3Server extends Abstract
/**
* A class to provide POP3 handler configuration to the handlers
*/
- private class POP3HandlerConfigurationDataImpl extends POP3Configuration {
+ private class POP3Configuration implements ProtocolConfiguration {
/**
* @see org.apache.james.pop3server.POP3HandlerConfiguration#getHelloName()
@@ -62,6 +62,16 @@ public class POP3Server extends Abstract
public String getHelloName() {
return POP3Server.this.getHelloName();
}
+
+ @Override
+ public String getGreeting() {
+ return null;
+ }
+
+ @Override
+ public String getSoftwareName() {
+ return "JAMES POP3 Server ";
+ }
}
@Override
Modified: james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3ServerTest.java?rev=1230094&r1=1230093&r2=1230094&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3ServerTest.java (original)
+++ james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3ServerTest.java Wed Jan 11 15:35:28 2012
@@ -42,7 +42,6 @@ import org.apache.james.mailbox.MessageM
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.StoreMailboxManager;
-import org.apache.james.pop3server.mailbox.JamesMailboxFactory;
import org.apache.james.pop3server.netty.POP3Server;
import org.apache.james.protocols.lib.POP3BeforeSMTPHelper;
import org.apache.james.protocols.lib.PortUtil;
@@ -125,11 +124,7 @@ public class POP3ServerTest extends Test
}
});
manager.init();
-
- //chain.put("mailboxmanager", manager);
- JamesMailboxFactory mailboxFactory = new JamesMailboxFactory();
- mailboxFactory.setMailboxManager(manager);
- chain.put("mailboxfactory", mailboxFactory);
+ chain.put("mailboxmanager", manager);
fSystem = new MockFileSystem();
chain.put("filesystem", fSystem);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org