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 no...@apache.org on 2011/01/17 16:27:38 UTC
svn commit: r1059950 [1/3] - in /james/imap/branches/nio-refactoring:
api/src/main/java/org/apache/james/imap/api/
api/src/main/java/org/apache/james/imap/api/message/response/
api/src/main/java/org/apache/james/imap/api/process/
message/src/main/java/...
Author: norman
Date: Mon Jan 17 15:27:34 2011
New Revision: 1059950
URL: http://svn.apache.org/viewvc?rev=1059950&view=rev
Log:
Some pending changes for imap-nio refactoring.. still work in progress
Added:
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/DecodingException.java
- copied, changed from r1058707, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecodingException.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapLineHandler.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapMessageCallback.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapRequestLine.java
- copied, changed from r1059123, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/LineHandlerMessageCallback.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/ImapResponseComposer.java
- copied, changed from r1059037, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/Literal.java
- copied, changed from r1058707, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/response/Literal.java
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapDecoder.java
- copied, changed from r1058707, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoder.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/MockImapMessageCallback.java
Removed:
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecodingException.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/main/ImapSessionImpl.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/response/Literal.java
Modified:
james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapSession.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecoderUtils.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/FetchPartPathDecoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoderFactory.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/EolInputStream.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AbstractUidCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AuthenticateCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CapabilityCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CheckCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CloseCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/DeleteCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExpungeCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/FetchCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/IdleCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ListCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/LoginCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/LogoutCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/NamespaceCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/NoopCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/RenameCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/SelectCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/StartTLSCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/StatusCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/StoreCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/SubscribeCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/UidCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/UnselectCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/UnsubscribeCommandParser.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/CapabilityResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ContinuationRequestEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ContinuationResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ExistsResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ExpungeResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/FetchResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/FlagsResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ImapEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/LSubResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ListResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/RecentResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/SearchResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/base/AbstractChainedImapEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/base/AbstractImapResponseComposer.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/base/ChannelImapResponseComposer.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/base/EndImapEncoder.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/main/AbstractImapRequestHandler.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/main/DefaultImapDecoderFactory.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/main/stream/ImapRequestStreamHandler.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/request/ContinuationRequest.java
james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/response/FetchResponse.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/DecoderUtilsTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/FetchPartPathDecoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/main/IdRangeParseTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/FetchCommandParserPartialFetchTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserAndParenthesesTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserCharsetTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserOrTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserQuotedCharsetTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeySequenceSetTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeyTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserTopLevelAndTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/decode/parser/StoreCommandParserTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/FakeImapSession.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderEnvelopeTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderNoExtensionsTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/FetchResponseEncoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/ImapResponseTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/ListResponseEncoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/MockImapResponseComposer.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java
james/imap/branches/nio-refactoring/message/src/test/java/org/apache/james/imap/encode/StatusResponseEncoderTest.java
james/imap/branches/nio-refactoring/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
Copied: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/DecodingException.java (from r1058707, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecodingException.java)
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/DecodingException.java?p2=james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/DecodingException.java&p1=james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecodingException.java&r1=1058707&r2=1059950&rev=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecodingException.java (original)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/DecodingException.java Mon Jan 17 15:27:34 2011
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.imap.decode;
+package org.apache.james.imap.api;
import java.io.IOException;
Added: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapLineHandler.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapLineHandler.java?rev=1059950&view=auto
==============================================================================
--- james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapLineHandler.java (added)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapLineHandler.java Mon Jan 17 15:27:34 2011
@@ -0,0 +1,9 @@
+package org.apache.james.imap.api;
+
+import org.apache.james.imap.api.process.ImapSession;
+
+public interface ImapLineHandler {
+
+ public void onLine(ImapSession session, byte data[], ImapMessageCallback callback);
+
+}
Added: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapMessageCallback.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapMessageCallback.java?rev=1059950&view=auto
==============================================================================
--- james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapMessageCallback.java (added)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapMessageCallback.java Mon Jan 17 15:27:34 2011
@@ -0,0 +1,9 @@
+package org.apache.james.imap.api;
+
+
+public interface ImapMessageCallback {
+
+ public void onMessage(ImapMessage message);
+
+ public void onException(DecodingException ex);
+}
Copied: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapRequestLine.java (from r1059123, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java)
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapRequestLine.java?p2=james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapRequestLine.java&p1=james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java&r1=1059123&r2=1059950&rev=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java (original)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/ImapRequestLine.java Mon Jan 17 15:27:34 2011
@@ -17,12 +17,12 @@
* under the License. *
****************************************************************/
-package org.apache.james.imap.decode;
+package org.apache.james.imap.api;
import java.io.IOException;
import org.apache.james.imap.api.display.HumanReadableText;
-import org.apache.james.imap.encode.ImapResponseComposer;
+import org.apache.james.imap.api.message.response.ImapResponseComposer;
/**
* Wraps the client input reader with a bunch of convenience methods, allowing
@@ -31,7 +31,7 @@ import org.apache.james.imap.encode.Imap
*
* @version $Revision: 109034 $
*/
-public class ImapRequestLineReader {
+public class ImapRequestLine {
protected boolean nextSeen = false;
@@ -43,7 +43,7 @@ public class ImapRequestLineReader {
private byte[] data;
private int pos = 0;
- public ImapRequestLineReader(byte [] data, ImapResponseComposer composer) {
+ public ImapRequestLine(byte [] data, ImapResponseComposer composer) {
this.composer = composer;
this.data = data;
}
Added: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/LineHandlerMessageCallback.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/LineHandlerMessageCallback.java?rev=1059950&view=auto
==============================================================================
--- james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/LineHandlerMessageCallback.java (added)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/LineHandlerMessageCallback.java Mon Jan 17 15:27:34 2011
@@ -0,0 +1,33 @@
+package org.apache.james.imap.api;
+
+import org.apache.james.imap.api.process.ImapSession;
+
+public class LineHandlerMessageCallback implements ImapMessageCallback{
+
+ private ImapMessageCallback callback;
+ private ImapSession session;
+
+ public LineHandlerMessageCallback(ImapSession session, ImapMessageCallback callback) {
+ this.callback = callback;
+ this.session = session;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.imap.api.ImapMessageCallback#onMessage(org.apache.james.imap.api.ImapMessage)
+ */
+ public void onMessage(ImapMessage message) {
+ session.popImapLineHandler();
+ callback.onMessage(message);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.imap.api.ImapMessageCallback#onException(org.apache.james.imap.api.DecodingException)
+ */
+ public void onException(DecodingException ex) {
+ session.popImapLineHandler();
+ callback.onException(ex);
+ }
+
+}
Copied: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/ImapResponseComposer.java (from r1059037, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java)
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/ImapResponseComposer.java?p2=james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/ImapResponseComposer.java&p1=james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java&r1=1059037&r2=1059950&rev=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java (original)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/ImapResponseComposer.java Mon Jan 17 15:27:34 2011
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.imap.encode;
+package org.apache.james.imap.api.message.response;
import java.io.IOException;
import java.util.Collection;
@@ -26,7 +26,6 @@ import java.util.List;
import javax.mail.Flags;
import org.apache.james.imap.api.ImapCommand;
-import org.apache.james.imap.message.response.Literal;
public interface ImapResponseComposer {
Copied: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/Literal.java (from r1058707, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/response/Literal.java)
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/Literal.java?p2=james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/Literal.java&p1=james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/response/Literal.java&r1=1058707&r2=1059950&rev=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/message/response/Literal.java (original)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/message/response/Literal.java Mon Jan 17 15:27:34 2011
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.imap.message.response;
+package org.apache.james.imap.api.message.response;
import java.io.IOException;
import java.nio.channels.WritableByteChannel;
Copied: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapDecoder.java (from r1058707, james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoder.java)
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapDecoder.java?p2=james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapDecoder.java&p1=james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoder.java&r1=1058707&r2=1059950&rev=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoder.java (original)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapDecoder.java Mon Jan 17 15:27:34 2011
@@ -16,12 +16,12 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.imap.decode;
+package org.apache.james.imap.api.process;
-import org.apache.james.imap.api.ImapMessage;
-import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
public interface ImapDecoder {
- public ImapMessage decode(final ImapRequestLineReader request,
- ImapSession session);
+ public void decode(final ImapRequestLine request,
+ ImapSession session, ImapMessageCallback callback);
}
Modified: james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapSession.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapSession.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapSession.java (original)
+++ james/imap/branches/nio-refactoring/api/src/main/java/org/apache/james/imap/api/process/ImapSession.java Mon Jan 17 15:27:34 2011
@@ -20,6 +20,7 @@
package org.apache.james.imap.api.process;
import org.apache.commons.logging.Log;
+import org.apache.james.imap.api.ImapLineHandler;
import org.apache.james.imap.api.ImapSessionState;
/**
@@ -31,6 +32,9 @@ import org.apache.james.imap.api.ImapSes
*/
public interface ImapSession {
+ ImapDecoder decoder = null;
+
+
/**
* Gets the context sensitive log for this session.
* Understanding the context of a log message is an important
@@ -123,5 +127,7 @@ public interface ImapSession {
public boolean supportStartTLS();
+ public void pushImapLineHandler(ImapLineHandler handler);
+ public void popImapLineHandler();
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecoderUtils.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecoderUtils.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecoderUtils.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/DecoderUtils.java Mon Jan 17 15:27:34 2011
@@ -27,6 +27,7 @@ import java.util.TimeZone;
import javax.mail.Flags;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.MessageFlags;
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/FetchPartPathDecoder.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/FetchPartPathDecoder.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/FetchPartPathDecoder.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/FetchPartPathDecoder.java Mon Jan 17 15:27:34 2011
@@ -22,6 +22,7 @@ package org.apache.james.imap.decode;
import java.util.ArrayList;
import java.util.List;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.display.HumanReadableText;
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java Mon Jan 17 15:27:34 2011
@@ -19,7 +19,8 @@
package org.apache.james.imap.decode;
-import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
/**
@@ -40,5 +41,5 @@ public interface ImapCommandParser {
* @param session the {@link ImapSession}
* @return <code>ImapCommandMessage</code>
*/
- ImapMessage parse(ImapRequestLineReader request, String tag, ImapSession session);
+ void parse(ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback);
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoderFactory.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoderFactory.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoderFactory.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/ImapDecoderFactory.java Mon Jan 17 15:27:34 2011
@@ -19,6 +19,8 @@
package org.apache.james.imap.decode;
+import org.apache.james.imap.api.process.ImapDecoder;
+
public interface ImapDecoderFactory {
public ImapDecoder buildImapDecoder();
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java Mon Jan 17 15:27:34 2011
@@ -35,18 +35,19 @@ import java.util.List;
import javax.mail.Flags;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.request.DayMonthYear;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.decode.DecoderUtils;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.ImapCommandParser;
-import org.apache.james.imap.decode.ImapRequestLineReader;
import org.apache.james.imap.decode.MessagingImapCommandParser;
/**
@@ -91,21 +92,25 @@ public abstract class AbstractImapComman
* <code>ImapRequestLineReader</code>, not null
* @return <code>ImapCommandMessage</code>, not null
*/
- public final ImapMessage parse(ImapRequestLineReader request, String tag, ImapSession session) {
- ImapMessage result;
+ public final void parse(ImapRequestLine request, final String tag, final ImapSession session, final ImapMessageCallback callback) {
if (!command.validForState(session.getState())) {
- result = statusResponseFactory.taggedNo(tag, command,
+ ImapMessage result = statusResponseFactory.taggedNo(tag, command,
HumanReadableText.INVALID_COMMAND);
+ callback.onMessage(result);
} else {
- try {
-
- result = decode(command, request, tag, session);
- } catch (DecodingException e) {
- session.getLog().debug("Cannot parse protocol ", e);
- result = statusResponseFactory.taggedBad(tag, command, e.getKey());
- }
+ decode(command, request, tag, session, new ImapMessageCallback() {
+
+ public void onMessage(ImapMessage message) {
+ callback.onMessage(message);
+ }
+
+ public void onException(DecodingException ex) {
+ session.getLog().debug("Cannot parse protocol ", ex);
+ ImapMessage result = statusResponseFactory.taggedBad(tag, command, ex.getKey());
+ onMessage(result);
+ }
+ });
}
- return result;
}
@@ -122,14 +127,14 @@ public abstract class AbstractImapComman
* @throws DecodingException
* if the request cannot be parsed
*/
- protected abstract ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException;
+ protected abstract void decode(ImapCommand command,
+ ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback);
/**
* Reads an argument of type "atom" from the request.
*/
- public static String atom(ImapRequestLineReader request)
+ public static String atom(ImapRequestLine request)
throws DecodingException {
return consumeWord(request, new ATOM_CHARValidator());
}
@@ -137,7 +142,7 @@ public abstract class AbstractImapComman
/**
* Reads a command "tag" from the request.
*/
- public static String tag(ImapRequestLineReader request)
+ public static String tag(ImapRequestLine request)
throws DecodingException {
CharacterValidator validator = new TagCharValidator();
return consumeWord(request, validator);
@@ -146,7 +151,7 @@ public abstract class AbstractImapComman
/**
* Reads an argument of type "astring" from the request.
*/
- public String astring(ImapRequestLineReader request)
+ public String astring(ImapRequestLine request)
throws DecodingException {
return astring(request, null);
}
@@ -154,7 +159,7 @@ public abstract class AbstractImapComman
/**
* Reads an argument of type "astring" from the request.
*/
- public String astring(ImapRequestLineReader request, Charset charset)
+ public String astring(ImapRequestLine request, Charset charset)
throws DecodingException {
char next = request.nextWordChar();
switch (next) {
@@ -170,6 +175,7 @@ public abstract class AbstractImapComman
/**
* Reads an argument of type "nstring" from the request.
*/
+ /*
public String nstring(ImapRequestLineReader request)
throws DecodingException {
char next = request.nextWordChar();
@@ -188,6 +194,7 @@ public abstract class AbstractImapComman
}
}
}
+ */
/**
* Reads a "mailbox" argument from the request. Not implemented *exactly* as
@@ -198,7 +205,7 @@ public abstract class AbstractImapComman
* variants of ;; INBOX (e.g. "iNbOx") MUST be interpreted as INBOX ;; not
* as an astring.
*/
- public String mailbox(ImapRequestLineReader request)
+ public String mailbox(ImapRequestLine request)
throws DecodingException {
String mailbox = astring(request);
if (mailbox.equalsIgnoreCase(ImapConstants.INBOX_NAME)) {
@@ -216,7 +223,7 @@ public abstract class AbstractImapComman
* @return <code>DayMonthYear</code>, not null
* @throws DecodingException
*/
- public DayMonthYear date(ImapRequestLineReader request)
+ public DayMonthYear date(ImapRequestLine request)
throws DecodingException {
final char one = request.consume();
@@ -245,7 +252,7 @@ public abstract class AbstractImapComman
return result;
}
- private void nextIsDash(ImapRequestLineReader request)
+ private void nextIsDash(ImapRequestLine request)
throws DecodingException {
final char next = request.consume();
if (next != '-') {
@@ -256,7 +263,7 @@ public abstract class AbstractImapComman
/**
* Reads a "date-time" argument from the request.
*/
- public Date dateTime(ImapRequestLineReader request)
+ public Date dateTime(ImapRequestLine request)
throws DecodingException {
char next = request.nextWordChar();
String dateString;
@@ -274,7 +281,7 @@ public abstract class AbstractImapComman
* the next SPACE. Characters are tested by the supplied CharacterValidator,
* and an exception is thrown if invalid characters are encountered.
*/
- protected static String consumeWord(ImapRequestLineReader request,
+ protected static String consumeWord(ImapRequestLine request,
CharacterValidator validator) throws DecodingException {
StringBuffer atom = new StringBuffer();
@@ -305,7 +312,7 @@ public abstract class AbstractImapComman
* @param charset ,
* or null for <code>US-ASCII</code>
*/
- protected String consumeLiteralLine(final ImapRequestLineReader request,
+ protected String consumeLiteralLine(final ImapRequestLine request,
final Charset charset) throws DecodingException {
if (charset == null) {
return consumeLiteralLine(request, US_ASCII);
@@ -329,7 +336,7 @@ public abstract class AbstractImapComman
}
}
- protected int consumeLiteralSize(final ImapRequestLineReader request) throws DecodingException {
+ protected int consumeLiteralSize(final ImapRequestLine request) throws DecodingException {
// The 1st character must be '{'
consumeChar(request, '{');
@@ -388,7 +395,7 @@ public abstract class AbstractImapComman
* Consumes the next character in the request, checking that it matches the
* expected one. This method should be used when the
*/
- protected void consumeChar(ImapRequestLineReader request, char expected)
+ protected void consumeChar(ImapRequestLine request, char expected)
throws DecodingException {
char consumed = request.consume();
if (consumed != expected) {
@@ -400,7 +407,7 @@ public abstract class AbstractImapComman
/**
* Reads a quoted string value from the request.
*/
- protected String consumeQuoted(ImapRequestLineReader request)
+ protected String consumeQuoted(ImapRequestLine request)
throws DecodingException {
return consumeQuoted(request, null);
}
@@ -408,7 +415,7 @@ public abstract class AbstractImapComman
/**
* Reads a quoted string value from the request.
*/
- protected String consumeQuoted(ImapRequestLineReader request,
+ protected String consumeQuoted(ImapRequestLine request,
Charset charset) throws DecodingException {
if (charset == null) {
return consumeQuoted(request, US_ASCII);
@@ -425,7 +432,7 @@ public abstract class AbstractImapComman
/**
* Reads a "flags" argument from the request.
*/
- public Flags flagList(ImapRequestLineReader request)
+ public Flags flagList(ImapRequestLine request)
throws DecodingException {
Flags flags = new Flags();
request.nextWordChar();
@@ -451,11 +458,11 @@ public abstract class AbstractImapComman
/**
* Reads an argument of type "number" from the request.
*/
- public long number(ImapRequestLineReader request) throws DecodingException {
+ public long number(ImapRequestLine request) throws DecodingException {
return readDigits(request, 0, 0, true);
}
- private long readDigits(final ImapRequestLineReader request, int add,
+ private long readDigits(final ImapRequestLine request, int add,
final long total, final boolean first) throws DecodingException {
final char next;
if (first) {
@@ -504,7 +511,7 @@ public abstract class AbstractImapComman
* as nzNumbers (although it's ok as a "number". I think the spec is a bit
* shonky.)
*/
- public long nzNumber(ImapRequestLineReader request)
+ public long nzNumber(ImapRequestLine request)
throws DecodingException {
long number = number(request);
if (number == 0) {
@@ -533,7 +540,7 @@ public abstract class AbstractImapComman
* @throws DecodingException
* If characters are encountered before the endLine.
*/
- public void endLine(ImapRequestLineReader request) throws DecodingException {
+ public void endLine(ImapRequestLine request) throws DecodingException {
request.eol();
}
@@ -541,7 +548,7 @@ public abstract class AbstractImapComman
* Reads a "message set" argument, and parses into an IdSet. Currently only
* supports a single range of values.
*/
- public IdRange[] parseIdRange(ImapRequestLineReader request)
+ public IdRange[] parseIdRange(ImapRequestLine request)
throws DecodingException {
CharacterValidator validator = new MessageSetCharValidator();
String nextWord = consumeWord(request, validator);
@@ -682,7 +689,7 @@ public abstract class AbstractImapComman
charBuffer = CharBuffer.allocate(QUOTED_BUFFER_INITIAL_CAPACITY);
}
- public String decode(ImapRequestLineReader request)
+ public String decode(ImapRequestLine request)
throws DecodingException {
try {
decoder.reset();
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/EolInputStream.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/EolInputStream.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/EolInputStream.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/base/EolInputStream.java Mon Jan 17 15:27:34 2011
@@ -23,20 +23,20 @@ import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
-import org.apache.james.imap.decode.ImapRequestLineReader;
+import org.apache.james.imap.api.ImapRequestLine;
/**
- * {@link FileInputStream} which call the eol() method of the {@link ImapRequestLineReader} when the end
+ * {@link FileInputStream} which call the eol() method of the {@link ImapRequestLine} when the end
* of the wrapped {@link InputStream} is reached
*
*
*/
public class EolInputStream extends FilterInputStream{
- private ImapRequestLineReader reader;
+ private ImapRequestLine reader;
private boolean eolCalled = false;
- public EolInputStream(ImapRequestLineReader reader, InputStream in) {
+ public EolInputStream(ImapRequestLine reader, InputStream in) {
super(in);
this.reader = reader;
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java Mon Jan 17 15:27:34 2011
@@ -19,16 +19,17 @@
package org.apache.james.imap.decode.main;
import org.apache.commons.logging.Log;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.ImapSessionState;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
+import org.apache.james.imap.api.process.ImapDecoder;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.decode.ImapCommandParser;
import org.apache.james.imap.decode.ImapCommandParserFactory;
-import org.apache.james.imap.decode.ImapDecoder;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
/**
@@ -52,42 +53,39 @@ public class DefaultImapDecoder implemen
* (non-Javadoc)
* @see org.apache.james.imap.decode.ImapDecoder#decode(org.apache.james.imap.decode.ImapRequestLineReader, org.apache.james.imap.api.process.ImapSession)
*/
- public ImapMessage decode(ImapRequestLineReader request, ImapSession session) {
- ImapMessage message;
+ public void decode(ImapRequestLine request, ImapSession session, ImapMessageCallback callback) {
final Log logger = session.getLog();
-
try {
final String tag = AbstractImapCommandParser.tag(request);
- message = decodeCommandTagged(request, tag, session);
+ decodeCommandTagged(request, tag, session, callback);
+
} catch (DecodingException e) {
logger.debug("Cannot parse tag", e);
// When the tag cannot be read, there is something seriously wrong.
// It is probably not possible to recover
// and (since this may indicate an attack) wiser not to try
- message = responseFactory.bye(HumanReadableText.ILLEGAL_TAG);
+ ImapMessage message = responseFactory.bye(HumanReadableText.ILLEGAL_TAG);
+ callback.onMessage(message);
session.logout();
}
- return message;
}
- private ImapMessage decodeCommandTagged(
- final ImapRequestLineReader request,
- final String tag, final ImapSession session) {
- ImapMessage message;
+ private void decodeCommandTagged(
+ final ImapRequestLine request,
+ final String tag, final ImapSession session, ImapMessageCallback callback) {
if (session.getLog().isDebugEnabled()) {
session.getLog().debug("Got <tag>: " + tag);
}
try {
final String commandName = AbstractImapCommandParser.atom(request);
- message = decodeCommandNamed(request, tag, commandName,
- session);
+ decodeCommandNamed(request, tag, commandName,
+ session, callback);
} catch (DecodingException e) {
session.getLog().debug("Error during initial request parsing", e);
- message = unknownCommand(tag, session);
+ callback.onMessage(unknownCommand(tag, session));
}
- return message;
}
private ImapMessage unknownCommand(final String tag,
@@ -104,20 +102,18 @@ public class DefaultImapDecoder implemen
return message;
}
- private ImapMessage decodeCommandNamed(final ImapRequestLineReader request,
+ private void decodeCommandNamed(final ImapRequestLine request,
final String tag, String commandName,
- final ImapSession session) {
- ImapMessage message;
+ final ImapSession session, ImapMessageCallback callback) {
if (session.getLog().isDebugEnabled()) {
session.getLog().debug("Got <command>: " + commandName);
}
final ImapCommandParser command = imapCommands.getParser(commandName);
if (command == null) {
session.getLog().info("Missing command implementation.");
- message = unknownCommand(tag, session);
+ callback.onMessage(unknownCommand(tag, session));
} else {
- message = command.parse(request, tag, session);
+ command.parse(request, tag, session, callback);
}
- return message;
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AbstractUidCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AbstractUidCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AbstractUidCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AbstractUidCommandParser.java Mon Jan 17 15:27:34 2011
@@ -20,10 +20,9 @@
package org.apache.james.imap.decode.parser;
import org.apache.james.imap.api.ImapCommand;
-import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
abstract class AbstractUidCommandParser extends AbstractImapCommandParser {
@@ -32,20 +31,17 @@ abstract class AbstractUidCommandParser
super(command);
}
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- final ImapMessage result = decode(command, request, tag, false, session);
- return result;
+ protected void decode(ImapCommand command,
+ ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ decode(command, request, tag, false, session, callback);
}
- public ImapMessage decode(ImapRequestLineReader request, String tag,
- boolean useUids, ImapSession session) throws DecodingException {
+ public void decode(ImapRequestLine request, String tag,
+ boolean useUids, ImapSession session, ImapMessageCallback callback) {
final ImapCommand command = getCommand();
- final ImapMessage result = decode(command, request, tag, useUids, session);
- return result;
+ decode(command, request, tag, useUids, session, callback);
}
- protected abstract ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, boolean useUids, ImapSession session)
- throws DecodingException;
+ protected abstract void decode(ImapCommand command,
+ ImapRequestLine request, String tag, boolean useUids, ImapSession session, ImapMessageCallback callback);
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java Mon Jan 17 15:27:34 2011
@@ -28,14 +28,15 @@ import java.util.Date;
import javax.mail.Flags;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.ImapLineHandler;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapDecoder;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.AppendRequest;
@@ -56,7 +57,7 @@ public class AppendCommandParser extends
* "flag_list" argument from the request. If not, returns a MessageFlags
* with no flags set.
*/
- public Flags optionalAppendFlags(ImapRequestLineReader request)
+ public Flags optionalAppendFlags(ImapRequestLine request)
throws DecodingException {
char next = request.nextWordChar();
if (next == '(') {
@@ -70,7 +71,7 @@ public class AppendCommandParser extends
* If the next character in the request is a '"', tries to read a DateTime
* argument. If not, returns null.
*/
- public Date optionalDateTime(ImapRequestLineReader request)
+ public Date optionalDateTime(ImapRequestLine request)
throws DecodingException {
char next = request.nextWordChar();
if (next == '"') {
@@ -81,82 +82,7 @@ public class AppendCommandParser extends
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.commons.logging.Log, org.apache.james.imap.api.process.ImapSession)
- */
- protected ImapMessage decode(final ImapCommand command,
- ImapRequestLineReader request, final String tag, ImapSession session) throws DecodingException {
- final String mailboxName = mailbox(request);
- Flags flags = optionalAppendFlags(request);
- if (flags == null) {
- flags = new Flags();
- }
- final Flags f = flags;
-
- Date datetime = optionalDateTime(request);
- if (datetime == null) {
- datetime = new Date();
- }
- final Date dt = datetime;
- request.nextWordChar();
-
- try {
- final File file = File.createTempFile("imap-append", ".m64");
- final FileOutputStream out = new FileOutputStream(file);
- final int size = consumeLiteralSize(request);
- session.setAttribute(BYTES_WRITTEN, 0);
-
- ImapDecoder nextDecoder = new ImapDecoder() {
-
- public ImapMessage decode(ImapRequestLineReader request, ImapSession session) {
- int bytes = (Integer)session.getAttribute(BYTES_WRITTEN);
- try {
- while(request.isConsumed() == false && bytes < size) {
- out.write((byte)request.consume());
- bytes++;
- }
-
- // as we push data without delimiters we need to put them in back
- if (bytes != size) {
- out.write('\r');
- bytes++;
- }
-
- if (bytes != size) {
- out.write('\n');
- bytes++;
- }
-
- if (bytes == size) {
- request.eol();
- session.setAttribute(ImapConstants.NEXT_DECODER, null);
- session.setAttribute(BYTES_WRITTEN, null);
- return new AppendRequest(command, mailboxName, f, dt, new DeleteOnCloseInputStream(new FileInputStream(file), file) , tag);
- } else {
- session.setAttribute(BYTES_WRITTEN, bytes);
- }
-
- } catch (DecodingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- };
- session.setAttribute(ImapConstants.NEXT_DECODER, nextDecoder);
-
-
- return null;
-
- } catch (IOException e1) {
- e1.printStackTrace();
- throw new DecodingException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING,e1.getMessage());
- }
-
- }
private class DeleteOnCloseInputStream extends FilterInputStream {
@@ -174,4 +100,80 @@ public class AppendCommandParser extends
}
}
+
+ @Override
+ protected void decode(final ImapCommand command, ImapRequestLine request, final String tag, final ImapSession session, final ImapMessageCallback callback) {
+ try {
+ final String mailboxName = mailbox(request);
+ Flags flags = optionalAppendFlags(request);
+ if (flags == null) {
+ flags = new Flags();
+ }
+ final Flags f = flags;
+
+ Date datetime = optionalDateTime(request);
+ if (datetime == null) {
+ datetime = new Date();
+ }
+ final Date dt = datetime;
+ request.nextWordChar();
+
+ try {
+ final File file = File.createTempFile("imap-append", ".m64");
+ final FileOutputStream out = new FileOutputStream(file);
+ final int size = consumeLiteralSize(request);
+ session.setAttribute(BYTES_WRITTEN, 0);
+ session.pushImapLineHandler( new ImapLineHandler() {
+
+ public void onLine(ImapSession session, byte[] data, ImapMessageCallback callback) {
+ int bytes = (Integer)session.getAttribute(BYTES_WRITTEN);
+ try {
+ int left = size - bytes;
+ if (left -2 > data.length) {
+ out.write(data);
+ bytes += data.length;
+
+ // as we push data without delimiters we need to put them in back
+ if (bytes != size) {
+ out.write("\r\n".getBytes());
+ bytes += 2;
+ }
+ } else {
+ out.write(data, 0, left);
+ bytes = size;
+ }
+
+
+
+
+ if (bytes == size) {
+ session.popImapLineHandler();
+ session.setAttribute(BYTES_WRITTEN, null);
+ ImapMessage message = new AppendRequest(command, mailboxName, f, dt, new DeleteOnCloseInputStream(new FileInputStream(file), file) , tag);
+ callback.onMessage(message);
+ } else {
+
+ session.setAttribute(BYTES_WRITTEN, bytes);
+ }
+
+ } catch (DecodingException e) {
+ session.popImapLineHandler();
+ callback.onException(e);
+ } catch (IOException e) {
+ session.popImapLineHandler();
+ callback.onException(new DecodingException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING,e.getMessage()));
+ }
+ }
+ });
+
+ } catch (IOException e1) {
+ callback.onException(new DecodingException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING,e1.getMessage()));
+ }
+
+ } catch (DecodingException e2) {
+ callback.onException(e2);
+
+ }
+
+ }
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AuthenticateCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AuthenticateCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AuthenticateCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/AuthenticateCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,12 +18,13 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.AuthenticateRequest;
@@ -38,18 +39,17 @@ public class AuthenticateCommandParser e
super(ImapCommand.nonAuthenticatedStateCommand(ImapConstants.AUTHENTICATE_COMMAND_NAME));
}
-
- /*
- * (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession)
- */
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- String authType = astring(request);
- endLine(request);
- final ImapMessage result = new AuthenticateRequest(command,
+ @Override
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ String authType = astring(request);
+ endLine(request);
+ final ImapMessage result = new AuthenticateRequest(command,
authType, tag);
- return result;
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CapabilityCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CapabilityCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CapabilityCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CapabilityCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,12 +18,13 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.CapabilityRequest;
@@ -37,16 +38,17 @@ public class CapabilityCommandParser ext
super(ImapCommand.anyStateCommand(ImapConstants.CAPABILITY_COMMAND_NAME));
}
-
- /*
- * (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession)
- */
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- endLine(request);
- final ImapMessage result = new CapabilityRequest(command, tag);
- return result;
+ @Override
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ endLine(request);
+ final ImapMessage result = new CapabilityRequest(command, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
}
+
+
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CheckCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CheckCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CheckCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CheckCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,12 +18,13 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.CheckRequest;
@@ -40,13 +41,16 @@ public class CheckCommandParser extends
/*
* (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.commons.logging.Log, org.apache.james.imap.api.process.ImapSession)
+ * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession, org.apache.james.imap.api.ImapMessageCallback)
*/
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- endLine(request);
- final ImapMessage result = new CheckRequest(command, tag);
- return result;
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ endLine(request);
+ final ImapMessage result = new CheckRequest(command, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CloseCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CloseCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CloseCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CloseCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,12 +18,13 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.CloseRequest;
@@ -38,15 +39,16 @@ class CloseCommandParser extends Abstrac
super(ImapCommand.selectedStateCommand(ImapConstants.CLOSE_COMMAND_NAME));
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession)
- */
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- endLine(request);
- final ImapMessage result = new CloseRequest(command, tag);
- return result;
+ @Override
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ endLine(request);
+ final ImapMessage result = new CloseRequest(command, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
+
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,13 +18,14 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.message.request.CopyRequest;
/**
@@ -39,17 +40,21 @@ public class CopyCommandParser extends A
/*
* (non-Javadoc)
- * @see org.apache.james.imap.decode.parser.AbstractUidCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, boolean, org.apache.james.imap.api.process.ImapSession)
+ * @see org.apache.james.imap.decode.parser.AbstractUidCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, boolean, org.apache.james.imap.api.process.ImapSession, org.apache.james.imap.api.ImapMessageCallback)
*/
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, boolean useUids, ImapSession session)
- throws DecodingException {
- IdRange[] idSet = parseIdRange(request);
- String mailboxName = mailbox(request);
- endLine(request);
- final ImapMessage result = new CopyRequest(
- command, idSet, mailboxName, useUids, tag);
- return result;
+ protected void decode(ImapCommand command,
+ ImapRequestLine request, String tag, boolean useUids, ImapSession session, ImapMessageCallback callback) {
+ try {
+ IdRange[] idSet = parseIdRange(request);
+ String mailboxName = mailbox(request);
+ endLine(request);
+ final ImapMessage result = new CopyRequest(
+ command, idSet, mailboxName, useUids, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
+
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,13 +18,14 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.DecodingException;
-import org.apache.james.imap.decode.ImapRequestLineReader;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.CreateRequest;
import org.apache.james.mailbox.MailboxSession;
@@ -39,31 +40,32 @@ public class CreateCommandParser extends
super(ImapCommand.authenticatedStateCommand(ImapConstants.CREATE_COMMAND_NAME));
}
-
- /*
- * (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession)
- */
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- String mailboxName = mailbox(request);
-
-
- MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
-
- // Check if we have an mailboxsession. This is a workaround for IMAP-240:
- // https://issues.apache.org/jira/browse/IMAP-240
- if (mailboxSession != null) {
- // RFC3501@6.3.3p2
- // When mailbox name is suffixed with hierarchy separator
- // name created must remove tailing delimiter
- if (mailboxName.endsWith(Character.toString(mailboxSession.getPathDelimiter()))) {
- mailboxName = mailboxName.substring(0, mailboxName.length() -1);
+ @Override
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ String mailboxName = mailbox(request);
+
+
+ MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
+
+ // Check if we have an mailboxsession. This is a workaround for IMAP-240:
+ // https://issues.apache.org/jira/browse/IMAP-240
+ if (mailboxSession != null) {
+ // RFC3501@6.3.3p2
+ // When mailbox name is suffixed with hierarchy separator
+ // name created must remove tailing delimiter
+ if (mailboxName.endsWith(Character.toString(mailboxSession.getPathDelimiter()))) {
+ mailboxName = mailboxName.substring(0, mailboxName.length() -1);
+ }
}
+ endLine(request);
+ final ImapMessage result = new CreateRequest(command, mailboxName, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
}
- endLine(request);
- final ImapMessage result = new CreateRequest(command, mailboxName, tag);
- return result;
+
}
+
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/DeleteCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/DeleteCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/DeleteCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/DeleteCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,12 +18,13 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.DeleteRequest;
@@ -40,15 +41,17 @@ public class DeleteCommandParser extends
/*
* (non-Javadoc)
- * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession)
+ * @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession, org.apache.james.imap.api.ImapMessageCallback)
*/
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- String mailboxName = mailbox(request);
- endLine(request);
- final ImapMessage result = new DeleteRequest(command,
- mailboxName, tag);
- return result;
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ String mailboxName = mailbox(request);
+ endLine(request);
+ final ImapMessage result = new DeleteRequest(command, mailboxName, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,12 +18,13 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.ExamineRequest;
@@ -41,12 +42,17 @@ public class ExamineCommandParser extend
* (non-Javadoc)
* @see org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, org.apache.james.imap.api.process.ImapSession)
*/
- protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException {
- final String mailboxName = mailbox(request);
- endLine(request);
- final ImapMessage result = new ExamineRequest(command, mailboxName, tag);
- return result;
+ protected void decode(ImapCommand command,
+ ImapRequestLine request, String tag, ImapSession session, ImapMessageCallback callback) {
+ try {
+ String mailboxName = mailbox(request);
+ endLine(request);
+ final ImapMessage result = new ExamineRequest(command, mailboxName, tag);
+ callback.onMessage(result);
+ } catch (DecodingException e) {
+ callback.onException(e);
+ }
+
}
}
Modified: james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExpungeCommandParser.java
URL: http://svn.apache.org/viewvc/james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExpungeCommandParser.java?rev=1059950&r1=1059949&r2=1059950&view=diff
==============================================================================
--- james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExpungeCommandParser.java (original)
+++ james/imap/branches/nio-refactoring/message/src/main/java/org/apache/james/imap/decode/parser/ExpungeCommandParser.java Mon Jan 17 15:27:34 2011
@@ -18,13 +18,14 @@
****************************************************************/
package org.apache.james.imap.decode.parser;
+import org.apache.james.imap.api.DecodingException;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapMessageCallback;
+import org.apache.james.imap.api.ImapRequestLine;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.message.request.ExpungeRequest;
/**
@@ -37,21 +38,23 @@ public class ExpungeCommandParser extend
super(ImapCommand.selectedStateCommand(ImapConstants.EXPUNGE_COMMAND_NAME));
}
-
-
/*
* (non-Javadoc)
- * @see org.apache.james.imap.decode.parser.AbstractUidCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, boolean, org.apache.james.imap.api.process.ImapSession)
+ * @see org.apache.james.imap.decode.parser.AbstractUidCommandParser#decode(org.apache.james.imap.api.ImapCommand, org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, boolean, org.apache.james.imap.api.process.ImapSession, org.apache.james.imap.api.ImapMessageCallback)
*/
- protected ImapMessage decode(ImapCommand command, ImapRequestLineReader request, String tag, boolean useUids, ImapSession session) throws DecodingException {
- IdRange[] uidSet = null;
- if (useUids) {
- uidSet = parseIdRange(request);
+ protected void decode(ImapCommand command, ImapRequestLine request, String tag, boolean useUids, ImapSession session, ImapMessageCallback callback) {
+ try {
+ IdRange[] uidSet = null;
+ if (useUids) {
+ uidSet = parseIdRange(request);
+ }
+ endLine(request);
+ final ImapMessage result = new ExpungeRequest(command, tag, uidSet);
+ callback.onMessage(result);
+ } catch (DecodingException ex) {
+ callback.onException(ex);
}
- endLine(request);
- final ImapMessage result = new ExpungeRequest(command, tag, uidSet);
- return result;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org