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 rd...@apache.org on 2007/06/03 16:11:20 UTC
svn commit: r543901 [1/3] - in
/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src:
main/java/org/apache/james/experimental/imapserver/
main/java/org/apache/james/experimental/imapserver/encode/
main/java/org/apache/james/experi...
Author: rdonkin
Date: Sun Jun 3 07:11:16 2007
New Revision: 543901
URL: http://svn.apache.org/viewvc?view=rev&rev=543901
Log:
Decoupled encoding from ImapSession.
Added:
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExistsResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExpungeResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/FetchResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/RecentResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LegacyFetchResponseEncoder.java
- copied, changed from r543869, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/FetchResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/status/
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/status/UntaggedNoResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/base/
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/base/AbstractTaggedStatusResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/base/AbstractUntaggedStatusResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/ExistsResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/ExpungeResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/FetchResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/RecentResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/ByeResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/PreauthResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/TaggedBadResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/TaggedNoResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/TaggedOkResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/UntaggedBadResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/UntaggedNoResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/status/UntaggedOkResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/base/AbstractUnsolicitedResponsesAwareProcessor.java
Removed:
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/FetchResponseEncoder.java
Modified:
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandler.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandlerInterface.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapRequestHandler.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSession.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSessionImpl.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapResponseComposer.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/AbstractChainedImapEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/EndImapEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CapabilityResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CloseResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandCompleteResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ExamineAndSelectResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ListResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LogoutResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/SearchResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StatusResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StoreResponseEncoder.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandCompleteResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/FetchResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/SearchResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StoreResponse.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/base/AbstractMailboxAwareProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/AbstractListingProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/AppendProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/CapabilityProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/CheckProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/CloseProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/CopyProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/CreateProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/DeleteProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/ExpungeProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/FetchProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/LoginProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/LogoutProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/NoopProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/RenameProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/SearchProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/StatusProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/StoreProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/SubscribeProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/UnsubscribeProcessor.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/MockImapSession.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncodeTest.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoderTest.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseMessageTest.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/CreateCommandTest.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/SubscribeCommandTest.java
james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/UnsubscribeCommandTest.java
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandler.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandler.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandler.java Sun Jun 3 07:11:16 2007
@@ -114,6 +114,8 @@
}
handlerIsUp = false;
+ endSession();
+
// Clear user data
try {
if (session != null) {
@@ -157,7 +159,7 @@
setupLogger(session);
theWatchdog.start();
- while ( handlerIsUp && !sessionEnded && requestHandler.handleRequest( in, outs, session ) ) {
+ while ( handlerIsUp && !sessionEnded && handleRequest() ) {
theWatchdog.reset();
}
theWatchdog.stop();
@@ -171,9 +173,18 @@
}
catch (ProtocolException e) {
+ // TODO: throwing a runtime seems wrong
throw new RuntimeException(e.getMessage(),e);
}
}
+
+ private boolean handleRequest() throws ProtocolException {
+ final boolean continuing = requestHandler.handleRequest( in, outs, session );
+ if (!continuing) {
+ resetHandler();
+ }
+ return continuing;
+ }
/**
* Method which will be colled on error
@@ -202,8 +213,5 @@
super.enableLogging(logger);
setupLogger(requestHandler);
}
-
-
-
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandlerInterface.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandlerInterface.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandlerInterface.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapHandlerInterface.java Sun Jun 3 07:11:16 2007
@@ -1,10 +1,27 @@
+/****************************************************************
+ * 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.experimental.imapserver;
public interface ImapHandlerInterface
{
void forceConnectionClose(String byeMessage);
-
- void resetHandler();
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapRequestHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapRequestHandler.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapRequestHandler.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapRequestHandler.java Sun Jun 3 07:11:16 2007
@@ -25,6 +25,7 @@
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.james.api.imap.ImapMessage;
+import org.apache.james.api.imap.ImapSessionState;
import org.apache.james.api.imap.ProtocolException;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
@@ -93,7 +94,7 @@
// to clean up after a protocol error.
request.consumeLine();
- return true;
+ return !(ImapSessionState.LOGOUT == session.getState());
}
private void doProcessRequest( ImapRequestLineReader request,
@@ -102,7 +103,7 @@
{
ImapMessage message = decoder.decode(request);
ImapResponseMessage responseMessage = processor.process(message, session);
- encoder.encode(responseMessage, response, session);
+ encoder.encode(responseMessage, response);
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSession.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSession.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSession.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSession.java Sun Jun 3 07:11:16 2007
@@ -19,8 +19,9 @@
package org.apache.james.experimental.imapserver;
+import java.util.List;
+
import org.apache.james.api.imap.ImapSessionState;
-import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
import org.apache.james.services.User;
@@ -38,15 +39,17 @@
/**
* Sends any unsolicited responses to the client, such as EXISTS and FLAGS
* responses when the selected mailbox is modified by another user.
- * TODO: this probably should not throw a MailboxException
- * @param response The response to write to
+ * @return <code>List</code> of {@link ImapResponseMessage}'s
*/
- void unsolicitedResponses( ImapResponseComposer response, boolean useUid );
+ List unsolicitedResponses( boolean useUid );
+ List unsolicitedResponses( boolean omitExpunged, boolean useUid);
+
/**
- * Closes the connection for this session.
+ * Logs out the session.
+ * Marks the connection for closure;
*/
- void closeConnection();
+ void logout();
void closeConnection(String byeMessage);
@@ -101,8 +104,6 @@
* @return the currently selected mailbox.
*/
SelectedMailboxSession getSelected();
-
- void unsolicitedResponses( ImapResponseComposer request, boolean omitExpunged, boolean useUid);
/**
* closes the Mailbox if needed
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSessionImpl.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSessionImpl.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/ImapSessionImpl.java Sun Jun 3 07:11:16 2007
@@ -20,15 +20,22 @@
package org.apache.james.experimental.imapserver;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import javax.mail.Flags;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.commons.collections.ListUtils;
import org.apache.james.api.imap.ImapConstants;
import org.apache.james.api.imap.ImapSessionState;
import org.apache.james.api.imap.message.MessageFlags;
-import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.ExistsResponse;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.ExpungeResponse;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.FetchResponse;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.RecentResponse;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.status.UntaggedNoResponse;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.MessageResult;
import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
@@ -62,49 +69,57 @@
this.attributesByKey = new ConcurrentHashMap();
}
- public void unsolicitedResponses( ImapResponseComposer request, boolean useUid ) {
- unsolicitedResponses(request, false, useUid);
+ public List unsolicitedResponses( boolean useUid ) {
+ return unsolicitedResponses(false, useUid);
}
- public void unsolicitedResponses(ImapResponseComposer response, boolean omitExpunged, boolean useUid) {
- SelectedMailboxSession selected = getSelected();
- if (selected != null) {
- final ImapMailboxSession mailbox = selected.getMailbox();
- // New message response
- if (selected.isSizeChanged()) {
- selected.setSizeChanged(false);
- existsResponse(response, mailbox);
- recentResponse(response, mailbox);
- }
+ public List unsolicitedResponses(boolean omitExpunged, boolean useUid) {
+ final List results;
+ final SelectedMailboxSession selected = getSelected();
+ if (selected == null) {
+ results = ListUtils.EMPTY_LIST;
+ } else {
+ results = new ArrayList();
+ final ImapMailboxSession mailbox = selected.getMailbox();
+ // New message response
+ if (selected.isSizeChanged()) {
+ selected.setSizeChanged(false);
+ addExistsResponses(results, mailbox);
+ addRecentResponses(results, mailbox);
+ }
- // Message updates
- // TODO: slow to check flags every time
-// TODO: add conditional to selected mailbox
- flagsResponse(response, useUid, mailbox);
+ // Message updates
+ // TODO: slow to check flags every time
+ // TODO: add conditional to selected mailbox
+ addFlagsResponses(results, useUid, mailbox);
- // Expunged messages
- if (!omitExpunged) {
- // TODO: slow to check flags every time
- // TODO: add conditional to selected mailbox
- expungedResponse(response, mailbox);
- }
+ // Expunged messages
+ if (!omitExpunged) {
+ // TODO: slow to check flags every time
+ // TODO: add conditional to selected mailbox
+ addExpungedResponses(results, mailbox);
}
+ }
+ return results;
}
- private void expungedResponse(ImapResponseComposer response, final ImapMailboxSession mailbox) {
+ private void addExpungedResponses(List responses, final ImapMailboxSession mailbox) {
try {
MessageResult[] expunged = mailbox.getExpungedEvents(true);
for (int i = 0; i < expunged.length; i++) {
MessageResult mr = expunged[i];
- response.expungeResponse(mr.getMsn());
+ final int msn = mr.getMsn();
+ // TODO: use factory
+ ExpungeResponse response = new ExpungeResponse(msn);
+ responses.add(response);
}
} catch (MailboxManagerException e) {
final String message = "Failed to retrieve expunged count data";
- handleResponseException(response, e, message);
+ handleResponseException(responses, e, message);
}
}
- private void flagsResponse(ImapResponseComposer response, boolean useUid, final ImapMailboxSession mailbox) {
+ private void addFlagsResponses(final List responses, boolean useUid, final ImapMailboxSession mailbox) {
try {
MessageResult[] flagUpdates = mailbox.getFlagEvents(true);
for (int i = 0; i < flagUpdates.length; i++) {
@@ -118,38 +133,44 @@
out.append(mr.getUid());
}
// TODO: use CharSequence instead (avoid unnecessary string creation)
- response.fetchResponse(msn, out.toString());
+ FetchResponse response = new FetchResponse(msn, out.toString());
+ responses.add(response);
}
} catch (MailboxManagerException e) {
final String message = "Failed to retrieve flags data";
- handleResponseException(response, e, message);
+ handleResponseException(responses, e, message);
}
}
- private void recentResponse(ImapResponseComposer response, final ImapMailboxSession mailbox) {
+ private void addRecentResponses(final List responses, final ImapMailboxSession mailbox) {
try {
final int recentCount = mailbox.getRecentCount(true);
- response.recentResponse(recentCount);
+ // TODO: use factory
+ RecentResponse response = new RecentResponse(recentCount);
+ responses.add(response);
} catch (MailboxManagerException e) {
final String message = "Failed to retrieve recent count data";
- handleResponseException(response, e, message);
+ handleResponseException(responses, e, message);
}
}
- private void handleResponseException(ImapResponseComposer response, MailboxManagerException e, final String message) {
+ private void handleResponseException(final List responses, MailboxManagerException e, final String message) {
getLogger().info(message);
getLogger().debug(message, e);
// TODO: consider whether error message should be passed to the user
- response.untaggedNoResponse(message, null);
+ UntaggedNoResponse response = new UntaggedNoResponse(message, null);
+ responses.add(response);
}
- private void existsResponse(ImapResponseComposer response, final ImapMailboxSession mailbox) {
+ private void addExistsResponses(final List responses, final ImapMailboxSession mailbox) {
try {
final int messageCount = mailbox.getMessageCount();
- response.existsResponse(messageCount);
+ // TODO: use factory
+ ExistsResponse response = new ExistsResponse(messageCount);
+ responses.add(response);
} catch (MailboxManagerException e) {
final String message = "Failed to retrieve exists count data";
- handleResponseException(response, e, message);
+ handleResponseException(responses, e, message);
}
}
@@ -158,10 +179,10 @@
handler.forceConnectionClose(byeMessage);
}
- public void closeConnection()
+ public void logout()
{
closeMailbox();
- handler.resetHandler();
+ state = ImapSessionState.LOGOUT;
}
public String getClientHostname()
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapEncoder.java Sun Jun 3 07:11:16 2007
@@ -20,7 +20,6 @@
package org.apache.james.experimental.imapserver.encode;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
/**
* TODO: correct this API
@@ -34,7 +33,6 @@
* TODO: pass in writer rather than composer
* @param message <code>ImapMessage</code>, not null
* @param composer <code>ImapResponseComposer</code>, not null
- * @param session <code>ImapSession</code>, not null
*/
- void encode( ImapMessage message, ImapResponseComposer composer, ImapSession session );
+ void encode( ImapMessage message, ImapResponseComposer composer );
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapResponseComposer.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapResponseComposer.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapResponseComposer.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/ImapResponseComposer.java Sun Jun 3 07:11:16 2007
@@ -168,7 +168,7 @@
logger.info("BAD - " + message);
}
}
-
+
/**
* Writes an untagged OK response, with the supplied response code,
* and an optional message.
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/AbstractChainedImapEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/AbstractChainedImapEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/AbstractChainedImapEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/AbstractChainedImapEncoder.java Sun Jun 3 07:11:16 2007
@@ -19,10 +19,12 @@
package org.apache.james.experimental.imapserver.encode.base;
+import java.util.Collection;
+import java.util.Iterator;
+
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
@@ -40,15 +42,25 @@
setupLogger(next);
}
- public void encode(ImapMessage message, ImapResponseComposer composer,
- ImapSession session) {
+ public void encode(ImapMessage message, ImapResponseComposer composer) {
final boolean isAcceptable = isAcceptable(message);
if (isAcceptable) {
- doEncode(message, composer, session);
+ doEncode(message, composer);
} else {
- next.encode(message, composer, session);
+ chainEncode(message, composer);
+ }
+ }
+
+ protected void chainEncodeAll(final Collection messages, final ImapResponseComposer composer) {
+ for (Iterator iter = messages.iterator(); iter.hasNext();) {
+ ImapMessage message = (ImapMessage) iter.next();
+ chainEncode(message, composer);
}
}
+
+ protected void chainEncode(ImapMessage message, ImapResponseComposer composer) {
+ next.encode(message, composer);
+ }
/**
* Is the given message acceptable?
@@ -66,9 +78,6 @@
* @param acceptableMessage
* <code>ImapMessage</code>, not null
* @param composer <code>ImapResponseComposer</code>, not null
- * @param session
- * <code>ImapSession</code>, not null
*/
- abstract protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer,
- ImapSession session);
+ abstract protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer);
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/EndImapEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/EndImapEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/EndImapEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/base/EndImapEncoder.java Sun Jun 3 07:11:16 2007
@@ -22,13 +22,12 @@
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
public class EndImapEncoder extends AbstractLogEnabled implements ImapEncoder {
- public void encode(ImapMessage message, ImapResponseComposer composer, ImapSession session) {
+ public void encode(ImapMessage message, ImapResponseComposer composer) {
final Logger logger = getLogger();
logger.warn("Unknown message");
if (logger.isDebugEnabled()) {
Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExistsResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExistsResponseEncoder.java?view=auto&rev=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExistsResponseEncoder.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExistsResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.experimental.imapserver.encode.imap4rev1;
+
+import org.apache.james.api.imap.ImapMessage;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.ExistsResponse;
+
+public class ExistsResponseEncoder extends AbstractChainedImapEncoder {
+
+ public ExistsResponseEncoder(ImapEncoder next) {
+ super(next);
+ }
+
+ public boolean isAcceptable(ImapMessage message) {
+ return message instanceof ExistsResponse;
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
+ final ExistsResponse existsResponse = (ExistsResponse) acceptableMessage;
+ final int numberOfMessages = existsResponse.getNumberOfMessages();
+ composer.existsResponse(numberOfMessages);
+
+ }
+}
Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExpungeResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExpungeResponseEncoder.java?view=auto&rev=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExpungeResponseEncoder.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/ExpungeResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -0,0 +1,24 @@
+package org.apache.james.experimental.imapserver.encode.imap4rev1;
+
+import org.apache.james.api.imap.ImapMessage;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.ExpungeResponse;
+
+public class ExpungeResponseEncoder extends AbstractChainedImapEncoder {
+
+ public ExpungeResponseEncoder(final ImapEncoder next) {
+ super(next);
+ }
+
+ public boolean isAcceptable(ImapMessage message) {
+ return (message instanceof ExpungeResponse);
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
+ final ExpungeResponse expungeResponse = (ExpungeResponse) acceptableMessage;
+ final int messageSequenceNumber = expungeResponse.getMessageSequenceNumber();
+ composer.expungeResponse(messageSequenceNumber);
+ }
+}
Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/FetchResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/FetchResponseEncoder.java?view=auto&rev=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/FetchResponseEncoder.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/FetchResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -0,0 +1,27 @@
+package org.apache.james.experimental.imapserver.encode.imap4rev1;
+
+import org.apache.james.api.imap.ImapMessage;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.FetchResponse;
+
+public class FetchResponseEncoder extends AbstractChainedImapEncoder {
+
+ public FetchResponseEncoder(final ImapEncoder next) {
+ super(next);
+ }
+
+ public boolean isAcceptable(final ImapMessage message) {
+ return (message instanceof FetchResponse);
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
+ final FetchResponse fetchResponse = (FetchResponse) acceptableMessage;
+ // TODO: this is inefficient
+ final String data = fetchResponse.getData();
+ final int number = fetchResponse.getNumber();
+ composer.fetchResponse(number, data);
+ }
+
+}
Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/RecentResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/RecentResponseEncoder.java?view=auto&rev=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/RecentResponseEncoder.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/RecentResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.experimental.imapserver.encode.imap4rev1;
+
+import org.apache.james.api.imap.ImapMessage;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.RecentResponse;
+
+public class RecentResponseEncoder extends AbstractChainedImapEncoder {
+
+ public RecentResponseEncoder(ImapEncoder next) {
+ super(next);
+ }
+
+ public boolean isAcceptable(final ImapMessage message) {
+ return (message instanceof RecentResponse);
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) { // TODO Auto-generated method stub
+ final RecentResponse recentResponse = (RecentResponse) acceptableMessage;
+ final int numberFlaggedRecent = recentResponse.getNumberFlaggedRecent();
+ composer.recentResponse(numberFlaggedRecent);
+ }
+
+}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -20,7 +20,6 @@
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -36,7 +35,7 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
BadResponse response = (BadResponse) acceptableMessage;
String tag = response.getTag();
String message = response.getMessage();
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CapabilityResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CapabilityResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CapabilityResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CapabilityResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -18,15 +18,15 @@
****************************************************************/
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+import java.util.List;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapConstants;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
import org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy.CapabilityResponse;
-import org.apache.james.imapserver.store.MailboxException;
/**
* @deprecated use specification model
@@ -37,15 +37,12 @@
super(next);
}
- protected void doEncode(ImapResponseComposer response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-
- }
-
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
CapabilityResponse response = (CapabilityResponse) acceptableMessage;
// TODO: inject capability text
composer.untaggedResponse( ImapConstants.CAPABILITY_RESPONSE );
- session.unsolicitedResponses( composer, false);
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
String tag = response.getTag();
ImapCommand command = response.getCommand();
composer.commandComplete( command , tag );
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CloseResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CloseResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CloseResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CloseResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -18,9 +18,10 @@
****************************************************************/
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+import java.util.List;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -36,13 +37,10 @@
}
protected void doEncode(ImapMessage acceptableMessage,
- ImapResponseComposer composer, ImapSession session) {
+ ImapResponseComposer composer) {
CloseResponse response = (CloseResponse) acceptableMessage;
- //TODO: the following comment was present in the code before refactoring
- //TODO: doesn't seem to match the implementation
- //TODO: check that implementation is correct
- // Don't send unsolicited responses on close.
- session.unsolicitedResponses(composer, false);
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
final String tag = response.getTag();
final ImapCommand command = response.getCommand();
composer.commandComplete(command, tag);
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandCompleteResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandCompleteResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandCompleteResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandCompleteResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -19,9 +19,10 @@
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+import java.util.List;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -36,14 +37,12 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
CommandCompleteResponse response = (CommandCompleteResponse) acceptableMessage;
- final boolean writeUnsolicited = response.isWriteUnsolicited();
- if (writeUnsolicited) {
- final boolean useUids = response.isUseUids();
- session.unsolicitedResponses( composer, useUids);
- }
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
+
final ImapCommand command = response.getCommand();
final String tag = response.getTag();
composer.commandComplete( command , tag);
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -21,7 +21,6 @@
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -37,7 +36,7 @@
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
CommandFailedResponse response = (CommandFailedResponse) acceptableMessage;
final String responseCode = response.getResponseCode();
final ImapCommand command = response.getCommand();
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -20,7 +20,6 @@
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -38,7 +37,7 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
ErrorResponse response = (ErrorResponse) acceptableMessage;
final String message = response.getMessage();
final String tag = response.getTag();
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ExamineAndSelectResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ExamineAndSelectResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ExamineAndSelectResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ExamineAndSelectResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -22,12 +22,10 @@
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
import org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy.ExamineAndSelectResponse;
-import org.apache.james.mailboxmanager.MessageResult;
/**
* @deprecated responses should correspond directly to the specification
@@ -39,7 +37,7 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
ExamineAndSelectResponse response = (ExamineAndSelectResponse) acceptableMessage;
final Flags permanentFlags = response.getPermanentFlags();
composer.flagsResponse(permanentFlags);
Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LegacyFetchResponseEncoder.java (from r543869, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/FetchResponseEncoder.java)
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LegacyFetchResponseEncoder.java?view=diff&rev=543901&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/FetchResponseEncoder.java&r1=543869&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LegacyFetchResponseEncoder.java&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/FetchResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LegacyFetchResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -23,7 +23,6 @@
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -32,14 +31,14 @@
/**
* @deprecated responses should correspond directly to the specification
*/
-public class FetchResponseEncoder extends AbstractChainedImapEncoder {
+public class LegacyFetchResponseEncoder extends AbstractChainedImapEncoder {
- public FetchResponseEncoder(ImapEncoder next) {
+ public LegacyFetchResponseEncoder(ImapEncoder next) {
super(next);
}
protected void doEncode(ImapMessage acceptableMessage,
- ImapResponseComposer composer, ImapSession session) {
+ ImapResponseComposer composer) {
FetchResponse response = (FetchResponse) acceptableMessage;
final List messageData = response.getMessageData();
for (final Iterator it = messageData.iterator(); it.hasNext();) {
@@ -48,13 +47,11 @@
final String content = data.getData();
composer.fetchResponse(number, content);
}
- final boolean useUids = response.isUseUids();
- boolean omitExpunged = (!useUids);
- session.unsolicitedResponses(composer, omitExpunged, useUids);
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
final ImapCommand command = response.getCommand();
final String tag = response.getTag();
composer.commandComplete(command, tag);
-
}
protected boolean isAcceptable(ImapMessage message) {
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ListResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ListResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ListResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ListResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -23,7 +23,6 @@
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -38,7 +37,7 @@
public ListResponseEncoder(ImapEncoder next) {
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
ListResponse response = (ListResponse) acceptableMessage;
final List messages = response.getMessages();
final ImapCommand command = response.getCommand();
@@ -47,7 +46,8 @@
composer.commandResponse(command, message);
}
- session.unsolicitedResponses( composer, false );
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
final String tag = response.getTag();
composer.commandComplete( command, tag );
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LogoutResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LogoutResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LogoutResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/LogoutResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -20,7 +20,6 @@
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -35,16 +34,14 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
LogoutResponse response = (LogoutResponse) acceptableMessage;
final String message = response.getMessage();
composer.byeResponse( message );
final ImapCommand command = response.getCommand();
final String tag = response.getTag();
- composer.commandComplete( command, tag );
- // TODO: think about how this will work with SEDA
- session.closeConnection();
+ composer.commandComplete( command, tag );
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/SearchResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/SearchResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/SearchResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/SearchResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -18,9 +18,10 @@
****************************************************************/
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+import java.util.List;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -35,14 +36,15 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
SearchResponse response = (SearchResponse) acceptableMessage;
final ImapCommand command = response.getCommand();
final String idList = response.getIdList();
composer.commandResponse( command, idList );
- final boolean useUids = response.isUseUids();
- boolean omitExpunged = (!useUids);
- session.unsolicitedResponses( composer, omitExpunged, useUids );
+
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
+
final String tag = response.getTag();
composer.commandComplete( command, tag );
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StatusResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StatusResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StatusResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StatusResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -18,9 +18,10 @@
****************************************************************/
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+import java.util.List;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -35,12 +36,15 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
StatusResponse response = (StatusResponse) acceptableMessage;
final ImapCommand command = response.getCommand();
final String message = response.getMessage();
composer.commandResponse( command, message);
- session.unsolicitedResponses( composer, false );
+
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
+
final String tag = response.getTag();
composer.commandComplete( command, tag );
}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StoreResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StoreResponseEncoder.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StoreResponseEncoder.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/StoreResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -18,9 +18,10 @@
****************************************************************/
package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+import java.util.List;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
@@ -36,11 +37,12 @@
super(next);
}
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) {
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer) {
StoreResponse response = (StoreResponse) acceptableMessage;
- final boolean useUids = response.isUseUids();
- boolean omitExpunged = (!useUids);
- session.unsolicitedResponses( composer, omitExpunged , useUids);
+
+ List unsolicitedResponses = response.getUnsolicatedResponses();
+ chainEncodeAll(unsolicitedResponses, composer);
+
final ImapCommand command = response.getCommand();
final String tag = response.getTag();
composer.commandComplete( command, tag );
Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/status/UntaggedNoResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/status/UntaggedNoResponseEncoder.java?view=auto&rev=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/status/UntaggedNoResponseEncoder.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/imap4rev1/status/UntaggedNoResponseEncoder.java Sun Jun 3 07:11:16 2007
@@ -0,0 +1,46 @@
+/****************************************************************
+ * 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.experimental.imapserver.encode.imap4rev1.status;
+
+import org.apache.james.api.imap.ImapMessage;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.status.UntaggedNoResponse;
+
+public class UntaggedNoResponseEncoder extends AbstractChainedImapEncoder {
+
+ public UntaggedNoResponseEncoder(ImapEncoder next) {
+ super(next);
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage,
+ ImapResponseComposer composer) {
+ UntaggedNoResponse response = (UntaggedNoResponse) acceptableMessage;
+ final String displayText = response.getDisplayText();
+ final String responseCode = response.getResponseCode();
+ composer.untaggedNoResponse(displayText, responseCode);
+ }
+
+ protected boolean isAcceptable(ImapMessage message) {
+ return (message instanceof UntaggedNoResponse);
+ }
+
+}
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java Sun Jun 3 07:11:16 2007
@@ -21,6 +21,8 @@
import org.apache.james.experimental.imapserver.encode.ImapEncoder;
import org.apache.james.experimental.imapserver.encode.base.EndImapEncoder;
+import org.apache.james.experimental.imapserver.encode.imap4rev1.*;
+import org.apache.james.experimental.imapserver.encode.imap4rev1.status.*;
import org.apache.james.experimental.imapserver.encode.imap4rev1.legacy.*;
/**
@@ -29,15 +31,19 @@
public class DefaultImapEncoderFactory {
public static final ImapEncoder createDefaultEncoder() {
-
final EndImapEncoder endImapEncoder = new EndImapEncoder();
- final StoreResponseEncoder storeResponseEncoder = new StoreResponseEncoder(endImapEncoder);
+ final UntaggedNoResponseEncoder untaggedNoResponseEncoder = new UntaggedNoResponseEncoder(endImapEncoder);
+ final RecentResponseEncoder recentResponseEncoder = new RecentResponseEncoder(untaggedNoResponseEncoder);
+ final FetchResponseEncoder fetchResponseEncoder = new FetchResponseEncoder(recentResponseEncoder);
+ final ExpungeResponseEncoder expungeResponseEncoder = new ExpungeResponseEncoder(fetchResponseEncoder);
+ final ExistsResponseEncoder existsResponseEncoder = new ExistsResponseEncoder(expungeResponseEncoder);
+ final StoreResponseEncoder storeResponseEncoder = new StoreResponseEncoder(existsResponseEncoder);
final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(storeResponseEncoder);
final SearchResponseEncoder searchResponseEncoder = new SearchResponseEncoder(statusResponseEncoder);
final LogoutResponseEncoder logoutResponseEncoder = new LogoutResponseEncoder(searchResponseEncoder);
final ListResponseEncoder listResponseEncoder = new ListResponseEncoder(logoutResponseEncoder);
- final FetchResponseEncoder fetchResponseEncoder = new FetchResponseEncoder(listResponseEncoder);
- final ExamineAndSelectResponseEncoder examineAndSelectResponseEncoder = new ExamineAndSelectResponseEncoder(fetchResponseEncoder);
+ final LegacyFetchResponseEncoder legacyFetchResponseEncoder = new LegacyFetchResponseEncoder(listResponseEncoder);
+ final ExamineAndSelectResponseEncoder examineAndSelectResponseEncoder = new ExamineAndSelectResponseEncoder(legacyFetchResponseEncoder);
final ErrorResponseEncoder errorResponseEncoder = new ErrorResponseEncoder(examineAndSelectResponseEncoder);
final CommandFailedResponseEncoder commandFailedResponseEncoder = new CommandFailedResponseEncoder(errorResponseEncoder);
final CommandCompleteResponseEncoder commandCompleteResponseEncoder = new CommandCompleteResponseEncoder(commandFailedResponseEncoder);
Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java?view=diff&rev=543901&r1=543900&r2=543901
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java Sun Jun 3 07:11:16 2007
@@ -19,6 +19,10 @@
package org.apache.james.experimental.imapserver.message.response;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.james.api.imap.ImapCommand;
@@ -30,11 +34,13 @@
private final ImapCommand command;
private final String tag;
-
+ private final List unsolicatedResponses;
+
public AbstractImapResponse(final ImapCommand command, final String tag) {
super();
this.command = command;
this.tag = tag;
+ unsolicatedResponses = new ArrayList();
}
public final String getTag() {
@@ -43,5 +49,17 @@
public ImapCommand getCommand() {
return command;
+ }
+
+ public void addUnsolicitedResponses(List responses) {
+ unsolicatedResponses.addAll(responses);
+ }
+
+ public void addUnsolicitedResponses(ImapResponseMessage response) {
+ unsolicatedResponses.add(response);
+ }
+
+ public List getUnsolicatedResponses() {
+ return Collections.unmodifiableList(unsolicatedResponses);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org