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 bt...@apache.org on 2019/12/13 02:39:33 UTC
[james-project] 17/27: PROTOCOLS-120 ImapEncoders should no longer
be chained
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit cea95b025b2350c0c4aa0629c3f4c6bee8865891
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Dec 6 14:06:38 2019 +0700
PROTOCOLS-120 ImapEncoders should no longer be chained
---
.../james/imap/encode/ACLResponseEncoder.java | 19 ++---
.../imap/encode/AnnotationResponseEncoder.java | 19 ++---
.../imap/encode/AuthenticateResponseEncoder.java | 16 +---
.../imap/encode/CapabilityResponseEncoder.java | 18 ++---
.../imap/encode/ContinuationResponseEncoder.java | 22 ++----
.../james/imap/encode/ESearchResponseEncoder.java | 18 ++---
.../james/imap/encode/EnableResponseEncoder.java | 18 ++---
.../james/imap/encode/ExistsResponseEncoder.java | 18 ++---
.../james/imap/encode/ExpungeResponseEncoder.java | 17 ++--
.../james/imap/encode/FetchResponseEncoder.java | 50 +++++-------
.../james/imap/encode/FlagsResponseEncoder.java | 18 ++---
...sponseEncoder.java => ImapResponseEncoder.java} | 33 ++++----
.../james/imap/encode/LSubResponseEncoder.java | 20 ++---
.../james/imap/encode/ListResponseEncoder.java | 20 ++---
.../imap/encode/ListRightsResponseEncoder.java | 18 ++---
.../imap/encode/MailboxStatusResponseEncoder.java | 19 ++---
.../james/imap/encode/MyRightsResponseEncoder.java | 20 ++---
.../imap/encode/NamespaceResponseEncoder.java | 19 ++---
.../james/imap/encode/QuotaResponseEncoder.java | 21 ++---
.../imap/encode/QuotaRootResponseEncoder.java | 22 ++----
.../james/imap/encode/RecentResponseEncoder.java | 17 ++--
.../james/imap/encode/SearchResponseEncoder.java | 18 ++---
.../james/imap/encode/StatusResponseEncoder.java | 23 +++---
.../james/imap/encode/VanishedResponseEncoder.java | 22 ++----
.../james/imap/encode/XListResponseEncoder.java | 22 ++----
.../encode/base/AbstractChainedImapEncoder.java | 86 ---------------------
.../encode/main/DefaultImapEncoderFactory.java | 90 +++++++++++++++-------
.../imap/encode/AnnotationResponseEncoderTest.java | 3 +-
.../encode/FetchResponseEncoderEnvelopeTest.java | 40 +++++-----
.../FetchResponseEncoderNoExtensionsTest.java | 24 ++----
.../imap/encode/FetchResponseEncoderTest.java | 23 ++----
.../james/imap/encode/LSubResponseEncoderTest.java | 26 +------
.../james/imap/encode/ListResponseEncoderTest.java | 27 +------
.../encode/MailboxStatusResponseEncoderTest.java | 14 +---
.../imap/encode/NamespaceResponseEncoderTest.java | 21 ++---
.../imap/encode/QuotaResponseEncoderTest.java | 5 +-
.../imap/encode/QuotaRootResponseEncoderTest.java | 3 +-
.../imap/encode/SearchResponseEncoderTest.java | 17 +---
.../imap/encode/XListResponseEncoderTest.java | 31 +-------
39 files changed, 274 insertions(+), 663 deletions(-)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ACLResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ACLResponseEncoder.java
index 09f05a4..9cbb8c4 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ACLResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ACLResponseEncoder.java
@@ -24,27 +24,18 @@ import java.util.Map;
import java.util.Map.Entry;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.ACLResponse;
import org.apache.james.mailbox.model.MailboxACL.EntryKey;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
/**
* ACL Response Encoder.
- *
*/
-public class ACLResponseEncoder extends AbstractChainedImapEncoder {
-
- public ACLResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class ACLResponseEncoder implements ImapResponseEncoder<ACLResponse> {
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final ACLResponse aclResponse = (ACLResponse) acceptableMessage;
- final Map<EntryKey, Rfc4314Rights> entries = aclResponse.getAcl().getEntries();
+ public void encode(ACLResponse aclResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ Map<EntryKey, Rfc4314Rights> entries = aclResponse.getAcl().getEntries();
composer.untagged();
composer.commandName(ImapConstants.ACL_RESPONSE_NAME);
@@ -63,7 +54,7 @@ public class ACLResponseEncoder extends AbstractChainedImapEncoder {
}
@Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof ACLResponse;
+ public Class<ACLResponse> acceptableMessages() {
+ return ACLResponse.class;
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
index 6b0c36a..21429f2 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
@@ -24,26 +24,22 @@ import java.util.List;
import java.util.Optional;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.AnnotationResponse;
import org.apache.james.mailbox.model.MailboxAnnotation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class AnnotationResponseEncoder extends AbstractChainedImapEncoder {
+public class AnnotationResponseEncoder implements ImapResponseEncoder<AnnotationResponse> {
private static final Logger LOGGER = LoggerFactory.getLogger(AnnotationResponseEncoder.class);
- public AnnotationResponseEncoder(ImapEncoder next) {
- super(next);
+ @Override
+ public Class<AnnotationResponse> acceptableMessages() {
+ return AnnotationResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, final ImapResponseComposer composer, ImapSession session) throws IOException {
-
- AnnotationResponse response = (AnnotationResponse) acceptableMessage;
-
+ public void encode(AnnotationResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
composer.untagged();
composer.commandName(ImapConstants.ANNOTATION_RESPONSE_NAME);
@@ -71,9 +67,4 @@ public class AnnotationResponseEncoder extends AbstractChainedImapEncoder {
composer.quote(annotation.getValue().orElse(""));
}
}
-
- @Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof AnnotationResponse;
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java
index 689a2ca..bbb6c46 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java
@@ -20,25 +20,17 @@ package org.apache.james.imap.encode;
import java.io.IOException;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.AuthenticateResponse;
-public class AuthenticateResponseEncoder extends AbstractChainedImapEncoder {
-
- public AuthenticateResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class AuthenticateResponseEncoder implements ImapResponseEncoder<AuthenticateResponse> {
@Override
- protected boolean isAcceptable(ImapMessage message) {
- return message instanceof AuthenticateResponse;
+ public Class<AuthenticateResponse> acceptableMessages() {
+ return AuthenticateResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
+ public void encode(AuthenticateResponse message, ImapResponseComposer composer, ImapSession session) throws IOException {
composer.continuationResponse("");
}
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/CapabilityResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/CapabilityResponseEncoder.java
index 90eee64..685d283 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/CapabilityResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/CapabilityResponseEncoder.java
@@ -22,10 +22,8 @@ import java.io.IOException;
import java.util.Iterator;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.message.Capability;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.CapabilityResponse;
/**
@@ -33,15 +31,14 @@ import org.apache.james.imap.message.response.CapabilityResponse;
* href='http://james.apache.org/server/rfclist/imap4/rfc2060.txt'
* rel='tag'>RFC2060</a>.
*/
-public class CapabilityResponseEncoder extends AbstractChainedImapEncoder {
-
- public CapabilityResponseEncoder(ImapEncoder next) {
- super(next);
+public class CapabilityResponseEncoder implements ImapResponseEncoder<CapabilityResponse> {
+ @Override
+ public Class<CapabilityResponse> acceptableMessages() {
+ return CapabilityResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final CapabilityResponse response = (CapabilityResponse) acceptableMessage;
+ public void encode(CapabilityResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
Iterator<Capability> capabilities = response.getCapabilities().iterator();
composer.untagged();
composer.message(ImapConstants.CAPABILITY_COMMAND_NAME);
@@ -50,9 +47,4 @@ public class CapabilityResponseEncoder extends AbstractChainedImapEncoder {
}
composer.end();
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof CapabilityResponse);
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ContinuationResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ContinuationResponseEncoder.java
index f589984..9620c00 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ContinuationResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ContinuationResponseEncoder.java
@@ -22,28 +22,28 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import java.util.ArrayList;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.display.Locales;
import org.apache.james.imap.api.display.Localizer;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.ContinuationResponse;
-public class ContinuationResponseEncoder extends AbstractChainedImapEncoder {
+public class ContinuationResponseEncoder implements ImapResponseEncoder<ContinuationResponse> {
private final Localizer localizer;
- public ContinuationResponseEncoder(ImapEncoder next, Localizer localizer) {
- super(next);
+ public ContinuationResponseEncoder(Localizer localizer) {
this.localizer = localizer;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
+ public Class<ContinuationResponse> acceptableMessages() {
+ return ContinuationResponse.class;
+ }
- ContinuationResponse response = (ContinuationResponse) acceptableMessage;
- final String message = response.getData() != null ? response.getData() : asString(response.getTextKey(), session);
+ @Override
+ public void encode(ContinuationResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
+ String message = response.getData() != null ? response.getData() : asString(response.getTextKey(), session);
composer.continuationResponse(message);
}
@@ -51,10 +51,4 @@ public class ContinuationResponseEncoder extends AbstractChainedImapEncoder {
// TODO: calculate locales
return localizer.localize(text, new Locales(new ArrayList<>(), null));
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof ContinuationResponse);
- }
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ESearchResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ESearchResponseEncoder.java
index 8a4b65d..289e659 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ESearchResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ESearchResponseEncoder.java
@@ -21,28 +21,25 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import java.util.List;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.Tag;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.UidRange;
import org.apache.james.imap.api.message.request.SearchResultOption;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.ESearchResponse;
import org.apache.james.mailbox.ModSeq;
/**
* Encoders IMAP4rev1 <code>ESEARCH</code> responses.
*/
-public class ESearchResponseEncoder extends AbstractChainedImapEncoder {
-
- public ESearchResponseEncoder(ImapEncoder next) {
- super(next);
+public class ESearchResponseEncoder implements ImapResponseEncoder<ESearchResponse> {
+ @Override
+ public Class<ESearchResponse> acceptableMessages() {
+ return ESearchResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- ESearchResponse response = (ESearchResponse) acceptableMessage;
+ public void encode(ESearchResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
Tag tag = response.getTag();
long min = response.getMinUid();
long max = response.getMaxUid();
@@ -84,9 +81,4 @@ public class ESearchResponseEncoder extends AbstractChainedImapEncoder {
}
composer.end();
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof ESearchResponse);
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/EnableResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/EnableResponseEncoder.java
index d9ca32f..0cdd72f 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/EnableResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/EnableResponseEncoder.java
@@ -21,24 +21,21 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import java.util.Set;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.message.Capability;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.EnableResponse;
/**
* Encodes <code>Enable</code> response.
*/
-public class EnableResponseEncoder extends AbstractChainedImapEncoder {
-
- public EnableResponseEncoder(ImapEncoder next) {
- super(next);
+public class EnableResponseEncoder implements ImapResponseEncoder<EnableResponse> {
+ @Override
+ public Class<EnableResponse> acceptableMessages() {
+ return EnableResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final EnableResponse response = (EnableResponse) acceptableMessage;
+ public void encode(EnableResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
Set<Capability> capabilities = response.getCapabilities();
composer.untagged();
// Return ENABLED capabilities. See IMAP-323
@@ -48,9 +45,4 @@ public class EnableResponseEncoder extends AbstractChainedImapEncoder {
}
composer.end();
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof EnableResponse);
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ExistsResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ExistsResponseEncoder.java
index ad205cb..6263ab5 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ExistsResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ExistsResponseEncoder.java
@@ -21,28 +21,20 @@ package org.apache.james.imap.encode;
import java.io.IOException;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.ExistsResponse;
-public class ExistsResponseEncoder extends AbstractChainedImapEncoder {
-
+public class ExistsResponseEncoder implements ImapResponseEncoder<ExistsResponse> {
public static final String EXISTS = "EXISTS";
- public ExistsResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
@Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof ExistsResponse;
+ public Class<ExistsResponse> acceptableMessages() {
+ return ExistsResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final ExistsResponse existsResponse = (ExistsResponse) acceptableMessage;
- final long numberOfMessages = existsResponse.getNumberOfMessages();
+ public void encode(ExistsResponse existsResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ long numberOfMessages = existsResponse.getNumberOfMessages();
composer.untagged().message(numberOfMessages).message(EXISTS).end();
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ExpungeResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ExpungeResponseEncoder.java
index 0308f39..25ad3f5 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ExpungeResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ExpungeResponseEncoder.java
@@ -21,27 +21,20 @@ package org.apache.james.imap.encode;
import java.io.IOException;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.ExpungeResponse;
-public class ExpungeResponseEncoder extends AbstractChainedImapEncoder {
+public class ExpungeResponseEncoder implements ImapResponseEncoder<ExpungeResponse> {
public static final String EXPUNGE = "EXPUNGE";
- public ExpungeResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
@Override
- public boolean isAcceptable(ImapMessage message) {
- return (message instanceof ExpungeResponse);
+ public Class<ExpungeResponse> acceptableMessages() {
+ return ExpungeResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final ExpungeResponse expungeResponse = (ExpungeResponse) acceptableMessage;
- final int messageSequenceNumber = expungeResponse.getMessageSequenceNumber();
+ public void encode(ExpungeResponse expungeResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ int messageSequenceNumber = expungeResponse.getMessageSequenceNumber();
composer.untagged().message(messageSequenceNumber).message(EXPUNGE).end();
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/FetchResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/FetchResponseEncoder.java
index 344ebe1..6bc11be 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/FetchResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/FetchResponseEncoder.java
@@ -31,9 +31,7 @@ import java.util.TreeSet;
import javax.mail.Flags;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.FetchResponse;
import org.apache.james.imap.message.response.FetchResponse.Structure;
import org.apache.james.mailbox.MessageUid;
@@ -41,7 +39,7 @@ import org.apache.james.mailbox.ModSeq;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class FetchResponseEncoder extends AbstractChainedImapEncoder {
+public class FetchResponseEncoder implements ImapResponseEncoder<FetchResponse> {
private static final Logger LOGGER = LoggerFactory.getLogger(FetchResponseEncoder.class);
public static final String ENVELOPE = "ENVELOPE";
@@ -50,44 +48,38 @@ public class FetchResponseEncoder extends AbstractChainedImapEncoder {
/**
* Constructs an encoder for FETCH messages.
- *
- * @param next
- * not null
+ *
* @param neverAddBodyStructureExtensions
* true to activate a workaround for broken clients who cannot
* parse BODYSTRUCTURE extensions, false to fully support RFC3501
*/
- public FetchResponseEncoder(ImapEncoder next, boolean neverAddBodyStructureExtensions) {
- super(next);
+ public FetchResponseEncoder(boolean neverAddBodyStructureExtensions) {
this.neverAddBodyStructureExtensions = neverAddBodyStructureExtensions;
}
@Override
- public boolean isAcceptable(ImapMessage message) {
- return (message instanceof FetchResponse);
+ public Class<FetchResponse> acceptableMessages() {
+ return FetchResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- if (acceptableMessage instanceof FetchResponse) {
- final FetchResponse fetchResponse = (FetchResponse) acceptableMessage;
- final long messageNumber = fetchResponse.getMessageNumber();
-
- composer.untagged().message(messageNumber).message(ImapConstants.FETCH_COMMAND_NAME).openParen();
+ public void encode(FetchResponse fetchResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ long messageNumber = fetchResponse.getMessageNumber();
-
- encodeModSeq(composer, fetchResponse);
- encodeFlags(composer, fetchResponse);
- encodeInternalDate(composer, fetchResponse);
- encodeSize(composer, fetchResponse);
- encodeEnvelope(composer, fetchResponse);
- encodeBody(composer, fetchResponse.getBody(), session);
- encodeBodyStructure(composer, fetchResponse.getBodyStructure(), session);
- encodeUid(composer, fetchResponse);
- encodeBodyElements(composer, fetchResponse.getElements());
-
- composer.closeParen().end();
- }
+ composer.untagged().message(messageNumber).message(ImapConstants.FETCH_COMMAND_NAME).openParen();
+
+
+ encodeModSeq(composer, fetchResponse);
+ encodeFlags(composer, fetchResponse);
+ encodeInternalDate(composer, fetchResponse);
+ encodeSize(composer, fetchResponse);
+ encodeEnvelope(composer, fetchResponse);
+ encodeBody(composer, fetchResponse.getBody(), session);
+ encodeBodyStructure(composer, fetchResponse.getBodyStructure(), session);
+ encodeUid(composer, fetchResponse);
+ encodeBodyElements(composer, fetchResponse.getElements());
+
+ composer.closeParen().end();
}
// Handle the MODSEQ
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/FlagsResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/FlagsResponseEncoder.java
index 1d31d66..548f3ec 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/FlagsResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/FlagsResponseEncoder.java
@@ -23,26 +23,18 @@ import java.io.IOException;
import javax.mail.Flags;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.FlagsResponse;
-public class FlagsResponseEncoder extends AbstractChainedImapEncoder {
-
- public FlagsResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class FlagsResponseEncoder implements ImapResponseEncoder<FlagsResponse> {
@Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof FlagsResponse;
+ public Class<FlagsResponse> acceptableMessages() {
+ return FlagsResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final FlagsResponse flagsResponse = (FlagsResponse) acceptableMessage;
- final Flags flags = flagsResponse.getFlags();
+ public void encode(FlagsResponse flagsResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ Flags flags = flagsResponse.getFlags();
composer.untagged().flags(flags).end();
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseEncoder.java
similarity index 68%
copy from protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java
copy to protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseEncoder.java
index 689a2ca..dc7c0ed 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/AuthenticateResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseEncoder.java
@@ -16,29 +16,28 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
+
package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
-import org.apache.james.imap.message.response.AuthenticateResponse;
-
-public class AuthenticateResponseEncoder extends AbstractChainedImapEncoder {
-
- public AuthenticateResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return message instanceof AuthenticateResponse;
- }
- @Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- composer.continuationResponse("");
- }
+public interface ImapResponseEncoder<T extends ImapMessage> {
+ Class<T> acceptableMessages();
+ /**
+ * Writes response.
+ *
+ * @param message
+ * <code>ImapMessage</code>, not null
+ * @param composer
+ * <code>ImapResponseComposer</code>, not null
+ * @param session
+ * TODO
+ * @throws IOException
+ * when message encoding fails
+ */
+ void encode(T message, ImapResponseComposer composer, ImapSession session) throws IOException;
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/LSubResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/LSubResponseEncoder.java
index 8e47eea..315ef46 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/LSubResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/LSubResponseEncoder.java
@@ -21,30 +21,20 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
-import org.apache.james.imap.message.response.AbstractListingResponse;
import org.apache.james.imap.message.response.LSubResponse;
/**
* Encoders IMAP4rev1 <code>List</code> responses.
*/
-public class LSubResponseEncoder extends AbstractChainedImapEncoder {
-
- public LSubResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class LSubResponseEncoder implements ImapResponseEncoder<LSubResponse> {
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final AbstractListingResponse response = (AbstractListingResponse) acceptableMessage;
- ListingEncodingUtils.encodeListingResponse(ImapConstants.LSUB_RESPONSE_NAME, composer, response);
+ public Class<LSubResponse> acceptableMessages() {
+ return LSubResponse.class;
}
@Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof LSubResponse);
+ public void encode(LSubResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
+ ListingEncodingUtils.encodeListingResponse(ImapConstants.LSUB_RESPONSE_NAME, composer, response);
}
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ListResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ListResponseEncoder.java
index 7485796..ba8df0f 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ListResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ListResponseEncoder.java
@@ -21,30 +21,20 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
-import org.apache.james.imap.message.response.AbstractListingResponse;
import org.apache.james.imap.message.response.ListResponse;
/**
* Encoders IMAP4rev1 <code>List</code> responses.
*/
-public class ListResponseEncoder extends AbstractChainedImapEncoder {
-
- public ListResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class ListResponseEncoder implements ImapResponseEncoder<ListResponse> {
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final AbstractListingResponse response = (AbstractListingResponse) acceptableMessage;
- ListingEncodingUtils.encodeListingResponse(ImapConstants.LIST_RESPONSE_NAME, composer, response);
+ public Class<ListResponse> acceptableMessages() {
+ return ListResponse.class;
}
@Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof ListResponse);
+ public void encode(ListResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
+ ListingEncodingUtils.encodeListingResponse(ImapConstants.LIST_RESPONSE_NAME, composer, response);
}
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ListRightsResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ListRightsResponseEncoder.java
index 18b7b2e..86428cc 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ListRightsResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ListRightsResponseEncoder.java
@@ -22,24 +22,21 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.ListRightsResponse;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
/**
* ACL Response Encoder.
*/
-public class ListRightsResponseEncoder extends AbstractChainedImapEncoder {
-
- public ListRightsResponseEncoder(ImapEncoder next) {
- super(next);
+public class ListRightsResponseEncoder implements ImapResponseEncoder<ListRightsResponse> {
+ @Override
+ public Class<ListRightsResponse> acceptableMessages() {
+ return ListRightsResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final ListRightsResponse listRightsResponse = (ListRightsResponse) acceptableMessage;
+ public void encode(ListRightsResponse listRightsResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
composer.untagged();
composer.commandName(ImapConstants.LISTRIGHTS_RESPONSE_NAME);
@@ -56,9 +53,4 @@ public class ListRightsResponseEncoder extends AbstractChainedImapEncoder {
}
composer.end();
}
-
- @Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof ListRightsResponse;
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
index 20a961d..b507434 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
@@ -22,9 +22,7 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.MailboxStatusResponse;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
@@ -32,15 +30,14 @@ import org.apache.james.mailbox.ModSeq;
/**
* Encodes <code>STATUS</code> responses.
*/
-public class MailboxStatusResponseEncoder extends AbstractChainedImapEncoder implements ImapConstants {
-
- public MailboxStatusResponseEncoder(ImapEncoder next) {
- super(next);
+public class MailboxStatusResponseEncoder implements ImapConstants, ImapResponseEncoder<MailboxStatusResponse> {
+ @Override
+ public Class<MailboxStatusResponse> acceptableMessages() {
+ return MailboxStatusResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- MailboxStatusResponse response = (MailboxStatusResponse) acceptableMessage;
+ public void encode(MailboxStatusResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
Long messages = response.getMessages();
Long recent = response.getRecent();
MessageUid uidNext = response.getUidNext();
@@ -92,10 +89,4 @@ public class MailboxStatusResponseEncoder extends AbstractChainedImapEncoder imp
composer.closeParen();
composer.end();
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return message != null && message instanceof MailboxStatusResponse;
- }
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/MyRightsResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/MyRightsResponseEncoder.java
index 20a124a..e5f619c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/MyRightsResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/MyRightsResponseEncoder.java
@@ -22,25 +22,22 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.MyRightsResponse;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
/**
* MYRIGHTS Response Encoder.
*/
-public class MyRightsResponseEncoder extends AbstractChainedImapEncoder {
-
- public MyRightsResponseEncoder(ImapEncoder next) {
- super(next);
+public class MyRightsResponseEncoder implements ImapResponseEncoder<MyRightsResponse> {
+ @Override
+ public Class<MyRightsResponse> acceptableMessages() {
+ return MyRightsResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final MyRightsResponse aclResponse = (MyRightsResponse) acceptableMessage;
- final Rfc4314Rights myRights = aclResponse.getMyRights();
+ public void encode(MyRightsResponse aclResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ Rfc4314Rights myRights = aclResponse.getMyRights();
composer.untagged();
composer.commandName(ImapConstants.MYRIGHTS_RESPONSE_NAME);
@@ -49,9 +46,4 @@ public class MyRightsResponseEncoder extends AbstractChainedImapEncoder {
composer.quote(myRights == null ? "" : myRights.serialize());
composer.end();
}
-
- @Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof MyRightsResponse;
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java
index 9cc5987..3eee9cc 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java
@@ -22,24 +22,21 @@ import java.io.IOException;
import java.util.List;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.NamespaceResponse;
import org.apache.james.imap.message.response.NamespaceResponse.Namespace;
/**
* Encodes namespace responses.
*/
-public class NamespaceResponseEncoder extends AbstractChainedImapEncoder {
-
- public NamespaceResponseEncoder(ImapEncoder next) {
- super(next);
+public class NamespaceResponseEncoder implements ImapResponseEncoder<NamespaceResponse> {
+ @Override
+ public Class<NamespaceResponse> acceptableMessages() {
+ return NamespaceResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final NamespaceResponse response = (NamespaceResponse) acceptableMessage;
+ public void encode(NamespaceResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
composer.untagged();
composer.commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
@@ -77,10 +74,4 @@ public class NamespaceResponseEncoder extends AbstractChainedImapEncoder {
composer.quote(delimiter);
composer.closeParen();
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return message instanceof NamespaceResponse;
- }
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
index a803ec7..9764e54 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
@@ -23,26 +23,21 @@ import java.io.IOException;
import java.util.Locale;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.QuotaResponse;
import org.apache.james.mailbox.model.Quota;
/**
* Quota response encoder
*/
-public class QuotaResponseEncoder extends AbstractChainedImapEncoder {
-
- public QuotaResponseEncoder(ImapEncoder next) {
- super(next);
+public class QuotaResponseEncoder implements ImapResponseEncoder<QuotaResponse> {
+ @Override
+ public Class<QuotaResponse> acceptableMessages() {
+ return QuotaResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
-
- QuotaResponse quotaResponse = (QuotaResponse) acceptableMessage;
-
+ public void encode(QuotaResponse quotaResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
String quotaRoot = quotaResponse.getQuotaRoot();
Quota<?, ?> quota = quotaResponse.getQuota();
@@ -75,10 +70,4 @@ public class QuotaResponseEncoder extends AbstractChainedImapEncoder {
composer.message(quota.getUsed().asLong());
composer.message(quota.getLimit().asLong());
}
-
- @Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof QuotaResponse;
- }
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java
index e464b78..b13505f 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java
@@ -22,39 +22,27 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.QuotaRootResponse;
/**
* QUOTAROOT response encoder
*/
-public class QuotaRootResponseEncoder extends AbstractChainedImapEncoder {
-
- public QuotaRootResponseEncoder(ImapEncoder next) {
- super(next);
+public class QuotaRootResponseEncoder implements ImapResponseEncoder<QuotaRootResponse> {
+ @Override
+ public Class<QuotaRootResponse> acceptableMessages() {
+ return QuotaRootResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
-
- QuotaRootResponse quotaRootResponse = (QuotaRootResponse) acceptableMessage;
-
+ public void encode(QuotaRootResponse quotaRootResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
String quotaRoot = quotaRootResponse.getQuotaRoot();
String mailbox = quotaRootResponse.getMailboxName();
-
composer.untagged();
composer.commandName(ImapConstants.QUOTAROOT_RESPONSE_NAME);
composer.mailbox(mailbox == null ? "" : mailbox);
composer.message(quotaRoot == null ? "" : quotaRoot);
composer.end();
}
-
- @Override
- public boolean isAcceptable(ImapMessage message) {
- return message instanceof QuotaRootResponse;
- }
-
}
\ No newline at end of file
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/RecentResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/RecentResponseEncoder.java
index 72cc1c8..be8df6f 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/RecentResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/RecentResponseEncoder.java
@@ -21,27 +21,20 @@ package org.apache.james.imap.encode;
import java.io.IOException;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.RecentResponse;
-public class RecentResponseEncoder extends AbstractChainedImapEncoder {
+public class RecentResponseEncoder implements ImapResponseEncoder<RecentResponse> {
public static final String RECENT = "RECENT";
- public RecentResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
@Override
- public boolean isAcceptable(ImapMessage message) {
- return (message instanceof RecentResponse);
+ public Class<RecentResponse> acceptableMessages() {
+ return RecentResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final RecentResponse recentResponse = (RecentResponse) acceptableMessage;
- final int numberFlaggedRecent = recentResponse.getNumberFlaggedRecent();
+ public void encode(RecentResponse recentResponse, ImapResponseComposer composer, ImapSession session) throws IOException {
+ int numberFlaggedRecent = recentResponse.getNumberFlaggedRecent();
composer.untagged().message(numberFlaggedRecent).message(RECENT).end();
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/SearchResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/SearchResponseEncoder.java
index e5020f0..b91f3c3 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/SearchResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/SearchResponseEncoder.java
@@ -21,24 +21,21 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.SearchResponse;
import org.apache.james.mailbox.ModSeq;
/**
* Encoders IMAP4rev1 <code>SEARCH</code> responses.
*/
-public class SearchResponseEncoder extends AbstractChainedImapEncoder {
-
- public SearchResponseEncoder(ImapEncoder next) {
- super(next);
+public class SearchResponseEncoder implements ImapResponseEncoder<SearchResponse> {
+ @Override
+ public Class<SearchResponse> acceptableMessages() {
+ return SearchResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- SearchResponse response = (SearchResponse) acceptableMessage;
+ public void encode(SearchResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
final long[] ids = response.getIds();
ModSeq highestModSeq = response.getHighestModSeq();
composer.untagged();
@@ -58,9 +55,4 @@ public class SearchResponseEncoder extends AbstractChainedImapEncoder {
}
composer.end();
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof SearchResponse);
- }
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java
index 7afafea..e811e5b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java
@@ -24,7 +24,6 @@ import java.util.ArrayList;
import java.util.Collection;
import org.apache.james.imap.api.ImapCommand;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.Tag;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.display.Locales;
@@ -33,20 +32,22 @@ import org.apache.james.imap.api.message.response.StatusResponse;
import org.apache.james.imap.api.message.response.StatusResponse.ResponseCode;
import org.apache.james.imap.api.message.response.StatusResponse.Type;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
-
-public class StatusResponseEncoder extends AbstractChainedImapEncoder {
+import org.apache.james.imap.message.response.ImmutableStatusResponse;
+public class StatusResponseEncoder implements ImapResponseEncoder<ImmutableStatusResponse> {
private final Localizer localizer;
- public StatusResponseEncoder(ImapEncoder next, Localizer localizer) {
- super(next);
+ public StatusResponseEncoder(Localizer localizer) {
this.localizer = localizer;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- StatusResponse response = (StatusResponse) acceptableMessage;
+ public Class<ImmutableStatusResponse> acceptableMessages() {
+ return ImmutableStatusResponse.class;
+ }
+
+ @Override
+ public void encode(ImmutableStatusResponse response, ImapResponseComposer composer, ImapSession session) throws IOException {
final Type serverResponseType = response.getServerResponseType();
final String type = asString(serverResponseType);
final ResponseCode responseCode = response.getResponseCode();
@@ -127,10 +128,4 @@ public class StatusResponseEncoder extends AbstractChainedImapEncoder {
}
return result;
}
-
- @Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof StatusResponse);
- }
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/VanishedResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/VanishedResponseEncoder.java
index d43e8f5..d17ba5b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/VanishedResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/VanishedResponseEncoder.java
@@ -20,35 +20,25 @@ package org.apache.james.imap.encode;
import java.io.IOException;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
import org.apache.james.imap.message.response.VanishedResponse;
-public class VanishedResponseEncoder extends AbstractChainedImapEncoder {
-
- public VanishedResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class VanishedResponseEncoder implements ImapResponseEncoder<VanishedResponse> {
@Override
- protected boolean isAcceptable(ImapMessage message) {
- return message instanceof VanishedResponse;
+ public Class<VanishedResponse> acceptableMessages() {
+ return VanishedResponse.class;
}
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- VanishedResponse vr = (VanishedResponse) acceptableMessage;
+ public void encode(VanishedResponse message, ImapResponseComposer composer, ImapSession session) throws IOException {
composer.untagged();
composer.message("VANISHED");
- if (vr.isEarlier()) {
+ if (message.isEarlier()) {
composer.openParen();
composer.message("EARLIER");
composer.closeParen();
}
- composer.sequenceSet(vr.getUids());
+ composer.sequenceSet(message.getUids());
composer.end();
-
}
-
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/XListResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/XListResponseEncoder.java
index 8ba977f..d24a9cf 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/XListResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/XListResponseEncoder.java
@@ -21,29 +21,17 @@ package org.apache.james.imap.encode;
import java.io.IOException;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
-import org.apache.james.imap.message.response.AbstractListingResponse;
import org.apache.james.imap.message.response.XListResponse;
-/**
- *
- */
-public class XListResponseEncoder extends AbstractChainedImapEncoder {
-
- public XListResponseEncoder(ImapEncoder next) {
- super(next);
- }
-
+public class XListResponseEncoder implements ImapResponseEncoder<XListResponse> {
@Override
- protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
- final AbstractListingResponse response = (AbstractListingResponse) acceptableMessage;
- ListingEncodingUtils.encodeListingResponse(ImapConstants.XLIST_RESPONSE_NAME, composer, response);
+ public Class<XListResponse> acceptableMessages() {
+ return XListResponse.class;
}
@Override
- protected boolean isAcceptable(ImapMessage message) {
- return (message instanceof XListResponse);
+ public void encode(XListResponse message, ImapResponseComposer composer, ImapSession session) throws IOException {
+ ListingEncodingUtils.encodeListingResponse(ImapConstants.XLIST_RESPONSE_NAME, composer, message);
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/base/AbstractChainedImapEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/base/AbstractChainedImapEncoder.java
deleted file mode 100644
index 1c454c7..0000000
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/base/AbstractChainedImapEncoder.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************
- * 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.imap.encode.base;
-
-import java.io.IOException;
-
-import org.apache.james.imap.api.ImapMessage;
-import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.encode.ImapEncoder;
-import org.apache.james.imap.encode.ImapResponseComposer;
-
-/**
- * Abstract base class for chained {@link ImapEncoder} implementations.
- * Implementations of this will check if the {@link ImapMessage} should get
- * encoded by this Implementation or should get passed to the next
- * {@link ImapEncoder} in the chain
- */
-public abstract class AbstractChainedImapEncoder implements ImapEncoder {
-
- private final ImapEncoder next;
-
- public AbstractChainedImapEncoder(ImapEncoder next) {
- super();
- this.next = next;
- }
-
- /**
- * Encode the {@link ImapMessage} if {@link #isAcceptable(ImapMessage)}
- * return true, if not pass it to the next encoder in the chain
- */
- @Override
- public void encode(ImapMessage message, ImapResponseComposer composer, ImapSession session) throws IOException {
- final boolean isAcceptable = isAcceptable(message);
- if (isAcceptable) {
- doEncode(message, composer, session);
- } else {
- chainEncode(message, composer, session);
- }
- }
-
- /**
- * Call next Encoder in the chain
- */
- protected void chainEncode(ImapMessage message, ImapResponseComposer composer, ImapSession session) throws IOException {
- next.encode(message, composer, session);
- }
-
- /**
- * Is the given message acceptable?
- *
- * @param message
- * <code>ImapMessage</code>, not null
- * @return true if the given message is encodable by this encoder
- */
- protected abstract boolean isAcceptable(ImapMessage message);
-
- /**
- * Processes an acceptable message. Only messages passing
- * {@link #isAcceptable(ImapMessage)} should be passed to this method.
- *
- * @param acceptableMessage
- * <code>ImapMessage</code>, not null
- * @param composer
- * <code>ImapResponseComposer</code>, not null
- * @param session
- * TODO
- */
- protected abstract void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException;
-}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
index 974604f..1050ff7 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
@@ -19,7 +19,15 @@
package org.apache.james.imap.encode.main;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.display.Localizer;
+import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.encode.ACLResponseEncoder;
import org.apache.james.imap.encode.AnnotationResponseEncoder;
import org.apache.james.imap.encode.AuthenticateResponseEncoder;
@@ -33,6 +41,8 @@ import org.apache.james.imap.encode.FetchResponseEncoder;
import org.apache.james.imap.encode.FlagsResponseEncoder;
import org.apache.james.imap.encode.ImapEncoder;
import org.apache.james.imap.encode.ImapEncoderFactory;
+import org.apache.james.imap.encode.ImapResponseComposer;
+import org.apache.james.imap.encode.ImapResponseEncoder;
import org.apache.james.imap.encode.LSubResponseEncoder;
import org.apache.james.imap.encode.ListResponseEncoder;
import org.apache.james.imap.encode.ListRightsResponseEncoder;
@@ -48,10 +58,36 @@ import org.apache.james.imap.encode.VanishedResponseEncoder;
import org.apache.james.imap.encode.XListResponseEncoder;
import org.apache.james.imap.encode.base.EndImapEncoder;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+
/**
* TODO: perhaps a POJO would be better
*/
public class DefaultImapEncoderFactory implements ImapEncoderFactory {
+ private static class DefaultImapEncoder implements ImapEncoder {
+ private final Map<Class<? extends ImapMessage>, ImapResponseEncoder> encoders;
+ private final EndImapEncoder endImapEncoder;
+
+ private DefaultImapEncoder(Stream<ImapResponseEncoder> encoders, EndImapEncoder endImapEncoder) {
+ this.encoders = encoders
+ .collect(Guavate.toImmutableMap(
+ ImapResponseEncoder::acceptableMessages,
+ Function.identity()));
+ this.endImapEncoder = endImapEncoder;
+ }
+
+ @Override
+ public void encode(ImapMessage message, ImapResponseComposer composer, ImapSession session) throws IOException {
+ ImapResponseEncoder imapResponseEncoder = encoders.get(message.getClass());
+
+ if (imapResponseEncoder != null) {
+ imapResponseEncoder.encode(message, composer, session);
+ } else {
+ endImapEncoder.encode(message, composer, session);
+ }
+ }
+ }
/**
* Builds the default encoder
@@ -64,33 +100,32 @@ public class DefaultImapEncoderFactory implements ImapEncoderFactory {
* @return not null
*/
public static final ImapEncoder createDefaultEncoder(Localizer localizer, boolean neverAddBodyStructureExtensions) {
- final EndImapEncoder endImapEncoder = new EndImapEncoder();
-
- final AnnotationResponseEncoder annotationResponseEncoder = new AnnotationResponseEncoder(endImapEncoder);
- final MyRightsResponseEncoder myRightsResponseEncoder = new MyRightsResponseEncoder(annotationResponseEncoder);
- final ListRightsResponseEncoder listRightsResponseEncoder = new ListRightsResponseEncoder(myRightsResponseEncoder);
- final ACLResponseEncoder aclResponseEncoder = new ACLResponseEncoder(listRightsResponseEncoder);
- final NamespaceResponseEncoder namespaceEncoder = new NamespaceResponseEncoder(aclResponseEncoder);
- final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(namespaceEncoder, localizer);
- final RecentResponseEncoder recentResponseEncoder = new RecentResponseEncoder(statusResponseEncoder);
- final FetchResponseEncoder fetchResponseEncoder = new FetchResponseEncoder(recentResponseEncoder, neverAddBodyStructureExtensions);
- final ExpungeResponseEncoder expungeResponseEncoder = new ExpungeResponseEncoder(fetchResponseEncoder);
- final ExistsResponseEncoder existsResponseEncoder = new ExistsResponseEncoder(expungeResponseEncoder);
- final MailboxStatusResponseEncoder statusCommandResponseEncoder = new MailboxStatusResponseEncoder(existsResponseEncoder);
- final SearchResponseEncoder searchResponseEncoder = new SearchResponseEncoder(statusCommandResponseEncoder);
- final LSubResponseEncoder lsubResponseEncoder = new LSubResponseEncoder(searchResponseEncoder);
- final ListResponseEncoder listResponseEncoder = new ListResponseEncoder(lsubResponseEncoder);
- final XListResponseEncoder xListResponseEncoder = new XListResponseEncoder(listResponseEncoder);
- final FlagsResponseEncoder flagsResponseEncoder = new FlagsResponseEncoder(xListResponseEncoder);
- final CapabilityResponseEncoder capabilityResponseEncoder = new CapabilityResponseEncoder(flagsResponseEncoder);
- final EnableResponseEncoder enableResponseEncoder = new EnableResponseEncoder(capabilityResponseEncoder);
- final ContinuationResponseEncoder continuationResponseEncoder = new ContinuationResponseEncoder(enableResponseEncoder, localizer);
- final AuthenticateResponseEncoder authResponseEncoder = new AuthenticateResponseEncoder(continuationResponseEncoder);
- final ESearchResponseEncoder esearchResponseEncoder = new ESearchResponseEncoder(authResponseEncoder);
- final VanishedResponseEncoder vanishedResponseEncoder = new VanishedResponseEncoder(esearchResponseEncoder);
- final QuotaResponseEncoder quotaResponseEncoder = new QuotaResponseEncoder(vanishedResponseEncoder);
- final QuotaRootResponseEncoder quotaRootResponseEncoder = new QuotaRootResponseEncoder(quotaResponseEncoder);
- return quotaRootResponseEncoder;
+ return new DefaultImapEncoder(Stream.of(
+ new AnnotationResponseEncoder(),
+ new MyRightsResponseEncoder(),
+ new ListRightsResponseEncoder(),
+ new ListResponseEncoder(),
+ new ACLResponseEncoder(),
+ new NamespaceResponseEncoder(),
+ new StatusResponseEncoder(localizer),
+ new RecentResponseEncoder(),
+ new FetchResponseEncoder(neverAddBodyStructureExtensions),
+ new ExpungeResponseEncoder(),
+ new ExistsResponseEncoder(),
+ new MailboxStatusResponseEncoder(),
+ new SearchResponseEncoder(),
+ new LSubResponseEncoder(),
+ new XListResponseEncoder(),
+ new FlagsResponseEncoder(),
+ new CapabilityResponseEncoder(),
+ new EnableResponseEncoder(),
+ new ContinuationResponseEncoder(localizer),
+ new AuthenticateResponseEncoder(),
+ new ESearchResponseEncoder(),
+ new VanishedResponseEncoder(),
+ new QuotaResponseEncoder(),
+ new QuotaRootResponseEncoder()),
+ new EndImapEncoder());
}
private final Localizer localizer;
@@ -110,7 +145,6 @@ public class DefaultImapEncoderFactory implements ImapEncoderFactory {
* parse BODYSTRUCTURE extensions, false to fully support RFC3501
*/
public DefaultImapEncoderFactory(Localizer localizer, boolean neverAddBodyStructureExtensions) {
- super();
this.localizer = localizer;
this.neverAddBodyStructureExtensions = neverAddBodyStructureExtensions;
}
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/AnnotationResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/AnnotationResponseEncoderTest.java
index 3f7b4c8..c04074e 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/AnnotationResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/AnnotationResponseEncoderTest.java
@@ -24,7 +24,6 @@ import static org.mockito.Mockito.mock;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
-import org.apache.james.imap.encode.base.EndImapEncoder;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.AnnotationResponse;
import org.apache.james.mailbox.model.MailboxAnnotation;
@@ -53,7 +52,7 @@ public class AnnotationResponseEncoderTest {
imapSession = mock(ImapSession.class);
composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
- encoder = new AnnotationResponseEncoder(new EndImapEncoder());
+ encoder = new AnnotationResponseEncoder();
}
@Test
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderEnvelopeTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderEnvelopeTest.java
index 54d035b..f48a61b 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderEnvelopeTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderEnvelopeTest.java
@@ -51,9 +51,6 @@ public class FetchResponseEncoderEnvelopeTest {
private static final int MSN = 100;
-
- private ImapEncoder mockNextEncoder;
-
private FetchResponseEncoder encoder;
private FetchResponse message;
@@ -100,8 +97,7 @@ public class FetchResponseEncoderEnvelopeTest {
to = null;
message = new FetchResponse(MSN, null, null, null, null, null, envelope, null, null, null);
- mockNextEncoder = mock(ImapEncoder.class);
- encoder = new FetchResponseEncoder(mockNextEncoder, false);
+ encoder = new FetchResponseEncoder(false);
}
private Address[] mockOneAddress() {
@@ -144,7 +140,7 @@ public class FetchResponseEncoderEnvelopeTest {
@Test
public void testShouldNilAllNullProperties() throws Exception {
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -155,7 +151,7 @@ public class FetchResponseEncoderEnvelopeTest {
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (\"a date\" NIL NIL NIL NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -165,7 +161,7 @@ public class FetchResponseEncoderEnvelopeTest {
subject = "some subject";
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL \"some subject\" NIL NIL NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -175,7 +171,7 @@ public class FetchResponseEncoderEnvelopeTest {
inReplyTo = "some reply to";
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL NIL NIL \"some reply to\" NIL))\r\n");
}
@@ -184,7 +180,7 @@ public class FetchResponseEncoderEnvelopeTest {
messageId = "some message id";
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL NIL NIL NIL \"some message id\"))\r\n");
}
@@ -193,7 +189,7 @@ public class FetchResponseEncoderEnvelopeTest {
public void testShouldComposeOneFromAddress() throws Exception {
from = mockOneAddress();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")) NIL NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -203,7 +199,7 @@ public class FetchResponseEncoderEnvelopeTest {
from = mockManyAddresses();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")(\"2NAME\" \"2DOMAIN LIST\" \"2MAILBOX\" \"2HOST\")) NIL NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -213,7 +209,7 @@ public class FetchResponseEncoderEnvelopeTest {
sender = mockOneAddress();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")) NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -223,7 +219,7 @@ public class FetchResponseEncoderEnvelopeTest {
sender = mockManyAddresses();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")(\"2NAME\" \"2DOMAIN LIST\" \"2MAILBOX\" \"2HOST\")) NIL NIL NIL NIL NIL NIL))\r\n");
}
@@ -234,7 +230,7 @@ public class FetchResponseEncoderEnvelopeTest {
replyTo = mockOneAddress();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")) NIL NIL NIL NIL NIL))\r\n");
}
@@ -244,7 +240,7 @@ public class FetchResponseEncoderEnvelopeTest {
replyTo = mockManyAddresses();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")(\"2NAME\" \"2DOMAIN LIST\" \"2MAILBOX\" \"2HOST\")) NIL NIL NIL NIL NIL))\r\n");
}
@@ -254,7 +250,7 @@ public class FetchResponseEncoderEnvelopeTest {
to = mockOneAddress();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")) NIL NIL NIL NIL))\r\n");
}
@@ -264,7 +260,7 @@ public class FetchResponseEncoderEnvelopeTest {
to = mockManyAddresses();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")(\"2NAME\" \"2DOMAIN LIST\" \"2MAILBOX\" \"2HOST\")) NIL NIL NIL NIL))\r\n");
}
@@ -274,7 +270,7 @@ public class FetchResponseEncoderEnvelopeTest {
cc = mockOneAddress();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")) NIL NIL NIL))\r\n");
}
@@ -284,7 +280,7 @@ public class FetchResponseEncoderEnvelopeTest {
cc = mockManyAddresses();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")(\"2NAME\" \"2DOMAIN LIST\" \"2MAILBOX\" \"2HOST\")) NIL NIL NIL))\r\n");
}
@@ -294,7 +290,7 @@ public class FetchResponseEncoderEnvelopeTest {
bcc = mockOneAddress();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")) NIL NIL))\r\n");
}
@@ -304,7 +300,7 @@ public class FetchResponseEncoderEnvelopeTest {
bcc = mockManyAddresses();
envelopExpects();
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (ENVELOPE (NIL NIL NIL NIL NIL NIL NIL ((\"NAME\" \"DOMAIN LIST\" \"MAILBOX\" \"HOST\")(\"2NAME\" \"2DOMAIN LIST\" \"2MAILBOX\" \"2HOST\")) NIL NIL))\r\n");
}
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderNoExtensionsTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderNoExtensionsTest.java
index 356997b..1d687f4 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderNoExtensionsTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderNoExtensionsTest.java
@@ -30,7 +30,6 @@ import java.util.Map;
import javax.mail.Flags;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.FetchResponse;
@@ -49,29 +48,16 @@ public class FetchResponseEncoderNoExtensionsTest {
@Before
public void setUp() throws Exception {
- mockNextEncoder = mock(ImapEncoder.class);
- encoder = new FetchResponseEncoder(mockNextEncoder, true);
+ encoder = new FetchResponseEncoder(true);
flags = new Flags(Flags.Flag.DELETED);
stubStructure = mock(FetchResponse.Structure.class);
}
-
- @Test
- public void testShouldNotAcceptUnknownResponse() {
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- }
-
- @Test
- public void testShouldAcceptFetchResponse() {
- assertThat(encoder.isAcceptable(new FetchResponse(11, null, null, null, null,
- null, null, null, null, null))).isTrue();
- }
-
@Test
public void testShouldEncodeFlagsResponse() throws Exception {
FetchResponse message = new FetchResponse(100, flags, null, null, null, null,
null, null, null, null);
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (FLAGS (\\Deleted))\r\n");
}
@@ -79,7 +65,7 @@ public class FetchResponseEncoderNoExtensionsTest {
public void testShouldEncodeUidResponse() throws Exception {
FetchResponse message = new FetchResponse(100, null, MessageUid.of(72), null,
null, null, null, null, null, null);
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (UID 72)\r\n");
}
@@ -88,7 +74,7 @@ public class FetchResponseEncoderNoExtensionsTest {
public void testShouldEncodeAllResponse() throws Exception {
FetchResponse message = new FetchResponse(100, flags, MessageUid.of(72), null,
null, null, null, null, null, null);
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (FLAGS (\\Deleted) UID 72)\r\n");
}
@@ -113,7 +99,7 @@ public class FetchResponseEncoderNoExtensionsTest {
when(stubStructure.getDescription()).thenReturn("");
final FakeImapSession fakeImapSession = new FakeImapSession();
- encoder.doEncode(message, composer, fakeImapSession);
+ encoder.encode(message, composer, fakeImapSession);
assertThat(writer.getString()).isEqualTo("* 100 FETCH (FLAGS (\\Deleted) BODYSTRUCTURE (\"TEXT\" \"HTML\" (\"CHARSET\" \"US-ASCII\") \"\" \"\" \"7BIT\" 2279 48) UID 72)\r\n");
}
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderTest.java
index 1eee9c8..4d867db 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderTest.java
@@ -20,11 +20,9 @@
package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
import javax.mail.Flags;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.FetchResponse;
@@ -35,36 +33,25 @@ import org.junit.Test;
public class FetchResponseEncoderTest {
private ByteImapResponseWriter writer = new ByteImapResponseWriter();
private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
-
private Flags flags;
-
- private ImapEncoder mockNextEncoder;
-
private FetchResponseEncoder encoder;
@Before
public void setUp() throws Exception {
- mockNextEncoder = mock(ImapEncoder.class);
- encoder = new FetchResponseEncoder(mockNextEncoder, false);
+ encoder = new FetchResponseEncoder(false);
flags = new Flags(Flags.Flag.DELETED);
}
@Test
- public void testShouldNotAcceptUnknownResponse() {
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- }
-
- @Test
public void testShouldAcceptFetchResponse() {
- assertThat(encoder.isAcceptable(new FetchResponse(11, null, null, null, null,
- null, null, null, null, null))).isTrue();
+ assertThat(encoder.acceptableMessages()).isEqualTo(FetchResponse.class);
}
@Test
public void testShouldEncodeFlagsResponse() throws Exception {
FetchResponse message = new FetchResponse(100, flags, null, null, null, null,
null, null, null, null);
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (FLAGS (\\Deleted))\r\n");
@@ -74,7 +61,7 @@ public class FetchResponseEncoderTest {
public void testShouldEncodeUidResponse() throws Exception {
FetchResponse message = new FetchResponse(100, null, MessageUid.of(72), null,
null, null, null, null, null, null);
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (UID 72)\r\n");
@@ -84,7 +71,7 @@ public class FetchResponseEncoderTest {
public void testShouldEncodeAllResponse() throws Exception {
FetchResponse message = new FetchResponse(100, flags, MessageUid.of(72), null,
null, null, null, null, null, null);
- encoder.doEncode(message, composer, new FakeImapSession());
+ encoder.encode(message, composer, new FakeImapSession());
assertThat(writer.getString()).isEqualTo("* 100 FETCH (FLAGS (\\Deleted) UID 72)\r\n");
}
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
index b1a15aa..97ecead 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
@@ -20,14 +20,10 @@
package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.LSubResponse;
-import org.apache.james.imap.message.response.ListResponse;
-import org.apache.james.mailbox.model.MailboxMetaData;
import org.junit.Before;
import org.junit.Test;
@@ -39,28 +35,12 @@ public class LSubResponseEncoderTest {
@Before
public void setUp() throws Exception {
- encoder = new LSubResponseEncoder(mock(ImapEncoder.class));
+ encoder = new LSubResponseEncoder();
}
@Test
- public void encoderShouldNotAcceptListResponse() {
- assertThat(encoder.isAcceptable(new ListResponse(MailboxMetaData.Children.HAS_CHILDREN, MailboxMetaData.Selectability.NOSELECT, "name", '.')))
- .isFalse();
- }
-
- @Test
- public void encoderShouldAcceptLsubResponse() {
- assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isTrue();
- }
-
- @Test
- public void encoderShouldNotAcceptImapMessage() {
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- }
-
- @Test
- public void encoderShouldNotAcceptNull() {
- assertThat(encoder.isAcceptable(null)).isFalse();
+ public void encoderShouldAcceptLSubResponse() {
+ assertThat(encoder.acceptableMessages()).isEqualTo(LSubResponse.class);
}
@Test
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
index f7615b7..57e621b 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
@@ -20,50 +20,27 @@
package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
-import org.apache.james.imap.message.response.LSubResponse;
import org.apache.james.imap.message.response.ListResponse;
import org.apache.james.mailbox.model.MailboxMetaData;
import org.junit.Before;
import org.junit.Test;
public class ListResponseEncoderTest {
-
private ListResponseEncoder encoder;
-
private ByteImapResponseWriter writer = new ByteImapResponseWriter();
private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
@Before
public void setUp() throws Exception {
- encoder = new ListResponseEncoder(mock(ImapEncoder.class));
+ encoder = new ListResponseEncoder();
}
@Test
public void encoderShouldAcceptListResponse() {
- assertThat(encoder.isAcceptable(new ListResponse(MailboxMetaData.Children.HAS_CHILDREN, MailboxMetaData.Selectability.NONE, "name", '.')))
- .isTrue();
- }
-
- @Test
- public void encoderShouldNotAcceptLsubResponse() {
- assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isFalse();
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- assertThat(encoder.isAcceptable(null)).isFalse();
- }
-
- @Test
- public void encoderShouldNotAcceptImapMessage() {
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- }
-
- @Test
- public void encoderShouldNotAcceptNull() {
- assertThat(encoder.isAcceptable(null)).isFalse();
+ assertThat(encoder.acceptableMessages()).isEqualTo(ListResponse.class);
}
@Test
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
index 35f06da..af6d0cb 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
@@ -20,9 +20,7 @@
package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.MailboxStatusResponse;
@@ -34,23 +32,17 @@ public class MailboxStatusResponseEncoderTest {
MailboxStatusResponseEncoder encoder;
- ImapEncoder mockNextEncoder;
-
ByteImapResponseWriter writer = new ByteImapResponseWriter();
ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
@Before
public void setUp() throws Exception {
- mockNextEncoder = mock(ImapEncoder.class);
- encoder = new MailboxStatusResponseEncoder(mockNextEncoder);
+ encoder = new MailboxStatusResponseEncoder();
}
@Test
- public void testIsAcceptable() {
- assertThat(encoder.isAcceptable(new MailboxStatusResponse(null, null, null,
- null, null, null, "mailbox"))).isTrue();
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- assertThat(encoder.isAcceptable(null)).isFalse();
+ public void acceptableMessagesShouldReturnMailboxStatusResponseClass() {
+ assertThat(encoder.acceptableMessages()).isEqualTo(MailboxStatusResponse.class);
}
@Test
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java
index 0226d68..6a79a05 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java
@@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.response.NamespaceResponse;
import org.junit.Before;
@@ -35,18 +34,14 @@ import org.mockito.InOrder;
import org.mockito.Mockito;
public class NamespaceResponseEncoderTest {
-
ImapSession dummySession;
-
ImapResponseComposer mockComposer;
-
NamespaceResponseEncoder subject;
@Before
public void setUp() throws Exception {
dummySession = new FakeImapSession();
- final ImapEncoder stubNextEncoderInChain = mock(ImapEncoder.class);
- subject = new NamespaceResponseEncoder(stubNextEncoderInChain);
+ subject = new NamespaceResponseEncoder();
mockComposer = mock(ImapResponseComposer.class);
}
@@ -59,7 +54,7 @@ public class NamespaceResponseEncoderTest {
List<NamespaceResponse.Namespace> namespaces = new ArrayList<>();
namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator
.charAt(0)));
- subject.doEncode(new NamespaceResponse(null, null, namespaces),
+ subject.encode(new NamespaceResponse(null, null, namespaces),
mockComposer, dummySession);
InOrder inOrder = Mockito.inOrder(mockComposer);
@@ -82,7 +77,7 @@ public class NamespaceResponseEncoderTest {
List<NamespaceResponse.Namespace> namespaces = new ArrayList<>();
namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator
.charAt(0)));
- subject.doEncode(new NamespaceResponse(null, namespaces, null),
+ subject.encode(new NamespaceResponse(null, namespaces, null),
mockComposer, dummySession);
InOrder inOrder = Mockito.inOrder(mockComposer);
@@ -106,7 +101,7 @@ public class NamespaceResponseEncoderTest {
List<NamespaceResponse.Namespace> namespaces = new ArrayList<>();
namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator
.charAt(0)));
- subject.doEncode(new NamespaceResponse(namespaces, null, null),
+ subject.encode(new NamespaceResponse(namespaces, null, null),
mockComposer, dummySession);
InOrder inOrder = Mockito.inOrder(mockComposer);
@@ -133,7 +128,7 @@ public class NamespaceResponseEncoderTest {
.charAt(0)));
namespaces.add(new NamespaceResponse.Namespace(anotherPrefix,
anotherDeliminator.charAt(0)));
- subject.doEncode(new NamespaceResponse(namespaces, null, null),
+ subject.encode(new NamespaceResponse(namespaces, null, null),
mockComposer, dummySession);
InOrder inOrder = Mockito.inOrder(mockComposer);
@@ -154,7 +149,7 @@ public class NamespaceResponseEncoderTest {
@Test
public void testAllNullShouldWriteAllNIL() throws Exception {
- subject.doEncode(new NamespaceResponse(null, null, null), mockComposer,
+ subject.encode(new NamespaceResponse(null, null, null), mockComposer,
dummySession);
InOrder inOrder = Mockito.inOrder(mockComposer);
@@ -166,9 +161,7 @@ public class NamespaceResponseEncoderTest {
@Test
public void testNamespaceResponseIsAcceptable() {
- assertThat(subject.isAcceptable(mock(ImapMessage.class))).isFalse();
- assertThat(subject
- .isAcceptable(new NamespaceResponse(null, null, null))).isTrue();
+ assertThat(subject.acceptableMessages()).isEqualTo(NamespaceResponse.class);
}
}
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java
index a4518c5..a946324 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java
@@ -26,7 +26,6 @@ import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeLimit;
import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
-import org.apache.james.imap.encode.base.EndImapEncoder;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.QuotaResponse;
import org.apache.james.mailbox.model.Quota;
@@ -43,7 +42,7 @@ public class QuotaResponseEncoderTest {
Quota.<QuotaCountLimit, QuotaCountUsage>builder().used(QuotaCountUsage.count(231)).computedLimit(QuotaCountLimit.count(1024)).build());
ByteImapResponseWriter byteImapResponseWriter = new ByteImapResponseWriter();
ImapResponseComposer composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
- QuotaResponseEncoder encoder = new QuotaResponseEncoder(new EndImapEncoder());
+ QuotaResponseEncoder encoder = new QuotaResponseEncoder();
encoder.encode(response, composer, null);
String responseString = byteImapResponseWriter.getString();
assertThat(responseString).isEqualTo("* QUOTA root (MESSAGE 231 1024)\r\n");
@@ -55,7 +54,7 @@ public class QuotaResponseEncoderTest {
Quota.<QuotaSizeLimit, QuotaSizeUsage>builder().used(QuotaSizeUsage.size(231 * 1024)).computedLimit(QuotaSizeLimit.size(1024 * 1024)).build());
ByteImapResponseWriter byteImapResponseWriter = new ByteImapResponseWriter();
ImapResponseComposer composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
- QuotaResponseEncoder encoder = new QuotaResponseEncoder(new EndImapEncoder());
+ QuotaResponseEncoder encoder = new QuotaResponseEncoder();
encoder.encode(response, composer, null);
String responseString = byteImapResponseWriter.getString();
assertThat(responseString).isEqualTo("* QUOTA root (STORAGE 231 1024)\r\n");
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java
index a61190e..a95d0a0 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java
@@ -22,7 +22,6 @@ package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
-import org.apache.james.imap.encode.base.EndImapEncoder;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.QuotaRootResponse;
import org.junit.Test;
@@ -37,7 +36,7 @@ public class QuotaRootResponseEncoderTest {
QuotaRootResponse response = new QuotaRootResponse("INBOX", "root");
ByteImapResponseWriter byteImapResponseWriter = new ByteImapResponseWriter();
ImapResponseComposer composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
- QuotaRootResponseEncoder encoder = new QuotaRootResponseEncoder(new EndImapEncoder());
+ QuotaRootResponseEncoder encoder = new QuotaRootResponseEncoder();
encoder.encode(response, composer, null);
String responseString = byteImapResponseWriter.getString();
assertThat(responseString).isEqualTo("* QUOTAROOT \"INBOX\" root\r\n");
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java
index 10b83af..baa0b07 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java
@@ -20,12 +20,9 @@
package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
-import org.apache.james.imap.message.response.LSubResponse;
import org.apache.james.imap.message.response.SearchResponse;
import org.junit.Before;
import org.junit.Test;
@@ -35,27 +32,19 @@ public class SearchResponseEncoderTest {
private static final long[] IDS = { 1, 4, 9, 16 };
private SearchResponse response;
-
private SearchResponseEncoder encoder;
-
- private ImapEncoder mockNextEncoder;
-
private ByteImapResponseWriter writer = new ByteImapResponseWriter();
private ImapResponseComposer composer = new ImapResponseComposerImpl(writer);
@Before
public void setUp() throws Exception {
- mockNextEncoder = mock(ImapEncoder.class);
response = new SearchResponse(IDS, null);
- encoder = new SearchResponseEncoder(mockNextEncoder);
+ encoder = new SearchResponseEncoder();
}
@Test
- public void testIsAcceptable() {
- assertThat(encoder.isAcceptable(response)).isTrue();
- assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isFalse();
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- assertThat(encoder.isAcceptable(null)).isFalse();
+ public void acceptableMessagesShouldReturnSearchResponseClass() {
+ assertThat(encoder.acceptableMessages()).isEqualTo(SearchResponse.class);
}
@Test
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java
index d7280e7..43d5dd3 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/XListResponseEncoderTest.java
@@ -20,13 +20,10 @@
package org.apache.james.imap.encode;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.process.MailboxType;
import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
-import org.apache.james.imap.message.response.LSubResponse;
import org.apache.james.imap.message.response.XListResponse;
import org.apache.james.mailbox.model.MailboxMetaData;
import org.junit.Before;
@@ -41,36 +38,12 @@ public class XListResponseEncoderTest {
@Before
public void setUp() throws Exception {
- encoder = new XListResponseEncoder(mock(ImapEncoder.class));
+ encoder = new XListResponseEncoder();
}
@Test
public void encoderShouldAcceptXListResponse() {
- assertThat(encoder.isAcceptable(
- new XListResponse(
- MailboxMetaData.Children.HAS_CHILDREN,
- MailboxMetaData.Selectability.NONE,
- "name",
- '.',
- MailboxType.INBOX)))
- .isTrue();
- }
-
- @Test
- public void encoderShouldNotAcceptLsubResponse() {
- assertThat(encoder.isAcceptable(new LSubResponse("name", true, '.'))).isFalse();
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- assertThat(encoder.isAcceptable(null)).isFalse();
- }
-
- @Test
- public void encoderShouldNotAcceptImapMessage() {
- assertThat(encoder.isAcceptable(mock(ImapMessage.class))).isFalse();
- }
-
- @Test
- public void encoderShouldNotAcceptNull() {
- assertThat(encoder.isAcceptable(null)).isFalse();
+ assertThat(encoder.acceptableMessages()).isEqualTo(XListResponse.class);
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org