Index: api/src/main/java/org/apache/james/imap/api/ImapConstants.java
===================================================================
--- api/src/main/java/org/apache/james/imap/api/ImapConstants.java (revision 1056658)
+++ api/src/main/java/org/apache/james/imap/api/ImapConstants.java (working copy)
@@ -109,12 +109,8 @@
public static final String SUPPORTS_IDLE = "IDLE";
- public static final char HIERARCHY_DELIMITER_CHAR = '.';
-
public static final char NAMESPACE_PREFIX_CHAR = '#';
- public static final String HIERARCHY_DELIMITER = String.valueOf(HIERARCHY_DELIMITER_CHAR);
-
public static final String NAMESPACE_PREFIX = String.valueOf(NAMESPACE_PREFIX_CHAR);
public static final String INBOX_NAME = "INBOX";
Index: api/src/main/java/org/apache/james/imap/api/ImapSessionUtils.java
===================================================================
--- api/src/main/java/org/apache/james/imap/api/ImapSessionUtils.java (revision 1056658)
+++ api/src/main/java/org/apache/james/imap/api/ImapSessionUtils.java (working copy)
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.imap.processor.base;
+package org.apache.james.imap.api;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.mailbox.MailboxSession;
Index: message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
===================================================================
--- message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java (working copy)
@@ -46,6 +46,7 @@
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.ImapCommandParser;
import org.apache.james.imap.decode.ImapRequestLineReader;
@@ -110,11 +111,11 @@
* ImapRequestLineReader, not null
* @return ImapCommandMessage, not null
*/
- public final ImapMessage parse(ImapRequestLineReader request, String tag, Log logger) {
+ public final ImapMessage parse(ImapRequestLineReader request, String tag, Log logger, ImapSession session) {
ImapMessage result;
try {
- ImapMessage message = decode(command, request, tag, logger);
+ ImapMessage message = decode(command, request, tag, logger, session);
result = message;
} catch (DecodingException e) {
@@ -133,13 +134,31 @@
* ImapRequestLineReader, not null
* @param tag command tag, not null
* @param logger TODO
- * @param logger TODO
* @return ImapCommandMessage, not null
* @throws DecodingException
* if the request cannot be parsed
*/
protected abstract ImapMessage decode(ImapCommand command,
ImapRequestLineReader request, String tag, Log logger) throws DecodingException;
+
+ /**
+ * Parses a request into a command message for later processing.
+ * @param command
+ * ImapCommand to be parsed, not null
+ * @param request
+ * ImapRequestLineReader, not null
+ * @param tag command tag, not null
+ * @param logger TODO
+ * @param session imap session
+ * @return ImapCommandMessage, not null
+ * @throws DecodingException
+ * if the request cannot be parsed
+ */
+ protected ImapMessage decode(ImapCommand command,
+ ImapRequestLineReader request, String tag, Log logger, ImapSession session) throws DecodingException {
+ return decode(command, request, tag, logger);
+ }
+
/**
* Reads an argument of type "atom" from the request.
Index: message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java
===================================================================
--- message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/decode/ImapCommandParser.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.commons.logging.Log;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.process.ImapSession;
/**
*
@@ -40,5 +41,5 @@
* @param logger context sensitive log, not null
* @return ImapCommandMessage
*/
- ImapMessage parse(ImapRequestLineReader request, String tag, Log logger);
+ ImapMessage parse(ImapRequestLineReader request, String tag, Log logger, ImapSession session);
}
Index: message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java
===================================================================
--- message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/decode/main/DefaultImapDecoder.java (working copy)
@@ -116,7 +116,7 @@
logger.info("Missing command implementation.");
message = unknownCommand(tag, session);
} else {
- message = command.parse(request, tag, logger);
+ message = command.parse(request, tag, logger, session);
}
return message;
}
Index: message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java
===================================================================
--- message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java (working copy)
@@ -19,14 +19,16 @@
package org.apache.james.imap.decode.parser;
import org.apache.commons.logging.Log;
-import org.apache.james.imap.api.ImapMessageFactory;
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.ImapMessageFactory;
+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.DecodingException;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
-import org.apache.james.mailbox.MailboxConstants;
+import org.apache.james.mailbox.MailboxSession;
/**
* Parse CREATE commands
@@ -43,13 +45,16 @@
* @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)
*/
protected ImapMessage decode(ImapCommand command,
- ImapRequestLineReader request, String tag, Log logger) throws DecodingException {
+ ImapRequestLineReader request, String tag, Log logger, ImapSession session) throws DecodingException {
String mailboxName = mailbox(request);
+
+ MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
+
// RFC3501@6.3.3p2
// When mailbox name is suffixed with hierarchy separator
// name created must remove tailing delimiter
- if (mailboxName.endsWith(MailboxConstants.DEFAULT_DELIMITER_STRING)) {
+ if (mailboxName.endsWith(Character.toString(mailboxSession.getPathDelimiter()))) {
mailboxName = mailboxName.substring(0, mailboxName.length() -1);
}
endLine(request);
@@ -59,4 +64,11 @@
return result;
}
+ @Override
+ protected ImapMessage decode(ImapCommand command,
+ ImapRequestLineReader request, String tag, Log logger)
+ throws DecodingException {
+ return null; // we should never be here
+ }
+
}
Index: message/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java
===================================================================
--- message/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java (working copy)
@@ -352,7 +352,7 @@
* @see org.apache.james.imap.encode.ImapResponseComposer#listResponse(java.lang.String, java.util.List, java.lang.String, java.lang.String)
*/
public void listResponse(String typeName, List attributes,
- String hierarchyDelimiter, String name) throws IOException {
+ char hierarchyDelimiter, String name) throws IOException {
untagged();
message(typeName);
openParen();
@@ -364,12 +364,11 @@
}
closeParen();
- if (hierarchyDelimiter == null) {
+ if (hierarchyDelimiter == Character.UNASSIGNED) {
message(NIL);
} else {
- quote(hierarchyDelimiter);
+ quote(Character.toString(hierarchyDelimiter));
}
-
quote(name);
end();
Index: message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java
===================================================================
--- message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java (working copy)
@@ -161,7 +161,7 @@
* mailbox name
*/
public abstract void listResponse(String typeName, List attributes,
- String hierarchyDelimiter, String name) throws IOException;
+ char hierarchyDelimiter, String name) throws IOException;
/**
* Writes the message provided to the client, prepended with the request
Index: message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java
===================================================================
--- message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java (working copy)
@@ -38,7 +38,7 @@
final String name = response.getName();
- composer.listResponse(responseTypeName, attributes, ImapConstants.HIERARCHY_DELIMITER, name);
+ composer.listResponse(responseTypeName, attributes, response.getHierarchyDelimiter(), name);
}
private static List getNameAttributes(final AbstractListingResponse response) {
Index: message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java
===================================================================
--- message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java (working copy)
@@ -19,7 +19,6 @@
package org.apache.james.imap.message.response;
-import org.apache.james.imap.api.ImapConstants;
/**
* LIST and LSUB return identical data.
@@ -38,14 +37,15 @@
private final boolean unmarked;
- private final String hierarchyDelimiter = ImapConstants.HIERARCHY_DELIMITER;
+ private final char hierarchyDelimiter;
private final String name;
public AbstractListingResponse(final boolean noInferiors,
final boolean noSelect, final boolean marked,
final boolean unmarked, boolean hasChildren,
- boolean hasNoChildren, final String name) {
+ boolean hasNoChildren, final String name,
+ final char hierarchyDelimiter) {
super();
this.noInferiors = noInferiors;
this.noSelect = noSelect;
@@ -54,6 +54,7 @@
this.children = hasChildren;
this.noChildren = hasNoChildren;
this.name = name;
+ this.hierarchyDelimiter = hierarchyDelimiter;
}
/**
@@ -61,7 +62,7 @@
*
* @return hierarchy delimiter, or null if no hierarchy exists
*/
- public final String getHierarchyDelimiter() {
+ public final char getHierarchyDelimiter() {
return hierarchyDelimiter;
}
@@ -142,7 +143,7 @@
final int PRIME = 31;
int result = 1;
result = PRIME * result + (children ? 1231 : 1237);
- result = PRIME * result + ((hierarchyDelimiter == null) ? 0 : hierarchyDelimiter.hashCode());
+ result = PRIME * result + hierarchyDelimiter;
result = PRIME * result + (marked ? 1231 : 1237);
result = PRIME * result + ((name == null) ? 0 : name.hashCode());
result = PRIME * result + (noChildren ? 1231 : 1237);
@@ -163,10 +164,7 @@
final AbstractListingResponse other = (AbstractListingResponse) obj;
if (children != other.children)
return false;
- if (hierarchyDelimiter == null) {
- if (other.hierarchyDelimiter != null)
- return false;
- } else if (!hierarchyDelimiter.equals(other.hierarchyDelimiter))
+ if (hierarchyDelimiter != other.hierarchyDelimiter)
return false;
if (marked != other.marked)
return false;
Index: message/src/main/java/org/apache/james/imap/message/response/ListResponse.java
===================================================================
--- message/src/main/java/org/apache/james/imap/message/response/ListResponse.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/message/response/ListResponse.java (working copy)
@@ -28,7 +28,7 @@
public ListResponse(final boolean noInferiors, final boolean noSelect,
final boolean marked, final boolean unmarked,
- boolean hasChildren, boolean hasNoChildren, final String name) {
- super(noInferiors, noSelect, marked, unmarked, hasChildren, hasNoChildren, name);
+ boolean hasChildren, boolean hasNoChildren, final String name, final char delimiter) {
+ super(noInferiors, noSelect, marked, unmarked, hasChildren, hasNoChildren, name, delimiter);
}
}
Index: message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java
===================================================================
--- message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java (revision 1056658)
+++ message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java (working copy)
@@ -25,7 +25,7 @@
*/
public final class LSubResponse extends AbstractListingResponse implements
ImapResponseMessage {
- public LSubResponse(final String name, final boolean noSelect) {
- super(false, noSelect, false, false, false, false, name);
+ public LSubResponse(final String name, final boolean noSelect, final char delimiter) {
+ super(false, noSelect, false, false, false, false, name, delimiter);
}
}
Index: message/src/test/java/org/apache/james/imap/encode/AbstractTestImapResponseComposer.java
===================================================================
--- message/src/test/java/org/apache/james/imap/encode/AbstractTestImapResponseComposer.java (revision 1056658)
+++ message/src/test/java/org/apache/james/imap/encode/AbstractTestImapResponseComposer.java (working copy)
@@ -49,55 +49,55 @@
@Test
public void testQuotedDelimiter() throws Exception {
checkListResponseEncode("* LSUB () \"\\\"\" \"#news\"\r\n", "LSUB",
- null, "\"", "#news");
+ null, '\"', "#news");
checkListResponseEncode("* LIST () \"\\\"\" \"#INBOX\"\r\n", "LIST",
- null, "\"", "#INBOX");
+ null, '\"', "#INBOX");
checkListResponseEncode("* LSUB () \"\\\\\" \"#news\"\r\n", "LSUB",
- null, "\\", "#news");
+ null, '\\', "#news");
checkListResponseEncode("* LIST () \"\\\\\" \"#INBOX\"\r\n", "LIST",
- null, "\\", "#INBOX");
+ null, '\\', "#INBOX");
}
@Test
public void testNilDelimiter() throws Exception {
checkListResponseEncode("* LSUB () NIL \"#news\"\r\n", "LSUB", null,
- null, "#news");
+ (char)Character.UNASSIGNED, "#news");
checkListResponseEncode("* LIST () NIL \"#INBOX\"\r\n", "LIST", null,
- null, "#INBOX");
+ (char)Character.UNASSIGNED, "#INBOX");
}
@Test
public void testSimple() throws Exception {
checkListResponseEncode("* LSUB () \".\" \"#news\"\r\n", "LSUB", null,
- ".", "#news");
+ '.', "#news");
checkListResponseEncode("* LIST () \".\" \"#INBOX\"\r\n", "LIST", null,
- ".", "#INBOX");
+ '.', "#INBOX");
checkListResponseEncode("* LSUB () \".\" \"#news.sub\"\r\n", "LSUB",
- null, ".", "#news.sub");
+ null, '.', "#news.sub");
checkListResponseEncode("* LIST () \".\" \"#INBOX.sub\"\r\n", "LIST",
- null, ".", "#INBOX.sub");
+ null, '.', "#INBOX.sub");
}
@Test
public void testSpecialNames() throws Exception {
checkListResponseEncode(
"* LSUB () \"\\\\\" \"#news\\\\sub\\\\directory\"\r\n", "LSUB",
- null, "\\", "#news\\sub\\directory");
+ null, '\\', "#news\\sub\\directory");
checkListResponseEncode(
"* LIST () \"\\\\\" \"#INBOX\\\\sub\\\\directory\"\r\n",
- "LIST", null, "\\", "#INBOX\\sub\\directory");
+ "LIST", null, '\\', "#INBOX\\sub\\directory");
checkListResponseEncode(
"* LSUB () \".\" \"#news.sub directory.what\"\r\n", "LSUB",
- null, ".", "#news.sub directory.what");
+ null, '.', "#news.sub directory.what");
checkListResponseEncode(
"* LIST () \".\" \"#INBOX.sub directory.what\"\r\n", "LIST",
- null, ".", "#INBOX.sub directory.what");
+ null, '.', "#INBOX.sub directory.what");
checkListResponseEncode(
"* LSUB () \".\" \"#news.\\\"sub directory\\\".what\"\r\n",
- "LSUB", null, ".", "#news.\"sub directory\".what");
+ "LSUB", null, '.', "#news.\"sub directory\".what");
checkListResponseEncode(
"* LIST () \".\" \"#INBOX.\\\"sub directory\\\".what\"\r\n",
- "LIST", null, ".", "#INBOX.\"sub directory\".what");
+ "LIST", null, '.', "#INBOX.\"sub directory\".what");
}
@Test
@@ -109,10 +109,10 @@
attributes.add("\\four");
checkListResponseEncode(
"* LSUB (\\one \\two \\three \\four) \".\" \"#news\"\r\n",
- "LSUB", attributes, ".", "#news");
+ "LSUB", attributes, '.', "#news");
checkListResponseEncode(
"* LIST (\\one \\two \\three \\four) \".\" \"#INBOX\"\r\n",
- "LIST", attributes, ".", "#INBOX");
+ "LIST", attributes, '.', "#INBOX");
}
@Test
@@ -206,7 +206,7 @@
protected abstract byte[] encodeSearchResponse(long[] ids) throws Exception;
private void checkListResponseEncode(String expected, String typeName,
- List attributes, String hierarchyDelimiter, String name)
+ List attributes, char hierarchyDelimiter, String name)
throws Exception {
StringBuffer buffer = new StringBuffer();
byte[] output = encodeListResponse(typeName, attributes,
@@ -219,7 +219,7 @@
}
protected abstract byte[] encodeListResponse(String typeName,
- List attributes, String hierarchyDelimiter, String name)
+ List attributes, char hierarchyDelimiter, String name)
throws Exception;
private void checkStatusResponseEncode(String expected, Long messages,
Index: message/src/test/java/org/apache/james/imap/encode/base/ImapResponseComposerImplTest.java
===================================================================
--- message/src/test/java/org/apache/james/imap/encode/base/ImapResponseComposerImplTest.java (revision 1056658)
+++ message/src/test/java/org/apache/james/imap/encode/base/ImapResponseComposerImplTest.java (working copy)
@@ -43,7 +43,7 @@
protected byte[] encodeListResponse(String typeName, List attributes,
- String hierarchyDelimiter, String name) throws Exception {
+ char hierarchyDelimiter, String name) throws Exception {
composer.listResponse(typeName, attributes, hierarchyDelimiter, name);
return writer.getBytes();
}
Index: message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
===================================================================
--- message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java (revision 1056658)
+++ message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java (working copy)
@@ -49,7 +49,7 @@
context.checking (new Expectations() {{
oneOf(mock).listResponse(with(equal(typeNameParameters)), with(equal(attributesOutput)),
- with(equal(".")), with(equal(nameParameter)));
+ with(equal('.')), with(equal(nameParameter)));
}});
}
@@ -57,7 +57,7 @@
public void testShouldAddHasChildrenToAttributes() throws Exception {
// Setup
attributesOutput.add("\\HasChildren");
- ListResponse input = new ListResponse(false, false, false, false, true, false, nameParameter);
+ ListResponse input = new ListResponse(false, false, false, false, true, false, nameParameter, '.');
// Exercise
ListingEncodingUtils.encodeListingResponse(typeNameParameters, mock, input);
@@ -67,7 +67,7 @@
public void testShouldAddHasNoChildrenToAttributes() throws Exception {
// Setup
attributesOutput.add("\\HasNoChildren");
- ListResponse input = new ListResponse(false, false, false, false, false, true, nameParameter);
+ ListResponse input = new ListResponse(false, false, false, false, false, true, nameParameter, '.');
// Exercise
ListingEncodingUtils.encodeListingResponse(typeNameParameters, mock, input);
Index: message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
===================================================================
--- message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java (revision 1056658)
+++ message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java (working copy)
@@ -19,16 +19,14 @@
package org.apache.james.imap.encode;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapMessage;
-import org.apache.james.imap.encode.ImapEncoder;
-import org.apache.james.imap.encode.ImapResponseComposer;
-import org.apache.james.imap.encode.LSubResponseEncoder;
import org.apache.james.imap.message.response.LSubResponse;
import org.apache.james.imap.message.response.ListResponse;
import org.jmock.Expectations;
@@ -60,8 +58,8 @@
@Test
public void testIsAcceptable() {
assertFalse(encoder.isAcceptable(new ListResponse(true, true, true,
- true, false, false, "name")));
- assertTrue(encoder.isAcceptable(new LSubResponse("name", true)));
+ true, false, false, "name", '.')));
+ assertTrue(encoder.isAcceptable(new LSubResponse("name", true, '.')));
assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
assertFalse(encoder.isAcceptable(null));
}
@@ -70,26 +68,26 @@
@SuppressWarnings("unchecked")
public void testName() throws Exception {
context.checking(new Expectations() {{
- oneOf(composer).listResponse(with(equal("LSUB")),with(aNull(List.class)), with(equal(".")), with(equal("INBOX.name")));
+ oneOf(composer).listResponse(with(equal("LSUB")),with(aNull(List.class)), with(equal('.')), with(equal("INBOX.name")));
}});
- encoder.encode(new LSubResponse("INBOX.name", false), composer, new FakeImapSession());
+ encoder.encode(new LSubResponse("INBOX.name", false, '.'), composer, new FakeImapSession());
}
@Test
@SuppressWarnings("unchecked")
public void testDelimiter() throws Exception {
context.checking(new Expectations() {{
- oneOf(composer).listResponse(with(equal("LSUB")),with(aNull(List.class)), with(equal(".")), with(equal("INBOX.name")));
+ oneOf(composer).listResponse(with(equal("LSUB")),with(aNull(List.class)), with(equal('.')), with(equal("INBOX.name")));
}});
- encoder.encode(new LSubResponse("INBOX.name", false), composer, new FakeImapSession());
+ encoder.encode(new LSubResponse("INBOX.name", false, '.'), composer, new FakeImapSession());
}
@Test
public void testNoSelect() throws Exception {
final String[] values = { ImapConstants.NAME_ATTRIBUTE_NOSELECT };
context.checking(new Expectations() {{
- oneOf(composer).listResponse(with(equal("LSUB")),with(equal(Arrays.asList(values))), with(equal(".")), with(equal("INBOX.name")));
+ oneOf(composer).listResponse(with(equal("LSUB")),with(equal(Arrays.asList(values))), with(equal('.')), with(equal("INBOX.name")));
}});
- encoder.encode(new LSubResponse("INBOX.name", true), composer, new FakeImapSession());
+ encoder.encode(new LSubResponse("INBOX.name", true, '.'), composer, new FakeImapSession());
}
}
Index: message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java
===================================================================
--- message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java (revision 1056658)
+++ message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java (working copy)
@@ -60,8 +60,8 @@
@Test
public void testIsAcceptable() {
assertTrue(encoder.isAcceptable(new ListResponse(true, true, true,
- true, false, false, "name")));
- assertFalse(encoder.isAcceptable(new LSubResponse("name", true)));
+ true, false, false, "name", '.')));
+ assertFalse(encoder.isAcceptable(new LSubResponse("name", true, '.')));
assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
assertFalse(encoder.isAcceptable(null));
}
@@ -73,10 +73,10 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(aNull(List.class)),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
@Test
@@ -86,10 +86,10 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(aNull(List.class)),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
@@ -103,10 +103,10 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(equal(Arrays.asList(all))),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(true, true, true, true, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(true, true, true, true, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
@Test
@@ -116,10 +116,10 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(equal(Arrays.asList(values))),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(true, false, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(true, false, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
@Test
@@ -129,10 +129,10 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(equal(Arrays.asList(values))),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(false, true, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(false, true, false, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
@Test
@@ -142,10 +142,10 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(equal(Arrays.asList(values))),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(false, false, true, false, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(false, false, true, false, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
@Test
@@ -155,9 +155,9 @@
oneOf(composer).listResponse(
with(equal("LIST")),
with(equal(Arrays.asList(values))),
- with(equal(".")),
+ with(equal('.')),
with(equal("INBOX.name")));
}});
- encoder.encode(new ListResponse(false, false, false, true, false, false, "INBOX.name"), composer, new FakeImapSession());
+ encoder.encode(new ListResponse(false, false, false, true, false, false, "INBOX.name", '.'), composer, new FakeImapSession());
}
}
Index: processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java (working copy)
@@ -26,6 +26,7 @@
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.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.request.ImapRequest;
@@ -40,7 +41,6 @@
import org.apache.james.imap.message.response.FetchResponse;
import org.apache.james.imap.message.response.RecentResponse;
import org.apache.james.imap.processor.base.AbstractChainedProcessor;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.MessageRangeException;
import org.apache.james.mailbox.MailboxConstants;
import org.apache.james.mailbox.MailboxException;
@@ -283,12 +283,13 @@
public MailboxPath buildFullPath(final ImapSession session, String mailboxName) {
String namespace = null;
String name = null;
+ final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
if (mailboxName == null || mailboxName.length() == 0) {
return new MailboxPath("", "", "");
}
if (mailboxName.charAt(0) == ImapConstants.NAMESPACE_PREFIX_CHAR) {
- int namespaceLength = mailboxName.indexOf(MailboxConstants.DEFAULT_DELIMITER);
+ int namespaceLength = mailboxName.indexOf(mailboxSession.getPathDelimiter());
if (namespaceLength > -1) {
namespace = mailboxName.substring(0, namespaceLength);
if (mailboxName.length() > namespaceLength)
@@ -317,29 +318,29 @@
* @param mailboxPath
* @return
*/
- private String joinMailboxPath(MailboxPath mailboxPath) {
+ private String joinMailboxPath(MailboxPath mailboxPath, char delimiter) {
StringBuffer sb = new StringBuffer("");
if (mailboxPath.getNamespace() != null && !mailboxPath.getNamespace().equals("")) {
sb.append(mailboxPath.getNamespace());
}
if (mailboxPath.getUser() != null && !mailboxPath.getUser().equals("")) {
if (sb.length() > 0)
- sb.append(MailboxConstants.DEFAULT_DELIMITER);
+ sb.append(delimiter);
sb.append(mailboxPath.getUser());
}
if (mailboxPath.getName() != null && !mailboxPath.getName().equals("")) {
if (sb.length() > 0)
- sb.append(MailboxConstants.DEFAULT_DELIMITER);
+ sb.append(delimiter);
sb.append(mailboxPath.getName());
}
return sb.toString();
}
- public String mailboxName(final boolean relative, final MailboxPath path) {
+ public String mailboxName(final boolean relative, final MailboxPath path, final char delimiter) {
if (relative) {
return path.getName();
} else {
- return joinMailboxPath(path);
+ return joinMailboxPath(path, delimiter);
}
}
Index: processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java (working copy)
@@ -25,6 +25,7 @@
import javax.mail.Flags;
import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponse;
@@ -37,7 +38,6 @@
import org.apache.james.imap.message.response.ExistsResponse;
import org.apache.james.imap.message.response.FlagsResponse;
import org.apache.james.imap.message.response.RecentResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.SelectedMailboxImpl;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/AbstractSubscriptionProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/AbstractSubscriptionProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/AbstractSubscriptionProcessor.java (working copy)
@@ -19,11 +19,11 @@
package org.apache.james.imap.processor;
import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.SubscriptionManager;
Index: processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java (working copy)
@@ -28,6 +28,7 @@
import org.apache.commons.logging.Log;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponse;
@@ -36,7 +37,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.AppendRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxNotFoundException;
Index: processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/base/ImapSessionUtils.java (working copy)
@@ -1,47 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.imap.processor.base;
-
-import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.mailbox.MailboxSession;
-
-public class ImapSessionUtils {
-
- public static final String MAILBOX_USER_ATTRIBUTE_SESSION_KEY = "org.apache.james.api.imap.MAILBOX_USER_ATTRIBUTE_SESSION_KEY";
-
- public static final String MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY = "org.apache.james.api.imap.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY";
-
- public static MailboxSession getMailboxSession(final ImapSession session) {
- final MailboxSession result = (MailboxSession) session
- .getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY);
- return result;
- }
-
- public static String getUserName(final ImapSession imapSession) {
- final String result;
- final MailboxSession mailboxSession = getMailboxSession(imapSession);
- if (imapSession == null) {
- result = null;
- } else {
- result = mailboxSession.getUser().getUserName();
- }
- return result;
- }
-}
Index: processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java (working copy)
@@ -21,13 +21,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.CloseRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
Index: processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.request.ImapRequest;
@@ -30,7 +31,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.CopyRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.MessageRangeException;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java (working copy)
@@ -21,13 +21,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.CreateRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxExistsException;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
@@ -28,7 +29,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.DeleteRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxNotFoundException;
Index: processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java (working copy)
@@ -23,6 +23,7 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
@@ -30,7 +31,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.ExpungeRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
Index: processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java (working copy)
@@ -25,10 +25,9 @@
import java.util.Iterator;
import java.util.List;
-import javax.mail.MessagingException;
-
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.BodyFetchElement;
import org.apache.james.imap.api.message.FetchData;
@@ -41,18 +40,17 @@
import org.apache.james.imap.message.request.FetchRequest;
import org.apache.james.imap.message.response.FetchResponse;
import org.apache.james.imap.processor.AbstractMailboxProcessor;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.MessageRangeException;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageRange;
-import org.apache.james.mailbox.MessageRange.Type;
import org.apache.james.mailbox.MessageResult;
+import org.apache.james.mailbox.UnsupportedCriteriaException;
+import org.apache.james.mailbox.MessageRange.Type;
import org.apache.james.mailbox.MessageResult.FetchGroup;
import org.apache.james.mailbox.MessageResult.MimePath;
-import org.apache.james.mailbox.UnsupportedCriteriaException;
import org.apache.james.mailbox.util.FetchGroupImpl;
import org.apache.james.mime4j.field.address.parser.ParseException;
Index: processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java (working copy)
@@ -30,12 +30,12 @@
import javax.mail.Flags;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.message.BodyFetchElement;
import org.apache.james.imap.api.message.FetchData;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.response.FetchResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.MessageRangeException;
import org.apache.james.mailbox.Content;
import org.apache.james.mailbox.MailboxException;
Index: processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java (working copy)
@@ -29,6 +29,7 @@
import org.apache.james.imap.api.ContinuationReader;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponse;
@@ -37,7 +38,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.IdleRequest;
import org.apache.james.imap.message.response.ContinuationResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java (working copy)
@@ -25,6 +25,7 @@
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.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.ImapResponseMessage;
@@ -33,13 +34,13 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.ListRequest;
import org.apache.james.imap.message.response.ListResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxConstants;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxMetaData;
import org.apache.james.mailbox.MailboxPath;
import org.apache.james.mailbox.MailboxQuery;
+import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MailboxMetaData.Children;
import org.apache.james.mailbox.util.SimpleMailboxMetaData;
@@ -66,9 +67,9 @@
protected ImapResponseMessage createResponse(boolean noInferior,
boolean noSelect, boolean marked, boolean unmarked,
- boolean hasChildren, boolean hasNoChildren, String mailboxName) {
+ boolean hasChildren, boolean hasNoChildren, String mailboxName, char delimiter) {
return new ListResponse(noInferior, noSelect, marked, unmarked,
- hasChildren, hasNoChildren, mailboxName);
+ hasChildren, hasNoChildren, mailboxName, delimiter);
}
/**
@@ -101,6 +102,7 @@
final List results;
final String user = ImapSessionUtils.getUserName(session);
+ final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
if (mailboxName.length() == 0) {
// An empty mailboxName signifies a request for the hierarchy
@@ -110,7 +112,7 @@
if (referenceName.startsWith(ImapConstants.NAMESPACE_PREFIX)) {
// A qualified reference name - get the root element
isRelative = false;
- int firstDelimiter = referenceName.indexOf(ImapConstants.HIERARCHY_DELIMITER_CHAR);
+ int firstDelimiter = referenceName.indexOf(mailboxSession.getPathDelimiter());
if (firstDelimiter == -1) {
referenceRoot = referenceName;
}
@@ -126,7 +128,7 @@
// Get the mailbox for the reference name.
MailboxPath rootPath = new MailboxPath(referenceRoot, "", "");
results = new ArrayList(1);
- results.add(SimpleMailboxMetaData.createNoSelect(rootPath, ImapConstants.HIERARCHY_DELIMITER));
+ results.add(SimpleMailboxMetaData.createNoSelect(rootPath, mailboxSession.getPathDelimiter()));
}
else {
// If the mailboxPattern is fully qualified, ignore the reference name.
@@ -145,8 +147,8 @@
basePath = buildFullPath(session, finalReferencename);
}
- results = getMailboxManager().search(new MailboxQuery(basePath, mailboxName, '*', '%'),
- ImapSessionUtils.getMailboxSession(session));
+ results = getMailboxManager().search(new MailboxQuery(basePath, mailboxName, '*', '%', mailboxSession.getPathDelimiter()),
+ mailboxSession);
}
for (final MailboxMetaData metaData: results) {
@@ -160,8 +162,8 @@
}
void processResult(final Responder responder, final boolean relative, final MailboxMetaData listResult) {
- final String delimiter = listResult.getHierarchyDelimiter();
- final String mailboxName = mailboxName(relative, listResult.getPath());
+ final char delimiter = listResult.getHierarchyDelimiter();
+ final String mailboxName = mailboxName(relative, listResult.getPath(), delimiter);
final Children inferiors = listResult.inferiors();
final boolean noInferior = MailboxMetaData.Children.NO_INFERIORS.equals(inferiors);
@@ -182,7 +184,7 @@
break;
}
responder.respond(createResponse(noInferior, noSelect, marked,
- unmarked, hasChildren, hasNoChildren, mailboxName));
+ unmarked, hasChildren, hasNoChildren, mailboxName, delimiter));
}
}
Index: processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java (working copy)
@@ -21,13 +21,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.LoginRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.BadCredentialsException;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxExistsException;
Index: processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java (working copy)
@@ -21,13 +21,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.LogoutRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
Index: processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java (working copy)
@@ -25,6 +25,7 @@
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.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
@@ -32,7 +33,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.LsubRequest;
import org.apache.james.imap.message.response.LSubResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxConstants;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
@@ -76,29 +76,29 @@
}
- final MailboxQuery expression = new MailboxQuery(basePath, mailboxName, '*', '%');
+ final MailboxQuery expression = new MailboxQuery(basePath, mailboxName, '*', '%', mailboxSession.getPathDelimiter());
final Collection mailboxResponses = new ArrayList();
for (final String mailbox: mailboxes) {
- respond(responder, expression, mailbox, true, mailboxes, mailboxResponses);
+ respond(responder, expression, mailbox, true, mailboxes, mailboxResponses, mailboxSession.getPathDelimiter());
}
}
private void respond(Responder responder, final MailboxQuery expression,
final String mailboxName, final boolean originalSubscription,
- final Collection mailboxes, final Collection mailboxResponses) {
+ final Collection mailboxes, final Collection mailboxResponses, final char delimiter) {
if (expression.isExpressionMatch(mailboxName)) {
if (!mailboxResponses.contains(mailboxName)) {
- final LSubResponse response = new LSubResponse(mailboxName, !originalSubscription);
+ final LSubResponse response = new LSubResponse(mailboxName, !originalSubscription, delimiter);
responder.respond(response);
mailboxResponses.add(mailboxName);
}
}
else {
- final int lastDelimiter = mailboxName.lastIndexOf(ImapConstants.HIERARCHY_DELIMITER_CHAR);
+ final int lastDelimiter = mailboxName.lastIndexOf(delimiter);
if (lastDelimiter > 0) {
final String parentMailbox = mailboxName.substring(0, lastDelimiter);
if (!mailboxes.contains(parentMailbox)) {
- respond(responder, expression, parentMailbox, false, mailboxes, mailboxResponses);
+ respond(responder, expression, parentMailbox, false, mailboxes, mailboxResponses, delimiter);
}
}
}
@@ -111,8 +111,8 @@
* @param referenceName
* IMAP reference name, possibly null
*/
- private void respondWithHierarchyDelimiter(final Responder responder) {
- final LSubResponse response = new LSubResponse("", true);
+ private void respondWithHierarchyDelimiter(final Responder responder, final char delimiter) {
+ final LSubResponse response = new LSubResponse("", true, delimiter);
responder.respond(response);
}
@@ -121,10 +121,11 @@
final LsubRequest request = (LsubRequest) message;
final String referenceName = request.getBaseReferenceName();
final String mailboxPattern = request.getMailboxPattern();
-
+ final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
+
try {
if (mailboxPattern.length() == 0) {
- respondWithHierarchyDelimiter(responder);
+ respondWithHierarchyDelimiter(responder, mailboxSession.getPathDelimiter());
} else {
listSubscriptions(session, responder, referenceName, mailboxPattern);
}
Index: processor/src/main/java/org/apache/james/imap/processor/NamespaceProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/NamespaceProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/NamespaceProcessor.java (working copy)
@@ -27,14 +27,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.NamespaceRequest;
import org.apache.james.imap.message.response.NamespaceResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
-import org.apache.james.mailbox.MailboxConstants;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -69,7 +68,7 @@
*/
private List buildPersonalNamespaces(final MailboxSession mailboxSession) {
final List personalSpaces = new ArrayList();
- personalSpaces.add(new NamespaceResponse.Namespace(mailboxSession.getPersonalSpace(), MailboxConstants.DEFAULT_DELIMITER));
+ personalSpaces.add(new NamespaceResponse.Namespace(mailboxSession.getPersonalSpace(), mailboxSession.getPathDelimiter()));
return personalSpaces;
}
@@ -80,7 +79,7 @@
otherUsersSpaces = null;
} else {
otherUsersSpaces = new ArrayList(1);
- otherUsersSpaces.add(new NamespaceResponse.Namespace(otherUsersSpace, MailboxConstants.DEFAULT_DELIMITER));
+ otherUsersSpaces.add(new NamespaceResponse.Namespace(otherUsersSpace, mailboxSession.getPathDelimiter()));
}
return otherUsersSpaces;
}
@@ -91,7 +90,7 @@
if (!sharedSpaces.isEmpty()) {
sharedNamespaces = new ArrayList(sharedSpaces.size());
for (String space: sharedSpaces) {
- sharedNamespaces.add(new NamespaceResponse.Namespace(space, MailboxConstants.DEFAULT_DELIMITER));
+ sharedNamespaces.add(new NamespaceResponse.Namespace(space, mailboxSession.getPathDelimiter()));
}
}
return sharedNamespaces;
Index: processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java (working copy)
@@ -22,13 +22,13 @@
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.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.RenameRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxExistsException;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java (working copy)
@@ -30,6 +30,7 @@
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.ImapSessionUtils;
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;
@@ -41,7 +42,6 @@
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.SearchRequest;
import org.apache.james.imap.message.response.SearchResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.MessageRangeException;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java (working copy)
@@ -22,6 +22,7 @@
import org.apache.commons.logging.Log;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.StatusDataItems;
import org.apache.james.imap.api.message.request.ImapRequest;
@@ -30,7 +31,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.StatusRequest;
import org.apache.james.imap.message.response.MailboxStatusResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxPath;
Index: processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java (working copy)
@@ -25,6 +25,7 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.request.ImapRequest;
@@ -34,7 +35,6 @@
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.StoreRequest;
import org.apache.james.imap.message.response.FetchResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.imap.processor.base.MessageRangeException;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
Index: processor/src/main/java/org/apache/james/imap/processor/SubscribeProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/SubscribeProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/SubscribeProcessor.java (working copy)
@@ -21,13 +21,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.SubscribeRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.SubscriptionException;
Index: processor/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java (working copy)
@@ -21,11 +21,11 @@
import org.apache.commons.logging.Log;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.SystemMessage;
import org.apache.james.imap.processor.base.AbstractChainedProcessor;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
Index: processor/src/main/java/org/apache/james/imap/processor/UnsubscribeProcessor.java
===================================================================
--- processor/src/main/java/org/apache/james/imap/processor/UnsubscribeProcessor.java (revision 1056658)
+++ processor/src/main/java/org/apache/james/imap/processor/UnsubscribeProcessor.java (working copy)
@@ -21,13 +21,13 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.request.ImapRequest;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.UnsubscribeRequest;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.SubscriptionException;
Index: processor/src/test/java/org/apache/james/imap/processor/ListProcessorTest.java
===================================================================
--- processor/src/test/java/org/apache/james/imap/processor/ListProcessorTest.java (revision 1056658)
+++ processor/src/test/java/org/apache/james/imap/processor/ListProcessorTest.java (working copy)
@@ -77,13 +77,13 @@
ListResponse createResponse(boolean noinferior, boolean noselect,
boolean marked, boolean unmarked, boolean hasChildren,
- boolean hasNoChildren, String hierarchyDelimiter, String mailboxName) {
+ boolean hasNoChildren, char hierarchyDelimiter, String mailboxName) {
return new ListResponse(noinferior, noselect, marked, unmarked,
- hasChildren, hasNoChildren, mailboxName);
+ hasChildren, hasNoChildren, mailboxName, hierarchyDelimiter);
}
void setUpResult(final MailboxMetaData.Children children, final MailboxMetaData.Selectability selectability,
- final String hierarchyDelimiter, final MailboxPath path) {
+ final char hierarchyDelimiter, final MailboxPath path) {
mockery.checking(new Expectations() {{
oneOf(result).inferiors();will(returnValue(children));
oneOf(result).getSelectability();will(returnValue(selectability));
@@ -94,54 +94,54 @@
@Test
public void testHasChildren() throws Exception {
- setUpResult(MailboxMetaData.Children.HAS_CHILDREN, MailboxMetaData.Selectability.NONE, ".", inboxPath);
+ setUpResult(MailboxMetaData.Children.HAS_CHILDREN, MailboxMetaData.Selectability.NONE, '.', inboxPath);
mockery.checking(new Expectations() {{
- oneOf(responder).respond(with(equal(createResponse(false, false, false, false, true, false, ".", "INBOX"))));
+ oneOf(responder).respond(with(equal(createResponse(false, false, false, false, true, false, '.', "INBOX"))));
}});
processor.processResult(responder, false, result);
}
@Test
public void testHasNoChildren() throws Exception {
- setUpResult(MailboxMetaData.Children.HAS_NO_CHILDREN, MailboxMetaData.Selectability.NONE, ".", inboxPath);
+ setUpResult(MailboxMetaData.Children.HAS_NO_CHILDREN, MailboxMetaData.Selectability.NONE, '.', inboxPath);
mockery.checking(new Expectations() {{
- oneOf(responder).respond(with(equal(createResponse(false, false, false, false, false, true, ".", "INBOX"))));
+ oneOf(responder).respond(with(equal(createResponse(false, false, false, false, false, true, '.', "INBOX"))));
}});
processor.processResult(responder, false, result);
}
@Test
public void testNoInferiors() throws Exception {
- setUpResult(MailboxMetaData.Children.NO_INFERIORS, MailboxMetaData.Selectability.NONE, ".", inboxPath);
+ setUpResult(MailboxMetaData.Children.NO_INFERIORS, MailboxMetaData.Selectability.NONE, '.', inboxPath);
mockery.checking(new Expectations() {{
- oneOf(responder).respond(with(equal(createResponse(true, false, false, false, false, false, ".", "INBOX"))));
+ oneOf(responder).respond(with(equal(createResponse(true, false, false, false, false, false, '.', "INBOX"))));
}});
processor.processResult(responder, false, result);
}
@Test
public void testNoSelect() throws Exception {
- setUpResult(MailboxMetaData.Children.CHILDREN_ALLOWED_BUT_UNKNOWN, MailboxMetaData.Selectability.NOSELECT, ".", inboxPath);
+ setUpResult(MailboxMetaData.Children.CHILDREN_ALLOWED_BUT_UNKNOWN, MailboxMetaData.Selectability.NOSELECT, '.', inboxPath);
mockery.checking(new Expectations() {{
- oneOf(responder).respond(with(equal(createResponse(false, true, false, false, false, false, ".", "INBOX"))));
+ oneOf(responder).respond(with(equal(createResponse(false, true, false, false, false, false, '.', "INBOX"))));
}});
processor.processResult(responder, false, result);
}
@Test
public void testUnMarked() throws Exception {
- setUpResult(MailboxMetaData.Children.CHILDREN_ALLOWED_BUT_UNKNOWN, MailboxMetaData.Selectability.UNMARKED, ".", inboxPath);
+ setUpResult(MailboxMetaData.Children.CHILDREN_ALLOWED_BUT_UNKNOWN, MailboxMetaData.Selectability.UNMARKED, '.', inboxPath);
mockery.checking(new Expectations() {{
- oneOf(responder).respond(with(equal(createResponse(false, false, false, true, false, false, ".", "INBOX"))));
+ oneOf(responder).respond(with(equal(createResponse(false, false, false, true, false, false, '.', "INBOX"))));
}});
processor.processResult(responder, false, result);
}
@Test
public void testMarked() throws Exception {
- setUpResult(MailboxMetaData.Children.CHILDREN_ALLOWED_BUT_UNKNOWN, MailboxMetaData.Selectability.MARKED, ".", inboxPath);
+ setUpResult(MailboxMetaData.Children.CHILDREN_ALLOWED_BUT_UNKNOWN, MailboxMetaData.Selectability.MARKED, '.', inboxPath);
mockery.checking(new Expectations() {{
- oneOf(responder).respond(with(equal(createResponse(false, false, true, false, false, false, ".", "INBOX"))));
+ oneOf(responder).respond(with(equal(createResponse(false, false, true, false, false, false, '.', "INBOX"))));
}});
processor.processResult(responder, false, result);
}
Index: processor/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java
===================================================================
--- processor/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java (revision 1056658)
+++ processor/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java (working copy)
@@ -25,7 +25,7 @@
import java.util.Locale;
import org.apache.james.imap.api.ImapCommand;
-import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.response.StatusResponse;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
@@ -33,7 +33,6 @@
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.message.request.LsubRequest;
import org.apache.james.imap.message.response.LSubResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxMetaData;
import org.apache.james.mailbox.MailboxSession;
@@ -50,15 +49,17 @@
public class LSubProcessorTest {
private static final String ROOT = "ROOT";
+
+ private static final char HIERARCHY_DELIMITER = '.';
private static final String PARENT = ROOT
- + ImapConstants.HIERARCHY_DELIMITER + "PARENT";
+ + HIERARCHY_DELIMITER + "PARENT";
private static final String CHILD_ONE = PARENT
- + ImapConstants.HIERARCHY_DELIMITER + "CHILD_ONE";
+ + HIERARCHY_DELIMITER + "CHILD_ONE";
private static final String CHILD_TWO = PARENT
- + ImapConstants.HIERARCHY_DELIMITER + "CHILD_TWO";
+ + HIERARCHY_DELIMITER + "CHILD_TWO";
private static final String MAILBOX_C = "C.MAILBOX";
@@ -118,8 +119,9 @@
mockery.checking(new Expectations() {{
allowing(session).getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY); will(returnValue(mailboxSession));
+ allowing(mailboxSession).getPathDelimiter(); will(returnValue(HIERARCHY_DELIMITER));
oneOf(responder).respond(with(
- equal(new LSubResponse("", true))));
+ equal(new LSubResponse("", true, HIERARCHY_DELIMITER))));
}});
expectOk();
@@ -140,16 +142,16 @@
mockery.checking(new Expectations() {{
oneOf(responder).respond(with(
- equal(new LSubResponse(CHILD_ONE, false))));
+ equal(new LSubResponse(CHILD_ONE, false, HIERARCHY_DELIMITER))));
oneOf(responder).respond(with(
- equal(new LSubResponse(CHILD_TWO, false))));
+ equal(new LSubResponse(CHILD_TWO, false, HIERARCHY_DELIMITER))));
}});
-
+
expectSubscriptions();
expectOk();
LsubRequest request = new LsubRequest(command, "", PARENT
- + ImapConstants.HIERARCHY_DELIMITER + "%", TAG);
+ + HIERARCHY_DELIMITER + "%", TAG);
processor.doProcessRequest(request, session, TAG, command, responderImpl);
}
@@ -165,14 +167,14 @@
mockery.checking(new Expectations() {{
oneOf(responder).respond(with(
- equal(new LSubResponse(PARENT, true))));
+ equal(new LSubResponse(PARENT, true, HIERARCHY_DELIMITER))));
}});
expectSubscriptions();
expectOk();
LsubRequest request = new LsubRequest(command, "", ROOT
- + ImapConstants.HIERARCHY_DELIMITER + "%", TAG);
+ + HIERARCHY_DELIMITER + "%", TAG);
processor.doProcessRequest(request, session, TAG, command, responderImpl);
}
@@ -189,14 +191,14 @@
mockery.checking(new Expectations() {{
oneOf(responder).respond(with(
- equal(new LSubResponse(PARENT, false))));
+ equal(new LSubResponse(PARENT, false, HIERARCHY_DELIMITER))));
}});
expectSubscriptions();
expectOk();
LsubRequest request = new LsubRequest(command, "", ROOT
- + ImapConstants.HIERARCHY_DELIMITER + "%", TAG);
+ + HIERARCHY_DELIMITER + "%", TAG);
processor.doProcessRequest(request, session, TAG, command, responderImpl);
}
@@ -205,11 +207,11 @@
public void testSelectAll() throws Exception {
mockery.checking(new Expectations() {{
oneOf(responder).respond(with(equal(
- new LSubResponse(MAILBOX_A, false))));
+ new LSubResponse(MAILBOX_A, false, HIERARCHY_DELIMITER))));
oneOf(responder).respond(with(equal(
- new LSubResponse(MAILBOX_B, false))));
+ new LSubResponse(MAILBOX_B, false, HIERARCHY_DELIMITER))));
oneOf(responder).respond(with(equal(
- new LSubResponse(MAILBOX_C, false))));
+ new LSubResponse(MAILBOX_C, false, HIERARCHY_DELIMITER))));
}});
subscriptions.add(MAILBOX_A);
subscriptions.add(MAILBOX_B);
@@ -236,8 +238,9 @@
private void expectSubscriptions() throws Exception {
mockery.checking(new Expectations() {{
- oneOf(session).getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY);
+ exactly(2).of(session).getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY);
will(returnValue(mailboxSession));
+ allowing(mailboxSession).getPathDelimiter(); will(returnValue(HIERARCHY_DELIMITER));
oneOf(mailboxSession).getUser(); will(returnValue(new MailboxSession.User() {
/*
Index: processor/src/test/java/org/apache/james/imap/processor/NamespaceProcessorTest.java
===================================================================
--- processor/src/test/java/org/apache/james/imap/processor/NamespaceProcessorTest.java (revision 1056658)
+++ processor/src/test/java/org/apache/james/imap/processor/NamespaceProcessorTest.java (working copy)
@@ -18,7 +18,8 @@
****************************************************************/
package org.apache.james.imap.processor;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
@@ -28,6 +29,7 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.ImapSessionState;
+import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.response.StatusResponse;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
@@ -37,7 +39,6 @@
import org.apache.james.imap.api.process.ImapProcessor.Responder;
import org.apache.james.imap.message.request.NamespaceRequest;
import org.apache.james.imap.message.response.NamespaceResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxConstants;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -109,6 +110,7 @@
allowing(mailboxSessionStub).getPersonalSpace(); will(returnValue(PERSONAL_PREFIX));
allowing(mailboxSessionStub).getOtherUsersSpace(); will(returnValue(USERS_PREFIX));
allowing(mailboxSessionStub).getSharedSpaces();will(returnValue(new ArrayList()));
+ allowing(mailboxSessionStub).getPathDelimiter();will(returnValue(MailboxConstants.DEFAULT_DELIMITER));
allowing(imapSessionStub).getState();will(returnValue(ImapSessionState.AUTHENTICATED));
allowing(statusResponseStub).taggedOk(
with(any(String.class)), with(any(ImapCommand.class)),
@@ -133,6 +135,7 @@
allowing(mailboxSessionStub).getPersonalSpace(); will(returnValue(PERSONAL_PREFIX));
allowing(mailboxSessionStub).getOtherUsersSpace(); will(returnValue(USERS_PREFIX));
allowing(mailboxSessionStub).getSharedSpaces();will(returnValue(Arrays.asList(SHARED_PREFIX)));
+ allowing(mailboxSessionStub).getPathDelimiter();will(returnValue(MailboxConstants.DEFAULT_DELIMITER));
allowing(imapSessionStub).getState();will(returnValue(ImapSessionState.AUTHENTICATED));
allowing(statusResponseStub).taggedOk(
with(any(String.class)), with(any(ImapCommand.class)),
Index: processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
===================================================================
--- processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java (revision 1056658)
+++ processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java (working copy)
@@ -27,6 +27,7 @@
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.ImapSessionUtils;
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;
@@ -38,7 +39,6 @@
import org.apache.james.imap.api.process.SelectedMailbox;
import org.apache.james.imap.message.request.SearchRequest;
import org.apache.james.imap.message.response.SearchResponse;
-import org.apache.james.imap.processor.base.ImapSessionUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxPath;
import org.apache.james.mailbox.MailboxSession;