Author: norman
Date: Fri Nov 18 12:42:58 2011
New Revision: 1203626

URL: http://svn.apache.org/viewvc?rev=1203626&view=rev
Log:
Reuse code from protocols-pop3. See PROTOCOLS-2

Added:
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/JamesPassCmdHandler.java
   (with props)
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java
   (with props)
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
   (with props)
Removed:
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Request.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3StreamResponse.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/ReadByteFilterInputStream.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CRLFTerminatedInputStream.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCapability.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/DeleCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ExtraDotInputStream.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/MessageMetaData.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/NoopCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.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/core/RetrCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RsetCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StatCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/UidlCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/UnknownCmdHandler.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/UserCmdHandler.java
    
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractInputStreamTest.java
    
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/CRLFTerminatedInputStreamTest.java
    
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/ExtraDotInputStreamTest.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/core/POP3CommandHandlerResultLogger.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/jmx/CommandHandlerResultJMXMonitor.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java
    
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/POP3CommandHandlerStats.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=1203626&r1=1203625&r2=1203626&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
 Fri Nov 18 12:42:58 2011
@@ -23,12 +23,26 @@ import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.james.protocols.api.handler.HandlersPackage;
+import org.apache.james.protocols.pop3.core.CapaCmdHandler;
+import org.apache.james.protocols.pop3.core.DeleCmdHandler;
+import org.apache.james.protocols.pop3.core.ListCmdHandler;
+import org.apache.james.protocols.pop3.core.NoopCmdHandler;
+import org.apache.james.protocols.pop3.core.POP3CommandDispatcherLineHandler;
+import org.apache.james.protocols.pop3.core.QuitCmdHandler;
+import org.apache.james.protocols.pop3.core.RetrCmdHandler;
+import org.apache.james.protocols.pop3.core.RsetCmdHandler;
+import org.apache.james.protocols.pop3.core.StatCmdHandler;
+import org.apache.james.protocols.pop3.core.StlsCmdHandler;
+import org.apache.james.protocols.pop3.core.TopCmdHandler;
+import org.apache.james.protocols.pop3.core.UidlCmdHandler;
+import org.apache.james.protocols.pop3.core.UnknownCmdHandler;
+import org.apache.james.protocols.pop3.core.UserCmdHandler;
 
 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 = 
PassCmdHandler.class.getName();
+    private final static String PASSCMDHANDLER = 
JamesPassCmdHandler.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/JamesPassCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/JamesPassCmdHandler.java?rev=1203626&view=auto
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/JamesPassCmdHandler.java
 (added)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/JamesPassCmdHandler.java
 Fri Nov 18 12:42:58 2011
@@ -0,0 +1,32 @@
+/****************************************************************
+ * 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 javax.annotation.Resource;
+
+import org.apache.james.protocols.pop3.core.PassCmdHandler;
+import org.apache.james.protocols.pop3.mailbox.MailboxFactory;
+
+public class JamesPassCmdHandler extends PassCmdHandler{
+
+    @Resource(name = "mailboxfactory")
+    public void setMailboxFactory(MailboxFactory factory) {
+        super.setMailboxFactory(factory);
+    }
+}

Propchange: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/JamesPassCmdHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandHandlerResultLogger.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandHandlerResultLogger.java?rev=1203626&r1=1203625&r2=1203626&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandHandlerResultLogger.java
 (original)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandHandlerResultLogger.java
 Fri Nov 18 12:42:58 2011
@@ -18,9 +18,9 @@
  ****************************************************************/
 package org.apache.james.pop3server.core;
 
-import org.apache.james.pop3server.POP3Response;
-import org.apache.james.pop3server.POP3Session;
 import org.apache.james.protocols.impl.log.AbstractCommandHandlerResultLogger;
+import org.apache.james.protocols.pop3.POP3Response;
+import org.apache.james.protocols.pop3.POP3Session;
 
 /**
  * Log {@link POP3Response} with {@link POP3Response#ERR_RESPONSE} return code

Modified: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java?rev=1203626&r1=1203625&r2=1203626&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java
 (original)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java
 Fri Nov 18 12:42:58 2011
@@ -19,10 +19,10 @@
 
 package org.apache.james.pop3server.core;
 
-import org.apache.james.pop3server.POP3Response;
-import org.apache.james.pop3server.POP3Session;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.ConnectHandler;
+import org.apache.james.protocols.pop3.POP3Response;
+import org.apache.james.protocols.pop3.POP3Session;
 
 public class WelcomeMessageHandler implements ConnectHandler<POP3Session> {
     /** POP3 Server identification string used in POP3 headers */

Modified: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/CommandHandlerResultJMXMonitor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/CommandHandlerResultJMXMonitor.java?rev=1203626&r1=1203625&r2=1203626&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/CommandHandlerResultJMXMonitor.java
 (original)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/CommandHandlerResultJMXMonitor.java
 Fri Nov 18 12:42:58 2011
@@ -20,12 +20,13 @@ package org.apache.james.pop3server.jmx;
 
 import java.util.Collection;
 
-import org.apache.james.pop3server.POP3Response;
-import org.apache.james.pop3server.POP3Session;
+
 import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.api.handler.LifecycleAwareProtocolHandler;
 import 
org.apache.james.protocols.lib.jmx.AbstractCommandHandlerResultJMXMonitor;
 import org.apache.james.protocols.lib.jmx.AbstractCommandHandlerStats;
+import org.apache.james.protocols.pop3.POP3Response;
+import org.apache.james.protocols.pop3.POP3Session;
 
 /**
  * Gather JMX stats for {@link CommandHandler}

Modified: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java?rev=1203626&r1=1203625&r2=1203626&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java
 (original)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java
 Fri Nov 18 12:42:58 2011
@@ -18,9 +18,9 @@
  ****************************************************************/
 package org.apache.james.pop3server.jmx;
 
-import org.apache.james.pop3server.POP3Response;
-import org.apache.james.pop3server.POP3Session;
 import 
org.apache.james.protocols.lib.jmx.AbstractConnectHandlerResultJMXMonitor;
+import org.apache.james.protocols.pop3.POP3Response;
+import org.apache.james.protocols.pop3.POP3Session;
 
 public class ConnectHandlerResultJMXMonitor extends 
AbstractConnectHandlerResultJMXMonitor<POP3Response, POP3Session> {
 

Modified: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java?rev=1203626&r1=1203625&r2=1203626&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java
 (original)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java
 Fri Nov 18 12:42:58 2011
@@ -18,9 +18,9 @@
  ****************************************************************/
 package org.apache.james.pop3server.jmx;
 
-import org.apache.james.pop3server.POP3Response;
-import org.apache.james.pop3server.POP3Session;
 import org.apache.james.protocols.lib.jmx.AbstractLineHandlerResultJMXMonitor;
+import org.apache.james.protocols.pop3.POP3Response;
+import org.apache.james.protocols.pop3.POP3Session;
 
 public class LineHandlerResultJMXMonitor extends 
AbstractLineHandlerResultJMXMonitor<POP3Response, POP3Session> {
 

Modified: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/POP3CommandHandlerStats.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/POP3CommandHandlerStats.java?rev=1203626&r1=1203625&r2=1203626&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/POP3CommandHandlerStats.java
 (original)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/POP3CommandHandlerStats.java
 Fri Nov 18 12:42:58 2011
@@ -25,8 +25,8 @@ import javax.management.MBeanRegistratio
 import javax.management.MalformedObjectNameException;
 import javax.management.NotCompliantMBeanException;
 
-import org.apache.james.pop3server.POP3Response;
 import org.apache.james.protocols.lib.jmx.AbstractCommandHandlerStats;
+import org.apache.james.protocols.pop3.POP3Response;
 
 public class POP3CommandHandlerStats extends 
AbstractCommandHandlerStats<POP3Response> implements 
POP3CommandHandlerStatsMBean {
 

Added: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java?rev=1203626&view=auto
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java
 (added)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java
 Fri Nov 18 12:42:58 2011
@@ -0,0 +1,64 @@
+/****************************************************************
+ * 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.mailbox;
+
+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.protocols.pop3.POP3Session;
+import org.apache.james.protocols.pop3.mailbox.Mailbox;
+import org.apache.james.protocols.pop3.mailbox.MailboxFactory;
+
+public class JamesMailboxFactory implements MailboxFactory {
+
+    private MailboxManager manager;
+
+    @Resource(name = "mailboxmanager")
+    public void setMailboxManager(MailboxManager manager) {
+        this.manager = manager;
+    }
+
+    @Override
+    public Mailbox getMailbox(POP3Session session, String password) throws 
IOException {
+        MailboxSession mSession = null;
+        try {
+            mSession = manager.login(session.getUser(), password, 
session.getLogger());
+            manager.startProcessingRequest(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);
+            }
+        }
+
+    }
+
+}

Propchange: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/JamesMailboxFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java?rev=1203626&view=auto
==============================================================================
--- 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
 (added)
+++ 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
 Fri Nov 18 12:42:58 2011
@@ -0,0 +1,211 @@
+/****************************************************************
+ * 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.mailbox;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.mail.Flags;
+
+import org.apache.james.mailbox.MailboxException;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.MessageRange;
+import org.apache.james.mailbox.MessageResult;
+import org.apache.james.mailbox.MessageResult.FetchGroup;
+import org.apache.james.protocols.pop3.mailbox.Mailbox;
+import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
+
+public class MailboxAdapter implements Mailbox {
+
+    private static abstract class POP3FetchGroup implements FetchGroup {
+        @Override
+        public Set<PartContentDescriptor> getPartContentDescriptors() {
+            return null;
+        }
+    }
+    
+    private final static FetchGroup FULL_GROUP = new POP3FetchGroup() {
+
+        @Override
+        public int content() {
+            return BODY_CONTENT | HEADERS;
+        }
+
+    };
+
+    private final static FetchGroup BODY_GROUP = new POP3FetchGroup() {
+
+        @Override
+        public int content() {
+            return BODY_CONTENT;
+        }
+
+    };
+
+    private final static FetchGroup HEADERS_GROUP = new POP3FetchGroup() {
+
+        @Override
+        public int content() {
+            return HEADERS;
+        }
+    };
+
+    private final static FetchGroup METADATA_GROUP = new POP3FetchGroup() {
+
+        @Override
+        public int content() {
+            return MINIMAL;
+        }
+    };
+    
+    private final MessageManager manager;
+    private final MailboxSession session;
+
+    private MailboxManager mailboxManager;
+
+    public MailboxAdapter(MailboxManager mailboxManager, MessageManager 
manager, MailboxSession session) {
+        this.manager = manager;
+        this.session = session;
+        this.mailboxManager = mailboxManager;
+    }
+
+    @Override
+    public InputStream getMessageBody(long uid) throws IOException {
+        try {
+            mailboxManager.startProcessingRequest(session);
+            Iterator<MessageResult> results = 
manager.getMessages(MessageRange.one(uid), BODY_GROUP, session);
+            if (results.hasNext()) {
+                return results.next().getBody().getInputStream();
+            } else {
+                return null;
+            }
+        } catch (MailboxException e) {
+            throw new IOException("Unable to retrieve message body for uid " + 
uid, e);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+
+    @Override
+    public InputStream getMessageHeaders(long uid) throws IOException {
+        try {
+            mailboxManager.startProcessingRequest(session);
+            Iterator<MessageResult> results = 
manager.getMessages(MessageRange.one(uid), HEADERS_GROUP, session);
+            if (results.hasNext()) {
+                return results.next().getHeaders().getInputStream();
+            } else {
+                return null;
+            }
+        } catch (MailboxException e) {
+            throw new IOException("Unable to retrieve message header for uid " 
+ uid, e);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+
+    @Override
+    public InputStream getMessage(long uid) throws IOException {
+        try {
+            mailboxManager.startProcessingRequest(session);
+            Iterator<MessageResult> results = 
manager.getMessages(MessageRange.one(uid), FULL_GROUP, session);
+            if (results.hasNext()) {
+                return results.next().getFullContent().getInputStream();
+            } else {
+                return null;
+            }
+        } catch (MailboxException e) {
+            throw new IOException("Unable to retrieve message for uid " + uid, 
e);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+
+    @Override
+    public List<MessageMetaData> getMessages() throws IOException {
+        try {
+            mailboxManager.startProcessingRequest(session);
+            Iterator<MessageResult> results = 
manager.getMessages(MessageRange.all(), METADATA_GROUP, session);
+            List<MessageMetaData> mList = new ArrayList<MessageMetaData>();
+            while (results.hasNext()) {
+                MessageResult result = results.next();
+                
+                MessageMetaData metaData = new 
MessageMetaData(result.getUid(), result.getSize());
+                mList.add(metaData);
+            }
+            return Collections.unmodifiableList(mList);
+        } catch (MailboxException e) {
+            throw new IOException("Unable to retrieve messages", e);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+
+    @Override
+    public void remove(long... uids) throws IOException {
+        List<Long> uidList = new ArrayList<Long>();
+
+        for (int i = 0; i < uids.length; i++) {
+            uidList.add(uids[i]);
+        }
+
+        List<MessageRange> ranges = MessageRange.toRanges(uidList);
+        try {
+            mailboxManager.startProcessingRequest(session);
+            for (MessageRange range : ranges) {
+                manager.setFlags(new Flags(Flags.Flag.DELETED), true, false, 
range, session);
+                manager.expunge(range, session);
+            }
+        } catch (MailboxException e) {
+            throw new IOException("Unable to remove messages for ranges " + 
ranges);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+
+    @Override
+    public String getIdentifier() throws IOException {
+        try {
+            mailboxManager.startProcessingRequest(session);
+            long validity = manager.getMetaData(false, session, 
MessageManager.MetaData.FetchGroup.NO_COUNT).getUidValidity();
+            return Long.toString(validity);
+        } catch (MailboxException e) {
+            throw new IOException("Unable to retrieve indentifier for 
mailbox", e);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+
+    @Override
+    public void close() throws IOException {
+        try {
+            mailboxManager.logout(session, true);
+        } catch (MailboxException e) {
+            throw new IOException("Unable to close mailbox", e);
+        } finally {
+            mailboxManager.endProcessingRequest(session);
+        }
+    }
+}

Propchange: 
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

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=1203626&r1=1203625&r2=1203626&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
 Fri Nov 18 12:42:58 2011
@@ -19,13 +19,13 @@
 package org.apache.james.pop3server.netty;
 
 
-import org.apache.james.pop3server.POP3HandlerConfiguration;
-import org.apache.james.pop3server.POP3Protocol;
 import org.apache.james.pop3server.core.CoreCmdHandlerLoader;
 import org.apache.james.pop3server.jmx.JMXHandlersLoader;
 import org.apache.james.protocols.api.handler.HandlersPackage;
 import org.apache.james.protocols.impl.BasicChannelUpstreamHandler;
 import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
+import org.apache.james.protocols.pop3.POP3HandlerConfiguration;
+import org.apache.james.protocols.pop3.POP3Protocol;
 import org.jboss.netty.channel.ChannelPipeline;
 import org.jboss.netty.channel.ChannelPipelineFactory;
 import org.jboss.netty.channel.ChannelUpstreamHandler;

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=1203626&r1=1203625&r2=1203626&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
 Fri Nov 18 12:42:58 2011
@@ -42,6 +42,7 @@ 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,7 +126,10 @@ public class POP3ServerTest extends Test
         });
         manager.init();
 
-        chain.put("mailboxmanager", manager);
+        //chain.put("mailboxmanager", manager);
+        JamesMailboxFactory mailboxFactory = new JamesMailboxFactory();
+        mailboxFactory.setMailboxManager(manager);
+        chain.put("mailboxFactory", mailboxFactory);
 
         fSystem = new MockFileSystem();
         chain.put("filesystem", fSystem);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to