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 ro...@apache.org on 2016/09/05 12:43:57 UTC
[01/10] james-project git commit: JAMES-1818 Introduce mailboxId
serializer/deserializer
Repository: james-project
Updated Branches:
refs/heads/master 4a2550182 -> 47cfda6cc
JAMES-1818 Introduce mailboxId serializer/deserializer
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/460b650c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/460b650c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/460b650c
Branch: refs/heads/master
Commit: 460b650cf702a78d816865a34c72d9088dd03f12
Parents: 4a25501
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Aug 30 11:05:37 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:41:59 2016 +0200
----------------------------------------------------------------------
.../james/jmap/json/ObjectMapperFactory.java | 74 +++++++++++-
.../jmap/json/ObjectMapperFactoryTest.java | 117 +++++++++++++++++++
.../jmap/json/ParsingWritingObjectsTest.java | 9 +-
.../jmap/methods/JmapRequestParserImplTest.java | 11 +-
.../methods/JmapResponseWriterImplTest.java | 16 +--
.../james/jmap/methods/RequestHandlerTest.java | 6 +-
.../org/apache/james/jmap/model/FilterTest.java | 3 +-
7 files changed, 215 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
index 29b5471..79742f4 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
@@ -19,12 +19,26 @@
package org.apache.james.jmap.json;
+import java.io.IOException;
import java.util.Set;
+import javax.inject.Inject;
+
+import org.apache.james.mailbox.model.MailboxId;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -32,17 +46,71 @@ import com.google.common.collect.ImmutableSet;
public class ObjectMapperFactory {
- private static final Set<Module> JACKSON_MODULES = ImmutableSet.of(new Jdk8Module(), new JavaTimeModule(), new GuavaModule());
+ private static final ImmutableSet.Builder<Module> JACKSON_BASE_MODULES = ImmutableSet.<Module>builder().add(new Jdk8Module(), new JavaTimeModule(), new GuavaModule());
+ private final Set<Module> jacksonModules;
+
+ @Inject
+ public ObjectMapperFactory(MailboxId.Factory mailboxIdFactory) {
+ SimpleModule mailboxIdModule = new SimpleModule();
+ mailboxIdModule.addDeserializer(MailboxId.class, new MailboxIdDeserializer(mailboxIdFactory));
+ mailboxIdModule.addSerializer(MailboxId.class, new MailboxIdSerializer());
+ mailboxIdModule.addKeyDeserializer(MailboxId.class, new MailboxIdKeyDeserializer(mailboxIdFactory));
+ mailboxIdModule.addKeySerializer(MailboxId.class, new MailboxIdKeySerializer());
+ jacksonModules = JACKSON_BASE_MODULES.add(mailboxIdModule).build();
+ }
public ObjectMapper forParsing() {
return new ObjectMapper()
- .registerModules(JACKSON_MODULES)
+ .registerModules(jacksonModules)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
public ObjectMapper forWriting() {
return new ObjectMapper()
- .registerModules(JACKSON_MODULES)
+ .registerModules(jacksonModules)
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
}
+
+ public static class MailboxIdDeserializer extends JsonDeserializer<MailboxId> {
+ private MailboxId.Factory factory;
+
+ public MailboxIdDeserializer(MailboxId.Factory factory) {
+ this.factory = factory;
+ }
+
+ @Override
+ public MailboxId deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+ return factory.fromString(p.getValueAsString());
+ }
+ }
+
+ public static class MailboxIdSerializer extends JsonSerializer<MailboxId> {
+
+ @Override
+ public void serialize(MailboxId value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
+ gen.writeString(value.serialize());
+ }
+ }
+
+ public static class MailboxIdKeyDeserializer extends KeyDeserializer {
+ private MailboxId.Factory factory;
+
+ public MailboxIdKeyDeserializer(MailboxId.Factory factory) {
+ this.factory = factory;
+ }
+
+ @Override
+ public Object deserializeKey(String key, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+ return factory.fromString(key);
+ }
+ }
+
+ public static class MailboxIdKeySerializer extends JsonSerializer<MailboxId> {
+
+ @Override
+ public void serialize(MailboxId value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
+ gen.writeFieldName(value.serialize());
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
new file mode 100644
index 0000000..8e3a635
--- /dev/null
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
@@ -0,0 +1,117 @@
+/****************************************************************
+ * 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.jmap.json;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Map;
+
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+public class ObjectMapperFactoryTest {
+
+ private ObjectMapperFactory testee;
+
+ @Before
+ public void setup() {
+ testee = new ObjectMapperFactory(new InMemoryId.Factory());
+ }
+
+ @Test
+ public void mailboxIdShouldBeDeserializable() throws Exception {
+ String json = "{ \"mailboxId\": \"123\"}";
+ MailboxIdTestContainer expected = new MailboxIdTestContainer(InMemoryId.of(123));
+ MailboxIdTestContainer actual = testee.forParsing().readValue(json, MailboxIdTestContainer.class);
+ assertThat(actual).isEqualToComparingFieldByField(expected);
+ }
+
+ @Test
+ public void mailboxIdShouldBeSerializable() throws Exception {
+ MailboxIdTestContainer container = new MailboxIdTestContainer(InMemoryId.of(123));
+ String expectedJson = "{\"mailboxId\":\"123\"}";
+ String actual = testee.forWriting().writeValueAsString(container);
+ assertThat(actual).isEqualTo(expectedJson);
+ }
+
+ @Test
+ public void mailboxIdShouldBeDeserializableWhenKey() throws Exception {
+ String json = "{ \"map\": {\"123\": \"value\"}}";
+ MailboxIdKeyTestContainer expected = new MailboxIdKeyTestContainer(ImmutableMap.of(InMemoryId.of(123), "value"));
+ MailboxIdKeyTestContainer actual = testee.forParsing().readValue(json, MailboxIdKeyTestContainer.class);
+ assertThat(actual).isEqualToComparingFieldByField(expected);
+ }
+
+ @Test
+ public void mailboxIdShouldBeSerializableWhenKeyWithoutToString() throws Exception {
+ ObjectMapperFactory testeeWithoutToString = new ObjectMapperFactory(new KeyWithoutToString.Factory());
+ MailboxIdKeyTestContainer container = new MailboxIdKeyTestContainer(ImmutableMap.of(new KeyWithoutToString("key"), "value"));
+ String expectedJson = "{\"map\":{\"key\":\"value\"}}";
+ String actual = testeeWithoutToString.forWriting().writeValueAsString(container);
+ assertThat(actual).isEqualTo(expectedJson);
+ }
+
+ public static class MailboxIdTestContainer {
+ public MailboxId mailboxId;
+
+ public MailboxIdTestContainer() {
+ }
+
+ public MailboxIdTestContainer(MailboxId mailboxId) {
+ this.mailboxId = mailboxId;
+ }
+ }
+
+ public static class MailboxIdKeyTestContainer {
+ public Map<MailboxId, String> map;
+
+ public MailboxIdKeyTestContainer() {
+ }
+
+ public MailboxIdKeyTestContainer(Map<MailboxId, String> map) {
+ this.map = map;
+ }
+ }
+
+ public static class KeyWithoutToString implements MailboxId {
+ private String value;
+
+ public KeyWithoutToString(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String serialize() {
+ return value;
+ }
+
+ public static class Factory implements MailboxId.Factory {
+
+ @Override
+ public MailboxId fromString(String serialized) {
+ return new KeyWithoutToString(serialized);
+ }
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
index 0106d71..b001060 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
@@ -30,6 +30,7 @@ import org.apache.james.jmap.methods.GetMessagesMethod;
import org.apache.james.jmap.methods.JmapResponseWriterImpl;
import org.apache.james.jmap.model.Message;
import org.apache.james.jmap.model.SubMessage;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Test;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
@@ -41,7 +42,7 @@ public class ParsingWritingObjectsTest {
public void parsingJsonShouldWorkOnSubMessage() throws Exception {
SubMessage expected = SUB_MESSAGE;
- SubMessage subMessage = new ObjectMapperFactory().forParsing()
+ SubMessage subMessage = new ObjectMapperFactory(new InMemoryId.Factory()).forParsing()
.readValue(IOUtils.toString(ClassLoader.getSystemResource("json/subMessage.json")), SubMessage.class);
assertThat(subMessage).isEqualToComparingFieldByField(expected);
@@ -51,7 +52,7 @@ public class ParsingWritingObjectsTest {
public void writingJsonShouldWorkOnSubMessage() throws Exception {
String expected = IOUtils.toString(ClassLoader.getSystemResource("json/subMessage.json"));
- String json = new ObjectMapperFactory().forWriting()
+ String json = new ObjectMapperFactory(new InMemoryId.Factory()).forWriting()
.writeValueAsString(SUB_MESSAGE);
assertThatJson(json)
@@ -64,7 +65,7 @@ public class ParsingWritingObjectsTest {
public void parsingJsonShouldWorkOnMessage() throws Exception {
Message expected = MESSAGE;
- Message message = new ObjectMapperFactory().forParsing()
+ Message message = new ObjectMapperFactory(new InMemoryId.Factory()).forParsing()
.readValue(IOUtils.toString(ClassLoader.getSystemResource("json/message.json")), Message.class);
assertThat(message).isEqualToComparingFieldByField(expected);
@@ -78,7 +79,7 @@ public class ParsingWritingObjectsTest {
.addFilter(JmapResponseWriterImpl.PROPERTIES_FILTER, SimpleBeanPropertyFilter.serializeAll())
.addFilter(GetMessagesMethod.HEADERS_FILTER, SimpleBeanPropertyFilter.serializeAll());
- String json = new ObjectMapperFactory().forWriting()
+ String json = new ObjectMapperFactory(new InMemoryId.Factory()).forWriting()
.setFilterProvider(filterProvider)
.writeValueAsString(MESSAGE);
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
index 1d62863..879de19 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
@@ -21,6 +21,8 @@ package org.apache.james.jmap.methods;
import org.apache.james.jmap.json.ObjectMapperFactory;
import org.apache.james.jmap.model.ProtocolRequest;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.junit.Before;
import org.junit.Test;
import com.fasterxml.jackson.databind.JsonNode;
@@ -28,6 +30,12 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class JmapRequestParserImplTest {
+ private JmapRequestParserImpl jmapRequestParserImpl;
+
+ @Before
+ public void setup() {
+ jmapRequestParserImpl = new JmapRequestParserImpl(new ObjectMapperFactory(new InMemoryId.Factory()));
+ }
@Test(expected=IllegalArgumentException.class)
public void extractJmapRequestShouldThrowWhenNullRequestClass() throws Exception {
@@ -35,7 +43,6 @@ public class JmapRequestParserImplTest {
new ObjectNode(new JsonNodeFactory(false)).putObject("{\"id\": \"id\"}"),
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- JmapRequestParserImpl jmapRequestParserImpl = new JmapRequestParserImpl(new ObjectMapperFactory());
jmapRequestParserImpl.extractJmapRequest(ProtocolRequest.deserialize(nodes), null);
}
@@ -47,7 +54,6 @@ public class JmapRequestParserImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- JmapRequestParserImpl jmapRequestParserImpl = new JmapRequestParserImpl(new ObjectMapperFactory());
jmapRequestParserImpl.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class);
}
@@ -58,7 +64,6 @@ public class JmapRequestParserImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- JmapRequestParserImpl jmapRequestParserImpl = new JmapRequestParserImpl(new ObjectMapperFactory());
jmapRequestParserImpl.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
index 8f35e43..b943a9a 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
@@ -32,6 +32,8 @@ import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.Property;
import org.apache.james.jmap.model.ProtocolRequest;
import org.apache.james.jmap.model.ProtocolResponse;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@@ -44,6 +46,12 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
public class JmapResponseWriterImplTest {
+ private JmapResponseWriterImpl jmapResponseWriterImpl;
+
+ @Before
+ public void setup() {
+ jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory(new InMemoryId.Factory()));
+ }
@Ignore
@Test(expected=IllegalStateException.class)
@@ -52,7 +60,6 @@ public class JmapResponseWriterImplTest {
String expectedClientId = "#1";
String expectedId = "myId";
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
Stream<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(Stream.of(JmapResponse
.builder()
.clientId(ClientId.of(expectedClientId))
@@ -73,7 +80,6 @@ public class JmapResponseWriterImplTest {
ResponseClass responseClass = new ResponseClass();
responseClass.id = expectedId;
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
Stream.of(JmapResponse
.builder()
@@ -101,7 +107,6 @@ public class JmapResponseWriterImplTest {
responseClass.list = ImmutableList.of(new ObjectResponseClass.Foo("id", "name"));
Property property = () -> "id";
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
Stream.of(JmapResponse
.builder()
@@ -126,7 +131,6 @@ public class JmapResponseWriterImplTest {
responseClass.list = ImmutableList.of(new ObjectResponseClass.Foo("id", "name"));
Property property = () -> "id";
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
@SuppressWarnings("unused")
Stream<ProtocolResponse> ignoredResponse = jmapResponseWriterImpl.formatMethodResponse(
Stream.of(JmapResponse
@@ -159,8 +163,6 @@ public class JmapResponseWriterImplTest {
Property idProperty = () -> "id";
Property nameProperty = () -> "name";
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
-
List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
Stream.of(JmapResponse
.builder()
@@ -210,7 +212,6 @@ public class JmapResponseWriterImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode(expectedClientId)} ;
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
Stream.of(JmapResponse
.builder()
@@ -234,7 +235,6 @@ public class JmapResponseWriterImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode(expectedClientId)} ;
- JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory());
List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
Stream.of(JmapResponse
.builder()
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
index 2ad4f09..8725dd6 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
@@ -36,6 +36,7 @@ import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.ProtocolRequest;
import org.apache.james.jmap.model.ProtocolResponse;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Before;
import org.junit.Test;
@@ -123,8 +124,9 @@ public class RequestHandlerTest {
@Before
public void setup() {
- jmapRequestParser = new JmapRequestParserImpl(new ObjectMapperFactory());
- jmapResponseWriter = new JmapResponseWriterImpl(new ObjectMapperFactory());
+ ObjectMapperFactory objectMapperFactory = new ObjectMapperFactory(new InMemoryId.Factory());
+ jmapRequestParser = new JmapRequestParserImpl(objectMapperFactory);
+ jmapResponseWriter = new JmapResponseWriterImpl(objectMapperFactory);
mockHttpServletRequest = mock(HttpServletRequest.class);
testee = new RequestHandler(ImmutableSet.of(new TestMethod()), jmapRequestParser, jmapResponseWriter);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/460b650c/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterTest.java
index 7588bad..00fb904 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterTest.java
@@ -19,6 +19,7 @@
package org.apache.james.jmap.model;
import org.apache.james.jmap.json.ObjectMapperFactory;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Before;
import org.junit.Test;
@@ -32,7 +33,7 @@ public class FilterTest {
@Before
public void setup() {
- parser = new ObjectMapperFactory().forParsing();
+ parser = new ObjectMapperFactory(new InMemoryId.Factory()).forParsing();
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[10/10] james-project git commit: JAMES-1818 Remove useless calls of
MailboxUtils
Posted by ro...@apache.org.
JAMES-1818 Remove useless calls of MailboxUtils
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/268f0011
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/268f0011
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/268f0011
Branch: refs/heads/master
Commit: 268f001185bf3bd7a41ff6940b38241fd99dca89
Parents: df3a8a0
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Aug 31 16:40:58 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:01 2016 +0200
----------------------------------------------------------------------
.../jmap/methods/GetMessageListMethod.java | 12 +-
.../methods/SetMailboxesCreationProcessor.java | 18 ++-
.../SetMailboxesDestructionProcessor.java | 4 +-
.../methods/SetMailboxesUpdateProcessor.java | 22 ++--
.../apache/james/jmap/utils/MailboxUtils.java | 26 ----
.../SetMailboxesCreationProcessorTest.java | 6 +-
.../SetMailboxesUpdateProcessorTest.java | 7 +-
.../james/jmap/utils/MailboxUtilsTest.java | 123 -------------------
8 files changed, 44 insertions(+), 174 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
index 5b476ef..f2a859b 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
@@ -39,7 +39,6 @@ import org.apache.james.jmap.model.GetMessageListResponse;
import org.apache.james.jmap.model.GetMessagesRequest;
import org.apache.james.jmap.model.MessageId;
import org.apache.james.jmap.utils.FilterToSearchQuery;
-import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.jmap.utils.SortToComparatorConvertor;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -78,17 +77,15 @@ public class GetMessageListMethod implements Method {
private final MailboxManager mailboxManager;
private final int maximumLimit;
private final GetMessagesMethod getMessagesMethod;
- private final MailboxUtils mailboxUtils;
private final Factory mailboxIdFactory;
@Inject
@VisibleForTesting public GetMessageListMethod(MailboxManager mailboxManager,
- @Named(MAXIMUM_LIMIT) int maximumLimit, GetMessagesMethod getMessagesMethod, MailboxUtils mailboxUtils, MailboxId.Factory mailboxIdFactory) {
+ @Named(MAXIMUM_LIMIT) int maximumLimit, GetMessagesMethod getMessagesMethod, MailboxId.Factory mailboxIdFactory) {
this.mailboxManager = mailboxManager;
this.maximumLimit = maximumLimit;
this.getMessagesMethod = getMessagesMethod;
- this.mailboxUtils = mailboxUtils;
this.mailboxIdFactory = mailboxIdFactory;
}
@@ -140,7 +137,7 @@ public class GetMessageListMethod implements Method {
for (Map.Entry<MailboxId, Collection<Long>> mailboxResults: searchResults.entrySet()) {
try {
aggregate(mailboxSession, messages, mailboxResults);
- } catch (MailboxNotFoundException e) {
+ } catch (MailboxException e) {
LOGGER.error("Error retrieving mailbox", e);
throw Throwables.propagate(e);
}
@@ -148,9 +145,8 @@ public class GetMessageListMethod implements Method {
return messages;
}
- private void aggregate(MailboxSession mailboxSession, Multimap<MailboxPath, MessageResult> aggregation, Map.Entry<MailboxId, Collection<Long>> mailboxResults) throws MailboxNotFoundException {
- MailboxPath mailboxPath = mailboxUtils.mailboxPathFromMailboxId(mailboxResults.getKey(), mailboxSession)
- .orElseThrow(() -> new MailboxNotFoundException(mailboxResults.getKey().serialize()));
+ private void aggregate(MailboxSession mailboxSession, Multimap<MailboxPath, MessageResult> aggregation, Map.Entry<MailboxId, Collection<Long>> mailboxResults) throws MailboxNotFoundException, MailboxException {
+ MailboxPath mailboxPath = mailboxManager.getMailbox(mailboxResults.getKey(), mailboxSession).getMailboxPath();
MessageManager messageManager = getMessageManager(mailboxPath, mailboxSession)
.orElseThrow(() -> new MailboxNotFoundException(mailboxPath));
List<MessageResult> mailboxMessages = MessageRange.toRanges(mailboxResults.getValue()).stream()
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index cc4cb4d..01dc2d7 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxExistsException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxId.Factory;
import org.apache.james.mailbox.model.MailboxPath;
@@ -144,7 +145,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
MailboxCreationId parentId = mailboxRequest.getParentId().get();
String parentName = getMailboxNameFromId(parentId, mailboxSession)
.orElseGet(Throwing.supplier(() ->
- mailboxUtils.getMailboxNameFromId(creationIdsToCreatedMailboxId.get(parentId), mailboxSession)
+ getMailboxNameFromId(creationIdsToCreatedMailboxId.get(parentId), mailboxSession)
.orElseThrow(() -> new MailboxParentNotFoundException(parentId))
));
@@ -155,7 +156,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
}
private Optional<String> getMailboxNameFromId(MailboxCreationId creationId, MailboxSession mailboxSession) {
- ThrowingFunction<? super MailboxId, Optional<String>> toName = parentId -> mailboxUtils.getMailboxNameFromId(parentId, mailboxSession);
+ ThrowingFunction<? super MailboxId, Optional<String>> toName = parentId -> getMailboxNameFromId(parentId, mailboxSession);
return getMailboxIdFromCreationId(creationId)
.flatMap(Throwing.function(toName).sneakyThrow());
}
@@ -167,4 +168,17 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
return Optional.empty();
}
}
+
+ @VisibleForTesting
+ Optional<String> getMailboxNameFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
+ if (mailboxId == null) {
+ return Optional.empty();
+ }
+ try {
+ return Optional.of(mailboxManager.getMailbox(mailboxId, mailboxSession).getMailboxPath().getName());
+ } catch (MailboxNotFoundException e) {
+ return Optional.empty();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
index 9fa4aab..a777c44 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -96,7 +97,8 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
Mailbox mailbox = entry.getValue();
preconditions(mailbox, mailboxSession);
- mailboxManager.deleteMailbox(mailboxUtils.getMailboxPath(mailbox, mailboxSession), mailboxSession);
+ MailboxPath mailboxPath = mailboxManager.getMailbox(mailbox.getId(), mailboxSession).getMailboxPath();
+ mailboxManager.deleteMailbox(mailboxPath, mailboxSession);
builder.destroyed(entry.getKey());
} catch (MailboxHasChildException e) {
builder.notDestroyed(entry.getKey(), SetError.builder()
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
index 69a07fe..438e101 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
@@ -43,6 +43,8 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.functions.ThrowingFunction;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
@@ -156,8 +158,11 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
if (isParentIdInRequest(updateRequest)) {
MailboxId newParentId = updateRequest.getParentId().get();
- mailboxUtils.mailboxPathFromMailboxId(newParentId, mailboxSession)
- .orElseThrow(() -> new MailboxParentNotFoundException(newParentId));
+ try {
+ mailboxManager.getMailbox(newParentId, mailboxSession);
+ } catch (MailboxNotFoundException e) {
+ throw new MailboxParentNotFoundException(newParentId);
+ }
if (mustChangeParent(mailbox.getParentId(), newParentId) && mailboxUtils.hasChildren(mailbox.getId(), mailboxSession)) {
throw new MailboxHasChildException();
}
@@ -176,14 +181,14 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
}
private void updateMailbox(Mailbox mailbox, MailboxUpdateRequest updateRequest, MailboxSession mailboxSession) throws MailboxException {
- MailboxPath originMailboxPath = mailboxUtils.getMailboxPath(mailbox, mailboxSession);
+ MailboxPath originMailboxPath = mailboxManager.getMailbox(mailbox.getId(), mailboxSession).getMailboxPath();
MailboxPath destinationMailboxPath = computeNewMailboxPath(mailbox, originMailboxPath, updateRequest, mailboxSession);
if (!originMailboxPath.equals(destinationMailboxPath)) {
mailboxManager.renameMailbox(originMailboxPath, destinationMailboxPath, mailboxSession);
}
}
- private MailboxPath computeNewMailboxPath(Mailbox mailbox, MailboxPath originMailboxPath, MailboxUpdateRequest updateRequest, MailboxSession mailboxSession) {
+ private MailboxPath computeNewMailboxPath(Mailbox mailbox, MailboxPath originMailboxPath, MailboxUpdateRequest updateRequest, MailboxSession mailboxSession) throws MailboxException {
Optional<MailboxId> parentId = updateRequest.getParentId();
if (parentId == null) {
return new MailboxPath(mailboxSession.getPersonalSpace(),
@@ -194,8 +199,9 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
MailboxPath modifiedMailboxPath = updateRequest.getName()
.map(newName -> computeMailboxPathWithNewName(originMailboxPath, newName))
.orElse(originMailboxPath);
+ ThrowingFunction<MailboxId, MailboxPath> computeNewMailboxPath = parentMailboxId -> computeMailboxPathWithNewParentId(modifiedMailboxPath, parentMailboxId, mailboxSession);
return parentId
- .map(parentMailboxId -> computeMailboxPathWithNewParentId(modifiedMailboxPath, parentMailboxId, mailboxSession))
+ .map(Throwing.function(computeNewMailboxPath).sneakyThrow())
.orElse(modifiedMailboxPath);
}
@@ -203,10 +209,10 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
return new MailboxPath(originMailboxPath, newName);
}
- private MailboxPath computeMailboxPathWithNewParentId(MailboxPath originMailboxPath, MailboxId parentMailboxId, MailboxSession mailboxSession) {
- Optional<MailboxPath> newParentMailboxPath = mailboxUtils.mailboxPathFromMailboxId(parentMailboxId, mailboxSession);
+ private MailboxPath computeMailboxPathWithNewParentId(MailboxPath originMailboxPath, MailboxId parentMailboxId, MailboxSession mailboxSession) throws MailboxException {
+ MailboxPath newParentMailboxPath = mailboxManager.getMailbox(parentMailboxId, mailboxSession).getMailboxPath();
String lastName = getCurrentMailboxName(originMailboxPath, mailboxSession);
- return new MailboxPath(originMailboxPath, newParentMailboxPath.get().getName() + mailboxSession.getPathDelimiter() + lastName);
+ return new MailboxPath(originMailboxPath, newParentMailboxPath.getName() + mailboxSession.getPathDelimiter() + lastName);
}
private String getCurrentMailboxName(MailboxPath originMailboxPath, MailboxSession mailboxSession) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
index bfb9acc..666b149 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
@@ -40,7 +40,6 @@ import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
import com.github.fge.lambdas.functions.ThrowingFunction;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
public class MailboxUtils {
@@ -99,12 +98,6 @@ public class MailboxUtils {
return name;
}
- public Optional<String> getMailboxNameFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
- return getMailboxFromId(mailboxId, mailboxSession)
- .map(Throwing.function(MessageManager::getMailboxPath).sneakyThrow())
- .map(MailboxPath::getName);
- }
-
private Optional<MessageManager> getMailboxFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
try {
return Optional.of(mailboxManager.getMailbox(mailboxId, mailboxSession));
@@ -132,29 +125,10 @@ public class MailboxUtils {
}
}
- public MailboxPath getMailboxPath(Mailbox mailbox, MailboxSession mailboxSession) {
- return new MailboxPath(mailboxSession.getPersonalSpace(), mailboxSession.getUser().getUserName(), getMailboxName(mailbox, mailboxSession));
- }
-
- private String getMailboxName(Mailbox mailbox, MailboxSession mailboxSession) {
- if (mailbox.getParentId().isPresent()) {
- return getMailboxName(mailboxFromMailboxId(mailbox.getParentId().get(), mailboxSession).get(), mailboxSession) +
- mailboxSession.getPathDelimiter() + mailbox.getName();
- }
- return mailbox.getName();
- }
-
public boolean hasChildren(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return getMailboxFromId(mailboxId, mailboxSession)
.map(Throwing.function(MessageManager::getMailboxPath).sneakyThrow())
.map(Throwing.function(path -> mailboxManager.hasChildren(path, mailboxSession)))
.orElse(false);
}
-
- public Optional<MailboxPath> mailboxPathFromMailboxId(MailboxId mailboxId, MailboxSession mailboxSession) {
- Preconditions.checkState(mailboxId != null, "'mailboxId' is mandatory");
- Preconditions.checkState(mailboxSession != null, "'mailboxId' is mandatory");
- return mailboxFromMailboxId(mailboxId, mailboxSession)
- .map(mailbox -> getMailboxPath(mailbox, mailboxSession));
- }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
index f8f67bc..fdf8f31 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
@@ -43,12 +43,14 @@ public class SetMailboxesCreationProcessorTest {
private MailboxUtils mailboxUtils;
private Factory mailboxIdFactory;
private SetMailboxesCreationProcessor sut;
+ private MailboxManager mailboxManager;
@Before
public void setup() {
mailboxUtils = mock(MailboxUtils.class);
+ mailboxManager = mock(MailboxManager.class);
mailboxIdFactory = new InMemoryId.Factory();
- sut = new SetMailboxesCreationProcessor(mock(MailboxManager.class), mailboxUtils, mailboxIdFactory);
+ sut = new SetMailboxesCreationProcessor(mailboxManager, mailboxUtils, mailboxIdFactory);
}
@Test
@@ -61,7 +63,7 @@ public class SetMailboxesCreationProcessorTest {
.build();
MailboxSession mailboxSession = mock(MailboxSession.class);
- when(mailboxUtils.getMailboxNameFromId(parentMailboxId, mailboxSession))
+ when(mailboxManager.getMailbox(parentMailboxId, mailboxSession))
.thenThrow(new MailboxException());
SetMailboxesResponse setMailboxesResponse = sut.process(request, mailboxSession);
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
index 0fdc0a5..377681c 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
@@ -33,9 +33,9 @@ import org.apache.james.jmap.model.mailbox.MailboxUpdateRequest;
import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.inmemory.InMemoryId;
-import org.apache.james.mailbox.model.MailboxPath;
import org.junit.Before;
import org.junit.Test;
@@ -59,15 +59,14 @@ public class SetMailboxesUpdateProcessorTest {
// Given
InMemoryId mailboxId = InMemoryId.of(1);
InMemoryId newParentId = InMemoryId.of(2);
- MailboxPath newParentMailboxPath = new MailboxPath("#private", "user", "newParentName");
SetMailboxesRequest request = SetMailboxesRequest.builder()
.update(mailboxId, MailboxUpdateRequest.builder().parentId(newParentId).build())
.build();
Mailbox mailbox = Mailbox.builder().id(mailboxId).name("name").role(Optional.empty()).build();
when(mockedMailboxUtils.mailboxFromMailboxId(mailboxId, mockedMailboxSession))
.thenReturn(Optional.of(mailbox));
- when(mockedMailboxUtils.mailboxPathFromMailboxId(newParentId, mockedMailboxSession))
- .thenReturn(Optional.of(newParentMailboxPath));
+ when(mockedMailboxManager.getMailbox(newParentId, mockedMailboxSession))
+ .thenReturn(mock(MessageManager.class));
when(mockedMailboxUtils.hasChildren(mailboxId, mockedMailboxSession))
.thenThrow(new MailboxException());
http://git-wip-us.apache.org/repos/asf/james-project/blob/268f0011/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
index ef0a93c..f374a04 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
@@ -102,27 +102,6 @@ public class MailboxUtilsTest {
}
@Test
- public void getMailboxNameFromIdShouldReturnNotEmptyWhenMailboxExists() throws Exception {
- String expected = "mailbox";
- MailboxPath mailboxPath = new MailboxPath("#private", user, expected);
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
- MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(mailboxPath)
- .getMailboxId();
-
- Optional<String> optionalName = sut.getMailboxNameFromId(mailboxId, mailboxSession);
- assertThat(optionalName).isPresent();
- String name = optionalName.get();
- assertThat(name).isEqualTo(expected);
- }
-
- @Test
- public void getMailboxNameFromIdShouldReturnEmptyWhenMailboxDoesntExist() throws Exception {
- Optional<String> optionalName = sut.getMailboxNameFromId(InMemoryId.of(987), mailboxSession);
- assertThat(optionalName).isEmpty();
- }
-
- @Test
public void getParentIdFromMailboxPathShouldReturNullWhenRootMailbox() throws Exception {
MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
mailboxManager.createMailbox(mailboxPath, mailboxSession);
@@ -183,108 +162,6 @@ public class MailboxUtilsTest {
}
@Test
- public void mailboxPathFromMailboxIdShouldReturnPresentWhenExists() throws Exception {
- MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
- MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(mailboxPath)
- .getMailboxId();
-
- Optional<MailboxPath> actual = sut.mailboxPathFromMailboxId(mailboxId, mailboxSession);
- assertThat(actual).isPresent();
- assertThat(actual.get()).isEqualTo(mailboxPath);
- }
-
- @Test
- public void mailboxPathFromMailboxIdShouldReturnAbsentWhenDoesntExist() throws Exception {
- Optional<MailboxPath> mailboxPath = sut.mailboxPathFromMailboxId(InMemoryId.of(123), mailboxSession);
- assertThat(mailboxPath).isEmpty();
- }
-
- @Test(expected = IllegalStateException.class)
- public void mailboxPathFromMailboxIdShouldThrowWhenNullMailboxId() throws Exception {
- sut.mailboxPathFromMailboxId(null, mailboxSession);
- }
-
- @Test(expected = IllegalStateException.class)
- public void mailboxPathFromMailboxIdShouldThrowWhenNullMailboxSession() throws Exception {
- sut.mailboxPathFromMailboxId(InMemoryId.of(123), null);
- }
-
- @Test(expected = IllegalStateException.class)
- public void mailboxPathFromMailboxIdShouldThrowWhenNullMailboxSessionAndMailboxId() throws Exception {
- sut.mailboxPathFromMailboxId(null, null);
- }
-
- @Test
- public void getMailboxPathShouldReturnThePathWhenRootMailbox() throws Exception {
- MailboxPath expected = new MailboxPath("#private", user, "myBox");
- mailboxManager.createMailbox(expected, mailboxSession);
- MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(expected)
- .getMailboxId();
-
- Mailbox mailbox = Mailbox.builder()
- .id(mailboxId)
- .name("myBox")
- .build();
-
- MailboxPath mailboxPath = sut.getMailboxPath(mailbox, mailboxSession);
- assertThat(mailboxPath).isEqualTo(expected);
- }
-
- @Test
- public void getMailboxPathShouldReturnThePathWhenChildMailbox() throws Exception {
- MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox");
- mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
- MailboxId parentId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(parentMailboxPath)
- .getMailboxId();
-
- MailboxPath expected = new MailboxPath("#private", user, "inbox.myBox");
- mailboxManager.createMailbox(expected, mailboxSession);
- MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(expected)
- .getMailboxId();
-
- Mailbox mailbox = Mailbox.builder()
- .id(mailboxId)
- .name("myBox")
- .parentId(parentId)
- .build();
-
- MailboxPath mailboxPath = sut.getMailboxPath(mailbox, mailboxSession);
- assertThat(mailboxPath).isEqualTo(expected);
- }
-
- @Test
- public void getMailboxPathShouldReturnThePathWhenChildOfChildMailbox() throws Exception {
- MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox");
- mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
-
- MailboxPath childMailboxPath = new MailboxPath("#private", user, "inbox.child");
- mailboxManager.createMailbox(childMailboxPath, mailboxSession);
- MailboxId childId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(childMailboxPath)
- .getMailboxId();
-
- MailboxPath expected = new MailboxPath("#private", user, "inbox.child.myBox");
- mailboxManager.createMailbox(expected, mailboxSession);
- MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(expected)
- .getMailboxId();
-
- Mailbox mailbox = Mailbox.builder()
- .id(mailboxId)
- .name("myBox")
- .parentId(childId)
- .build();
-
- MailboxPath mailboxPath = sut.getMailboxPath(mailbox, mailboxSession);
- assertThat(mailboxPath).isEqualTo(expected);
- }
-
- @Test
public void hasChildrenShouldReturnFalseWhenNoChild() throws Exception {
MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
mailboxManager.createMailbox(mailboxPath, mailboxSession);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[09/10] james-project git commit: Fix warnings
Posted by ro...@apache.org.
Fix warnings
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4cdd9f8d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4cdd9f8d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4cdd9f8d
Branch: refs/heads/master
Commit: 4cdd9f8d1d5b0c03ae84fd820d88f1bdb22c2d13
Parents: 7ecb7ef
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Aug 31 17:18:13 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:01 2016 +0200
----------------------------------------------------------------------
.../org/apache/james/mailbox/model/MailboxAnnotationTest.java | 4 ----
.../james/mailbox/store/mail/model/AnnotationMapperTest.java | 3 ---
.../test/java/org/apache/james/transport/matchers/AllTest.java | 1 -
.../org/apache/james/imap/decode/ImapRequestLineReaderTest.java | 1 -
4 files changed, 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/4cdd9f8d/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
index fc114bc..10d7c62 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
@@ -25,10 +25,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.guava.api.Assertions.assertThat;
public class MailboxAnnotationTest {
- private static final String ASTERISK_CHARACTER = "*";
-
- private static final String PERCENT_CHARACTER = "%";
-
private static final MailboxAnnotationKey ANNOTATION_KEY = new MailboxAnnotationKey("/private/comment");
private static final String ANNOTATION_VALUE = "anyValue";
http://git-wip-us.apache.org/repos/asf/james-project/blob/4cdd9f8d/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
index c1fdf6c..a48a6e2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
@@ -21,8 +21,6 @@ package org.apache.james.mailbox.store.mail.model;
import static org.assertj.core.api.Assertions.assertThat;
-import java.util.List;
-
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxAnnotation;
import org.apache.james.mailbox.model.MailboxAnnotationKey;
@@ -35,7 +33,6 @@ import org.xenei.junit.contract.ContractTest;
import org.xenei.junit.contract.IProducer;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
@Contract(MapperProvider.class)
public class AnnotationMapperTest<T extends MapperProvider> {
http://git-wip-us.apache.org/repos/asf/james-project/blob/4cdd9f8d/mailet/standard/src/test/java/org/apache/james/transport/matchers/AllTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AllTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AllTest.java
index ecf4b61..b3c207f 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AllTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AllTest.java
@@ -29,7 +29,6 @@ import org.apache.mailet.Matcher;
import org.apache.mailet.base.test.FakeMail;
import org.apache.mailet.base.test.FakeMailContext;
import org.apache.mailet.base.test.FakeMatcherConfig;
-import org.apache.mailet.base.test.MailUtil;
import org.junit.Before;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/james-project/blob/4cdd9f8d/protocols/imap/src/test/java/org/apache/james/imap/decode/ImapRequestLineReaderTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/decode/ImapRequestLineReaderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/decode/ImapRequestLineReaderTest.java
index 63c628a..7c285ed 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/decode/ImapRequestLineReaderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/decode/ImapRequestLineReaderTest.java
@@ -23,7 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.google.common.base.Charsets;
import org.apache.james.protocols.imap.DecodingException;
-import org.junit.Before;
import org.junit.Test;
import java.io.ByteArrayInputStream;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[06/10] james-project git commit: JAMES-1818 Use more MailboxId
instead of String when possible
Posted by ro...@apache.org.
JAMES-1818 Use more MailboxId instead of String when possible
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8ec9ab93
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8ec9ab93
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8ec9ab93
Branch: refs/heads/master
Commit: 8ec9ab9360470d4cdf7a6ca74937332e9c6af227
Parents: 460b650
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Aug 30 12:13:47 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:00 2016 +0200
----------------------------------------------------------------------
.../integration/GetMailboxesMethodTest.java | 18 ++++++-
.../integration/SetMailboxesMethodTest.java | 28 +++++++---
.../MailboxParentNotFoundException.java | 14 +++--
.../james/jmap/methods/GetMailboxesMethod.java | 3 +-
.../jmap/methods/GetMessageListMethod.java | 2 +-
.../methods/SetMailboxesCreationProcessor.java | 39 ++++++++++----
.../SetMailboxesDestructionProcessor.java | 25 ++++-----
.../methods/SetMailboxesUpdateProcessor.java | 17 +++---
.../james/jmap/model/GetMailboxesRequest.java | 11 ++--
.../org/apache/james/jmap/model/Message.java | 13 ++---
.../apache/james/jmap/model/MessageFactory.java | 2 +-
.../james/jmap/model/SetMailboxesRequest.java | 21 ++++----
.../james/jmap/model/SetMailboxesResponse.java | 45 ++++++++--------
.../james/jmap/model/mailbox/Mailbox.java | 21 ++++----
.../model/mailbox/MailboxCreateRequest.java | 11 ++--
.../model/mailbox/MailboxUpdateRequest.java | 11 ++--
.../apache/james/jmap/utils/MailboxUtils.java | 19 ++++---
.../james/jmap/json/ParsingWritingObjects.java | 4 +-
.../jmap/json/ParsingWritingObjectsTest.java | 16 ++++--
.../jmap/methods/GetMailboxesMethodTest.java | 5 +-
.../jmap/methods/JmapRequestParserImplTest.java | 12 ++---
.../methods/JmapResponseWriterImplTest.java | 20 ++++----
.../SetMailboxesCreationProcessorTest.java | 12 +++--
.../jmap/methods/SetMailboxesMethodTest.java | 6 ++-
.../SetMailboxesUpdateProcessorTest.java | 5 +-
.../SetMessagesCreationProcessorTest.java | 6 +--
.../jmap/model/GetMailboxesRequestTest.java | 5 +-
.../james/jmap/model/MessageFactoryTest.java | 6 +--
.../apache/james/jmap/model/MessageTest.java | 15 +++---
.../jmap/model/SetMailboxesRequestTest.java | 6 ++-
.../jmap/model/SetMailboxesResponseTest.java | 22 ++++----
.../jmap/model/SetMessagesResponseTest.java | 3 +-
.../james/jmap/model/mailbox/MailboxTest.java | 20 +++-----
.../model/mailbox/MailboxUpdateRequestTest.java | 10 ++--
.../apache/james/jmap/send/MailFactoryTest.java | 4 +-
.../james/jmap/utils/MailboxUtilsTest.java | 38 ++++++--------
.../SortingHierarchicalCollectionsTest.java | 54 +++++++++++---------
.../jmap/src/test/resources/json/message.json | 2 +-
38 files changed, 330 insertions(+), 241 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 3c74002..f59850a 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -101,10 +101,13 @@ public abstract class GetMailboxesMethodTest {
@Test
public void getMailboxesShouldReturnEmptyWhenIdsDoesntMatch() throws Exception {
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
+ jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
+ String removedId = jmapServer.serverProbe().getMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved").getMailboxId().serialize();
+ jmapServer.serverProbe().deleteMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
given()
.header("Authorization", accessToken.serialize())
- .body("[[\"getMailboxes\", {\"ids\": [\"notAMailboxId\"]}, \"#0\"]]")
+ .body("[[\"getMailboxes\", {\"ids\": [\"" + removedId + "\"]}, \"#0\"]]")
.when()
.post("/jmap")
.then()
@@ -114,6 +117,19 @@ public abstract class GetMailboxesMethodTest {
}
@Test
+ public void getMailboxesShouldReturnErrorWhenInvalidMailboxId() throws Exception {
+ given()
+ .header("Authorization", accessToken.serialize())
+ .body("[[\"getMailboxes\", {\"ids\": [\"invalid id\"]}, \"#0\"]]")
+ .when()
+ .post("/jmap")
+ .then()
+ .statusCode(200)
+ .body(NAME, equalTo("error"))
+ .body(ARGUMENTS + ".type", equalTo("invalidArguments"));
+ }
+
+ @Test
public void getMailboxesShouldReturnMailboxesWhenIdsMatch() throws Exception {
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, username, "INBOX");
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, username, "myMailbox");
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
index a1046a8..1fa49cc 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
@@ -39,6 +39,8 @@ import static org.hamcrest.collection.IsMapWithSize.aMapWithSize;
import org.apache.james.GuiceJamesServer;
import org.apache.james.jmap.JmapAuthentication;
import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.hamcrest.Matchers;
import org.junit.After;
@@ -565,11 +567,12 @@ public abstract class SetMailboxesMethodTest {
@Test
public void setMailboxesShouldReturnNotDestroyedWhenMailboxDoesntExist() {
+ String nonExistantMailboxId = getRemovedMailboxId().serialize();
String requestBody =
"[" +
" [ \"setMailboxes\"," +
" {" +
- " \"destroy\": [\"123\"]" +
+ " \"destroy\": [\"" + nonExistantMailboxId + "\"]" +
" }," +
" \"#0\"" +
" ]" +
@@ -584,9 +587,9 @@ public abstract class SetMailboxesMethodTest {
.statusCode(200)
.body(NAME, equalTo("mailboxesSet"))
.body(ARGUMENTS + ".notDestroyed", aMapWithSize(1))
- .body(ARGUMENTS + ".notDestroyed", hasEntry(equalTo("123"), Matchers.allOf(
+ .body(ARGUMENTS + ".notDestroyed", hasEntry(equalTo(nonExistantMailboxId), Matchers.allOf(
hasEntry(equalTo("type"), equalTo("notFound")),
- hasEntry(equalTo("description"), equalTo("The mailbox '123' was not found.")))));
+ hasEntry(equalTo("description"), equalTo("The mailbox '" + nonExistantMailboxId + "' was not found.")))));
}
@Test
@@ -705,14 +708,22 @@ public abstract class SetMailboxesMethodTest {
.body(ARGUMENTS + ".destroyed", containsInAnyOrder(parentMailboxId, childMailboxId));
}
+ private MailboxId getRemovedMailboxId() {
+ jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
+ MailboxId removedId = jmapServer.serverProbe().getMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved").getMailboxId();
+ jmapServer.serverProbe().deleteMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
+ return removedId;
+ }
+
@Test
public void setMailboxesShouldReturnNotUpdatedWhenUnknownMailbox() {
+ String unknownMailboxId = getRemovedMailboxId().serialize();
String requestBody =
"[" +
" [ \"setMailboxes\"," +
" {" +
" \"update\": {" +
- " \"unknown-update-id01\" : {" +
+ " \"" + unknownMailboxId + "\" : {" +
" \"name\" : \"yolo\"" +
" }" +
" }" +
@@ -729,9 +740,9 @@ public abstract class SetMailboxesMethodTest {
.then()
.statusCode(200)
.body(NAME, equalTo("mailboxesSet"))
- .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo("unknown-update-id01"), Matchers.allOf(
+ .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(unknownMailboxId), Matchers.allOf(
hasEntry(equalTo("type"), equalTo("notFound")),
- hasEntry(equalTo("description"), containsString("unknown-update-id01")))));
+ hasEntry(equalTo("description"), containsString(unknownMailboxId)))));
}
@Test
@@ -1177,13 +1188,14 @@ public abstract class SetMailboxesMethodTest {
jmapServer.serverProbe().createMailbox("#private", username, "myBox");
Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "myBox");
String mailboxId = mailbox.getMailboxId().serialize();
+ String badParentId = getRemovedMailboxId().serialize();
String requestBody =
"[" +
" [ \"setMailboxes\"," +
" {" +
" \"update\": {" +
" \"" + mailboxId + "\" : {" +
- " \"parentId\" : \"badParent\"" +
+ " \"parentId\" : \"" + badParentId + "\"" +
" }" +
" }" +
" }," +
@@ -1201,7 +1213,7 @@ public abstract class SetMailboxesMethodTest {
.body(NAME, equalTo("mailboxesSet"))
.body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf(
hasEntry(equalTo("type"), equalTo("notFound")),
- hasEntry(equalTo("description"), containsString("badParent")))));
+ hasEntry(equalTo("description"), containsString(badParentId)))));
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxParentNotFoundException.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxParentNotFoundException.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxParentNotFoundException.java
index aadf5eb..bfa3b38 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxParentNotFoundException.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxParentNotFoundException.java
@@ -19,13 +19,21 @@
package org.apache.james.jmap.exceptions;
+import org.apache.james.jmap.model.MailboxCreationId;
+import org.apache.james.mailbox.model.MailboxId;
+
public class MailboxParentNotFoundException extends RuntimeException {
private final String parentId;
- public MailboxParentNotFoundException(String parentId) {
- super(String.format("The parent mailbox '%s' was not found.", parentId));
- this.parentId = parentId;
+ public MailboxParentNotFoundException(MailboxId parentId) {
+ super(String.format("The parent mailbox '%s' was not found.", parentId.serialize()));
+ this.parentId = parentId.serialize();
+ }
+
+ public MailboxParentNotFoundException(MailboxCreationId parentId) {
+ super(String.format("The parent mailbox '%s' was not found.", parentId.getCreationId()));
+ this.parentId = parentId.getCreationId();
}
public String getParentId() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
index 7a4e2ed..3e739ed 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
@@ -36,6 +36,7 @@ import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
import org.apache.james.mailbox.model.MailboxQuery;
@@ -103,7 +104,7 @@ public class GetMailboxesMethod implements Method {
}
}
- private Predicate<? super Mailbox> filterMailboxesById(Optional<ImmutableList<String>> ids) {
+ private Predicate<? super Mailbox> filterMailboxesById(Optional<ImmutableList<MailboxId>> ids) {
return (mailbox -> ids.map(list -> list.contains(mailbox.getId())).orElse(true));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
index 911aa9f..5b476ef 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
@@ -149,7 +149,7 @@ public class GetMessageListMethod implements Method {
}
private void aggregate(MailboxSession mailboxSession, Multimap<MailboxPath, MessageResult> aggregation, Map.Entry<MailboxId, Collection<Long>> mailboxResults) throws MailboxNotFoundException {
- MailboxPath mailboxPath = mailboxUtils.mailboxPathFromMailboxId(mailboxResults.getKey().serialize(), mailboxSession)
+ MailboxPath mailboxPath = mailboxUtils.mailboxPathFromMailboxId(mailboxResults.getKey(), mailboxSession)
.orElseThrow(() -> new MailboxNotFoundException(mailboxResults.getKey().serialize()));
MessageManager messageManager = getMessageManager(mailboxPath, mailboxSession)
.orElseThrow(() -> new MailboxNotFoundException(mailboxPath));
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index 06c0605..cc4cb4d 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -40,11 +40,14 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxExistsException;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxId.Factory;
import org.apache.james.mailbox.model.MailboxPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.functions.ThrowingFunction;
import com.google.common.annotations.VisibleForTesting;
public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
@@ -52,24 +55,26 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
private static final Logger LOGGER = LoggerFactory.getLogger(SetMailboxesCreationProcessor.class);
private final MailboxManager mailboxManager;
- private final SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, String> sortingHierarchicalCollections;
+ private final SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, MailboxCreationId> sortingHierarchicalCollections;
private final MailboxUtils mailboxUtils;
+ private final Factory mailboxIdFactory;
@Inject
@VisibleForTesting
- SetMailboxesCreationProcessor(MailboxManager mailboxManager, MailboxUtils mailboxUtils) {
+ SetMailboxesCreationProcessor(MailboxManager mailboxManager, MailboxUtils mailboxUtils, MailboxId.Factory mailboxIdFactory) {
this.mailboxManager = mailboxManager;
this.sortingHierarchicalCollections =
- new SortingHierarchicalCollections<>(
- x -> x.getKey().getCreationId(),
+ new SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, MailboxCreationId>(
+ x -> x.getKey(),
x -> x.getValue().getParentId());
this.mailboxUtils = mailboxUtils;
+ this.mailboxIdFactory = mailboxIdFactory;
}
public SetMailboxesResponse process(SetMailboxesRequest request, MailboxSession mailboxSession) {
SetMailboxesResponse.Builder builder = SetMailboxesResponse.builder();
try {
- Map<MailboxCreationId, String> creationIdsToCreatedMailboxId = new HashMap<>();
+ Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId = new HashMap<>();
sortingHierarchicalCollections.sortFromRootToLeaf(request.getCreate().entrySet())
.forEach(entry ->
createMailbox(entry.getKey(), entry.getValue(), mailboxSession, creationIdsToCreatedMailboxId, builder));
@@ -90,7 +95,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
}
private void createMailbox(MailboxCreationId mailboxCreationId, MailboxCreateRequest mailboxRequest, MailboxSession mailboxSession,
- Map<MailboxCreationId, String> creationIdsToCreatedMailboxId, SetMailboxesResponse.Builder builder) {
+ Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, SetMailboxesResponse.Builder builder) {
try {
ensureValidMailboxName(mailboxRequest, mailboxSession);
MailboxPath mailboxPath = getMailboxPath(mailboxRequest, creationIdsToCreatedMailboxId, mailboxSession);
@@ -134,12 +139,12 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
}
}
- private MailboxPath getMailboxPath(MailboxCreateRequest mailboxRequest, Map<MailboxCreationId, String> creationIdsToCreatedMailboxId, MailboxSession mailboxSession) throws MailboxException {
+ private MailboxPath getMailboxPath(MailboxCreateRequest mailboxRequest, Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, MailboxSession mailboxSession) throws MailboxException {
if (mailboxRequest.getParentId().isPresent()) {
- String parentId = mailboxRequest.getParentId().get();
- String parentName = mailboxUtils.getMailboxNameFromId(parentId, mailboxSession)
+ MailboxCreationId parentId = mailboxRequest.getParentId().get();
+ String parentName = getMailboxNameFromId(parentId, mailboxSession)
.orElseGet(Throwing.supplier(() ->
- mailboxUtils.getMailboxNameFromId(creationIdsToCreatedMailboxId.get(MailboxCreationId.of(parentId)), mailboxSession)
+ mailboxUtils.getMailboxNameFromId(creationIdsToCreatedMailboxId.get(parentId), mailboxSession)
.orElseThrow(() -> new MailboxParentNotFoundException(parentId))
));
@@ -148,4 +153,18 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
}
return new MailboxPath(mailboxSession.getPersonalSpace(), mailboxSession.getUser().getUserName(), mailboxRequest.getName());
}
+
+ private Optional<String> getMailboxNameFromId(MailboxCreationId creationId, MailboxSession mailboxSession) {
+ ThrowingFunction<? super MailboxId, Optional<String>> toName = parentId -> mailboxUtils.getMailboxNameFromId(parentId, mailboxSession);
+ return getMailboxIdFromCreationId(creationId)
+ .flatMap(Throwing.function(toName).sneakyThrow());
+ }
+
+ private Optional<MailboxId> getMailboxIdFromCreationId(MailboxCreationId creationId) {
+ try {
+ return Optional.of(mailboxIdFactory.fromString(creationId.getCreationId()));
+ } catch (Exception e) {
+ return Optional.empty();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
index f6e225a..9fa4aab 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
@@ -38,6 +38,7 @@ import org.apache.james.jmap.utils.SortingHierarchicalCollections;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,7 +50,7 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
private static final Logger LOGGER = LoggerFactory.getLogger(SetMailboxesDestructionProcessor.class);
private final MailboxManager mailboxManager;
- private final SortingHierarchicalCollections<Map.Entry<String, Mailbox>, String> sortingHierarchicalCollections;
+ private final SortingHierarchicalCollections<Map.Entry<MailboxId, Mailbox>, MailboxId> sortingHierarchicalCollections;
private final MailboxUtils mailboxUtils;
@Inject
@@ -64,7 +65,7 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
}
public SetMailboxesResponse process(SetMailboxesRequest request, MailboxSession mailboxSession) {
- ImmutableMap<String, Mailbox> idToMailbox = mapDestroyRequests(request, mailboxSession);
+ ImmutableMap<MailboxId, Mailbox> idToMailbox = mapDestroyRequests(request, mailboxSession);
SetMailboxesResponse.Builder builder = SetMailboxesResponse.builder();
sortingHierarchicalCollections.sortFromLeafToRoot(idToMailbox.entrySet())
@@ -74,8 +75,8 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
return builder.build();
}
- private ImmutableMap<String, Mailbox> mapDestroyRequests(SetMailboxesRequest request, MailboxSession mailboxSession) {
- ImmutableMap.Builder<String, Mailbox> idToMailboxBuilder = ImmutableMap.builder();
+ private ImmutableMap<MailboxId, Mailbox> mapDestroyRequests(SetMailboxesRequest request, MailboxSession mailboxSession) {
+ ImmutableMap.Builder<MailboxId, Mailbox> idToMailboxBuilder = ImmutableMap.builder();
request.getDestroy().stream()
.map(id -> mailboxUtils.mailboxFromMailboxId(id, mailboxSession))
.filter(Optional::isPresent)
@@ -84,13 +85,13 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
return idToMailboxBuilder.build();
}
- private void notDestroyedRequests(SetMailboxesRequest request, ImmutableMap<String, Mailbox> idToMailbox, SetMailboxesResponse.Builder builder) {
+ private void notDestroyedRequests(SetMailboxesRequest request, ImmutableMap<MailboxId, Mailbox> idToMailbox, SetMailboxesResponse.Builder builder) {
request.getDestroy().stream()
.filter(id -> !idToMailbox.containsKey(id))
.forEach(id -> notDestroy(id, builder));
}
- private void destroyMailbox(Entry<String, Mailbox> entry, MailboxSession mailboxSession, SetMailboxesResponse.Builder builder) {
+ private void destroyMailbox(Entry<MailboxId, Mailbox> entry, MailboxSession mailboxSession, SetMailboxesResponse.Builder builder) {
try {
Mailbox mailbox = entry.getValue();
preconditions(mailbox, mailboxSession);
@@ -100,15 +101,15 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
} catch (MailboxHasChildException e) {
builder.notDestroyed(entry.getKey(), SetError.builder()
.type("mailboxHasChild")
- .description(String.format("The mailbox '%s' has a child.", entry.getKey()))
+ .description(String.format("The mailbox '%s' has a child.", entry.getKey().serialize()))
.build());
} catch (SystemMailboxNotUpdatableException e) {
builder.notDestroyed(entry.getKey(), SetError.builder()
.type("invalidArguments")
- .description(String.format("The mailbox '%s' is a system mailbox.", entry.getKey()))
+ .description(String.format("The mailbox '%s' is a system mailbox.", entry.getKey().serialize()))
.build());
} catch (MailboxException e) {
- String message = String.format("An error occurred when deleting the mailbox '%s'", entry.getKey());
+ String message = String.format("An error occurred when deleting the mailbox '%s'", entry.getKey().serialize());
LOGGER.error(message, e);
builder.notDestroyed(entry.getKey(), SetError.builder()
.type("anErrorOccurred")
@@ -122,7 +123,7 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
checkRole(mailbox.getRole());
}
- private void checkForChild(String id, MailboxSession mailboxSession) throws MailboxHasChildException, MailboxException {
+ private void checkForChild(MailboxId id, MailboxSession mailboxSession) throws MailboxHasChildException, MailboxException {
if (mailboxUtils.hasChildren(id, mailboxSession)) {
throw new MailboxHasChildException();
}
@@ -134,10 +135,10 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
}
}
- private void notDestroy(String id, Builder builder) {
+ private void notDestroy(MailboxId id, Builder builder) {
builder.notDestroyed(id, SetError.builder()
.type("notFound")
- .description(String.format("The mailbox '%s' was not found.", id))
+ .description(String.format("The mailbox '%s' was not found.", id.serialize()))
.build());
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
index 673e918..69a07fe 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxExistsException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import com.google.common.annotations.VisibleForTesting;
@@ -68,7 +69,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
return responseBuilder.build();
}
- private void handleUpdate(String mailboxId, MailboxUpdateRequest updateRequest, Builder responseBuilder, MailboxSession mailboxSession) {
+ private void handleUpdate(MailboxId mailboxId, MailboxUpdateRequest updateRequest, Builder responseBuilder, MailboxSession mailboxSession) {
try {
validateMailboxName(updateRequest, mailboxSession);
Mailbox mailbox = getMailbox(mailboxId, mailboxSession);
@@ -91,7 +92,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
} catch (MailboxNotFoundException e) {
responseBuilder.notUpdated(mailboxId, SetError.builder()
.type("notFound")
- .description(String.format("The mailbox '%s' was not found", mailboxId))
+ .description(String.format("The mailbox '%s' was not found", mailboxId.serialize()))
.build());
} catch (MailboxParentNotFoundException e) {
responseBuilder.notUpdated(mailboxId, SetError.builder()
@@ -122,9 +123,9 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
}
}
- private Mailbox getMailbox(String mailboxId, MailboxSession mailboxSession) throws MailboxNotFoundException {
+ private Mailbox getMailbox(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxNotFoundException {
return mailboxUtils.mailboxFromMailboxId(mailboxId, mailboxSession)
- .orElseThrow(() -> new MailboxNotFoundException(mailboxId));
+ .orElseThrow(() -> new MailboxNotFoundException(mailboxId.serialize()));
}
private void validateMailboxName(MailboxUpdateRequest updateRequest, MailboxSession mailboxSession) throws MailboxNameException {
@@ -154,7 +155,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
private void validateParent(Mailbox mailbox, MailboxUpdateRequest updateRequest, MailboxSession mailboxSession) throws MailboxException, MailboxHasChildException {
if (isParentIdInRequest(updateRequest)) {
- String newParentId = updateRequest.getParentId().get();
+ MailboxId newParentId = updateRequest.getParentId().get();
mailboxUtils.mailboxPathFromMailboxId(newParentId, mailboxSession)
.orElseThrow(() -> new MailboxParentNotFoundException(newParentId));
if (mustChangeParent(mailbox.getParentId(), newParentId) && mailboxUtils.hasChildren(mailbox.getId(), mailboxSession)) {
@@ -168,7 +169,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
&& updateRequest.getParentId().isPresent();
}
- private boolean mustChangeParent(Optional<String> currentParentId, String newParentId) {
+ private boolean mustChangeParent(Optional<MailboxId> currentParentId, MailboxId newParentId) {
return currentParentId
.map(x -> ! x.equals(newParentId))
.orElse(true);
@@ -183,7 +184,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
}
private MailboxPath computeNewMailboxPath(Mailbox mailbox, MailboxPath originMailboxPath, MailboxUpdateRequest updateRequest, MailboxSession mailboxSession) {
- Optional<String> parentId = updateRequest.getParentId();
+ Optional<MailboxId> parentId = updateRequest.getParentId();
if (parentId == null) {
return new MailboxPath(mailboxSession.getPersonalSpace(),
mailboxSession.getUser().getUserName(),
@@ -202,7 +203,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
return new MailboxPath(originMailboxPath, newName);
}
- private MailboxPath computeMailboxPathWithNewParentId(MailboxPath originMailboxPath, String parentMailboxId, MailboxSession mailboxSession) {
+ private MailboxPath computeMailboxPathWithNewParentId(MailboxPath originMailboxPath, MailboxId parentMailboxId, MailboxSession mailboxSession) {
Optional<MailboxPath> newParentMailboxPath = mailboxUtils.mailboxPathFromMailboxId(parentMailboxId, mailboxSession);
String lastName = getCurrentMailboxName(originMailboxPath, mailboxSession);
return new MailboxPath(originMailboxPath, newParentMailboxPath.get().getName() + mailboxSession.getPathDelimiter() + lastName);
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesRequest.java
index a8f59d8..6e435f8 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesRequest.java
@@ -23,6 +23,7 @@ import java.util.Optional;
import org.apache.commons.lang.NotImplementedException;
import org.apache.james.jmap.methods.JmapRequest;
+import org.apache.james.mailbox.model.MailboxId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -42,7 +43,7 @@ public class GetMailboxesRequest implements JmapRequest {
private String accountId;
private Optional<ImmutableSet<MailboxProperty>> properties;
- private Optional<ImmutableList<String>> ids;
+ private Optional<ImmutableList<MailboxId>> ids;
private Builder() {
ids = Optional.empty();
@@ -56,7 +57,7 @@ public class GetMailboxesRequest implements JmapRequest {
return this;
}
- public Builder ids(List<String> ids) {
+ public Builder ids(List<MailboxId> ids) {
if (ids != null) {
this.ids = Optional.of(ImmutableList.copyOf(ids));
}
@@ -79,10 +80,10 @@ public class GetMailboxesRequest implements JmapRequest {
}
private final Optional<String> accountId;
- private final Optional<ImmutableList<String>> ids;
+ private final Optional<ImmutableList<MailboxId>> ids;
private final Optional<ImmutableSet<MailboxProperty>> properties;
- private GetMailboxesRequest(Optional<String> accountId, Optional<ImmutableList<String>> ids, Optional<ImmutableSet<MailboxProperty>> properties) {
+ private GetMailboxesRequest(Optional<String> accountId, Optional<ImmutableList<MailboxId>> ids, Optional<ImmutableSet<MailboxProperty>> properties) {
this.accountId = accountId;
this.ids = ids;
this.properties = properties;
@@ -92,7 +93,7 @@ public class GetMailboxesRequest implements JmapRequest {
return accountId;
}
- public Optional<ImmutableList<String>> getIds() {
+ public Optional<ImmutableList<MailboxId>> getIds() {
return ids;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Message.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Message.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Message.java
index 1e334aa..e1122db 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Message.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Message.java
@@ -27,6 +27,7 @@ import java.util.function.Predicate;
import org.apache.james.jmap.methods.GetMessagesMethod;
import org.apache.james.jmap.methods.JmapResponseWriterImpl;
+import org.apache.james.mailbox.model.MailboxId;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -50,7 +51,7 @@ public class Message {
private MessageId id;
private BlobId blobId;
private String threadId;
- private ImmutableList<String> mailboxIds;
+ private ImmutableList<MailboxId> mailboxIds;
private String inReplyToMessageId;
private boolean isUnread;
private boolean isFlagged;
@@ -95,11 +96,11 @@ public class Message {
return this;
}
- public Builder mailboxId(String mailboxId) {
+ public Builder mailboxId(MailboxId mailboxId) {
return this.mailboxIds(ImmutableList.of(mailboxId));
}
- public Builder mailboxIds(List<String> mailboxIds) {
+ public Builder mailboxIds(List<MailboxId> mailboxIds) {
this.mailboxIds = ImmutableList.copyOf(mailboxIds);
return this;
}
@@ -234,7 +235,7 @@ public class Message {
private final MessageId id;
private final BlobId blobId;
private final String threadId;
- private final ImmutableList<String> mailboxIds;
+ private final ImmutableList<MailboxId> mailboxIds;
private final Optional<String> inReplyToMessageId;
private final boolean isUnread;
private final boolean isFlagged;
@@ -257,7 +258,7 @@ public class Message {
private final ImmutableList<Attachment> attachments;
private final ImmutableMap<BlobId, SubMessage> attachedMessages;
- @VisibleForTesting Message(MessageId id, BlobId blobId, String threadId, ImmutableList<String> mailboxIds, Optional<String> inReplyToMessageId, boolean isUnread, boolean isFlagged, boolean isAnswered, boolean isDraft, boolean hasAttachment, ImmutableMap<String, String> headers, Optional<Emailer> from,
+ @VisibleForTesting Message(MessageId id, BlobId blobId, String threadId, ImmutableList<MailboxId> mailboxIds, Optional<String> inReplyToMessageId, boolean isUnread, boolean isFlagged, boolean isAnswered, boolean isDraft, boolean hasAttachment, ImmutableMap<String, String> headers, Optional<Emailer> from,
ImmutableList<Emailer> to, ImmutableList<Emailer> cc, ImmutableList<Emailer> bcc, ImmutableList<Emailer> replyTo, String subject, ZonedDateTime date, long size, String preview, Optional<String> textBody, Optional<String> htmlBody, ImmutableList<Attachment> attachments,
ImmutableMap<BlobId, SubMessage> attachedMessages) {
this.id = id;
@@ -298,7 +299,7 @@ public class Message {
return threadId;
}
- public ImmutableList<String> getMailboxIds() {
+ public ImmutableList<MailboxId> getMailboxIds() {
return mailboxIds;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index c1597c2..fe090ce 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -76,7 +76,7 @@ public class MessageFactory {
.id(message.getMessageId())
.blobId(BlobId.of(String.valueOf(message.getUid())))
.threadId(message.getMessageId().serialize())
- .mailboxIds(ImmutableList.of(message.getMailboxId().serialize()))
+ .mailboxIds(ImmutableList.of(message.getMailboxId()))
.inReplyToMessageId(getHeader(mimeMessage, "in-reply-to"))
.isUnread(! message.getFlags().contains(Flags.Flag.SEEN))
.isFlagged(message.getFlags().contains(Flags.Flag.FLAGGED))
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesRequest.java
index a89031e..7d6552a 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesRequest.java
@@ -26,6 +26,7 @@ import org.apache.commons.lang.NotImplementedException;
import org.apache.james.jmap.methods.JmapRequest;
import org.apache.james.jmap.model.mailbox.MailboxCreateRequest;
import org.apache.james.jmap.model.mailbox.MailboxUpdateRequest;
+import org.apache.james.mailbox.model.MailboxId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -44,8 +45,8 @@ public class SetMailboxesRequest implements JmapRequest {
public static class Builder {
private final ImmutableMap.Builder<MailboxCreationId, MailboxCreateRequest> create;
- private final ImmutableMap.Builder<String, MailboxUpdateRequest> update;
- private final ImmutableList.Builder<String> destroy;
+ private final ImmutableMap.Builder<MailboxId, MailboxUpdateRequest> update;
+ private final ImmutableList.Builder<MailboxId> destroy;
private Builder() {
create = ImmutableMap.builder();
@@ -71,17 +72,17 @@ public class SetMailboxesRequest implements JmapRequest {
throw new NotImplementedException();
}
- public Builder update(String mailboxId, MailboxUpdateRequest mailboxUpdateRequest) {
+ public Builder update(MailboxId mailboxId, MailboxUpdateRequest mailboxUpdateRequest) {
update.put(mailboxId, mailboxUpdateRequest);
return this;
}
- public Builder update(Map<String, MailboxUpdateRequest> updates) {
+ public Builder update(Map<MailboxId, MailboxUpdateRequest> updates) {
update.putAll(updates);
return this;
}
- public Builder destroy(List<String> deletions) {
+ public Builder destroy(List<MailboxId> deletions) {
destroy.addAll(deletions);
return this;
}
@@ -92,11 +93,11 @@ public class SetMailboxesRequest implements JmapRequest {
}
private final ImmutableMap<MailboxCreationId, MailboxCreateRequest> create;
- private final ImmutableMap<String, MailboxUpdateRequest> update;
- private final ImmutableList<String> destroy;
+ private final ImmutableMap<MailboxId, MailboxUpdateRequest> update;
+ private final ImmutableList<MailboxId> destroy;
@VisibleForTesting
- SetMailboxesRequest(ImmutableMap<MailboxCreationId, MailboxCreateRequest> create, ImmutableMap<String,MailboxUpdateRequest> update, ImmutableList<String> destroy) {
+ SetMailboxesRequest(ImmutableMap<MailboxCreationId, MailboxCreateRequest> create, ImmutableMap<MailboxId,MailboxUpdateRequest> update, ImmutableList<MailboxId> destroy) {
this.create = create;
this.update = update;
this.destroy = destroy;
@@ -106,11 +107,11 @@ public class SetMailboxesRequest implements JmapRequest {
return create;
}
- public ImmutableMap<String, MailboxUpdateRequest> getUpdate() {
+ public ImmutableMap<MailboxId,MailboxUpdateRequest> getUpdate() {
return update;
}
- public ImmutableList<String> getDestroy() {
+ public ImmutableList<MailboxId> getDestroy() {
return destroy;
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
index 321aba9..eb1abf1 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.james.jmap.methods.Method;
import org.apache.james.jmap.model.mailbox.Mailbox;
+import org.apache.james.mailbox.model.MailboxId;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Objects;
@@ -38,11 +39,11 @@ public class SetMailboxesResponse implements Method.Response {
public static class Builder {
private final ImmutableMap.Builder<MailboxCreationId, Mailbox> created;
- private final ImmutableList.Builder<String> updated;
- private final ImmutableList.Builder<String> destroyed;
+ private final ImmutableList.Builder<MailboxId> updated;
+ private final ImmutableList.Builder<MailboxId> destroyed;
private final ImmutableMap.Builder<MailboxCreationId, SetError> notCreated;
- private final ImmutableMap.Builder<String, SetError> notUpdated;
- private final ImmutableMap.Builder<String, SetError> notDestroyed;
+ private final ImmutableMap.Builder<MailboxId, SetError> notUpdated;
+ private final ImmutableMap.Builder<MailboxId, SetError> notDestroyed;
private Builder() {
created = ImmutableMap.builder();
@@ -63,22 +64,22 @@ public class SetMailboxesResponse implements Method.Response {
return this;
}
- public Builder updated(String mailboxId) {
+ public Builder updated(MailboxId mailboxId) {
updated.add(mailboxId);
return this;
}
- public Builder updated(List<String> mailboxIds) {
+ public Builder updated(List<MailboxId> mailboxIds) {
updated.addAll(mailboxIds);
return this;
}
- public Builder destroyed(String mailboxId) {
+ public Builder destroyed(MailboxId mailboxId) {
destroyed.add(mailboxId);
return this;
}
- public Builder destroyed(ImmutableList<String> destroyed) {
+ public Builder destroyed(ImmutableList<MailboxId> destroyed) {
this.destroyed.addAll(destroyed);
return this;
}
@@ -93,22 +94,22 @@ public class SetMailboxesResponse implements Method.Response {
return this;
}
- public Builder notUpdated(String mailboxId, SetError setError) {
+ public Builder notUpdated(MailboxId mailboxId, SetError setError) {
notUpdated.put(mailboxId, setError);
return this;
}
- public Builder notUpdated(Map<String, SetError> notUpdated) {
+ public Builder notUpdated(Map<MailboxId, SetError> notUpdated) {
this.notUpdated.putAll(notUpdated);
return this;
}
- public Builder notDestroyed(String mailboxId, SetError setError) {
+ public Builder notDestroyed(MailboxId mailboxId, SetError setError) {
notDestroyed.put(mailboxId, setError);
return this;
}
- public Builder notDestroyed(ImmutableMap<String, SetError> notDestroyed) {
+ public Builder notDestroyed(ImmutableMap<MailboxId, SetError> notDestroyed) {
this.notDestroyed.putAll(notDestroyed);
return this;
}
@@ -119,15 +120,15 @@ public class SetMailboxesResponse implements Method.Response {
}
private final ImmutableMap<MailboxCreationId, Mailbox> created;
- private final ImmutableList<String> updated;
- private final ImmutableList<String> destroyed;
+ private final ImmutableList<MailboxId> updated;
+ private final ImmutableList<MailboxId> destroyed;
private final ImmutableMap<MailboxCreationId, SetError> notCreated;
- private final ImmutableMap<String, SetError> notUpdated;
- private final ImmutableMap<String, SetError> notDestroyed;
+ private final ImmutableMap<MailboxId,SetError> notUpdated;
+ private final ImmutableMap<MailboxId,SetError> notDestroyed;
@VisibleForTesting
- SetMailboxesResponse(ImmutableMap<MailboxCreationId, Mailbox> created, ImmutableList<String> updated, ImmutableList<String> destroyed,
- ImmutableMap<MailboxCreationId, SetError> notCreated, ImmutableMap<String, SetError> notUpdated, ImmutableMap<String, SetError> notDestroyed) {
+ SetMailboxesResponse(ImmutableMap<MailboxCreationId, Mailbox> created, ImmutableList<MailboxId> updated, ImmutableList<MailboxId> destroyed,
+ ImmutableMap<MailboxCreationId, SetError> notCreated, ImmutableMap<MailboxId, SetError> notUpdated, ImmutableMap<MailboxId, SetError> notDestroyed) {
this.created = created;
this.updated = updated;
this.destroyed = destroyed;
@@ -140,11 +141,11 @@ public class SetMailboxesResponse implements Method.Response {
return created;
}
- public ImmutableList<String> getUpdated() {
+ public ImmutableList<MailboxId> getUpdated() {
return updated;
}
- public ImmutableList<String> getDestroyed() {
+ public ImmutableList<MailboxId> getDestroyed() {
return destroyed;
}
@@ -152,11 +153,11 @@ public class SetMailboxesResponse implements Method.Response {
return notCreated;
}
- public ImmutableMap<String, SetError> getNotUpdated() {
+ public ImmutableMap<MailboxId,SetError> getNotUpdated() {
return notUpdated;
}
- public ImmutableMap<String, SetError> getNotDestroyed() {
+ public ImmutableMap<MailboxId,SetError> getNotDestroyed() {
return notDestroyed;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java
index 52436c4..cddb101 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java
@@ -23,6 +23,7 @@ import java.util.Objects;
import java.util.Optional;
import org.apache.james.jmap.methods.JmapResponseWriterImpl;
+import org.apache.james.mailbox.model.MailboxId;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -43,9 +44,9 @@ public class Mailbox {
@JsonPOJOBuilder(withPrefix = "")
public static class Builder {
- private String id;
+ private MailboxId id;
private String name;
- private Optional<String> parentId;
+ private Optional<MailboxId> parentId;
private Optional<Role> role;
private SortOrder sortOrder;
private boolean mustBeOnlyMailbox;
@@ -64,7 +65,7 @@ public class Mailbox {
parentId = Optional.empty();
}
- public Builder id(String id) {
+ public Builder id(MailboxId id) {
Preconditions.checkNotNull(id);
this.id = id;
return this;
@@ -76,7 +77,7 @@ public class Mailbox {
return this;
}
- public Builder parentId(String parentId) {
+ public Builder parentId(MailboxId parentId) {
this.parentId = Optional.ofNullable(parentId);
return this;
}
@@ -148,16 +149,16 @@ public class Mailbox {
public Mailbox build() {
Preconditions.checkState(!Strings.isNullOrEmpty(name), "'name' is mandatory");
- Preconditions.checkState(!Strings.isNullOrEmpty(id), "'id' is mandatory");
+ Preconditions.checkState(id != null, "'id' is mandatory");
return new Mailbox(id, name, parentId, role, sortOrder, mustBeOnlyMailbox, mayReadItems, mayAddItems, mayRemoveItems, mayCreateChild, mayRename, mayDelete,
totalMessages, unreadMessages, totalThreads, unreadThreads);
}
}
- private final String id;
+ private final MailboxId id;
private final String name;
- private final Optional<String> parentId;
+ private final Optional<MailboxId> parentId;
private final Optional<Role> role;
private final SortOrder sortOrder;
private final boolean mustBeOnlyMailbox;
@@ -172,7 +173,7 @@ public class Mailbox {
private final long totalThreads;
private final long unreadThreads;
- @VisibleForTesting Mailbox(String id, String name, Optional<String> parentId, Optional<Role> role, SortOrder sortOrder, boolean mustBeOnlyMailbox,
+ @VisibleForTesting Mailbox(MailboxId id, String name, Optional<MailboxId> parentId, Optional<Role> role, SortOrder sortOrder, boolean mustBeOnlyMailbox,
boolean mayReadItems, boolean mayAddItems, boolean mayRemoveItems, boolean mayCreateChild, boolean mayRename, boolean mayDelete,
long totalMessages, long unreadMessages, long totalThreads, long unreadThreads) {
@@ -194,7 +195,7 @@ public class Mailbox {
this.unreadThreads = unreadThreads;
}
- public String getId() {
+ public MailboxId getId() {
return id;
}
@@ -202,7 +203,7 @@ public class Mailbox {
return name;
}
- public Optional<String> getParentId() {
+ public Optional<MailboxId> getParentId() {
return parentId;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java
index cd1c89f..c0eb828 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java
@@ -23,6 +23,7 @@ import java.util.Objects;
import java.util.Optional;
import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.jmap.model.MailboxCreationId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -43,7 +44,7 @@ public class MailboxCreateRequest {
private Optional<String> id;
private String name;
- private Optional<String> parentId;
+ private Optional<MailboxCreationId> parentId;
private Optional<Role> role;
private Optional<SortOrder> sortOrder;
@@ -66,7 +67,7 @@ public class MailboxCreateRequest {
return this;
}
- public Builder parentId(String parentId) {
+ public Builder parentId(MailboxCreationId parentId) {
Preconditions.checkNotNull(parentId);
this.parentId = Optional.of(parentId);
return this;
@@ -91,12 +92,12 @@ public class MailboxCreateRequest {
private final Optional<String> id;
private final String name;
- private final Optional<String> parentId;
+ private final Optional<MailboxCreationId> parentId;
private final Optional<Role> role;
private final Optional<SortOrder> sortOrder;
@VisibleForTesting
- MailboxCreateRequest(Optional<String> id, String name, Optional<String> parentId, Optional<Role> role, Optional<SortOrder> sortOrder) {
+ MailboxCreateRequest(Optional<String> id, String name, Optional<MailboxCreationId> parentId, Optional<Role> role, Optional<SortOrder> sortOrder) {
this.id = id;
this.name = name;
@@ -113,7 +114,7 @@ public class MailboxCreateRequest {
return name;
}
- public Optional<String> getParentId() {
+ public Optional<MailboxCreationId> getParentId() {
return parentId;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java
index ebffb49..65af555 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java
@@ -24,6 +24,7 @@ import java.util.Optional;
import org.apache.commons.lang.NotImplementedException;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -42,7 +43,7 @@ public class MailboxUpdateRequest {
public static class Builder {
private Optional<String> name;
- private Optional<String> parentId;
+ private Optional<MailboxId> parentId;
private Optional<Role> role;
private Optional<SortOrder> sortOrder;
@@ -60,7 +61,7 @@ public class MailboxUpdateRequest {
return this;
}
- public Builder parentId(String parentId) {
+ public Builder parentId(MailboxId parentId) {
if (parentId == null) {
this.parentId = null;
} else {
@@ -86,12 +87,12 @@ public class MailboxUpdateRequest {
}
private final Optional<String> name;
- private final Optional<String> parentId;
+ private final Optional<MailboxId> parentId;
private final Optional<Role> role;
private final Optional<SortOrder> sortOrder;
@VisibleForTesting
- MailboxUpdateRequest(Optional<String> name, Optional<String> parentId, Optional<Role> role, Optional<SortOrder> sortOrder) {
+ MailboxUpdateRequest(Optional<String> name, Optional<MailboxId> parentId, Optional<Role> role, Optional<SortOrder> sortOrder) {
this.name = name;
this.parentId = parentId;
@@ -103,7 +104,7 @@ public class MailboxUpdateRequest {
return name;
}
- public Optional<String> getParentId() {
+ public Optional<MailboxId> getParentId() {
return parentId;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
index 6197c9c..3584420 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
@@ -41,7 +41,6 @@ import com.github.fge.lambdas.Throwing;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
public class MailboxUtils {
@@ -65,9 +64,9 @@ public class MailboxUtils {
MessageManager mailbox = mailboxManager.getMailbox(mailboxPath, mailboxSession);
MessageManager.MetaData mailboxMetaData = getMailboxMetaData(mailbox, mailboxSession);
return Optional.ofNullable(Mailbox.builder()
- .id(mailbox.getId().serialize())
+ .id(mailbox.getId())
.name(getName(mailboxPath, mailboxSession))
- .parentId(getParentIdFromMailboxPath(mailboxPath, mailboxSession).map(MailboxId::serialize).orElse(null))
+ .parentId(getParentIdFromMailboxPath(mailboxPath, mailboxSession).orElse(null))
.role(role)
.unreadMessages(mailboxMetaData.getUnseenCount())
.totalMessages(mailboxMetaData.getMessageCount())
@@ -97,16 +96,16 @@ public class MailboxUtils {
return name;
}
- public Optional<String> getMailboxNameFromId(String mailboxId, MailboxSession mailboxSession) throws MailboxException {
+ public Optional<String> getMailboxNameFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return getMailboxFromId(mailboxId, mailboxSession)
.map(org.apache.james.mailbox.store.mail.model.Mailbox::getName);
}
- private Optional<org.apache.james.mailbox.store.mail.model.Mailbox> getMailboxFromId(String mailboxId, MailboxSession mailboxSession) throws MailboxException {
+ private Optional<org.apache.james.mailbox.store.mail.model.Mailbox> getMailboxFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return mailboxMapperFactory.getMailboxMapper(mailboxSession)
.findMailboxWithPathLike(new MailboxPath(mailboxSession.getPersonalSpace(), mailboxSession.getUser().getUserName(), WILDCARD))
.stream()
- .filter(mailbox -> mailbox.getMailboxId().serialize().equals(mailboxId))
+ .filter(mailbox -> mailbox.getMailboxId().equals(mailboxId))
.findFirst();
}
@@ -119,7 +118,7 @@ public class MailboxUtils {
return Optional.of(getMailboxId(parent, mailboxSession));
}
- public Optional<Mailbox> mailboxFromMailboxId(String mailboxId, MailboxSession mailboxSession) {
+ public Optional<Mailbox> mailboxFromMailboxId(MailboxId mailboxId, MailboxSession mailboxSession) {
try {
return getMailboxFromId(mailboxId, mailboxSession)
.flatMap(jamesMailbox ->
@@ -143,15 +142,15 @@ public class MailboxUtils {
return mailbox.getName();
}
- public boolean hasChildren(String mailboxId, MailboxSession mailboxSession) throws MailboxException {
+ public boolean hasChildren(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return getMailboxFromId(mailboxId, mailboxSession)
.map(Throwing.function(mailbox ->
mailboxMapperFactory.getMailboxMapper(mailboxSession).hasChildren(mailbox, mailboxSession.getPathDelimiter())))
.orElse(false);
}
- public Optional<MailboxPath> mailboxPathFromMailboxId(String mailboxId, MailboxSession mailboxSession) {
- Preconditions.checkState(!Strings.isNullOrEmpty(mailboxId), "'mailboxId' is mandatory");
+ public Optional<MailboxPath> mailboxPathFromMailboxId(MailboxId mailboxId, MailboxSession mailboxSession) {
+ Preconditions.checkState(mailboxId != null, "'mailboxId' is mandatory");
Preconditions.checkState(mailboxSession != null, "'mailboxId' is mandatory");
return mailboxFromMailboxId(mailboxId, mailboxSession)
.map(mailbox -> getMailboxPath(mailbox, mailboxSession));
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjects.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjects.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjects.java
index 7723d8a..b2209a2 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjects.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjects.java
@@ -27,6 +27,8 @@ import org.apache.james.jmap.model.Emailer;
import org.apache.james.jmap.model.Message;
import org.apache.james.jmap.model.MessageId;
import org.apache.james.jmap.model.SubMessage;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -37,7 +39,7 @@ public interface ParsingWritingObjects {
MessageId MESSAGE_ID = MessageId.of("username|mailbox|1");
BlobId BLOB_ID = BlobId.of("myBlobId");
String THREAD_ID = "myThreadId";
- ImmutableList<String> MAILBOX_IDS = ImmutableList.of("mailboxId1", "mailboxId2");
+ ImmutableList<MailboxId> MAILBOX_IDS = ImmutableList.of(InMemoryId.of(1), InMemoryId.of(2));
String IN_REPLY_TO_MESSAGE_ID = "myInReplyToMessageId";
boolean IS_UNREAD = true;
boolean IS_FLAGGED = true;
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
index b001060..583f560 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
@@ -31,18 +31,26 @@ import org.apache.james.jmap.methods.JmapResponseWriterImpl;
import org.apache.james.jmap.model.Message;
import org.apache.james.jmap.model.SubMessage;
import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.junit.Before;
import org.junit.Test;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
public class ParsingWritingObjectsTest {
+
+ private ObjectMapperFactory testee;
+
+ @Before
+ public void setup() {
+ testee = new ObjectMapperFactory(new InMemoryId.Factory());
+ }
@Test
public void parsingJsonShouldWorkOnSubMessage() throws Exception {
SubMessage expected = SUB_MESSAGE;
- SubMessage subMessage = new ObjectMapperFactory(new InMemoryId.Factory()).forParsing()
+ SubMessage subMessage = testee.forParsing()
.readValue(IOUtils.toString(ClassLoader.getSystemResource("json/subMessage.json")), SubMessage.class);
assertThat(subMessage).isEqualToComparingFieldByField(expected);
@@ -52,7 +60,7 @@ public class ParsingWritingObjectsTest {
public void writingJsonShouldWorkOnSubMessage() throws Exception {
String expected = IOUtils.toString(ClassLoader.getSystemResource("json/subMessage.json"));
- String json = new ObjectMapperFactory(new InMemoryId.Factory()).forWriting()
+ String json = testee.forWriting()
.writeValueAsString(SUB_MESSAGE);
assertThatJson(json)
@@ -65,7 +73,7 @@ public class ParsingWritingObjectsTest {
public void parsingJsonShouldWorkOnMessage() throws Exception {
Message expected = MESSAGE;
- Message message = new ObjectMapperFactory(new InMemoryId.Factory()).forParsing()
+ Message message = testee.forParsing()
.readValue(IOUtils.toString(ClassLoader.getSystemResource("json/message.json")), Message.class);
assertThat(message).isEqualToComparingFieldByField(expected);
@@ -79,7 +87,7 @@ public class ParsingWritingObjectsTest {
.addFilter(JmapResponseWriterImpl.PROPERTIES_FILTER, SimpleBeanPropertyFilter.serializeAll())
.addFilter(GetMessagesMethod.HEADERS_FILTER, SimpleBeanPropertyFilter.serializeAll());
- String json = new ObjectMapperFactory(new InMemoryId.Factory()).forWriting()
+ String json = testee.forWriting()
.setFilterProvider(filterProvider)
.writeValueAsString(MESSAGE);
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index a8af679..e321085 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.MockAuthenticator;
@@ -149,7 +150,7 @@ public class GetMailboxesMethodTest {
.extracting(GetMailboxesResponse.class::cast)
.flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getId, Mailbox::getName, Mailbox::getUnreadMessages)
- .containsOnly(Tuple.tuple("1", mailboxPath.getName(), 2L));
+ .containsOnly(Tuple.tuple(InMemoryId.of(1), mailboxPath.getName(), 2L));
}
@Test
@@ -173,7 +174,7 @@ public class GetMailboxesMethodTest {
.extracting(GetMailboxesResponse.class::cast)
.flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getId, Mailbox::getName)
- .containsOnly(Tuple.tuple("1", mailboxPathToReturn.getName()));
+ .containsOnly(Tuple.tuple(InMemoryId.of(1), mailboxPathToReturn.getName()));
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
index 879de19..0a04016 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapRequestParserImplTest.java
@@ -30,20 +30,20 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class JmapRequestParserImplTest {
- private JmapRequestParserImpl jmapRequestParserImpl;
+ private JmapRequestParserImpl testee;
@Before
public void setup() {
- jmapRequestParserImpl = new JmapRequestParserImpl(new ObjectMapperFactory(new InMemoryId.Factory()));
+ testee = new JmapRequestParserImpl(new ObjectMapperFactory(new InMemoryId.Factory()));
}
-
+
@Test(expected=IllegalArgumentException.class)
public void extractJmapRequestShouldThrowWhenNullRequestClass() throws Exception {
JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("unknwonMethod"),
new ObjectNode(new JsonNodeFactory(false)).putObject("{\"id\": \"id\"}"),
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- jmapRequestParserImpl.extractJmapRequest(ProtocolRequest.deserialize(nodes), null);
+ testee.extractJmapRequest(ProtocolRequest.deserialize(nodes), null);
}
@Test
@@ -54,7 +54,7 @@ public class JmapRequestParserImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- jmapRequestParserImpl.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class);
+ testee.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class);
}
@Test
@@ -64,7 +64,7 @@ public class JmapRequestParserImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- jmapRequestParserImpl.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class);
+ testee.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class);
}
private static class RequestClass implements JmapRequest {
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
index b943a9a..48cc643 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
@@ -46,11 +46,11 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
public class JmapResponseWriterImplTest {
- private JmapResponseWriterImpl jmapResponseWriterImpl;
+ private JmapResponseWriterImpl testee;
@Before
public void setup() {
- jmapResponseWriterImpl = new JmapResponseWriterImpl(new ObjectMapperFactory(new InMemoryId.Factory()));
+ testee = new JmapResponseWriterImpl(new ObjectMapperFactory(new InMemoryId.Factory()));
}
@Ignore
@@ -60,7 +60,7 @@ public class JmapResponseWriterImplTest {
String expectedClientId = "#1";
String expectedId = "myId";
- Stream<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(Stream.of(JmapResponse
+ Stream<ProtocolResponse> response = testee.formatMethodResponse(Stream.of(JmapResponse
.builder()
.clientId(ClientId.of(expectedClientId))
.response(null)
@@ -80,7 +80,7 @@ public class JmapResponseWriterImplTest {
ResponseClass responseClass = new ResponseClass();
responseClass.id = expectedId;
- List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ List<ProtocolResponse> response = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
@@ -107,7 +107,7 @@ public class JmapResponseWriterImplTest {
responseClass.list = ImmutableList.of(new ObjectResponseClass.Foo("id", "name"));
Property property = () -> "id";
- List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ List<ProtocolResponse> response = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
@@ -132,7 +132,7 @@ public class JmapResponseWriterImplTest {
Property property = () -> "id";
@SuppressWarnings("unused")
- Stream<ProtocolResponse> ignoredResponse = jmapResponseWriterImpl.formatMethodResponse(
+ Stream<ProtocolResponse> ignoredResponse = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
@@ -141,7 +141,7 @@ public class JmapResponseWriterImplTest {
.response(responseClass)
.build()));
- List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ List<ProtocolResponse> response = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
@@ -163,7 +163,7 @@ public class JmapResponseWriterImplTest {
Property idProperty = () -> "id";
Property nameProperty = () -> "name";
- List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ List<ProtocolResponse> response = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
@@ -212,7 +212,7 @@ public class JmapResponseWriterImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode(expectedClientId)} ;
- List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ List<ProtocolResponse> response = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.clientId(ProtocolRequest.deserialize(nodes).getClientId())
@@ -235,7 +235,7 @@ public class JmapResponseWriterImplTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode(expectedClientId)} ;
- List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ List<ProtocolResponse> response = testee.formatMethodResponse(
Stream.of(JmapResponse
.builder()
.clientId(ProtocolRequest.deserialize(nodes).getClientId())
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
index d90bd63..f8f67bc 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
@@ -32,30 +32,36 @@ import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.inmemory.InMemoryId.Factory;
+import org.apache.james.mailbox.model.MailboxId;
import org.junit.Before;
import org.junit.Test;
public class SetMailboxesCreationProcessorTest {
private MailboxUtils mailboxUtils;
+ private Factory mailboxIdFactory;
private SetMailboxesCreationProcessor sut;
@Before
public void setup() {
mailboxUtils = mock(MailboxUtils.class);
- sut = new SetMailboxesCreationProcessor(mock(MailboxManager.class), mailboxUtils);
+ mailboxIdFactory = new InMemoryId.Factory();
+ sut = new SetMailboxesCreationProcessor(mock(MailboxManager.class), mailboxUtils, mailboxIdFactory);
}
@Test
public void processShouldReturnNotCreatedWhenMailboxExceptionOccured() throws Exception {
- String parentId = "parentId";
+ MailboxCreationId parentId = MailboxCreationId.of("0");
+ MailboxId parentMailboxId = mailboxIdFactory.fromString(parentId.getCreationId());
MailboxCreationId mailboxCreationId = MailboxCreationId.of("1");
SetMailboxesRequest request = SetMailboxesRequest.builder()
.create(mailboxCreationId, MailboxCreateRequest.builder().name("name").parentId(parentId).build())
.build();
MailboxSession mailboxSession = mock(MailboxSession.class);
- when(mailboxUtils.getMailboxNameFromId(parentId, mailboxSession))
+ when(mailboxUtils.getMailboxNameFromId(parentMailboxId, mailboxSession))
.thenThrow(new MailboxException());
SetMailboxesResponse setMailboxesResponse = sut.process(request, mailboxSession);
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
index 831b70c..6be6dc8 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
@@ -34,6 +34,8 @@ import org.apache.james.jmap.model.SetMailboxesResponse;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.jmap.model.mailbox.MailboxCreateRequest;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
@@ -92,7 +94,7 @@ public class SetMailboxesMethodTest {
MailboxCreateRequest fooFolder = MailboxCreateRequest.builder().name("fooFolder").build();
SetMailboxesRequest creationRequest = SetMailboxesRequest.builder().create(creationId, fooFolder).build();
- Mailbox createdfooFolder = Mailbox.builder().name("fooFolder").id("fooId").build();
+ Mailbox createdfooFolder = Mailbox.builder().name("fooFolder").id(InMemoryId.of(123)).build();
SetMailboxesResponse creationResponse = SetMailboxesResponse.builder().created(creationId, createdfooFolder).build();
JmapResponse jmapResponse = JmapResponse.builder()
.response(creationResponse)
@@ -113,7 +115,7 @@ public class SetMailboxesMethodTest {
@Test
public void processShouldCallDestructorProcessorWhenCreationRequest() {
- ImmutableList<String> deletions = ImmutableList.of("1");
+ ImmutableList<MailboxId> deletions = ImmutableList.of(InMemoryId.of(1));
SetMailboxesRequest destructionRequest = SetMailboxesRequest.builder().destroy(deletions).build();
SetMailboxesResponse destructionResponse = SetMailboxesResponse.builder().destroyed(deletions).build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
index 204365f..0fdc0a5 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
@@ -34,6 +34,7 @@ import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.MailboxPath;
import org.junit.Before;
import org.junit.Test;
@@ -56,8 +57,8 @@ public class SetMailboxesUpdateProcessorTest {
@Test
public void processShouldReturnNotUpdatedWhenMailboxExceptionOccured() throws Exception {
// Given
- String mailboxId = "1";
- String newParentId = "newParentId";
+ InMemoryId mailboxId = InMemoryId.of(1);
+ InMemoryId newParentId = InMemoryId.of(2);
MailboxPath newParentMailboxPath = new MailboxPath("#private", "user", "newParentName");
SetMailboxesRequest request = SetMailboxesRequest.builder()
.update(mailboxId, MailboxUpdateRequest.builder().parentId(newParentId).build())
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
index 79bc2f0..e65a3c6 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
@@ -61,11 +61,11 @@ import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.AttachmentNotFoundException;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.mailbox.store.TestId;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.mailet.Mail;
@@ -80,9 +80,9 @@ public class SetMessagesCreationProcessorTest {
private static final String USER = "user@example.com";
private static final String OUTBOX = "outbox";
- private static final TestId OUTBOX_ID = TestId.of(12345);
+ private static final InMemoryId OUTBOX_ID = InMemoryId.of(12345);
private static final String DRAFTS = "drafts";
- private static final TestId DRAFTS_ID = TestId.of(12);
+ private static final InMemoryId DRAFTS_ID = InMemoryId.of(12);
private static final String NAMESPACE = "#private";
private final CreationMessage.Builder creationMessageBuilder = CreationMessage.builder()
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[05/10] james-project git commit: JAMES-1818 Use more MailboxId
instead of String when possible
Posted by ro...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/GetMailboxesRequestTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/GetMailboxesRequestTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/GetMailboxesRequestTest.java
index ca78fd8..52e663f 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/GetMailboxesRequestTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/GetMailboxesRequestTest.java
@@ -22,6 +22,7 @@ package org.apache.james.jmap.model;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
@@ -50,10 +51,10 @@ public class GetMailboxesRequestTest {
@Test
public void idsShouldBePresentWhenListIsNotEmpty() {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
- .ids(ImmutableList.of("123"))
+ .ids(ImmutableList.of(InMemoryId.of(123)))
.build();
assertThat(getMailboxesRequest.getIds()).isPresent();
- assertThat(getMailboxesRequest.getIds().get()).containsExactly("123");
+ assertThat(getMailboxesRequest.getIds().get()).containsExactly(InMemoryId.of(123));
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
index 5a22883..d489272 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
@@ -32,10 +32,10 @@ import javax.mail.Flags.Flag;
import org.apache.commons.io.IOUtils;
import org.apache.james.jmap.model.MessageFactory.MetaDataWithContent;
import org.apache.james.jmap.utils.HtmlTextExtractor;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.Cid;
import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.mailbox.store.TestId;
import org.junit.Before;
import org.junit.Test;
@@ -44,7 +44,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public class MessageFactoryTest {
- private static final TestId MAILBOX_ID = TestId.of(18L);
+ private static final InMemoryId MAILBOX_ID = InMemoryId.of(18L);
private static final ZoneId UTC_ZONE_ID = ZoneId.of("Z");
private static final ZonedDateTime ZONED_DATE = ZonedDateTime.of(2015, 07, 14, 12, 30, 42, 0, UTC_ZONE_ID);
private static final Date INTERNAL_DATE = Date.from(ZONED_DATE.toInstant());
@@ -145,7 +145,7 @@ public class MessageFactoryTest {
.id(MessageId.of("user|box|2"))
.blobId(BlobId.of("2"))
.threadId("user|box|2")
- .mailboxIds(ImmutableList.of(MAILBOX_ID.serialize()))
+ .mailboxIds(ImmutableList.of(MAILBOX_ID))
.inReplyToMessageId("<SN...@phx.gbl>")
.headers(headersMap)
.from(user)
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
index 8953bc1..3ae8f28 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.time.ZonedDateTime;
import java.util.Optional;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
@@ -99,13 +100,13 @@ public class MessageTest {
@Test
public void buildShouldWorkWhenMandatoryFieldsArePresent() {
ZonedDateTime currentDate = ZonedDateTime.now();
- Message expected = new Message(MessageId.of("user|box|1"), BlobId.of("blobId"), "threadId", ImmutableList.of("mailboxId"), Optional.empty(), false, false, false, false, false, ImmutableMap.of("key", "value"), Optional.empty(),
+ Message expected = new Message(MessageId.of("user|box|1"), BlobId.of("blobId"), "threadId", ImmutableList.of(InMemoryId.of(456)), Optional.empty(), false, false, false, false, false, ImmutableMap.of("key", "value"), Optional.empty(),
ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), "subject", currentDate, 123, "preview", Optional.empty(), Optional.empty(), ImmutableList.of(), ImmutableMap.of());
Message tested = Message.builder()
.id(MessageId.of("user|box|1"))
.blobId(BlobId.of("blobId"))
.threadId("threadId")
- .mailboxIds(ImmutableList.of("mailboxId"))
+ .mailboxIds(ImmutableList.of(InMemoryId.of(456)))
.headers(ImmutableMap.of("key", "value"))
.subject("subject")
.size(123)
@@ -129,7 +130,7 @@ public class MessageTest {
.id(MessageId.of("user|box|1"))
.blobId(BlobId.of("blobId"))
.threadId("threadId")
- .mailboxIds(ImmutableList.of("mailboxId"))
+ .mailboxIds(ImmutableList.of(InMemoryId.of(456)))
.headers(ImmutableMap.of("key", "value"))
.subject("subject")
.size(123)
@@ -160,7 +161,7 @@ public class MessageTest {
MessageId.of("user|box|1"),
BlobId.of("blobId"),
"threadId",
- ImmutableList.of("mailboxId"),
+ ImmutableList.of(InMemoryId.of(456)),
Optional.of("inReplyToMessageId"),
true,
true,
@@ -185,7 +186,7 @@ public class MessageTest {
.id(MessageId.of("user|box|1"))
.blobId(BlobId.of("blobId"))
.threadId("threadId")
- .mailboxIds(ImmutableList.of("mailboxId"))
+ .mailboxIds(ImmutableList.of(InMemoryId.of(456)))
.inReplyToMessageId("inReplyToMessageId")
.isUnread(true)
.isFlagged(true)
@@ -215,7 +216,7 @@ public class MessageTest {
.id(MessageId.of("user|box|1"))
.blobId(BlobId.of("blobId"))
.threadId("threadId")
- .mailboxIds(ImmutableList.of("mailboxId"))
+ .mailboxIds(ImmutableList.of(InMemoryId.of(456)))
.headers(ImmutableMap.of("key", "value"))
.subject("subject")
.size(1)
@@ -235,7 +236,7 @@ public class MessageTest {
.id(MessageId.of("user|box|1"))
.blobId(BlobId.of("blobId"))
.threadId("threadId")
- .mailboxIds(ImmutableList.of("mailboxId"))
+ .mailboxIds(ImmutableList.of(InMemoryId.of(456)))
.headers(ImmutableMap.of("key", "value"))
.subject("subject")
.size(1)
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesRequestTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesRequestTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesRequestTest.java
index 9a0d984..e2d884f 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesRequestTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesRequestTest.java
@@ -24,6 +24,8 @@ import org.apache.commons.lang.NotImplementedException;
import org.apache.james.jmap.model.mailbox.MailboxCreateRequest;
import org.apache.james.jmap.model.mailbox.MailboxUpdateRequest;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
@@ -45,11 +47,11 @@ public class SetMailboxesRequestTest {
public void builderShouldWork() throws MailboxException {
//Given
MailboxCreationId creationId = MailboxCreationId.of("creationId");
- String mailboxId = "mailboxId";
+ InMemoryId mailboxId = InMemoryId.of(123);
MailboxCreateRequest mailboxRequest = MailboxCreateRequest.builder()
.name("mailboxRequest")
.build();
- ImmutableList<String> destroy = ImmutableList.of("destroyId");
+ ImmutableList<MailboxId> destroy = ImmutableList.of(InMemoryId.of(456));
MailboxUpdateRequest mailboxUpdateRequest = MailboxUpdateRequest.builder()
.name("mailboxUpdateRequest")
.build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesResponseTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesResponseTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesResponseTest.java
index 959fce6..ec735f3 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesResponseTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMailboxesResponseTest.java
@@ -22,6 +22,8 @@ package org.apache.james.jmap.model;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.jmap.model.mailbox.Mailbox;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
@@ -33,14 +35,14 @@ public class SetMailboxesResponseTest {
public void builderShouldWork() {
ImmutableMap<MailboxCreationId, Mailbox> created = ImmutableMap.of(MailboxCreationId.of("1"),
Mailbox.builder()
- .id("1")
+ .id(InMemoryId.of(1))
.name("myBox")
.build());
- ImmutableList<String> updated = ImmutableList.of("2");
- ImmutableList<String> destroyed = ImmutableList.of("3");
+ ImmutableList<MailboxId> updated = ImmutableList.of(InMemoryId.of(2));
+ ImmutableList<MailboxId> destroyed = ImmutableList.of(InMemoryId.of(3));
ImmutableMap<MailboxCreationId, SetError> notCreated = ImmutableMap.of(MailboxCreationId.of("dead-beef-defec8"), SetError.builder().type("created").build());
- ImmutableMap<String, SetError> notUpdated = ImmutableMap.of("4", SetError.builder().type("updated").build());
- ImmutableMap<String, SetError> notDestroyed = ImmutableMap.of("5", SetError.builder().type("destroyed").build());
+ ImmutableMap<MailboxId, SetError> notUpdated = ImmutableMap.of(InMemoryId.of(4), SetError.builder().type("updated").build());
+ ImmutableMap<MailboxId, SetError> notDestroyed = ImmutableMap.of(InMemoryId.of(5), SetError.builder().type("destroyed").build());
SetMailboxesResponse expected = new SetMailboxesResponse(created, updated, destroyed, notCreated, notUpdated, notDestroyed);
SetMailboxesResponse setMessagesResponse = SetMailboxesResponse.builder()
@@ -61,9 +63,9 @@ public class SetMailboxesResponseTest {
SetMailboxesResponse.Builder emptyBuilder = SetMailboxesResponse.builder();
SetMailboxesResponse testee = SetMailboxesResponse.builder()
.created(buildMailbox(MailboxCreationId.of("1")))
- .destroyed("2")
+ .destroyed(InMemoryId.of(2))
.notCreated(ImmutableMap.of(MailboxCreationId.of("dead-beef-defec8"), SetError.builder().type("type").build()))
- .notDestroyed(ImmutableMap.of("3", SetError.builder().type("type").build()))
+ .notDestroyed(ImmutableMap.of(InMemoryId.of(3), SetError.builder().type("type").build()))
.build();
// When
@@ -74,7 +76,7 @@ public class SetMailboxesResponseTest {
private ImmutableMap<MailboxCreationId, Mailbox> buildMailbox(MailboxCreationId mailboxId) {
return ImmutableMap.of(mailboxId, Mailbox.builder()
- .id(mailboxId.getCreationId())
+ .id(InMemoryId.of(Long.valueOf(mailboxId.getCreationId())))
.name(mailboxId.getCreationId())
.build());
}
@@ -100,10 +102,10 @@ public class SetMailboxesResponseTest {
@Test
public void mergeIntoShouldMergeDestroyedLists() {
// Given
- String buildersDestroyedMessageId = "1";
+ InMemoryId buildersDestroyedMessageId = InMemoryId.of(1);
SetMailboxesResponse.Builder nonEmptyBuilder = SetMailboxesResponse.builder()
.destroyed(buildersDestroyedMessageId);
- String destroyedMessageId = "2";
+ InMemoryId destroyedMessageId = InMemoryId.of(2);
SetMailboxesResponse testee = SetMailboxesResponse.builder()
.destroyed(destroyedMessageId)
.build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMessagesResponseTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMessagesResponseTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMessagesResponseTest.java
index 24402a9..e79a044 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMessagesResponseTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/SetMessagesResponseTest.java
@@ -25,6 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.time.ZonedDateTime;
import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
@@ -58,7 +59,7 @@ public class SetMessagesResponseTest {
.id(MessageId.of("user|created|1"))
.blobId(BlobId.of("blobId"))
.threadId("threadId")
- .mailboxIds(ImmutableList.of("mailboxId"))
+ .mailboxIds(ImmutableList.of(InMemoryId.of(123)))
.headers(ImmutableMap.of("key", "value"))
.subject("subject")
.size(123)
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java
index 760d890..1ac869f 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.junit.Test;
public class MailboxTest {
@@ -45,36 +46,29 @@ public class MailboxTest {
}
@Test(expected=IllegalStateException.class)
- public void buildShouldThrowWhenIdIsEmpty() {
- Mailbox.builder()
- .id("")
- .build();
- }
-
- @Test(expected=IllegalStateException.class)
public void buildShouldThrowWhenNameIsNull() {
Mailbox.builder()
- .id("id")
+ .id(InMemoryId.of(1))
.build();
}
@Test(expected=IllegalStateException.class)
public void buildShouldThrowWhenNameIsEmpty() {
Mailbox.builder()
- .id("id")
+ .id(InMemoryId.of(1))
.name("")
.build();
}
@Test
public void buildShouldWork() {
- Mailbox expectedMailbox = new Mailbox("id", "name", Optional.of("parentId"), Optional.of(Role.DRAFTS), SortOrder.of(123),
+ Mailbox expectedMailbox = new Mailbox(InMemoryId.of(1), "name", Optional.of(InMemoryId.of(0)), Optional.of(Role.DRAFTS), SortOrder.of(123),
true, true, true, true, true, true, true, 456, 789, 741, 852);
Mailbox mailbox = Mailbox.builder()
- .id("id")
+ .id(InMemoryId.of(1))
.name("name")
- .parentId("parentId")
+ .parentId(InMemoryId.of(0))
.role(Optional.of(Role.DRAFTS))
.sortOrder(SortOrder.of(123))
.mustBeOnlyMailbox(true)
@@ -96,7 +90,7 @@ public class MailboxTest {
@Test
public void parentIdDefaultValueIsEmpty() {
Mailbox mailbox = Mailbox.builder()
- .id("id")
+ .id(InMemoryId.of(0))
.name("name")
.build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequestTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequestTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequestTest.java
index a2ec816..1623dd8 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequestTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequestTest.java
@@ -23,6 +23,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
import org.junit.Test;
public class MailboxUpdateRequestTest {
@@ -32,7 +34,7 @@ public class MailboxUpdateRequestTest {
//Given
MailboxUpdateRequest testee = MailboxUpdateRequest.builder().name("my box").build() ;
//When
- Optional<String> actual = testee.getParentId();
+ Optional<MailboxId> actual = testee.getParentId();
//Then
assertThat(actual).isEmpty();
}
@@ -42,7 +44,7 @@ public class MailboxUpdateRequestTest {
//Given
MailboxUpdateRequest testee = MailboxUpdateRequest.builder().name("my box").parentId(null).build() ;
//When
- Optional<String> actual = testee.getParentId();
+ Optional<MailboxId> actual = testee.getParentId();
//Then
assertThat(actual).isNull();
}
@@ -50,10 +52,10 @@ public class MailboxUpdateRequestTest {
@Test
public void getParentIdShouldReturnParentIdWhenParentIdGiven() throws Exception {
//Given
- String expected = "A";
+ InMemoryId expected = InMemoryId.of(123);
MailboxUpdateRequest testee = MailboxUpdateRequest.builder().parentId(expected).name("my box").build() ;
//When
- Optional<String> actual = testee.getParentId();
+ Optional<MailboxId> actual = testee.getParentId();
//Then
assertThat(actual).contains(expected);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
index eb97d96..e0a3099 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/MailFactoryTest.java
@@ -36,7 +36,7 @@ import org.apache.james.jmap.utils.HtmlTextExtractor;
import org.apache.james.jmap.utils.MailboxBasedHtmlTextExtractor;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.store.TestId;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -70,7 +70,7 @@ public class MailFactoryTest {
.internalDate(new Date())
.sharedContent(new SharedByteArrayInputStream(content.getBytes(Charsets.UTF_8)))
.attachments(ImmutableList.of())
- .mailboxId(TestId.of(3))
+ .mailboxId(InMemoryId.of(3))
.messageId(MessageId.of("test|test|2"))
.build();
HtmlTextExtractor htmlTextExtractor = new MailboxBasedHtmlTextExtractor(new DefaultTextExtractor());
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
index e233e9d..6c76622 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
@@ -26,6 +26,7 @@ import java.util.Optional;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.MailboxId;
@@ -63,8 +64,6 @@ public class MailboxUtilsTest {
Optional<Mailbox> optionalMailbox = sut.mailboxFromMailboxPath(mailboxPath, mailboxSession);
assertThat(optionalMailbox).isPresent();
- Mailbox mailbox = optionalMailbox.get();
- assertThat(mailbox.getId()).isNotEmpty();
}
@Test
@@ -111,7 +110,7 @@ public class MailboxUtilsTest {
.findMailboxByPath(mailboxPath)
.getMailboxId();
- Optional<String> optionalName = sut.getMailboxNameFromId(mailboxId.serialize(), mailboxSession);
+ Optional<String> optionalName = sut.getMailboxNameFromId(mailboxId, mailboxSession);
assertThat(optionalName).isPresent();
String name = optionalName.get();
assertThat(name).isEqualTo(expected);
@@ -119,7 +118,7 @@ public class MailboxUtilsTest {
@Test
public void getMailboxNameFromIdShouldReturnEmptyWhenMailboxDoesntExist() throws Exception {
- Optional<String> optionalName = sut.getMailboxNameFromId("unknown", mailboxSession);
+ Optional<String> optionalName = sut.getMailboxNameFromId(InMemoryId.of(987), mailboxSession);
assertThat(optionalName).isEmpty();
}
@@ -172,14 +171,14 @@ public class MailboxUtilsTest {
.findMailboxByPath(mailboxPath)
.getMailboxId();
- Optional<Mailbox> mailbox = sut.mailboxFromMailboxId(mailboxId.serialize(), mailboxSession);
+ Optional<Mailbox> mailbox = sut.mailboxFromMailboxId(mailboxId, mailboxSession);
assertThat(mailbox).isPresent();
- assertThat(mailbox.get().getId()).isEqualTo(mailboxId.serialize());
+ assertThat(mailbox.get().getId()).isEqualTo(mailboxId);
}
@Test
public void mailboxFromMailboxIdShouldReturnAbsentWhenDoesntExist() throws Exception {
- Optional<Mailbox> mailbox = sut.mailboxFromMailboxId("123", mailboxSession);
+ Optional<Mailbox> mailbox = sut.mailboxFromMailboxId(InMemoryId.of(123), mailboxSession);
assertThat(mailbox).isEmpty();
}
@@ -191,14 +190,14 @@ public class MailboxUtilsTest {
.findMailboxByPath(mailboxPath)
.getMailboxId();
- Optional<MailboxPath> actual = sut.mailboxPathFromMailboxId(mailboxId.serialize(), mailboxSession);
+ Optional<MailboxPath> actual = sut.mailboxPathFromMailboxId(mailboxId, mailboxSession);
assertThat(actual).isPresent();
assertThat(actual.get()).isEqualTo(mailboxPath);
}
@Test
public void mailboxPathFromMailboxIdShouldReturnAbsentWhenDoesntExist() throws Exception {
- Optional<MailboxPath> mailboxPath = sut.mailboxPathFromMailboxId("123", mailboxSession);
+ Optional<MailboxPath> mailboxPath = sut.mailboxPathFromMailboxId(InMemoryId.of(123), mailboxSession);
assertThat(mailboxPath).isEmpty();
}
@@ -209,7 +208,7 @@ public class MailboxUtilsTest {
@Test(expected = IllegalStateException.class)
public void mailboxPathFromMailboxIdShouldThrowWhenNullMailboxSession() throws Exception {
- sut.mailboxPathFromMailboxId("A", null);
+ sut.mailboxPathFromMailboxId(InMemoryId.of(123), null);
}
@Test(expected = IllegalStateException.class)
@@ -217,11 +216,6 @@ public class MailboxUtilsTest {
sut.mailboxPathFromMailboxId(null, null);
}
- @Test(expected = IllegalStateException.class)
- public void mailboxPathFromMailboxIdShouldReturnAbsentWhenEmptyMailboxId() throws Exception {
- sut.mailboxPathFromMailboxId("", mailboxSession);
- }
-
@Test
public void getMailboxPathShouldReturnThePathWhenRootMailbox() throws Exception {
MailboxPath expected = new MailboxPath("#private", user, "myBox");
@@ -231,7 +225,7 @@ public class MailboxUtilsTest {
.getMailboxId();
Mailbox mailbox = Mailbox.builder()
- .id(mailboxId.serialize())
+ .id(mailboxId)
.name("myBox")
.build();
@@ -254,9 +248,9 @@ public class MailboxUtilsTest {
.getMailboxId();
Mailbox mailbox = Mailbox.builder()
- .id(mailboxId.serialize())
+ .id(mailboxId)
.name("myBox")
- .parentId(parentId.serialize())
+ .parentId(parentId)
.build();
MailboxPath mailboxPath = sut.getMailboxPath(mailbox, mailboxSession);
@@ -281,9 +275,9 @@ public class MailboxUtilsTest {
.getMailboxId();
Mailbox mailbox = Mailbox.builder()
- .id(mailboxId.serialize())
+ .id(mailboxId)
.name("myBox")
- .parentId(childId.serialize())
+ .parentId(childId)
.build();
MailboxPath mailboxPath = sut.getMailboxPath(mailbox, mailboxSession);
@@ -298,7 +292,7 @@ public class MailboxUtilsTest {
.findMailboxByPath(mailboxPath)
.getMailboxId();
- assertThat(sut.hasChildren(mailboxId.serialize(), mailboxSession)).isFalse();
+ assertThat(sut.hasChildren(mailboxId, mailboxSession)).isFalse();
}
@Test
@@ -312,6 +306,6 @@ public class MailboxUtilsTest {
MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.myBox");
mailboxManager.createMailbox(mailboxPath, mailboxSession);
- assertThat(sut.hasChildren(parentId.serialize(), mailboxSession)).isTrue();
+ assertThat(sut.hasChildren(parentId, mailboxSession)).isTrue();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SortingHierarchicalCollectionsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SortingHierarchicalCollectionsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SortingHierarchicalCollectionsTest.java
index 1437f88..732b05c 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SortingHierarchicalCollectionsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SortingHierarchicalCollectionsTest.java
@@ -26,14 +26,22 @@ import java.util.stream.Collectors;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.jmap.utils.DependencyGraph.CycleDetectedException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.model.MailboxId;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
public class SortingHierarchicalCollectionsTest {
+ private static final InMemoryId INBOX_ID = InMemoryId.of(0);
+ private static final InMemoryId A_ID = InMemoryId.of(1);
+ private static final InMemoryId B_ID = InMemoryId.of(2);
+ private static final InMemoryId C_ID = InMemoryId.of(3);
+ private static final InMemoryId D_ID = InMemoryId.of(4);
+ private static final InMemoryId E_ID = InMemoryId.of(5);
- private SortingHierarchicalCollections<Mailbox, String> sut;
+ private SortingHierarchicalCollections<Mailbox, MailboxId> sut;
@Before
public void setup() {
@@ -43,12 +51,12 @@ public class SortingHierarchicalCollectionsTest {
@Test
public void sortFromRootToLeafShouldReturnOrderedMailbox() {
// Given
- Mailbox inbox = Mailbox.builder().name("INBOX").id("INBOX").build();
- Mailbox a = Mailbox.builder().name("A").id("A").parentId("INBOX").build();
- Mailbox b = Mailbox.builder().name("B").id("B").parentId("INBOX").build();
- Mailbox c = Mailbox.builder().name("C").id("C").parentId("B").build();
- Mailbox d = Mailbox.builder().name("D").id("D").parentId("A").build();
- Mailbox e = Mailbox.builder().name("E").id("E").parentId("C").build();
+ Mailbox inbox = Mailbox.builder().name("INBOX").id(INBOX_ID).build();
+ Mailbox a = Mailbox.builder().name("A").id(A_ID).parentId(INBOX_ID).build();
+ Mailbox b = Mailbox.builder().name("B").id(B_ID).parentId(INBOX_ID).build();
+ Mailbox c = Mailbox.builder().name("C").id(C_ID).parentId(B_ID).build();
+ Mailbox d = Mailbox.builder().name("D").id(D_ID).parentId(A_ID).build();
+ Mailbox e = Mailbox.builder().name("E").id(E_ID).parentId(C_ID).build();
ImmutableList<Mailbox> input = ImmutableList.of(b, c, d, a, inbox, e);
// When
@@ -67,9 +75,9 @@ public class SortingHierarchicalCollectionsTest {
@Test
public void sortFromRootToLeafOrphanMailboxesShouldReturnInput() {
- Mailbox a = Mailbox.builder().name("A").id("A").build();
- Mailbox b = Mailbox.builder().name("B").id("B").build();
- Mailbox c = Mailbox.builder().name("C").id("C").build();
+ Mailbox a = Mailbox.builder().name("A").id(A_ID).build();
+ Mailbox b = Mailbox.builder().name("B").id(B_ID).build();
+ Mailbox c = Mailbox.builder().name("C").id(C_ID).build();
ImmutableList<Mailbox> input = ImmutableList.of(a, b, c);
List<String> result = sut.sortFromRootToLeaf(input).stream()
@@ -81,8 +89,8 @@ public class SortingHierarchicalCollectionsTest {
@Test(expected=CycleDetectedException.class)
public void sortFromRootToLeafWithLoopShouldThrow() {
- Mailbox a = Mailbox.builder().name("A").id("A").parentId("B").build();
- Mailbox b = Mailbox.builder().name("B").id("B").parentId("A").build();
+ Mailbox a = Mailbox.builder().name("A").id(A_ID).parentId(B_ID).build();
+ Mailbox b = Mailbox.builder().name("B").id(B_ID).parentId(A_ID).build();
ImmutableList<Mailbox> input = ImmutableList.of(a, b);
@@ -92,12 +100,12 @@ public class SortingHierarchicalCollectionsTest {
@Test
public void sortFromLeafToRootShouldReturnOrderedMailbox() {
//Given
- Mailbox inbox = Mailbox.builder().name("INBOX").id("INBOX").build();
- Mailbox a = Mailbox.builder().name("A").id("A").parentId("INBOX").build();
- Mailbox b = Mailbox.builder().name("B").id("B").parentId("INBOX").build();
- Mailbox c = Mailbox.builder().name("C").id("C").parentId("B").build();
- Mailbox d = Mailbox.builder().name("D").id("D").parentId("A").build();
- Mailbox e = Mailbox.builder().name("E").id("E").parentId("C").build();
+ Mailbox inbox = Mailbox.builder().name("INBOX").id(INBOX_ID).build();
+ Mailbox a = Mailbox.builder().name("A").id(A_ID).parentId(INBOX_ID).build();
+ Mailbox b = Mailbox.builder().name("B").id(B_ID).parentId(INBOX_ID).build();
+ Mailbox c = Mailbox.builder().name("C").id(C_ID).parentId(B_ID).build();
+ Mailbox d = Mailbox.builder().name("D").id(D_ID).parentId(A_ID).build();
+ Mailbox e = Mailbox.builder().name("E").id(E_ID).parentId(C_ID).build();
ImmutableList<Mailbox> input = ImmutableList.of(b, c, d, a, inbox, e);
@@ -116,9 +124,9 @@ public class SortingHierarchicalCollectionsTest {
@Test
public void sortFromLeafToRootOrphanMailboxesShouldReturnInput() {
- Mailbox a = Mailbox.builder().name("A").id("A").build();
- Mailbox b = Mailbox.builder().name("B").id("B").build();
- Mailbox c = Mailbox.builder().name("C").id("C").build();
+ Mailbox a = Mailbox.builder().name("A").id(A_ID).build();
+ Mailbox b = Mailbox.builder().name("B").id(B_ID).build();
+ Mailbox c = Mailbox.builder().name("C").id(C_ID).build();
ImmutableList<Mailbox> input = ImmutableList.of(a, b, c);
List<String> result = sut.sortFromLeafToRoot(input).stream()
@@ -130,8 +138,8 @@ public class SortingHierarchicalCollectionsTest {
@Test(expected=CycleDetectedException.class)
public void sortFromLeafToRootWithLoopShouldThrow() {
- Mailbox a = Mailbox.builder().name("A").id("A").parentId("B").build();
- Mailbox b = Mailbox.builder().name("B").id("B").parentId("A").build();
+ Mailbox a = Mailbox.builder().name("A").id(A_ID).parentId(B_ID).build();
+ Mailbox b = Mailbox.builder().name("B").id(B_ID).parentId(A_ID).build();
ImmutableList<Mailbox> input = ImmutableList.of(a, b);
http://git-wip-us.apache.org/repos/asf/james-project/blob/8ec9ab93/server/protocols/jmap/src/test/resources/json/message.json
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/resources/json/message.json b/server/protocols/jmap/src/test/resources/json/message.json
index 72d37bd..e246358 100644
--- a/server/protocols/jmap/src/test/resources/json/message.json
+++ b/server/protocols/jmap/src/test/resources/json/message.json
@@ -2,7 +2,7 @@
"id": "username|mailbox|1",
"blobId": "myBlobId",
"threadId": "myThreadId",
- "mailboxIds": ["mailboxId1", "mailboxId2"],
+ "mailboxIds": ["1", "2"],
"inReplyToMessageId": "myInReplyToMessageId",
"isUnread": true,
"isFlagged": true,
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[04/10] james-project git commit: JAMES-1818 Use getMailboxById in
MailboxUtils
Posted by ro...@apache.org.
JAMES-1818 Use getMailboxById in MailboxUtils
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/df3a8a0b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/df3a8a0b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/df3a8a0b
Branch: refs/heads/master
Commit: df3a8a0bb2927e8af394d0e8e1985a7d4d9d168c
Parents: 22ed8ef
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Aug 30 17:14:06 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:00 2016 +0200
----------------------------------------------------------------------
.../apache/james/jmap/utils/MailboxUtils.java | 60 ++++++++++----------
.../jmap/methods/GetMailboxesMethodTest.java | 2 +-
.../james/jmap/utils/MailboxUtilsTest.java | 2 +-
3 files changed, 33 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/df3a8a0b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
index 8bb4ba3..bfb9acc 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
@@ -31,13 +31,14 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.mail.MailboxMapperFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.functions.ThrowingFunction;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
@@ -46,38 +47,40 @@ public class MailboxUtils {
private static final boolean DONT_RESET_RECENT = false;
private static final Logger LOGGER = LoggerFactory.getLogger(MailboxUtils.class);
- private static final String WILDCARD = "%";
private final MailboxManager mailboxManager;
- private final MailboxMapperFactory mailboxMapperFactory;
@Inject
@VisibleForTesting
- public MailboxUtils(MailboxManager mailboxManager, MailboxMapperFactory mailboxMapperFactory) {
+ public MailboxUtils(MailboxManager mailboxManager) {
this.mailboxManager = mailboxManager;
- this.mailboxMapperFactory = mailboxMapperFactory;
}
public Optional<Mailbox> mailboxFromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) {
try {
- Optional<Role> role = Role.from(mailboxPath.getName());
MessageManager mailbox = mailboxManager.getMailbox(mailboxPath, mailboxSession);
- MessageManager.MetaData mailboxMetaData = getMailboxMetaData(mailbox, mailboxSession);
- return Optional.ofNullable(Mailbox.builder()
- .id(mailbox.getId())
- .name(getName(mailboxPath, mailboxSession))
- .parentId(getParentIdFromMailboxPath(mailboxPath, mailboxSession).orElse(null))
- .role(role)
- .unreadMessages(mailboxMetaData.getUnseenCount())
- .totalMessages(mailboxMetaData.getMessageCount())
- .sortOrder(SortOrder.getSortOrder(role))
- .build());
+ return mailboxFromMessageManager(mailbox, mailboxSession);
} catch (MailboxException e) {
- LOGGER.warn("Cannot find mailbox for :" + mailboxPath.getName(), e);
+ LOGGER.warn("Cannot find mailbox for: " + mailboxPath.getName(), e);
return Optional.empty();
}
}
+ private Optional<Mailbox> mailboxFromMessageManager(MessageManager messageManager, MailboxSession mailboxSession) throws MailboxException {
+ MailboxPath mailboxPath = messageManager.getMailboxPath();
+ Optional<Role> role = Role.from(mailboxPath.getName());
+ MessageManager.MetaData mailboxMetaData = getMailboxMetaData(messageManager, mailboxSession);
+ return Optional.ofNullable(Mailbox.builder()
+ .id(messageManager.getId())
+ .name(getName(mailboxPath, mailboxSession))
+ .parentId(getParentIdFromMailboxPath(mailboxPath, mailboxSession).orElse(null))
+ .role(role)
+ .unreadMessages(mailboxMetaData.getUnseenCount())
+ .totalMessages(mailboxMetaData.getMessageCount())
+ .sortOrder(SortOrder.getSortOrder(role))
+ .build());
+ }
+
private MessageManager.MetaData getMailboxMetaData(MessageManager messageManager, MailboxSession mailboxSession) throws MailboxException {
return messageManager.getMetaData(DONT_RESET_RECENT, mailboxSession, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT);
}
@@ -98,15 +101,16 @@ public class MailboxUtils {
public Optional<String> getMailboxNameFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return getMailboxFromId(mailboxId, mailboxSession)
- .map(org.apache.james.mailbox.store.mail.model.Mailbox::getName);
+ .map(Throwing.function(MessageManager::getMailboxPath).sneakyThrow())
+ .map(MailboxPath::getName);
}
- private Optional<org.apache.james.mailbox.store.mail.model.Mailbox> getMailboxFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
- return mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxWithPathLike(new MailboxPath(mailboxSession.getPersonalSpace(), mailboxSession.getUser().getUserName(), WILDCARD))
- .stream()
- .filter(mailbox -> mailbox.getMailboxId().equals(mailboxId))
- .findFirst();
+ private Optional<MessageManager> getMailboxFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
+ try {
+ return Optional.of(mailboxManager.getMailbox(mailboxId, mailboxSession));
+ } catch (MailboxNotFoundException e) {
+ return Optional.empty();
+ }
}
@VisibleForTesting Optional<MailboxId> getParentIdFromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
@@ -119,12 +123,10 @@ public class MailboxUtils {
}
public Optional<Mailbox> mailboxFromMailboxId(MailboxId mailboxId, MailboxSession mailboxSession) {
+ ThrowingFunction<MessageManager, Optional<Mailbox>> toMailbox = path -> mailboxFromMessageManager(path, mailboxSession);
try {
return getMailboxFromId(mailboxId, mailboxSession)
- .flatMap(jamesMailbox ->
- mailboxFromMailboxPath(new MailboxPath(jamesMailbox.getNamespace(), mailboxSession.getUser().getUserName(), jamesMailbox.getName()),
- mailboxSession)
- );
+ .flatMap(Throwing.function(toMailbox).sneakyThrow());
} catch (MailboxException e) {
return Optional.empty();
}
@@ -144,7 +146,7 @@ public class MailboxUtils {
public boolean hasChildren(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return getMailboxFromId(mailboxId, mailboxSession)
- .map(mailbox -> new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()))
+ .map(Throwing.function(MessageManager::getMailboxPath).sneakyThrow())
.map(Throwing.function(path -> mailboxManager.hasChildren(path, mailboxSession)))
.orElse(false);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/df3a8a0b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index e321085..e3461d4 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -82,7 +82,7 @@ public class GetMailboxesMethodTest {
MessageParser messageParser = new MessageParser();
mailboxManager = new StoreMailboxManager(mailboxMapperFactory, new MockAuthenticator(), aclResolver, groupMembershipResolver, messageParser);
mailboxManager.init();
- mailboxUtils = new MailboxUtils(mailboxManager, mailboxMapperFactory);
+ mailboxUtils = new MailboxUtils(mailboxManager);
getMailboxesMethod = new GetMailboxesMethod(mailboxManager, mailboxUtils);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/df3a8a0b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
index 6c76622..ef0a93c 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
@@ -54,7 +54,7 @@ public class MailboxUtilsTest {
mailboxMapperFactory = new InMemoryMailboxSessionMapperFactory();
user = "user@domain.org";
mailboxSession = mailboxManager.login(user, "pass", LOGGER);
- sut = new MailboxUtils(mailboxManager, mailboxMapperFactory);
+ sut = new MailboxUtils(mailboxManager);
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[08/10] james-project git commit: JAMES-1818 Introduce MailboxFactory
to simplify MailboxUtils
Posted by ro...@apache.org.
JAMES-1818 Introduce MailboxFactory to simplify MailboxUtils
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7ecb7ef5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7ecb7ef5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7ecb7ef5
Branch: refs/heads/master
Commit: 7ecb7ef5804d8115ee64b1f2e734f87b99609939
Parents: 268f001
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Aug 31 17:06:19 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:01 2016 +0200
----------------------------------------------------------------------
.../org/apache/james/jmap/JMAPCommonModule.java | 2 +
.../james/jmap/methods/GetMailboxesMethod.java | 10 +-
.../methods/SetMailboxesCreationProcessor.java | 10 +-
.../SetMailboxesDestructionProcessor.java | 7 +-
.../methods/SetMailboxesUpdateProcessor.java | 7 +-
.../apache/james/jmap/model/MailboxFactory.java | 112 +++++++++++++
.../apache/james/jmap/utils/MailboxUtils.java | 85 +---------
.../jmap/methods/GetMailboxesMethodTest.java | 10 +-
.../SetMailboxesCreationProcessorTest.java | 7 +-
.../SetMailboxesUpdateProcessorTest.java | 7 +-
.../james/jmap/model/MailboxFactoryTest.java | 165 +++++++++++++++++++
.../james/jmap/utils/MailboxUtilsTest.java | 109 ------------
12 files changed, 317 insertions(+), 214 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPCommonModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
index e9d5c6f..c6bd8a3 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
@@ -30,6 +30,7 @@ import org.apache.james.jmap.crypto.JamesSignatureHandler;
import org.apache.james.jmap.crypto.SignatureHandler;
import org.apache.james.jmap.crypto.SignedTokenFactory;
import org.apache.james.jmap.crypto.SignedTokenManager;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.MessageContentExtractor;
import org.apache.james.jmap.model.MessageFactory;
import org.apache.james.jmap.model.MessagePreviewGenerator;
@@ -62,6 +63,7 @@ public class JMAPCommonModule extends AbstractModule {
bind(MailSpool.class).in(Scopes.SINGLETON);
bind(MailFactory.class).in(Scopes.SINGLETON);
bind(AutomaticallySentMailDetectorImpl.class).in(Scopes.SINGLETON);
+ bind(MailboxFactory.class).in(Scopes.SINGLETON);
bind(MessageFactory.class).in(Scopes.SINGLETON);
bind(MessagePreviewGenerator.class).in(Scopes.SINGLETON);
bind(MessageContentExtractor.class).in(Scopes.SINGLETON);
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
index 3e739ed..446336f 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
@@ -30,9 +30,9 @@ import javax.inject.Inject;
import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMailboxesRequest;
import org.apache.james.jmap.model.GetMailboxesResponse;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.MailboxProperty;
import org.apache.james.jmap.model.mailbox.Mailbox;
-import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
@@ -53,12 +53,12 @@ public class GetMailboxesMethod implements Method {
private static final Method.Response.Name RESPONSE_NAME = Method.Response.name("mailboxes");
private final MailboxManager mailboxManager;
- private final MailboxUtils mailboxUtils;
+ private final MailboxFactory mailboxFactory;
@Inject
- @VisibleForTesting public GetMailboxesMethod(MailboxManager mailboxManager, MailboxUtils mailboxUtils) {
+ @VisibleForTesting public GetMailboxesMethod(MailboxManager mailboxManager, MailboxFactory mailboxFactory) {
this.mailboxManager = mailboxManager;
- this.mailboxUtils = mailboxUtils;
+ this.mailboxFactory = mailboxFactory;
}
@Override
@@ -92,7 +92,7 @@ public class GetMailboxesMethod implements Method {
retrieveUserMailboxes(mailboxSession)
.stream()
.map(MailboxMetaData::getPath)
- .map(mailboxPath -> mailboxUtils.mailboxFromMailboxPath(mailboxPath, mailboxSession))
+ .map(mailboxPath -> mailboxFactory.fromMailboxPath(mailboxPath, mailboxSession))
.filter(Optional::isPresent)
.map(Optional::get)
.filter(filterMailboxesById(mailboxesRequest.getIds()))
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index 01dc2d7..28e36f6 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -28,13 +28,13 @@ import javax.inject.Inject;
import org.apache.james.jmap.exceptions.MailboxNameException;
import org.apache.james.jmap.exceptions.MailboxParentNotFoundException;
import org.apache.james.jmap.model.MailboxCreationId;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.SetError;
import org.apache.james.jmap.model.SetMailboxesRequest;
import org.apache.james.jmap.model.SetMailboxesResponse;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.jmap.model.mailbox.MailboxCreateRequest;
import org.apache.james.jmap.utils.DependencyGraph.CycleDetectedException;
-import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.jmap.utils.SortingHierarchicalCollections;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -57,18 +57,18 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
private final MailboxManager mailboxManager;
private final SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, MailboxCreationId> sortingHierarchicalCollections;
- private final MailboxUtils mailboxUtils;
+ private final MailboxFactory mailboxFactory;
private final Factory mailboxIdFactory;
@Inject
@VisibleForTesting
- SetMailboxesCreationProcessor(MailboxManager mailboxManager, MailboxUtils mailboxUtils, MailboxId.Factory mailboxIdFactory) {
+ SetMailboxesCreationProcessor(MailboxManager mailboxManager, MailboxFactory mailboxFactory, MailboxId.Factory mailboxIdFactory) {
this.mailboxManager = mailboxManager;
this.sortingHierarchicalCollections =
new SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, MailboxCreationId>(
x -> x.getKey(),
x -> x.getValue().getParentId());
- this.mailboxUtils = mailboxUtils;
+ this.mailboxFactory = mailboxFactory;
this.mailboxIdFactory = mailboxIdFactory;
}
@@ -101,7 +101,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
ensureValidMailboxName(mailboxRequest, mailboxSession);
MailboxPath mailboxPath = getMailboxPath(mailboxRequest, creationIdsToCreatedMailboxId, mailboxSession);
mailboxManager.createMailbox(mailboxPath, mailboxSession);
- Optional<Mailbox> mailbox = mailboxUtils.mailboxFromMailboxPath(mailboxPath, mailboxSession);
+ Optional<Mailbox> mailbox = mailboxFactory.fromMailboxPath(mailboxPath, mailboxSession);
if (mailbox.isPresent()) {
builder.created(mailboxCreationId, mailbox.get());
creationIdsToCreatedMailboxId.put(mailboxCreationId, mailbox.get().getId());
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
index a777c44..ea06438 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
@@ -27,6 +27,7 @@ import javax.inject.Inject;
import org.apache.james.jmap.exceptions.MailboxHasChildException;
import org.apache.james.jmap.exceptions.SystemMailboxNotUpdatableException;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.SetError;
import org.apache.james.jmap.model.SetMailboxesRequest;
import org.apache.james.jmap.model.SetMailboxesResponse;
@@ -53,16 +54,18 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
private final MailboxManager mailboxManager;
private final SortingHierarchicalCollections<Map.Entry<MailboxId, Mailbox>, MailboxId> sortingHierarchicalCollections;
private final MailboxUtils mailboxUtils;
+ private final MailboxFactory mailboxFactory;
@Inject
@VisibleForTesting
- SetMailboxesDestructionProcessor(MailboxManager mailboxManager, MailboxUtils mailboxUtils) {
+ SetMailboxesDestructionProcessor(MailboxManager mailboxManager, MailboxUtils mailboxUtils, MailboxFactory mailboxFactory) {
this.mailboxManager = mailboxManager;
this.sortingHierarchicalCollections =
new SortingHierarchicalCollections<>(
Entry::getKey,
x -> x.getValue().getParentId());
this.mailboxUtils = mailboxUtils;
+ this.mailboxFactory = mailboxFactory;
}
public SetMailboxesResponse process(SetMailboxesRequest request, MailboxSession mailboxSession) {
@@ -79,7 +82,7 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
private ImmutableMap<MailboxId, Mailbox> mapDestroyRequests(SetMailboxesRequest request, MailboxSession mailboxSession) {
ImmutableMap.Builder<MailboxId, Mailbox> idToMailboxBuilder = ImmutableMap.builder();
request.getDestroy().stream()
- .map(id -> mailboxUtils.mailboxFromMailboxId(id, mailboxSession))
+ .map(id -> mailboxFactory.fromMailboxId(id, mailboxSession))
.filter(Optional::isPresent)
.map(Optional::get)
.forEach(mailbox -> idToMailboxBuilder.put(mailbox.getId(), mailbox));
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
index 438e101..0f52829 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
@@ -27,6 +27,7 @@ import org.apache.james.jmap.exceptions.MailboxHasChildException;
import org.apache.james.jmap.exceptions.MailboxNameException;
import org.apache.james.jmap.exceptions.MailboxParentNotFoundException;
import org.apache.james.jmap.exceptions.SystemMailboxNotUpdatableException;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.SetError;
import org.apache.james.jmap.model.SetMailboxesRequest;
import org.apache.james.jmap.model.SetMailboxesResponse;
@@ -53,12 +54,14 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
private final MailboxUtils mailboxUtils;
private final MailboxManager mailboxManager;
+ private final MailboxFactory mailboxFactory;
@Inject
@VisibleForTesting
- SetMailboxesUpdateProcessor(MailboxUtils mailboxUtils, MailboxManager mailboxManager) {
+ SetMailboxesUpdateProcessor(MailboxUtils mailboxUtils, MailboxManager mailboxManager, MailboxFactory mailboxFactory) {
this.mailboxUtils = mailboxUtils;
this.mailboxManager = mailboxManager;
+ this.mailboxFactory = mailboxFactory;
}
@Override
@@ -126,7 +129,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
}
private Mailbox getMailbox(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxNotFoundException {
- return mailboxUtils.mailboxFromMailboxId(mailboxId, mailboxSession)
+ return mailboxFactory.fromMailboxId(mailboxId, mailboxSession)
.orElseThrow(() -> new MailboxNotFoundException(mailboxId.serialize()));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
new file mode 100644
index 0000000..7ac9e42
--- /dev/null
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
@@ -0,0 +1,112 @@
+/****************************************************************
+ * 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.jmap.model;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.apache.james.jmap.model.mailbox.Mailbox;
+import org.apache.james.jmap.model.mailbox.Role;
+import org.apache.james.jmap.model.mailbox.SortOrder;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Splitter;
+
+public class MailboxFactory {
+ private static final boolean DONT_RESET_RECENT = false;
+ private static final Logger LOGGER = LoggerFactory.getLogger(MailboxFactory.class);
+
+ private final MailboxManager mailboxManager;
+
+ @Inject
+ public MailboxFactory(MailboxManager mailboxManager) {
+ this.mailboxManager = mailboxManager;
+ }
+
+ public Optional<Mailbox> fromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) {
+ try {
+ MessageManager mailbox = mailboxManager.getMailbox(mailboxPath, mailboxSession);
+ return fromMessageManager(mailbox, mailboxSession);
+ } catch (MailboxException e) {
+ LOGGER.warn("Cannot find mailbox for: " + mailboxPath.getName(), e);
+ return Optional.empty();
+ }
+ }
+
+ public Optional<Mailbox> fromMailboxId(MailboxId mailboxId, MailboxSession mailboxSession) {
+ try {
+ MessageManager mailbox = mailboxManager.getMailbox(mailboxId, mailboxSession);
+ return fromMessageManager(mailbox, mailboxSession);
+ } catch (MailboxException e) {
+ return Optional.empty();
+ }
+ }
+
+ private Optional<Mailbox> fromMessageManager(MessageManager messageManager, MailboxSession mailboxSession) throws MailboxException {
+ MailboxPath mailboxPath = messageManager.getMailboxPath();
+ Optional<Role> role = Role.from(mailboxPath.getName());
+ MessageManager.MetaData mailboxMetaData = getMailboxMetaData(messageManager, mailboxSession);
+ return Optional.ofNullable(Mailbox.builder()
+ .id(messageManager.getId())
+ .name(getName(mailboxPath, mailboxSession))
+ .parentId(getParentIdFromMailboxPath(mailboxPath, mailboxSession).orElse(null))
+ .role(role)
+ .unreadMessages(mailboxMetaData.getUnseenCount())
+ .totalMessages(mailboxMetaData.getMessageCount())
+ .sortOrder(SortOrder.getSortOrder(role))
+ .build());
+ }
+
+ private MessageManager.MetaData getMailboxMetaData(MessageManager messageManager, MailboxSession mailboxSession) throws MailboxException {
+ return messageManager.getMetaData(DONT_RESET_RECENT, mailboxSession, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT);
+ }
+
+ @VisibleForTesting String getName(MailboxPath mailboxPath, MailboxSession mailboxSession) {
+ String name = mailboxPath.getName();
+ if (name.contains(String.valueOf(mailboxSession.getPathDelimiter()))) {
+ List<String> levels = Splitter.on(mailboxSession.getPathDelimiter()).splitToList(name);
+ return levels.get(levels.size() - 1);
+ }
+ return name;
+ }
+
+ @VisibleForTesting Optional<MailboxId> getParentIdFromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
+ List<MailboxPath> levels = mailboxPath.getHierarchyLevels(mailboxSession.getPathDelimiter());
+ if (levels.size() <= 1) {
+ return Optional.empty();
+ }
+ MailboxPath parent = levels.get(levels.size() - 2);
+ return Optional.of(getMailboxId(parent, mailboxSession));
+ }
+
+ private MailboxId getMailboxId(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
+ return mailboxManager.getMailbox(mailboxPath, mailboxSession)
+ .getId();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
index 666b149..e94fd58 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
@@ -19,34 +19,21 @@ O * Licensed to the Apache Software Foundation (ASF) under one *
package org.apache.james.jmap.utils;
-import java.util.List;
import java.util.Optional;
import javax.inject.Inject;
-import org.apache.james.jmap.model.mailbox.Mailbox;
-import org.apache.james.jmap.model.mailbox.Role;
-import org.apache.james.jmap.model.mailbox.SortOrder;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.functions.ThrowingFunction;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Splitter;
public class MailboxUtils {
-
- private static final boolean DONT_RESET_RECENT = false;
- private static final Logger LOGGER = LoggerFactory.getLogger(MailboxUtils.class);
-
private final MailboxManager mailboxManager;
@Inject
@@ -55,47 +42,11 @@ public class MailboxUtils {
this.mailboxManager = mailboxManager;
}
- public Optional<Mailbox> mailboxFromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) {
- try {
- MessageManager mailbox = mailboxManager.getMailbox(mailboxPath, mailboxSession);
- return mailboxFromMessageManager(mailbox, mailboxSession);
- } catch (MailboxException e) {
- LOGGER.warn("Cannot find mailbox for: " + mailboxPath.getName(), e);
- return Optional.empty();
- }
- }
-
- private Optional<Mailbox> mailboxFromMessageManager(MessageManager messageManager, MailboxSession mailboxSession) throws MailboxException {
- MailboxPath mailboxPath = messageManager.getMailboxPath();
- Optional<Role> role = Role.from(mailboxPath.getName());
- MessageManager.MetaData mailboxMetaData = getMailboxMetaData(messageManager, mailboxSession);
- return Optional.ofNullable(Mailbox.builder()
- .id(messageManager.getId())
- .name(getName(mailboxPath, mailboxSession))
- .parentId(getParentIdFromMailboxPath(mailboxPath, mailboxSession).orElse(null))
- .role(role)
- .unreadMessages(mailboxMetaData.getUnseenCount())
- .totalMessages(mailboxMetaData.getMessageCount())
- .sortOrder(SortOrder.getSortOrder(role))
- .build());
- }
-
- private MessageManager.MetaData getMailboxMetaData(MessageManager messageManager, MailboxSession mailboxSession) throws MailboxException {
- return messageManager.getMetaData(DONT_RESET_RECENT, mailboxSession, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT);
- }
-
- private MailboxId getMailboxId(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
- return mailboxManager.getMailbox(mailboxPath, mailboxSession)
- .getId();
- }
-
- @VisibleForTesting String getName(MailboxPath mailboxPath, MailboxSession mailboxSession) {
- String name = mailboxPath.getName();
- if (name.contains(String.valueOf(mailboxSession.getPathDelimiter()))) {
- List<String> levels = Splitter.on(mailboxSession.getPathDelimiter()).splitToList(name);
- return levels.get(levels.size() - 1);
- }
- return name;
+ public boolean hasChildren(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
+ return getMailboxFromId(mailboxId, mailboxSession)
+ .map(Throwing.function(MessageManager::getMailboxPath).sneakyThrow())
+ .map(Throwing.function(path -> mailboxManager.hasChildren(path, mailboxSession)))
+ .orElse(false);
}
private Optional<MessageManager> getMailboxFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
@@ -105,30 +56,4 @@ public class MailboxUtils {
return Optional.empty();
}
}
-
- @VisibleForTesting Optional<MailboxId> getParentIdFromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
- List<MailboxPath> levels = mailboxPath.getHierarchyLevels(mailboxSession.getPathDelimiter());
- if (levels.size() <= 1) {
- return Optional.empty();
- }
- MailboxPath parent = levels.get(levels.size() - 2);
- return Optional.of(getMailboxId(parent, mailboxSession));
- }
-
- public Optional<Mailbox> mailboxFromMailboxId(MailboxId mailboxId, MailboxSession mailboxSession) {
- ThrowingFunction<MessageManager, Optional<Mailbox>> toMailbox = path -> mailboxFromMessageManager(path, mailboxSession);
- try {
- return getMailboxFromId(mailboxId, mailboxSession)
- .flatMap(Throwing.function(toMailbox).sneakyThrow());
- } catch (MailboxException e) {
- return Optional.empty();
- }
- }
-
- public boolean hasChildren(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
- return getMailboxFromId(mailboxId, mailboxSession)
- .map(Throwing.function(MessageManager::getMailboxPath).sneakyThrow())
- .map(Throwing.function(path -> mailboxManager.hasChildren(path, mailboxSession)))
- .orElse(false);
- }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index e3461d4..be20137 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -34,10 +34,10 @@ import javax.mail.Flags;
import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMailboxesRequest;
import org.apache.james.jmap.model.GetMailboxesResponse;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.jmap.model.mailbox.Role;
import org.apache.james.jmap.model.mailbox.SortOrder;
-import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
@@ -71,7 +71,7 @@ public class GetMailboxesMethodTest {
private GetMailboxesMethod getMailboxesMethod;
private ClientId clientId;
private InMemoryMailboxSessionMapperFactory mailboxMapperFactory;
- private MailboxUtils mailboxUtils;
+ private MailboxFactory mailboxFactory;
@Before
public void setup() throws Exception {
@@ -82,9 +82,9 @@ public class GetMailboxesMethodTest {
MessageParser messageParser = new MessageParser();
mailboxManager = new StoreMailboxManager(mailboxMapperFactory, new MockAuthenticator(), aclResolver, groupMembershipResolver, messageParser);
mailboxManager.init();
- mailboxUtils = new MailboxUtils(mailboxManager);
+ mailboxFactory = new MailboxFactory(mailboxManager);
- getMailboxesMethod = new GetMailboxesMethod(mailboxManager, mailboxUtils);
+ getMailboxesMethod = new GetMailboxesMethod(mailboxManager, mailboxFactory);
}
@Test
@@ -112,7 +112,7 @@ public class GetMailboxesMethodTest {
.thenReturn(ImmutableList.of(new MailboxPath("namespace", "user", "name")));
when(mockedMailboxManager.getMailbox(any(MailboxPath.class), any()))
.thenThrow(new MailboxException());
- GetMailboxesMethod testee = new GetMailboxesMethod(mockedMailboxManager, mailboxUtils);
+ GetMailboxesMethod testee = new GetMailboxesMethod(mockedMailboxManager, mailboxFactory);
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
index fdf8f31..c16aa4e 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
@@ -24,11 +24,11 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.apache.james.jmap.model.MailboxCreationId;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.SetError;
import org.apache.james.jmap.model.SetMailboxesRequest;
import org.apache.james.jmap.model.SetMailboxesResponse;
import org.apache.james.jmap.model.mailbox.MailboxCreateRequest;
-import org.apache.james.jmap.utils.MailboxUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
@@ -40,17 +40,16 @@ import org.junit.Test;
public class SetMailboxesCreationProcessorTest {
- private MailboxUtils mailboxUtils;
private Factory mailboxIdFactory;
+ private MailboxFactory mailboxFactory;
private SetMailboxesCreationProcessor sut;
private MailboxManager mailboxManager;
@Before
public void setup() {
- mailboxUtils = mock(MailboxUtils.class);
mailboxManager = mock(MailboxManager.class);
mailboxIdFactory = new InMemoryId.Factory();
- sut = new SetMailboxesCreationProcessor(mailboxManager, mailboxUtils, mailboxIdFactory);
+ sut = new SetMailboxesCreationProcessor(mailboxManager, mailboxFactory, mailboxIdFactory);
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
index 377681c..ec1cc15 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
import java.util.Optional;
+import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.SetError;
import org.apache.james.jmap.model.SetMailboxesRequest;
import org.apache.james.jmap.model.SetMailboxesResponse;
@@ -43,6 +44,7 @@ public class SetMailboxesUpdateProcessorTest {
private MailboxManager mockedMailboxManager;
private MailboxUtils mockedMailboxUtils;
+ private MailboxFactory mockedMailboxFactory;
private MailboxSession mockedMailboxSession;
private SetMailboxesUpdateProcessor sut;
@@ -50,8 +52,9 @@ public class SetMailboxesUpdateProcessorTest {
public void setup() {
mockedMailboxManager = mock(MailboxManager.class);
mockedMailboxUtils = mock(MailboxUtils.class);
+ mockedMailboxFactory = mock(MailboxFactory.class);
mockedMailboxSession = mock(MailboxSession.class);
- sut = new SetMailboxesUpdateProcessor(mockedMailboxUtils, mockedMailboxManager);
+ sut = new SetMailboxesUpdateProcessor(mockedMailboxUtils, mockedMailboxManager, mockedMailboxFactory);
}
@Test
@@ -63,7 +66,7 @@ public class SetMailboxesUpdateProcessorTest {
.update(mailboxId, MailboxUpdateRequest.builder().parentId(newParentId).build())
.build();
Mailbox mailbox = Mailbox.builder().id(mailboxId).name("name").role(Optional.empty()).build();
- when(mockedMailboxUtils.mailboxFromMailboxId(mailboxId, mockedMailboxSession))
+ when(mockedMailboxFactory.fromMailboxId(mailboxId, mockedMailboxSession))
.thenReturn(Optional.of(mailbox));
when(mockedMailboxManager.getMailbox(newParentId, mockedMailboxSession))
.thenReturn(mock(MessageManager.class));
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
new file mode 100644
index 0000000..e404b70
--- /dev/null
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
@@ -0,0 +1,165 @@
+/****************************************************************
+ * 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.jmap.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Optional;
+
+import org.apache.james.jmap.model.mailbox.Mailbox;
+import org.apache.james.jmap.utils.MailboxUtilsTest;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
+import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.MailboxMapperFactory;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MailboxFactoryTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(MailboxUtilsTest.class);
+
+ private MailboxManager mailboxManager;
+ private MailboxMapperFactory mailboxMapperFactory;
+ private MailboxSession mailboxSession;
+ private String user;
+ private MailboxFactory sut;
+
+ @Before
+ public void setup() throws Exception {
+ InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources();
+ mailboxManager = inMemoryIntegrationResources.createMailboxManager(inMemoryIntegrationResources.createGroupMembershipResolver());
+ mailboxMapperFactory = new InMemoryMailboxSessionMapperFactory();
+ user = "user@domain.org";
+ mailboxSession = mailboxManager.login(user, "pass", LOGGER);
+ sut = new MailboxFactory(mailboxManager);
+ }
+
+
+ @Test
+ public void mailboxFromMailboxIdShouldReturnAbsentWhenDoesntExist() throws Exception {
+ Optional<Mailbox> mailbox = sut.fromMailboxId(InMemoryId.of(123), mailboxSession);
+ assertThat(mailbox).isEmpty();
+ }
+
+ @Test
+ public void mailboxFromMailboxIdShouldReturnPresentWhenExists() throws Exception {
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
+ mailboxManager.createMailbox(mailboxPath, mailboxSession);
+ MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
+ .findMailboxByPath(mailboxPath)
+ .getMailboxId();
+
+ Optional<Mailbox> mailbox = sut.fromMailboxId(mailboxId, mailboxSession);
+ assertThat(mailbox).isPresent();
+ assertThat(mailbox.get().getId()).isEqualTo(mailboxId);
+ }
+
+ @Test
+ public void mailboxFromMailboxPathShouldReturnNotEmptyWhenMailboxExists() throws Exception {
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
+ mailboxManager.createMailbox(mailboxPath, mailboxSession);
+
+ Optional<Mailbox> optionalMailbox = sut.fromMailboxPath(mailboxPath, mailboxSession);
+ assertThat(optionalMailbox).isPresent();
+ }
+
+ @Test
+ public void mailboxFromMailboxPathShouldReturnEmptyWhenMailboxDoesntExist() throws Exception {
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
+
+ Optional<Mailbox> optionalMailbox = sut.fromMailboxPath(mailboxPath, mailboxSession);
+ assertThat(optionalMailbox).isEmpty();
+ }
+
+
+ @Test
+ public void getNameShouldReturnMailboxNameWhenRootMailbox() throws Exception {
+ String expected = "mailbox";
+ MailboxPath mailboxPath = new MailboxPath("#private", user, expected);
+
+ String name = sut.getName(mailboxPath, mailboxSession);
+ assertThat(name).isEqualTo(expected);
+ }
+
+ @Test
+ public void getNameShouldReturnMailboxNameWhenChildMailbox() throws Exception {
+ String expected = "mailbox";
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox." + expected);
+
+ String name = sut.getName(mailboxPath, mailboxSession);
+ assertThat(name).isEqualTo(expected);
+ }
+
+ @Test
+ public void getNameShouldReturnMailboxNameWhenChildOfChildMailbox() throws Exception {
+ String expected = "mailbox";
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children." + expected);
+
+ String name = sut.getName(mailboxPath, mailboxSession);
+ assertThat(name).isEqualTo(expected);
+ }
+
+ @Test
+ public void getParentIdFromMailboxPathShouldReturNullWhenRootMailbox() throws Exception {
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
+ mailboxManager.createMailbox(mailboxPath, mailboxSession);
+
+ Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, mailboxSession);
+ assertThat(id).isEmpty();
+ }
+
+ @Test
+ public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildMailbox() throws Exception {
+ MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox");
+ mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
+ MailboxId parentId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
+ .findMailboxByPath(parentMailboxPath)
+ .getMailboxId();
+
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.mailbox");
+ mailboxManager.createMailbox(mailboxPath, mailboxSession);
+
+ Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, mailboxSession);
+ assertThat(id).contains(parentId);
+ }
+
+ @Test
+ public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildOfChildMailbox() throws Exception {
+ MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children.mailbox");
+ mailboxManager.createMailbox(new MailboxPath("#private", user, "inbox"), mailboxSession);
+
+ MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox.children");
+ mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
+ MailboxId parentId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
+ .findMailboxByPath(parentMailboxPath)
+ .getMailboxId();
+
+ mailboxManager.createMailbox(mailboxPath, mailboxSession);
+
+ Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, mailboxSession);
+ assertThat(id).contains(parentId);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7ecb7ef5/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
index f374a04..dc85e3e 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
@@ -21,12 +21,8 @@ package org.apache.james.jmap.utils;
import static org.assertj.core.api.Assertions.assertThat;
-import java.util.Optional;
-
-import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.MailboxId;
@@ -56,111 +52,6 @@ public class MailboxUtilsTest {
mailboxSession = mailboxManager.login(user, "pass", LOGGER);
sut = new MailboxUtils(mailboxManager);
}
-
- @Test
- public void mailboxFromMailboxPathShouldReturnNotEmptyWhenMailboxExists() throws Exception {
- MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
-
- Optional<Mailbox> optionalMailbox = sut.mailboxFromMailboxPath(mailboxPath, mailboxSession);
- assertThat(optionalMailbox).isPresent();
- }
-
- @Test
- public void mailboxFromMailboxPathShouldReturnEmptyWhenMailboxDoesntExist() throws Exception {
- MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
-
- Optional<Mailbox> optionalMailbox = sut.mailboxFromMailboxPath(mailboxPath, mailboxSession);
- assertThat(optionalMailbox).isEmpty();
- }
-
- @Test
- public void getNameShouldReturnMailboxNameWhenRootMailbox() throws Exception {
- String expected = "mailbox";
- MailboxPath mailboxPath = new MailboxPath("#private", user, expected);
-
- String name = sut.getName(mailboxPath, mailboxSession);
- assertThat(name).isEqualTo(expected);
- }
-
- @Test
- public void getNameShouldReturnMailboxNameWhenChildMailbox() throws Exception {
- String expected = "mailbox";
- MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox." + expected);
-
- String name = sut.getName(mailboxPath, mailboxSession);
- assertThat(name).isEqualTo(expected);
- }
-
- @Test
- public void getNameShouldReturnMailboxNameWhenChildOfChildMailbox() throws Exception {
- String expected = "mailbox";
- MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children." + expected);
-
- String name = sut.getName(mailboxPath, mailboxSession);
- assertThat(name).isEqualTo(expected);
- }
-
- @Test
- public void getParentIdFromMailboxPathShouldReturNullWhenRootMailbox() throws Exception {
- MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
-
- Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, mailboxSession);
- assertThat(id).isEmpty();
- }
-
- @Test
- public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildMailbox() throws Exception {
- MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox");
- mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
- MailboxId parentId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(parentMailboxPath)
- .getMailboxId();
-
- MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.mailbox");
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
-
- Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, mailboxSession);
- assertThat(id).contains(parentId);
- }
-
- @Test
- public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildOfChildMailbox() throws Exception {
- MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children.mailbox");
- mailboxManager.createMailbox(new MailboxPath("#private", user, "inbox"), mailboxSession);
-
- MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox.children");
- mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
- MailboxId parentId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(parentMailboxPath)
- .getMailboxId();
-
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
-
- Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, mailboxSession);
- assertThat(id).contains(parentId);
- }
-
- @Test
- public void mailboxFromMailboxIdShouldReturnPresentWhenExists() throws Exception {
- MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
- MailboxId mailboxId = mailboxMapperFactory.getMailboxMapper(mailboxSession)
- .findMailboxByPath(mailboxPath)
- .getMailboxId();
-
- Optional<Mailbox> mailbox = sut.mailboxFromMailboxId(mailboxId, mailboxSession);
- assertThat(mailbox).isPresent();
- assertThat(mailbox.get().getId()).isEqualTo(mailboxId);
- }
-
- @Test
- public void mailboxFromMailboxIdShouldReturnAbsentWhenDoesntExist() throws Exception {
- Optional<Mailbox> mailbox = sut.mailboxFromMailboxId(InMemoryId.of(123), mailboxSession);
- assertThat(mailbox).isEmpty();
- }
-
@Test
public void hasChildrenShouldReturnFalseWhenNoChild() throws Exception {
MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[02/10] james-project git commit: JAMES-1818 Introduce getMailboxById
and its implementations
Posted by ro...@apache.org.
JAMES-1818 Introduce getMailboxById and its implementations
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/22ed8ef2
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/22ed8ef2
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/22ed8ef2
Branch: refs/heads/master
Commit: 22ed8ef29d62d32060f1acd5cb528e5bdab557ce
Parents: ed7268e
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Aug 17 14:48:59 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:00 2016 +0200
----------------------------------------------------------------------
.../apache/james/mailbox/MailboxManager.java | 17 +++-
.../apache/james/mailbox/MailboxSession.java | 2 +
.../james/mailbox/mock/MockMailboxSession.java | 8 ++
.../mailbox/caching/CachingMailboxMapper.java | 21 +++--
.../cassandra/mail/CassandraMailboxMapper.java | 12 +++
.../mailbox/hbase/mail/HBaseMailboxMapper.java | 27 +++++++
.../hbase/mail/HBaseMailboxMapperTest.java | 19 ++++-
.../mailbox/jcr/mail/JCRMailboxMapper.java | 13 ++++
.../mailbox/jpa/mail/JPAMailboxMapper.java | 13 ++++
.../maildir/mail/MaildirMailboxMapper.java | 7 ++
.../inmemory/mail/InMemoryMailboxMapper.java | 11 +++
.../mailbox/store/SimpleMailboxSession.java | 8 ++
.../mailbox/store/StoreMailboxManager.java | 39 +++++++++-
.../james/mailbox/store/mail/MailboxMapper.java | 12 +++
.../mailbox/store/StoreMailboxManagerTest.java | 82 +++++++++++++++++---
.../store/mail/model/MailboxMapperTest.java | 17 ++++
.../james/imap/processor/LSubProcessorTest.java | 5 ++
.../base/MailboxEventAnalyserTest.java | 5 +-
.../FirstUserConnectionFilterThreadTest.java | 5 ++
.../jmap/methods/GetMessagesMethodTest.java | 5 ++
.../methods/SetVacationResponseMethodTest.java | 5 ++
21 files changed, 308 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index d993c4e..450c4fa 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -115,13 +115,12 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport {
char getDelimiter();
/**
- * Gets an session suitable for IMAP.
+ * Gets an object managing the given mailbox.
*
* @param mailboxPath
* the Path of the mailbox, not null
* @param session
* the context for this call, not null
- * @return <code>ImapMailboxSession</code>, not null
* @throws MailboxException
* when the mailbox cannot be opened
* @throws MailboxNotFoundException
@@ -130,6 +129,20 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport {
MessageManager getMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException;
/**
+ * Gets an object managing the given mailbox.
+ *
+ * @param mailboxId
+ * the Id of the mailbox, not null
+ * @param session
+ * the context for this call, not null
+ * @throws MailboxException
+ * when the mailbox cannot be opened
+ * @throws MailboxNotFoundException
+ * when the given mailbox does not exist
+ */
+ MessageManager getMailbox(MailboxId mailboxId, MailboxSession session) throws MailboxException;
+
+ /**
* Creates a new mailbox. Any intermediary mailboxes missing from the
* hierarchy should be created.
*
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
index a9c66e1..55fbe88 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
@@ -115,6 +115,8 @@ public interface MailboxSession {
* @return not null, when empty the default local should be used
*/
List<Locale> getLocalePreferences();
+
+ boolean isSameUser(String username);
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
index a77f225..9a241a7 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
@@ -54,6 +54,14 @@ public class MockMailboxSession implements MailboxSession{
public List<Locale> getLocalePreferences() {
return new ArrayList<Locale>();
}
+
+ @Override
+ public boolean isSameUser(String other) {
+ if (username == null) {
+ return other == null;
+ }
+ return username.equalsIgnoreCase(other);
+ }
};
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxMapper.java b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxMapper.java
index 4c1debe..c311b1d 100644
--- a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxMapper.java
+++ b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxMapper.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -76,12 +77,20 @@ public class CachingMailboxMapper implements MailboxMapper {
}
}
- @Override
- public List<Mailbox> findMailboxWithPathLike(MailboxPath mailboxPath)
- throws MailboxException {
- // TODO possible to meaningfully cache it?
- return underlying.findMailboxWithPathLike(mailboxPath);
- }
+ @Override
+ public Mailbox findMailboxById(MailboxId mailboxId)
+ throws MailboxException {
+ // TODO possible to meaningfully cache it?
+ return underlying.findMailboxById(mailboxId);
+ }
+
+
+ @Override
+ public List<Mailbox> findMailboxWithPathLike(MailboxPath mailboxPath)
+ throws MailboxException {
+ // TODO possible to meaningfully cache it?
+ return underlying.findMailboxWithPathLike(mailboxPath);
+ }
@Override
public boolean hasChildren(Mailbox mailbox, char delimiter)
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 853e19c..1e81978 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -45,6 +45,7 @@ import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable.MailboxBas
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -92,6 +93,17 @@ public class CassandraMailboxMapper implements MailboxMapper {
}
@Override
+ public Mailbox findMailboxById(MailboxId id) throws MailboxException {
+ CassandraId mailboxId = (CassandraId) id;
+ ResultSet resultSet = session.execute(select(FIELDS).from(TABLE_NAME).where(eq(ID, mailboxId.asUuid())));
+ if (resultSet.isExhausted()) {
+ throw new MailboxNotFoundException(id.serialize());
+ } else {
+ return mailbox(resultSet.one());
+ }
+ }
+
+ @Override
public List<Mailbox> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
Pattern regex = Pattern.compile(constructEscapedRegexForMailboxNameMatching(path));
return getMailboxFilteredByNamespaceAndUserStream(path.getNamespace(), path.getUser())
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapper.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapper.java
index 628cd8c..8c89e9d 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapper.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapper.java
@@ -36,6 +36,7 @@ import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Delete;
+import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
@@ -54,6 +55,7 @@ import org.apache.james.mailbox.hbase.HBaseId;
import org.apache.james.mailbox.hbase.HBaseNonTransactionalMapper;
import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -123,6 +125,31 @@ public class HBaseMailboxMapper extends HBaseNonTransactionalMapper implements M
}
}
}
+
+ @Override
+ public Mailbox findMailboxById(MailboxId id) throws MailboxException, MailboxNotFoundException {
+ HBaseId mailboxId = (HBaseId)id;
+ HTable mailboxes = null;
+ try {
+ mailboxes = new HTable(conf, MAILBOXES_TABLE);
+ Get get = new Get(mailboxId.toBytes());
+ Result result = mailboxes.get(get);
+ if (result == null) {
+ throw new MailboxNotFoundException(mailboxId.serialize());
+ }
+ return mailboxFromResult(result);
+ } catch (IOException ex) {
+ throw new MailboxException("IOException in HBase cluster during get()", ex);
+ } finally {
+ if (mailboxes != null) {
+ try {
+ mailboxes.close();
+ } catch (IOException ex) {
+ throw new MailboxException("Error closing table " + mailboxes, ex);
+ }
+ }
+ }
+ }
@Override
public List<Mailbox> findMailboxWithPathLike(MailboxPath mailboxPath) throws MailboxException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
index 27b5c86..35dc9ff 100644
--- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
+++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
@@ -47,9 +47,11 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
+import org.apache.james.mailbox.hbase.HBaseId;
import org.apache.james.mailbox.hbase.io.ChunkInputStream;
import org.apache.james.mailbox.hbase.io.ChunkOutputStream;
import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.junit.Before;
@@ -69,6 +71,7 @@ public class HBaseMailboxMapperTest {
private static HBaseMailboxMapper mapper;
private static List<HBaseMailbox> mailboxList;
private static List<MailboxPath> pathsList;
+ private static List<HBaseId> idsList;
private static final int NAMESPACES = 5;
private static final int USERS = 5;
private static final int MAILBOX_NO = 5;
@@ -108,6 +111,7 @@ public class HBaseMailboxMapperTest {
@Test
public void testMailboxMapperScenario() throws Exception {
testFindMailboxByPath();
+ testFindMailboxById();
testFindMailboxWithPathLike();
testList();
testSave();
@@ -131,6 +135,16 @@ public class HBaseMailboxMapperTest {
}
}
+ private void testFindMailboxById() throws Exception {
+ LOG.info("findMailboxById");
+ HBaseMailbox mailbox;
+ for (MailboxId id : idsList) {
+ LOG.info("Searching for " + id.serialize());
+ mailbox = (HBaseMailbox) mapper.findMailboxById(id);
+ assertEquals(mailbox.getMailboxId(), id);
+ }
+ }
+
/**
* Test of findMailboxWithPathLike method, of class HBaseMailboxMapper.
*/
@@ -301,6 +315,7 @@ public class HBaseMailboxMapperTest {
private static void fillMailboxList() {
mailboxList = new ArrayList<HBaseMailbox>();
pathsList = new ArrayList<MailboxPath>();
+ idsList = new ArrayList<HBaseId>();
MailboxPath path;
String name;
for (int i = 0; i < NAMESPACES; i++) {
@@ -313,7 +328,9 @@ public class HBaseMailboxMapperTest {
}
path = new MailboxPath("namespace" + i, "user" + j, name);
pathsList.add(path);
- mailboxList.add(new HBaseMailbox(path, 13));
+ HBaseMailbox mailbox = new HBaseMailbox(path, 13);
+ mailboxList.add(mailbox);
+ idsList.add(mailbox.getMailboxId());
}
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java
index 3ad6988..c546a8c 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.jcr.AbstractJCRScalingMapper;
import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -108,6 +109,18 @@ public class JCRMailboxMapper extends AbstractJCRScalingMapper implements Mailbo
}
}
+ @Override
+ public Mailbox findMailboxById(MailboxId id) throws MailboxException, MailboxNotFoundException {
+ try {
+ Node node = getSession().getNodeByIdentifier(id.serialize());
+ return new JCRMailbox(node, getLogger());
+ } catch (PathNotFoundException e) {
+ throw new MailboxNotFoundException(id.serialize());
+ } catch (RepositoryException e) {
+ throw new MailboxException("Unable to find mailbox " + id.serialize(), e);
+ }
+ }
+
/*
* (non-Javadoc)
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
index fd64f9c..c3c7a3a 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.JPATransactionalMapper;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -98,6 +99,18 @@ public class JPAMailboxMapper extends JPATransactionalMapper implements MailboxM
}
}
+ @Override
+ public Mailbox findMailboxById(MailboxId id) throws MailboxException, MailboxNotFoundException {
+ JPAId mailboxId = (JPAId)id;
+ try {
+ return (Mailbox) getEntityManager().createNamedQuery("findMailboxById").setParameter("idParam", mailboxId.getRawId()).getSingleResult();
+ } catch (NoResultException e) {
+ throw new MailboxNotFoundException(mailboxId.serialize());
+ } catch (PersistenceException e) {
+ throw new MailboxException("Search of mailbox " + mailboxId.serialize() + " failed", e);
+ }
+ }
+
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#delete(Mailbox)
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
index 629afb9..73c02d3 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.maildir.MaildirMessageName;
import org.apache.james.mailbox.maildir.MaildirStore;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -113,6 +114,12 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
return cacheMailbox(mailbox);
}
+ @Override
+ public Mailbox findMailboxById(MailboxId id) throws MailboxException, MailboxNotFoundException {
+ MaildirId mailboxId = (MaildirId)id;
+ return getCachedMailbox(mailboxId);
+ }
+
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxWithPathLike(org.apache.james.mailbox.model.MailboxPath)
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index 2afecc0..3862b68 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -75,6 +76,16 @@ public class InMemoryMailboxMapper implements MailboxMapper {
}
}
+ public synchronized Mailbox findMailboxById(MailboxId id) throws MailboxException {
+ InMemoryId mailboxId = (InMemoryId)id;
+ Mailbox result = mailboxesById.get(mailboxId);
+ if (result == null) {
+ throw new MailboxNotFoundException(mailboxId.serialize());
+ } else {
+ return result;
+ }
+ }
+
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxWithPathLike(org.apache.james.mailbox.model.MailboxPath)
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
index d6f1db0..24e5374 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
@@ -198,4 +198,12 @@ public class SimpleMailboxSession implements MailboxSession, MailboxSession.User
return type;
}
+ @Override
+ public boolean isSameUser(String username) {
+ if (this.userName == null) {
+ return username == null;
+ }
+ return this.userName.equalsIgnoreCase(username);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 18f4727..09bba85 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MailboxSessionIdGenerator;
+import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.RequestAware;
import org.apache.james.mailbox.StandardMailboxMetaDataComparator;
import org.apache.james.mailbox.acl.GroupMembershipResolver;
@@ -399,7 +400,7 @@ public class StoreMailboxManager implements MailboxManager {
}
@Override
- public org.apache.james.mailbox.MessageManager getMailbox(MailboxPath mailboxPath, MailboxSession session)
+ public MessageManager getMailbox(MailboxPath mailboxPath, MailboxSession session)
throws MailboxException {
final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
Mailbox mailboxRow = mapper.findMailboxByPath(mailboxPath);
@@ -411,13 +412,43 @@ public class StoreMailboxManager implements MailboxManager {
} else {
session.getLog().debug("Loaded mailbox " + mailboxPath);
- StoreMessageManager m = createMessageManager(mailboxRow, session);
- m.setFetchBatchSize(fetchBatchSize);
- return m;
+ StoreMessageManager messageManager = createMessageManager(mailboxRow, session);
+ messageManager.setFetchBatchSize(fetchBatchSize);
+ return messageManager;
}
}
@Override
+ public MessageManager getMailbox(MailboxId mailboxId, MailboxSession session)
+ throws MailboxException {
+ MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
+ Mailbox mailboxRow = mapper.findMailboxById(mailboxId);
+
+ if (mailboxRow == null) {
+ session.getLog().info("Mailbox '" + mailboxId.serialize() + "' not found.");
+ throw new MailboxNotFoundException(mailboxId.serialize());
+ }
+
+ if (! belongsToCurrentUser(mailboxRow, session)) {
+ session.getLog().info("Mailbox '" + mailboxId.serialize() + "' does not belong to user '" + session.getUser() + "' but to '" + mailboxRow.getUser());
+ throw new MailboxNotFoundException(mailboxId.serialize());
+ }
+
+ session.getLog().debug("Loaded mailbox " + mailboxId.serialize());
+
+ StoreMessageManager messageManager = createMessageManager(mailboxRow, session);
+ messageManager.setFetchBatchSize(fetchBatchSize);
+ return messageManager;
+ }
+
+ private boolean belongsToCurrentUser(Mailbox mailbox, MailboxSession session) {
+ if (session.getUser() == null) {
+ return mailbox.getUser() == null;
+ }
+ return session.getUser().isSameUser(mailbox.getUser());
+ }
+
+ @Override
public void createMailbox(MailboxPath mailboxPath, final MailboxSession mailboxSession)
throws MailboxException {
mailboxSession.getLog().debug("createMailbox " + mailboxPath);
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
index a1f5878..f46a2f8 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.transaction.Mapper;
@@ -63,6 +64,17 @@ public interface MailboxMapper extends Mapper {
throws MailboxException, MailboxNotFoundException;
/**
+ * Return the {@link Mailbox} for the given name
+ *
+ * @param mailboxId
+ * @return mailbox
+ * @throws MailboxException
+ * @throws MailboxNotFoundException
+ */
+ Mailbox findMailboxById(MailboxId mailboxId)
+ throws MailboxException, MailboxNotFoundException;
+
+ /**
* Return a List of {@link Mailbox} which name is like the given name
*
* @param mailboxPath
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
index 1fa865d..975e3e3 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
@@ -20,10 +20,20 @@
package org.apache.james.mailbox.store;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.MailboxMapper;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.junit.Before;
@@ -31,17 +41,26 @@ import org.junit.Test;
public class StoreMailboxManagerTest {
+ private static final String CURRENT_USER = "user";
+ private static final MailboxId MAILBOX_ID = TestId.of(123);
public static final int UID_VALIDITY = 42;
private StoreMailboxManager storeMailboxManager;
+ private MailboxMapper mockedMailboxMapper;
+ private MailboxSession mockedMailboxSession;
@Before
- public void setUp() {
- storeMailboxManager = new StoreMailboxManager(null, new MockAuthenticator(), new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), new MessageParser());
+ public void setUp() throws MailboxException {
+ MailboxSessionMapperFactory mockedMapperFactory = mock(MailboxSessionMapperFactory.class);
+ mockedMailboxSession = new MockMailboxSession(CURRENT_USER);
+ mockedMailboxMapper = mock(MailboxMapper.class);
+ when(mockedMapperFactory.getMailboxMapper(mockedMailboxSession))
+ .thenReturn(mockedMailboxMapper);
+ storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, new MockAuthenticator(), new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), new MessageParser());
}
@Test
public void belongsToNamespaceAndUserShouldReturnTrueWithIdenticalMailboxes() {
- MailboxPath path = new MailboxPath("namespace", "user", "name");
+ MailboxPath path = new MailboxPath("namespace", CURRENT_USER, "name");
assertThat(storeMailboxManager.belongsToNamespaceAndUser(path, new SimpleMailbox(path, UID_VALIDITY))).isTrue();
}
@@ -53,9 +72,9 @@ public class StoreMailboxManagerTest {
@Test
public void belongsToNamespaceAndUserShouldReturnTrueWithIdenticalMailboxesWithNullNamespace() {
- MailboxPath path = new MailboxPath(null, "user", "name");
+ MailboxPath path = new MailboxPath(null, CURRENT_USER, "name");
assertThat(storeMailboxManager.belongsToNamespaceAndUser(path,
- new SimpleMailbox(new MailboxPath(null, "user", "name"), UID_VALIDITY))).isTrue();
+ new SimpleMailbox(new MailboxPath(null, CURRENT_USER, "name"), UID_VALIDITY))).isTrue();
}
@Test
@@ -67,21 +86,21 @@ public class StoreMailboxManagerTest {
@Test
public void belongsToNamespaceAndUserShouldReturnTrueWithMailboxWithSameNamespaceAndUser() {
- MailboxPath path = new MailboxPath("namespace", "user", "name");
+ MailboxPath path = new MailboxPath("namespace", CURRENT_USER, "name");
assertThat(storeMailboxManager.belongsToNamespaceAndUser(path,
- new SimpleMailbox(new MailboxPath("namespace", "user", "name2"), UID_VALIDITY))).isTrue();
+ new SimpleMailbox(new MailboxPath("namespace", CURRENT_USER, "name2"), UID_VALIDITY))).isTrue();
}
@Test
public void belongsToNamespaceAndUserShouldReturnFalseWithDifferentNamespace() {
- MailboxPath path = new MailboxPath("namespace", "user", "name");
+ MailboxPath path = new MailboxPath("namespace", CURRENT_USER, "name");
assertThat(storeMailboxManager.belongsToNamespaceAndUser(path,
- new SimpleMailbox(new MailboxPath("namespace2", "user", "name"), UID_VALIDITY))).isFalse();
+ new SimpleMailbox(new MailboxPath("namespace2", CURRENT_USER, "name"), UID_VALIDITY))).isFalse();
}
@Test
public void belongsToNamespaceAndUserShouldReturnFalseWithDifferentUser() {
- MailboxPath path = new MailboxPath("namespace", "user", "name");
+ MailboxPath path = new MailboxPath("namespace", CURRENT_USER, "name");
assertThat(storeMailboxManager.belongsToNamespaceAndUser(path,
new SimpleMailbox(new MailboxPath("namespace", "user2", "name"), UID_VALIDITY))).isFalse();
}
@@ -89,7 +108,7 @@ public class StoreMailboxManagerTest {
public void belongsToNamespaceAndUserShouldReturnFalseWithOneOfTheUserNull() {
MailboxPath path = new MailboxPath("namespace", null, "name");
assertThat(storeMailboxManager.belongsToNamespaceAndUser(path,
- new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY))).isFalse();
+ new SimpleMailbox(new MailboxPath("namespace", CURRENT_USER, "name"), UID_VALIDITY))).isFalse();
}
@Test
public void belongsToNamespaceAndUserShouldReturnFalseIfNamespaceAreDifferentWithNullUser() {
@@ -98,6 +117,47 @@ public class StoreMailboxManagerTest {
new SimpleMailbox(new MailboxPath("namespace2", null, "name"), UID_VALIDITY))).isFalse();
}
+ @Test(expected = MailboxNotFoundException.class)
+ public void getMailboxShouldThrowWhenUnknownId() throws Exception {
+ when(mockedMailboxMapper.findMailboxById(MAILBOX_ID)).thenReturn(null);
+ storeMailboxManager.getMailbox(MAILBOX_ID, mockedMailboxSession);
+ }
+
+ @Test
+ public void getMailboxShouldReturnMailboxManagerWhenKnownId() throws Exception {
+ Mailbox mockedMailbox = mock(Mailbox.class);
+ when(mockedMailbox.getUser()).thenReturn(CURRENT_USER);
+ when(mockedMailbox.getMailboxId()).thenReturn(MAILBOX_ID);
+ when(mockedMailboxMapper.findMailboxById(MAILBOX_ID)).thenReturn(mockedMailbox);
+
+ MessageManager expected = storeMailboxManager.getMailbox(MAILBOX_ID, mockedMailboxSession);
+
+ assertThat(expected.getId()).isEqualTo(MAILBOX_ID);
+ }
+
+ @Test
+ public void getMailboxShouldReturnMailboxManagerWhenKnownIdAndDifferentCaseUser() throws Exception {
+ Mailbox mockedMailbox = mock(Mailbox.class);
+ when(mockedMailbox.getUser()).thenReturn("uSEr");
+ when(mockedMailbox.getMailboxId()).thenReturn(MAILBOX_ID);
+ when(mockedMailboxMapper.findMailboxById(MAILBOX_ID)).thenReturn(mockedMailbox);
+
+ MessageManager expected = storeMailboxManager.getMailbox(MAILBOX_ID, mockedMailboxSession);
+
+ assertThat(expected.getId()).isEqualTo(MAILBOX_ID);
+ }
+
+ @Test(expected = MailboxNotFoundException.class)
+ public void getMailboxShouldThrowWhenMailboxDoesNotMatchUser() throws Exception {
+ Mailbox mockedMailbox = mock(Mailbox.class);
+ when(mockedMailbox.getUser()).thenReturn("other.user");
+ when(mockedMailbox.getMailboxId()).thenReturn(MAILBOX_ID);
+ when(mockedMailboxMapper.findMailboxById(MAILBOX_ID)).thenReturn(mockedMailbox);
+
+ MessageManager expected = storeMailboxManager.getMailbox(MAILBOX_ID, mockedMailboxSession);
+
+ assertThat(expected.getId()).isEqualTo(MAILBOX_ID);
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index 2bf50c4..d80c252 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
@@ -248,7 +249,23 @@ public class MailboxMapperTest<T extends MapperProvider> {
MailboxPath regexPath = new MailboxPath(benwaInboxPath.getNamespace(), benwaInboxPath.getUser(), "INB?X");
assertThat(mailboxMapper.findMailboxWithPathLike(regexPath)).isEmpty();
}
+
+ @ContractTest
+ public void findMailboxByIdShouldReturnExistingMailbox() throws MailboxException {
+ saveAll();
+ Mailbox actual = mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId());
+ assertThat(actual).isEqualTo(benwaInboxMailbox);
+ }
+ @ContractTest
+ public void findMailboxByIdShouldFailWhenAbsent() throws MailboxException {
+ expected.expect(MailboxNotFoundException.class);
+ saveAll();
+ MailboxId removed = benwaInboxMailbox.getMailboxId();
+ mailboxMapper.delete(benwaInboxMailbox);
+ mailboxMapper.findMailboxById(removed);
+ }
+
private void saveAll() throws MailboxException{
mailboxMapper.save(benwaInboxMailbox);
mailboxMapper.save(benwaWorkMailbox);
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/protocols/imap/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java
index 58856f9..709754f 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/LSubProcessorTest.java
@@ -263,6 +263,11 @@ public class LSubProcessorTest {
public String getUserName() {
return "test";
}
+
+ @Override
+ public boolean isSameUser(String username) {
+ return "test".equalsIgnoreCase(username);
+ }
}));
oneOf(manager).subscriptions(with(same(mailboxSession)));will(returnValue(subscriptions));
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index c6d2e89..39bcb27 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -338,7 +338,10 @@ public class MailboxEventAnalyserTest {
}
};
}
-
+
+ public MessageManager getMailbox(MailboxId mailboxId, MailboxSession session) throws MailboxException {
+ return getMailbox((MailboxPath)null, session);
+ }
public char getDelimiter() {
return '.';
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
index c64cace..bde96d6 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
@@ -136,6 +136,11 @@ public class FirstUserConnectionFilterThreadTest {
}
@Override
+ public MessageManager getMailbox(MailboxId mailboxId, MailboxSession session) throws MailboxException {
+ return null;
+ }
+
+ @Override
public void createMailbox(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
index 8b2ccdd..09f06e0 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
@@ -98,6 +98,11 @@ public class GetMessagesMethodTest {
public List<Locale> getLocalePreferences() {
return ImmutableList.of();
}
+
+ @Override
+ public boolean isSameUser(String username) {
+ return this.username.equalsIgnoreCase(username);
+ }
}
private static final User ROBERT = new User("robert", "secret");
http://git-wip-us.apache.org/repos/asf/james-project/blob/22ed8ef2/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetVacationResponseMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetVacationResponseMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetVacationResponseMethodTest.java
index 85c9a5e..485ec15 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetVacationResponseMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetVacationResponseMethodTest.java
@@ -68,6 +68,11 @@ public class SetVacationResponseMethodTest {
public List<Locale> getLocalePreferences() {
return null;
}
+
+ @Override
+ public boolean isSameUser(String username) {
+ return USERNAME.equalsIgnoreCase(username);
+ }
};
public static final String SUBJECT = "subject";
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[03/10] james-project git commit: JAMES-1818 Introduce
MailboxManager.hasChildren and use it in MailboxUtils
Posted by ro...@apache.org.
JAMES-1818 Introduce MailboxManager.hasChildren and use it in MailboxUtils
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ed7268ed
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ed7268ed
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ed7268ed
Branch: refs/heads/master
Commit: ed7268ed28ce86c78497055f61e98f2d775e6809
Parents: 8ec9ab9
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Aug 30 16:00:06 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:00 2016 +0200
----------------------------------------------------------------------
.../main/java/org/apache/james/mailbox/MailboxManager.java | 2 ++
.../org/apache/james/mailbox/store/StoreMailboxManager.java | 7 +++++++
.../james/imap/processor/base/MailboxEventAnalyserTest.java | 5 +++++
.../main/java/org/apache/james/jmap/utils/MailboxUtils.java | 4 ++--
.../james/jmap/FirstUserConnectionFilterThreadTest.java | 5 +++++
5 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ed7268ed/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index e2cbdac..d993c4e 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -428,4 +428,6 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport {
* @throws MailboxException in case of selected mailbox does not exist
*/
void updateAnnotations(MailboxPath mailboxPath, MailboxSession session, List<MailboxAnnotation> mailboxAnnotations) throws MailboxException;
+
+ boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ed7268ed/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index e974e18..18f4727 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -771,4 +771,11 @@ public class StoreMailboxManager implements MailboxManager {
AnnotationMapper annotationMapper = getAnnotationMapper(mailboxPath, session);
return annotationMapper.getAnnotationsByKeysWithAllDepth(keys);
}
+
+ @Override
+ public boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
+ MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
+ Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+ return mapper.hasChildren(mailbox, session.getPathDelimiter());
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ed7268ed/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 35d1a4e..c6d2e89 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -423,6 +423,11 @@ public class MailboxEventAnalyserTest {
return null;
}
+ @Override
+ public boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
+ return false;
+ }
+
};
private final class MyMailboxSession implements MailboxSession {
http://git-wip-us.apache.org/repos/asf/james-project/blob/ed7268ed/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
index 3584420..8bb4ba3 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/MailboxUtils.java
@@ -144,8 +144,8 @@ public class MailboxUtils {
public boolean hasChildren(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
return getMailboxFromId(mailboxId, mailboxSession)
- .map(Throwing.function(mailbox ->
- mailboxMapperFactory.getMailboxMapper(mailboxSession).hasChildren(mailbox, mailboxSession.getPathDelimiter())))
+ .map(mailbox -> new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()))
+ .map(Throwing.function(path -> mailboxManager.hasChildren(path, mailboxSession)))
.orElse(false);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ed7268ed/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
index 7cde34c..c64cace 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
@@ -251,6 +251,11 @@ public class FirstUserConnectionFilterThreadTest {
Set<MailboxAnnotationKey> keys) throws MailboxException {
return null;
}
+
+ @Override
+ public boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
+ return false;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[07/10] james-project git commit: JAMES-1818 Finally remove store
main dependency
Posted by ro...@apache.org.
JAMES-1818 Finally remove store main dependency
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/47cfda6c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/47cfda6c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/47cfda6c
Branch: refs/heads/master
Commit: 47cfda6cc0e767607b73517022c6f11c2152c4e7
Parents: 4cdd9f8
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Aug 31 19:23:06 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Sep 5 14:42:01 2016 +0200
----------------------------------------------------------------------
server/pom.xml | 1 +
server/protocols/jmap/pom.xml | 14 ++++++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/47cfda6c/server/pom.xml
----------------------------------------------------------------------
diff --git a/server/pom.xml b/server/pom.xml
index f07d7bf..d8d6773 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -119,6 +119,7 @@
<productName>Apache-James Mail Server</productName>
<activemq.version>5.7.0</activemq.version>
+ <apache-mime4j.version>0.8.0-SNAPSHOT</apache-mime4j.version>
<camel.version>2.13.4</camel.version>
<derby.version>10.9.1.0</derby.version>
<hadoop.version>1.1.1</hadoop.version>
http://git-wip-us.apache.org/repos/asf/james-project/blob/47cfda6c/server/protocols/jmap/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml
index 3b67c3a..5f0436e 100644
--- a/server/protocols/jmap/pom.xml
+++ b/server/protocols/jmap/pom.xml
@@ -169,10 +169,6 @@
<scope>test</scope>
<type>test-jar</type>
</dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>apache-james-mailbox-store</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-james-mailbox-store</artifactId>
@@ -192,6 +188,16 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-mime4j-core</artifactId>
+ <version>${apache-mime4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-mime4j-dom</artifactId>
+ <version>${apache-mime4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-core</artifactId>
</dependency>
<dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org