Author: rdonkin
Date: Fri Jan 2 11:47:09 2009
New Revision: 730831
URL: http://svn.apache.org/viewvc?rev=730831&view=rev
Log:
Move response creation from session.
Modified:
james/protocols/imap/trunk/api/src/main/java/org/apache/james/api/imap/process/ImapSession.java
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/AbstractImapRequestProcessor.java
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java
james/protocols/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/imap4rev1/SearchProcessorTest.java
james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapSessionImpl.java
Modified:
james/protocols/imap/trunk/api/src/main/java/org/apache/james/api/imap/process/ImapSession.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/api/src/main/java/org/apache/james/api/imap/process/ImapSession.java?rev=730831&r1=730830&r2=730831&view=diff
==============================================================================
---
james/protocols/imap/trunk/api/src/main/java/org/apache/james/api/imap/process/ImapSession.java
(original)
+++
james/protocols/imap/trunk/api/src/main/java/org/apache/james/api/imap/process/ImapSession.java
Fri Jan 2 11:47:09 2009
@@ -19,8 +19,6 @@
package org.apache.james.api.imap.process;
-import java.util.List;
-
import org.apache.james.api.imap.ImapSessionState;
/**
@@ -31,15 +29,6 @@
* @version $Revision: 109034 $
*/
public interface ImapSession {
- /**
- * Sends any unsolicited responses to the client, such as EXISTS and FLAGS
- * responses when the selected mailbox is modified by another user.
- *
- * @return <code>List</code> of {...@link ImapResponseMessage}'s
- */
- List unsolicitedResponses(boolean useUid);
-
- List unsolicitedResponses(boolean omitExpunged, boolean useUid);
/**
* Logs out the session. Marks the connection for closure;
Modified:
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/AbstractImapRequestProcessor.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/AbstractImapRequestProcessor.java?rev=730831&r1=730830&r2=730831&view=diff
==============================================================================
---
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/AbstractImapRequestProcessor.java
(original)
+++
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/AbstractImapRequestProcessor.java
Fri Jan 2 11:47:09 2009
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.james.imap.processor.base;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -34,11 +35,12 @@
import
org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
+import org.apache.james.api.imap.process.SelectedImapMailbox;
import org.apache.james.imap.mailbox.MailboxExistsException;
import org.apache.james.imap.mailbox.MailboxNotFoundException;
abstract public class AbstractImapRequestProcessor extends
- AbstractChainedImapProcessor implements ImapConstants {
+AbstractChainedImapProcessor implements ImapConstants {
private final StatusResponseFactory factory;
@@ -97,17 +99,37 @@
protected void unsolicitedResponses(final ImapSession session,
final ImapProcessor.Responder responder, boolean omitExpunged,
boolean useUids) {
- final List responses = session.unsolicitedResponses(omitExpunged,
- useUids);
+ final List responses = unsolicitedResponses(session, omitExpunged,
useUids);
respond(responder, responses);
}
protected void unsolicitedResponses(final ImapSession session,
final ImapProcessor.Responder responder, boolean useUids) {
- final List responses = session.unsolicitedResponses(useUids);
+ final List responses = unsolicitedResponses(session, useUids);
respond(responder, responses);
}
+ protected List unsolicitedResponses(final ImapSession session, boolean
useUid) {
+ return unsolicitedResponses(session, false, useUid);
+ }
+
+ /**
+ * Sends any unsolicited responses to the client, such as EXISTS and FLAGS
+ * responses when the selected mailbox is modified by another user.
+ *
+ * @return <code>List</code> of {...@link ImapResponseMessage}'s
+ */
+ protected List unsolicitedResponses(final ImapSession session, boolean
omitExpunged, boolean useUid) {
+ final List results;
+ final SelectedImapMailbox selected = session.getSelected();
+ if (selected == null) {
+ results = Collections.EMPTY_LIST;
+ } else {
+ results = selected.unsolicitedResponses(omitExpunged, useUid);
+ }
+ return results;
+ }
+
private void respond(final ImapProcessor.Responder responder,
final List responses) {
for (final Iterator it = responses.iterator(); it.hasNext();) {
Modified:
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java?rev=730831&r1=730830&r2=730831&view=diff
==============================================================================
---
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java
(original)
+++
james/protocols/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java
Fri Jan 2 11:47:09 2009
@@ -19,12 +19,7 @@
package org.apache.james.imap.processor.base;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.james.api.imap.message.response.ImapResponseMessage;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.imap.process.ImapProcessor.Responder;
import org.apache.james.imap.mailbox.Mailbox;
import org.apache.james.imap.mailbox.MailboxSession;
@@ -38,15 +33,6 @@
public static final String MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY =
"org.apache.james.api.imap.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY";
- public static void addUnsolicitedResponses(ImapSession session,
- boolean useUids, final Responder responder) {
- final List unsolicitedResponses =
session.unsolicitedResponses(useUids);
- for (Iterator it = unsolicitedResponses.iterator(); it.hasNext();) {
- ImapResponseMessage message = (ImapResponseMessage) it.next();
- responder.respond(message);
- }
- }
-
public static Mailbox getMailbox(final ImapSession session) {
Mailbox result = (Mailbox) session
.getAttribute(SELECTED_MAILBOX_ATTRIBUTE_SESSION_KEY);
Modified:
james/protocols/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/imap4rev1/SearchProcessorTest.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/imap4rev1/SearchProcessorTest.java?rev=730831&r1=730830&r2=730831&view=diff
==============================================================================
---
james/protocols/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/imap4rev1/SearchProcessorTest.java
(original)
+++
james/protocols/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/imap4rev1/SearchProcessorTest.java
Fri Jan 2 11:47:09 2009
@@ -125,6 +125,8 @@
Mock selectedMailbox = mock(SelectedImapMailbox.class);
selectedMailbox.expects(once()).method("uid").with(eq(1729)).will(
returnValue(1729L));
+
selectedMailbox.expects(once()).method("unsolicitedResponses").with(eq(true),
+ eq(false)).will(returnValue(new ArrayList()));
session.expects(atLeastOnce()).method("getSelected").will(
returnValue(selectedMailbox.proxy()));
selectedMailbox.expects(once()).method("getRecent").will(
@@ -139,6 +141,8 @@
Mock selectedMailbox = mock(SelectedImapMailbox.class);
selectedMailbox.expects(once()).method("uid").with(eq(1)).will(
returnValue(42L));
+
selectedMailbox.expects(once()).method("unsolicitedResponses").with(eq(true),
+ eq(false)).will(returnValue(new ArrayList()));
session.expects(atLeastOnce()).method("getSelected").will(
returnValue(selectedMailbox.proxy()));
selectedMailbox.expects(once()).method("getRecent").will(
@@ -157,6 +161,8 @@
returnValue(1729L));
selectedMailbox.expects(once()).method("getRecent").will(
returnValue(EMPTY));
+
selectedMailbox.expects(once()).method("unsolicitedResponses").with(eq(true),
+ eq(false)).will(returnValue(new ArrayList()));
session.expects(atLeastOnce()).method("getSelected").will(
returnValue(selectedMailbox.proxy()));
check(SearchKey.buildSequenceSet(ids), SearchQuery.uid(ranges));
@@ -171,107 +177,109 @@
returnValue(42L));
selectedMailbox.expects(once()).method("getRecent").will(
returnValue(EMPTY));
+
selectedMailbox.expects(once()).method("unsolicitedResponses").with(eq(true),
+ eq(false)).will(returnValue(new ArrayList()));
session.expects(atLeastOnce()).method("getSelected").will(
returnValue(selectedMailbox.proxy()));
check(SearchKey.buildSequenceSet(ids), SearchQuery.uid(ranges));
}
public void testALL() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildAll(), SearchQuery.all());
}
public void testANSWERED() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildAnswered(), SearchQuery.flagIsSet(Flag.ANSWERED));
}
public void testBCC() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildBcc(ADDRESS), SearchQuery.headerContains(
ImapConstants.RFC822_BCC, ADDRESS));
}
public void testBEFORE() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildBefore(DAY_MONTH_YEAR), SearchQuery
.internalDateBefore(DAY, MONTH, YEAR));
}
public void testBODY() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildBody(SUBJECT), SearchQuery.bodyContains(SUBJECT));
}
public void testCC() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildCc(ADDRESS), SearchQuery.headerContains(
ImapConstants.RFC822_CC, ADDRESS));
}
public void testDELETED() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildDeleted(), SearchQuery.flagIsSet(Flag.DELETED));
}
public void testDRAFT() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildDraft(), SearchQuery.flagIsSet(Flag.DRAFT));
}
public void testFLAGGED() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildFlagged(), SearchQuery.flagIsSet(Flag.FLAGGED));
}
public void testFROM() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildFrom(ADDRESS), SearchQuery.headerContains(
ImapConstants.RFC822_FROM, ADDRESS));
}
public void testHEADER() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildHeader(ImapConstants.RFC822_IN_REPLY_TO, ADDRESS),
SearchQuery.headerContains(ImapConstants.RFC822_IN_REPLY_TO,
ADDRESS));
}
public void testKEYWORD() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildKeyword(KEYWORD), SearchQuery.flagIsSet(KEYWORD));
}
public void testLARGER() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildLarger(SIZE), SearchQuery.sizeGreaterThan(SIZE));
}
public void testNEW() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildNew(), SearchQuery.and(SearchQuery
.flagIsSet(Flag.RECENT), SearchQuery.flagIsUnSet(Flag.SEEN)));
}
public void testNOT() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildNot(SearchKey.buildOn(DAY_MONTH_YEAR)),
SearchQuery.not(SearchQuery.internalDateOn(DAY, MONTH, YEAR)));
}
public void testOLD() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildOld(), SearchQuery.flagIsUnSet(Flag.RECENT));
}
public void testON() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildOn(DAY_MONTH_YEAR), SearchQuery.internalDateOn(
DAY, MONTH, YEAR));
}
public void testAND() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
List keys = new ArrayList();
keys.add(SearchKey.buildOn(DAY_MONTH_YEAR));
keys.add(SearchKey.buildOld());
@@ -284,102 +292,102 @@
}
public void testOR() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildOr(SearchKey.buildOn(DAY_MONTH_YEAR), SearchKey
.buildOld()), SearchQuery.or(SearchQuery.internalDateOn(DAY,
MONTH, YEAR), SearchQuery.flagIsUnSet(Flag.RECENT)));
}
public void testRECENT() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildRecent(), SearchQuery.flagIsSet(Flag.RECENT));
}
public void testSEEN() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSeen(), SearchQuery.flagIsSet(Flag.SEEN));
}
public void testSENTBEFORE() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSentBefore(DAY_MONTH_YEAR), SearchQuery
.headerDateBefore(ImapConstants.RFC822_DATE, DAY, MONTH,
YEAR));
}
public void testSENTON() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSentOn(DAY_MONTH_YEAR), SearchQuery.headerDateOn(
ImapConstants.RFC822_DATE, DAY, MONTH, YEAR));
}
public void testSENTSINCE() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSentSince(DAY_MONTH_YEAR), SearchQuery
.headerDateAfter(ImapConstants.RFC822_DATE, DAY, MONTH, YEAR));
}
public void testSINCE() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSince(DAY_MONTH_YEAR), SearchQuery
.internalDateAfter(DAY, MONTH, YEAR));
}
public void testSMALLER() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSmaller(SIZE), SearchQuery.sizeLessThan(SIZE));
}
public void testSUBJECT() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildSubject(SUBJECT), SearchQuery.headerContains(
ImapConstants.RFC822_SUBJECT, SUBJECT));
}
public void testTEXT() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildText(SUBJECT), SearchQuery.mailContains(SUBJECT));
}
public void testTO() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildTo(ADDRESS), SearchQuery.headerContains(
ImapConstants.RFC822_TO, ADDRESS));
}
public void testUID() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUidSet(IDS), SearchQuery.uid(RANGES));
}
public void testUNANSWERED() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUnanswered(), SearchQuery
.flagIsUnSet(Flag.ANSWERED));
}
public void testUNDELETED() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUndeleted(),
SearchQuery.flagIsUnSet(Flag.DELETED));
}
public void testUNDRAFT() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUndraft(), SearchQuery.flagIsUnSet(Flag.DRAFT));
}
public void testUNFLAGGED() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUnflagged(),
SearchQuery.flagIsUnSet(Flag.FLAGGED));
}
public void testUNKEYWORD() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUnkeyword(KEYWORD), SearchQuery
.flagIsUnSet(KEYWORD));
}
public void testUNSEEN() throws Exception {
- session.expects(once()).method("getSelected").will(returnValue(null));
+
session.expects(atLeastOnce()).method("getSelected").will(returnValue(null));
check(SearchKey.buildUnseen(), SearchQuery.flagIsUnSet(Flag.SEEN));
}
@@ -399,8 +407,6 @@
session.expects(once()).method("getAttribute").with(
eq(ImapSessionUtils.SELECTED_MAILBOX_ATTRIBUTE_SESSION_KEY))
.will(returnValue((Mailbox) mailbox.proxy()));
- session.expects(once()).method("unsolicitedResponses").with(eq(true),
- eq(false)).will(returnValue(new ArrayList()));
mailbox.expects(once()).method("search").with(eq(query),
eq(FetchGroupImpl.MINIMAL), eq(mailboxSession)).will(
returnValue(new ArrayList().iterator()));
Modified:
james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapSessionImpl.java
URL:
http://svn.apache.org/viewvc/james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapSessionImpl.java?rev=730831&r1=730830&r2=730831&view=diff
==============================================================================
---
james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapSessionImpl.java
(original)
+++
james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapSessionImpl.java
Fri Jan 2 11:47:09 2009
@@ -19,9 +19,8 @@
package org.apache.james.imap.main;
-import java.util.Collections;
-import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.james.api.imap.AbstractLogEnabled;
import org.apache.james.api.imap.ImapConstants;
@@ -29,8 +28,6 @@
import org.apache.james.api.imap.process.ImapSession;
import org.apache.james.api.imap.process.SelectedImapMailbox;
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap;
-
/**
* Implements a session.
*/
@@ -40,25 +37,10 @@
private SelectedImapMailbox selectedMailbox = null;
- private final Map attributesByKey;
+ private final Map<String, Object> attributesByKey;
public ImapSessionImpl() {
- this.attributesByKey = new ConcurrentHashMap();
- }
-
- public List unsolicitedResponses(boolean useUid) {
- return unsolicitedResponses(false, useUid);
- }
-
- public List unsolicitedResponses(boolean omitExpunged, boolean useUid) {
- final List results;
- final SelectedImapMailbox selected = getSelected();
- if (selected == null) {
- results = Collections.EMPTY_LIST;
- } else {
- results = selected.unsolicitedResponses(omitExpunged, useUid);
- }
- return results;
+ this.attributesByKey = new ConcurrentHashMap<String, Object>();
}
public void logout() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]