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