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]