You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2009/04/01 11:06:11 UTC
svn commit: r760821 - in /james/imap/trunk:
decode/src/main/java/org/apache/james/imap/decode/parser/
message/src/main/java/org/apache/james/imap/encode/
message/src/main/java/org/apache/james/imap/encode/main/
message/src/test/java/org/apache/james/im...
Author: rdonkin
Date: Wed Apr 1 09:06:06 2009
New Revision: 760821
URL: http://svn.apache.org/viewvc?rev=760821&view=rev
Log:
Hook up codec and processor. Add integration tests. IMAP Namespaces IMAP-76 https://issues.apache.org/jira/browse/IMAP-76
Added:
james/imap/trunk/seda/src/test/resources/org/apache/james/imap/scripts/Namespace.test
Modified:
james/imap/trunk/decode/src/main/java/org/apache/james/imap/decode/parser/Imap4Rev1CommandParserFactory.java
james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java
james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/Imap4Rev1ProcessorFactory.java
james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/AuthenticatedState.java
james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/SelectedState.java
Modified: james/imap/trunk/decode/src/main/java/org/apache/james/imap/decode/parser/Imap4Rev1CommandParserFactory.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/decode/src/main/java/org/apache/james/imap/decode/parser/Imap4Rev1CommandParserFactory.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/decode/src/main/java/org/apache/james/imap/decode/parser/Imap4Rev1CommandParserFactory.java (original)
+++ james/imap/trunk/decode/src/main/java/org/apache/james/imap/decode/parser/Imap4Rev1CommandParserFactory.java Wed Apr 1 09:06:06 2009
@@ -94,8 +94,8 @@
_imapCommands.put(ImapConstants.APPEND_COMMAND_NAME,
AppendCommandParser.class);
- // // RFC2342 NAMESPACE
- // _imapCommands.put( "NAMESPACE", NamespaceCommand.class );
+ // RFC2342 NAMESPACE
+ _imapCommands.put( ImapConstants.NAMESPACE_COMMAND_NAME, NamespaceCommandParser.class );
// RFC2086 GETACL, SETACL, DELETEACL, LISTRIGHTS, MYRIGHTS
// _imapCommands.put( "GETACL", GetAclCommand.class );
Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/NamespaceResponseEncoder.java Wed Apr 1 09:06:06 2009
@@ -21,6 +21,7 @@
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;
@@ -42,6 +43,7 @@
throws IOException {
final NamespaceResponse response = (NamespaceResponse) acceptableMessage;
composer.untagged();
+ composer.commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
final List<NamespaceResponse.Namespace> personal = response
.getPersonal();
@@ -50,6 +52,8 @@
encode(users, composer);
final List<NamespaceResponse.Namespace> shared = response.getShared();
encode(shared, composer);
+
+ composer.end();
}
private void encode(List<Namespace> namespaces,
Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java Wed Apr 1 09:06:06 2009
@@ -28,6 +28,7 @@
import org.apache.james.imap.encode.ImapEncoderFactory;
import org.apache.james.imap.encode.LSubResponseEncoder;
import org.apache.james.imap.encode.ListResponseEncoder;
+import org.apache.james.imap.encode.NamespaceResponseEncoder;
import org.apache.james.imap.encode.RecentResponseEncoder;
import org.apache.james.imap.encode.MailboxStatusResponseEncoder;
import org.apache.james.imap.encode.SearchResponseEncoder;
@@ -41,8 +42,9 @@
public static final ImapEncoder createDefaultEncoder() {
final EndImapEncoder endImapEncoder = new EndImapEncoder();
+ final NamespaceResponseEncoder namespaceEncoder = new NamespaceResponseEncoder(endImapEncoder);
final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(
- endImapEncoder);
+ namespaceEncoder);
final RecentResponseEncoder recentResponseEncoder = new RecentResponseEncoder(
statusResponseEncoder);
final FetchResponseEncoder fetchResponseEncoder = new FetchResponseEncoder(
Modified: james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java (original)
+++ james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/NamespaceResponseEncoderTest.java Wed Apr 1 09:06:06 2009
@@ -21,6 +21,7 @@
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;
@@ -55,24 +56,17 @@
checking(new Expectations() {
{
final Sequence sequence = sequence("Composition order");
- oneOf(mockComposer).untagged();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).quote(aPrefix);
- inSequence(sequence);
- oneOf(mockComposer).quote(aDeliminator);
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
+ oneOf(mockComposer).untagged(); inSequence(sequence);
+ oneOf(mockComposer).commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).quote(aPrefix); inSequence(sequence);
+ oneOf(mockComposer).quote(aDeliminator); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).end(); inSequence(sequence);
}
});
List<NamespaceResponse.Namespace> namespaces = new ArrayList<NamespaceResponse.Namespace>();
@@ -89,24 +83,17 @@
checking(new Expectations() {
{
final Sequence sequence = sequence("Composition order");
- oneOf(mockComposer).untagged();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).quote(aPrefix);
- inSequence(sequence);
- oneOf(mockComposer).quote(aDeliminator);
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
+ oneOf(mockComposer).untagged(); inSequence(sequence);
+ oneOf(mockComposer).commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).quote(aPrefix); inSequence(sequence);
+ oneOf(mockComposer).quote(aDeliminator); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).end(); inSequence(sequence);
}
});
List<NamespaceResponse.Namespace> namespaces = new ArrayList<NamespaceResponse.Namespace>();
@@ -123,24 +110,17 @@
checking(new Expectations() {
{
final Sequence sequence = sequence("Composition order");
- oneOf(mockComposer).untagged();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).quote(aPrefix);
- inSequence(sequence);
- oneOf(mockComposer).quote(aDeliminator);
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
+ oneOf(mockComposer).untagged(); inSequence(sequence);
+ oneOf(mockComposer).commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).quote(aPrefix); inSequence(sequence);
+ oneOf(mockComposer).quote(aDeliminator); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).end(); inSequence(sequence);
}
});
List<NamespaceResponse.Namespace> namespaces = new ArrayList<NamespaceResponse.Namespace>();
@@ -159,32 +139,21 @@
checking(new Expectations() {
{
final Sequence sequence = sequence("Composition order");
- oneOf(mockComposer).untagged();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).quote(aPrefix);
- inSequence(sequence);
- oneOf(mockComposer).quote(aDeliminator);
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).openParen();
- inSequence(sequence);
- oneOf(mockComposer).quote(anotherPrefix);
- inSequence(sequence);
- oneOf(mockComposer).quote(anotherDeliminator);
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).closeParen();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
+ oneOf(mockComposer).untagged(); inSequence(sequence);
+ oneOf(mockComposer).commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).quote(aPrefix); inSequence(sequence);
+ oneOf(mockComposer).quote(aDeliminator); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).openParen(); inSequence(sequence);
+ oneOf(mockComposer).quote(anotherPrefix); inSequence(sequence);
+ oneOf(mockComposer).quote(anotherDeliminator); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).closeParen(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).end(); inSequence(sequence);
}
});
List<NamespaceResponse.Namespace> namespaces = new ArrayList<NamespaceResponse.Namespace>();
@@ -200,14 +169,12 @@
checking(new Expectations() {
{
final Sequence sequence = sequence("Composition order");
- oneOf(mockComposer).untagged();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
- oneOf(mockComposer).nil();
- inSequence(sequence);
+ oneOf(mockComposer).untagged(); inSequence(sequence);
+ oneOf(mockComposer).commandName(ImapConstants.NAMESPACE_COMMAND_NAME);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).nil(); inSequence(sequence);
+ oneOf(mockComposer).end(); inSequence(sequence);
}
});
subject.doEncode(new NamespaceResponse(null, null, null), mockComposer,
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/Imap4Rev1ProcessorFactory.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/Imap4Rev1ProcessorFactory.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/Imap4Rev1ProcessorFactory.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/Imap4Rev1ProcessorFactory.java Wed Apr 1 09:06:06 2009
@@ -92,7 +92,9 @@
listProcessor, mailboxManagerProvider, statusResponseFactory);
final SelectProcessor selectProcessor = new SelectProcessor(
searchProcessor, mailboxManagerProvider, statusResponseFactory);
- final ImapProcessor result = new FetchProcessor(selectProcessor,
+ final NamespaceProcessor namespaceProcessor = new NamespaceProcessor(
+ selectProcessor, mailboxManagerProvider, statusResponseFactory);
+ final ImapProcessor result = new FetchProcessor(namespaceProcessor,
mailboxManagerProvider, statusResponseFactory);
return result;
}
Modified: james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/AuthenticatedState.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/AuthenticatedState.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/AuthenticatedState.java (original)
+++ james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/AuthenticatedState.java Wed Apr 1 09:06:06 2009
@@ -247,4 +247,15 @@
scriptTest("ValidNonAuthenticated", Locale.KOREA);
}
+ public void testNamespaceUS() throws Exception {
+ scriptTest("Namespace", Locale.US);
+ }
+
+ public void testNamespaceITALY() throws Exception {
+ scriptTest("Namespace", Locale.ITALY);
+ }
+
+ public void testNamespaceKOREA() throws Exception {
+ scriptTest("Namespace", Locale.KOREA);
+ }
}
Modified: james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/SelectedState.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/SelectedState.java?rev=760821&r1=760820&r2=760821&view=diff
==============================================================================
--- james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/SelectedState.java (original)
+++ james/imap/trunk/seda/src/test/java/org/apache/james/imap/functional/suite/SelectedState.java Wed Apr 1 09:06:06 2009
@@ -137,4 +137,16 @@
public void testUidKOREA() throws Exception {
scriptTest("Uid", Locale.KOREA);
}
+
+ public void testNamespaceUS() throws Exception {
+ scriptTest("Namespace", Locale.US);
+ }
+
+ public void testNamespaceITALY() throws Exception {
+ scriptTest("Namespace", Locale.ITALY);
+ }
+
+ public void testNamespaceKOREA() throws Exception {
+ scriptTest("Namespace", Locale.KOREA);
+ }
}
Added: james/imap/trunk/seda/src/test/resources/org/apache/james/imap/scripts/Namespace.test
URL: http://svn.apache.org/viewvc/james/imap/trunk/seda/src/test/resources/org/apache/james/imap/scripts/Namespace.test?rev=760821&view=auto
==============================================================================
--- james/imap/trunk/seda/src/test/resources/org/apache/james/imap/scripts/Namespace.test (added)
+++ james/imap/trunk/seda/src/test/resources/org/apache/james/imap/scripts/Namespace.test Wed Apr 1 09:06:06 2009
@@ -0,0 +1,22 @@
+################################################################
+# 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. #
+################################################################
+C: A001 NAMESPACE
+S: \* NAMESPACE \(\(\"\" \".\"\)\) NIL NIL
+S: A001 OK NAMESPACE completed.
+
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org