[01/15] james-project git commit: JAMES-1785 Improve constants in SetMessagesMethodTest

2017-01-23 Thread btellier
Repository: james-project
Updated Branches:
  refs/heads/master 8813d2e57 -> 339880196


JAMES-1785 Improve constants in SetMessagesMethodTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f96b6d2b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f96b6d2b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f96b6d2b

Branch: refs/heads/master
Commit: f96b6d2b5697d3ca862f5bc0c4cef34f11a105e0
Parents: 8813d2e
Author: Benoit Tellier 
Authored: Tue Jan 17 14:07:23 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:41:40 2017 +0700

--
 .../integration/SetMessagesMethodTest.java  | 194 +--
 1 file changed, 97 insertions(+), 97 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/f96b6d2b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 1cbfa7a..4eec224 100644
--- 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -88,6 +88,8 @@ public abstract class SetMessagesMethodTest {
 private static final String SECOND_NAME = "[1][0]";
 private static final String SECOND_ARGUMENTS = "[1][1]";
 private static final String USERS_DOMAIN = "domain.tld";
+private static final String USERNAME = "username@" + USERS_DOMAIN;
+public static final MailboxPath USER_MAILBOX = new 
MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "mailbox");
 private static final String NOT_UPDATED = ARGUMENTS + ".notUpdated";
 
 private ConditionFactory calmlyAwait;
@@ -99,7 +101,6 @@ public abstract class SetMessagesMethodTest {
 protected abstract void await();
 
 private AccessToken accessToken;
-private String username;
 private JmapJamesServer jmapServer;
 
 @Before
@@ -115,14 +116,13 @@ public abstract class SetMessagesMethodTest {
 .build();
 RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
 
-username = "username@" + USERS_DOMAIN;
 String password = "password";
 jmapServer.serverProbe().addDomain(USERS_DOMAIN);
-jmapServer.serverProbe().addUser(username, password);
-jmapServer.serverProbe().createMailbox("#private", username, "inbox");
-accessToken = JmapAuthentication.authenticateJamesUser(username, 
password);
+jmapServer.serverProbe().addUser(USERNAME, password);
+jmapServer.serverProbe().createMailbox("#private", USERNAME, "inbox");
+accessToken = JmapAuthentication.authenticateJamesUser(USERNAME, 
password);
 
-
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
username, "outbox");
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "outbox");
 await();
 
 Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
@@ -207,7 +207,7 @@ public abstract class SetMessagesMethodTest {
 
 @Test
 public void setMessagesShouldReturnNotDestroyedWhenNoMatchingMessage() 
throws Exception {
-
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
username, "mailbox");
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "mailbox");
 
 String messageId = randomMessageId().serialize();
 given()
@@ -230,9 +230,9 @@ public abstract class SetMessagesMethodTest {
 @Test
 public void setMessagesShouldReturnDestroyedWhenMatchingMessage() throws 
Exception {
 // Given
-
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
username, "mailbox");
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "mailbox");
 
-ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(username, new 
MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, USER_MAILBOX,
 new 

[03/15] james-project git commit: JAMES-1785 Using SystemMailboxesProvider to look up role and remove the redundance code

2017-01-23 Thread btellier
JAMES-1785 Using SystemMailboxesProvider to look up role and remove the 
redundance code


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1acd459a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1acd459a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1acd459a

Branch: refs/heads/master
Commit: 1acd459ab233aa41a40cfd2985c5753b516cb452
Parents: c996365
Author: Quynh Nguyen 
Authored: Thu Jan 19 17:46:58 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:45:34 2017 +0700

--
 .../james/jmap/send/PostDequeueDecorator.java   | 38 +++-
 .../jmap/send/PostDequeueDecoratorFactory.java  | 10 +++---
 .../jmap/utils/SystemMailboxesProvider.java |  6 
 .../jmap/utils/SystemMailboxesProviderImpl.java |  3 +-
 .../SetMessagesCreationProcessorTest.java   |  1 +
 .../jmap/send/PostDequeueDecoratorTest.java |  3 +-
 6 files changed, 29 insertions(+), 32 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java
--
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java
index 9179b7e..8a122db 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java
@@ -24,15 +24,13 @@ import java.util.List;
 import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
 import org.apache.james.jmap.model.mailbox.Role;
 import org.apache.james.jmap.send.exception.MailShouldBeInOutboxException;
+import org.apache.james.jmap.utils.SystemMailboxesProvider;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MailboxMetaData;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.MailboxQuery;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageId.Factory;
 import org.apache.james.mailbox.model.MessageResult;
@@ -51,15 +49,18 @@ public class PostDequeueDecorator extends 
MailQueueItemDecorator {
 private final MailboxManager mailboxManager;
 private final Factory messageIdFactory;
 private final MessageIdManager messageIdManager;
+private final SystemMailboxesProvider systemMailboxesProvider;
 
 public PostDequeueDecorator(MailQueueItem mailQueueItem,
-MailboxManager mailboxManager,
-MessageId.Factory messageIdFactory,
-MessageIdManager messageIdManager) {
+MailboxManager mailboxManager,
+Factory messageIdFactory,
+MessageIdManager messageIdManager,
+SystemMailboxesProvider 
systemMailboxesProvider) {
 super(mailQueueItem);
 this.mailboxManager = mailboxManager;
 this.messageIdFactory = messageIdFactory;
 this.messageIdManager = messageIdManager;
+this.systemMailboxesProvider = systemMailboxesProvider;
 }
 
 @Override
@@ -95,7 +96,7 @@ public class PostDequeueDecorator extends 
MailQueueItemDecorator {
 try {
 messageIdFactory.fromString((String) messageId);
 } catch (Exception e) {
-LOG.error("Invalid messageId: " + (String) messageId);
+LOG.error("Invalid messageId: " + messageId);
 return false;
 }
 return true;
@@ -123,28 +124,13 @@ public class PostDequeueDecorator extends 
MailQueueItemDecorator {
 }
 
 private MailboxId getSentMailboxId(MailboxSession session) throws 
MailboxRoleNotFoundException, MailboxException {
-return getMailboxIdForRole(Role.SENT, session);
+return systemMailboxesProvider.findMailbox(Role.SENT, session)
+.getId();
 }
 
 private MailboxId getOutboxMailboxId(MailboxSession session) throws 
MailboxRoleNotFoundException, MailboxException {
-return getMailboxIdForRole(Role.OUTBOX, session);
+return systemMailboxesProvider.findMailbox(Role.OUTBOX, session)
+.getId();
 }
 
-private MailboxId getMailboxIdForRole(Role role, MailboxSession session) 
throws 

[08/15] james-project git commit: JAMES-1785 Adding integration tests for inMailboxes

2017-01-23 Thread btellier
JAMES-1785 Adding integration tests for inMailboxes


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/17a1cb86
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/17a1cb86
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/17a1cb86

Branch: refs/heads/master
Commit: 17a1cb861427138defa47d2078141e6b5cbabcb4
Parents: b0e8e3e
Author: Quynh Nguyen 
Authored: Thu Jan 19 12:02:41 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:14 2017 +0700

--
 .../integration/SetMessagesMethodTest.java  | 375 +--
 .../methods/SetMessagesUpdateProcessor.java |   9 +-
 2 files changed, 350 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/17a1cb86/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 93b7a50..587dec3 100644
--- 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -24,7 +24,9 @@ import static com.jayway.restassured.RestAssured.with;
 import static com.jayway.restassured.config.EncoderConfig.encoderConfig;
 import static com.jayway.restassured.config.RestAssuredConfig.newConfig;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.notIn;
 import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.endsWith;
 import static org.hamcrest.Matchers.equalTo;
@@ -1641,7 +1643,37 @@ public abstract class SetMessagesMethodTest {
 }
 
 @Test
-public void movingShouldBeSupported() throws Exception {
+public void mailboxIdsShouldReturnUpdatedWhenNoChange() throws Exception {
+ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
+ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, new MailboxPath("#private", 
USERNAME, "inbox"),
+new ByteArrayInputStream("Subject: my test 
subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), 
Date.from(dateTime.toInstant()), false, new Flags());
+
+String messageToMoveId = message.getMessageId().serialize();
+String mailboxId = message.getMailboxId().serialize();
+String requestBody = "[" +
+"  [" +
+"\"setMessages\","+
+"{" +
+"  \"update\": { \"" + messageToMoveId + "\" : {" +
+"\"mailboxIds\": [\"" + mailboxId + "\"]" +
+"  }}" +
+"}," +
+"\"#0\"" +
+"  ]" +
+"]";
+
+given()
+.header("Authorization", accessToken.serialize())
+.body(requestBody)
+.when()
+.post("/jmap")
+.then()
+.log().ifValidationFails()
+.spec(getSetMessagesUpdateOKResponseAssertions(messageToMoveId));
+}
+
+@Test
+public void mailboxIdsShouldBeInDestinationWhenUsingForMove() throws 
Exception {
 String newMailboxName = "heartFolder";
 jmapServer.serverProbe().createMailbox("#private", USERNAME, 
newMailboxName);
 Mailbox heartFolder = jmapServer.serverProbe().getMailbox("#private", 
USERNAME, newMailboxName);
@@ -1649,54 +1681,105 @@ public abstract class SetMessagesMethodTest {
 
 ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
 ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, new MailboxPath("#private", 
USERNAME, "inbox"),
-new ByteArrayInputStream("Subject: my test 
subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), 
Date.from(dateTime.toInstant()), false, new Flags());
+new ByteArrayInputStream("Subject: my test 
subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), 
Date.from(dateTime.toInstant()), false, new Flags());
 
 String messageToMoveId = message.getMessageId().serialize();
 String requestBody = "[" +
- 

[10/15] james-project git commit: JAMES-1785 Improve UpdateMessagePatchValidator

2017-01-23 Thread btellier
JAMES-1785 Improve UpdateMessagePatchValidator


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d409d2b2
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d409d2b2
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d409d2b2

Branch: refs/heads/master
Commit: d409d2b2c7285a0737a5c63e52f0c4da747ce1ed
Parents: 17a1cb8
Author: Quynh Nguyen 
Authored: Thu Jan 19 10:42:29 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:20 2017 +0700

--
 .../james/jmap/methods/UpdateMessagePatchValidator.java   | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/d409d2b2/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/UpdateMessagePatchValidator.java
--
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/UpdateMessagePatchValidator.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/UpdateMessagePatchValidator.java
index 963c074..fc77821 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/UpdateMessagePatchValidator.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/UpdateMessagePatchValidator.java
@@ -50,20 +50,19 @@ public class UpdateMessagePatchValidator implements 
Validator {
 
 @Override
 public Set validate(ObjectNode json) {
-ImmutableSet compilation = ImmutableSet.of();
 try {
 parser.readValue(json.toString(), UpdateMessagePatch.class);
 } catch (JsonMappingException e) {
-compilation = ImmutableSet.of(ValidationResult.builder()
+return ImmutableSet.of(ValidationResult.builder()
 
.property(firstFieldFrom(e.getPath()).orElse(ValidationResult.UNDEFINED_PROPERTY))
 .message(e.getMessage())
 .build());
 } catch (IOException e) {
-compilation = ImmutableSet.of(ValidationResult.builder()
+return ImmutableSet.of(ValidationResult.builder()
 .message(e.getMessage())
 .build());
 }
-return compilation;
+return ImmutableSet.of();
 }
 
 private Optional 
firstFieldFrom(List references) {


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[11/15] james-project git commit: JAMES-1785 Update message documentation

2017-01-23 Thread btellier
JAMES-1785 Update message documentation


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/33988019
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/33988019
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/33988019

Branch: refs/heads/master
Commit: 3398801964cebc727eac423b5ed64df6f73a0951
Parents: 91e352e
Author: Quynh Nguyen 
Authored: Thu Jan 19 12:56:11 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:20 2017 +0700

--
 server/protocols/jmap/doc/specs/spec/message.mdwn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/33988019/server/protocols/jmap/doc/specs/spec/message.mdwn
--
diff --git a/server/protocols/jmap/doc/specs/spec/message.mdwn 
b/server/protocols/jmap/doc/specs/spec/message.mdwn
index ab144cb..debcd8a 100644
--- a/server/protocols/jmap/doc/specs/spec/message.mdwn
+++ b/server/protocols/jmap/doc/specs/spec/message.mdwn
@@ -247,7 +247,6 @@ The *setMessages* method encompasses:
 - Changing the flags of a message (unread/flagged status)
 
 - Adding/removing a message to/from mailboxes (moving a message)
-Not implemented
 - Deleting messages
 
 It takes the following arguments:
@@ -328,6 +327,7 @@ If any of the properties in the update are invalid 
(immutable and different to t
 If the *id* given does not correspond to a Message in the given account, 
reject the update with a `notFound` error.
 
 To **delete a message** to trash, simply change the `mailboxIds` property so 
it is now in the mailbox with `role == "trash"`. If the mailbox has the 
property `mustBeOnlyMailbox == true`, it must be removed from all other 
mailboxes. Otherwise, leave it in those mailboxes so that it will be restored 
to its previous state if undeleted.
+Not implemented
 
  Sending messages
 


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[15/15] james-project git commit: JAMES-1785 GetMessages with multiple mailboxes integration tests

2017-01-23 Thread btellier
JAMES-1785 GetMessages with multiple mailboxes integration tests

Also includes builder enhancements


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9875a46b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9875a46b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9875a46b

Branch: refs/heads/master
Commit: 9875a46b7920371a9103eeb60306f3d54563d154
Parents: bd6bd22
Author: Benoit Tellier 
Authored: Wed Jan 18 10:25:04 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:20 2017 +0700

--
 .../org/apache/james/utils/JmapGuiceProbe.java  | 23 ++-
 .../cucumber/GetMessagesMethodStepdefs.java | 31 
 .../test/resources/cucumber/GetMessages.feature |  9 ++
 .../james/jmap/methods/GetMessagesMethod.java   |  1 +
 .../org/apache/james/jmap/model/Message.java|  8 +++--
 .../apache/james/jmap/model/MessageFactory.java | 11 +++
 .../james/jmap/model/MessageFactoryTest.java|  2 +-
 .../apache/james/jmap/model/MessageTest.java| 24 +++
 .../jmap/model/SetMessagesResponseTest.java |  4 +--
 9 files changed, 89 insertions(+), 24 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/9875a46b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/JmapGuiceProbe.java
--
diff --git 
a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/JmapGuiceProbe.java
 
b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/JmapGuiceProbe.java
index cf6..05e1646 100644
--- 
a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/JmapGuiceProbe.java
+++ 
b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/JmapGuiceProbe.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.utils;
 
+import java.util.Arrays;
+
 import javax.inject.Inject;
 
 import org.apache.james.jmap.JMAPServer;
@@ -26,16 +28,30 @@ import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.Vacation;
 import org.apache.james.jmap.api.vacation.VacationPatch;
 import org.apache.james.jmap.api.vacation.VacationRepository;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageIdManager;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class JmapGuiceProbe implements GuiceProbe {
 
+private static final Logger LOGGER = 
LoggerFactory.getLogger(JmapGuiceProbe.class);
+
 private final VacationRepository vacationRepository;
 private final JMAPServer jmapServer;
+private final MessageIdManager messageIdManager;
+private final MailboxManager mailboxManager;
 
 @Inject
-private JmapGuiceProbe(VacationRepository vacationRepository, JMAPServer 
jmapServer) {
+private JmapGuiceProbe(VacationRepository vacationRepository, JMAPServer 
jmapServer, MessageIdManager messageIdManager, MailboxManager mailboxManager) {
 this.vacationRepository = vacationRepository;
 this.jmapServer = jmapServer;
+this.messageIdManager = messageIdManager;
+this.mailboxManager = mailboxManager;
 }
 
 public int getJmapPort() {
@@ -49,4 +65,9 @@ public class JmapGuiceProbe implements GuiceProbe {
 public Vacation retrieveVacation(AccountId accountId) {
 return vacationRepository.retrieveVacation(accountId).join();
 }
+
+public void setInMailboxes(MessageId messageId, String username, 
MailboxId... mailboxIds) throws MailboxException {
+MailboxSession mailboxSession = 
mailboxManager.createSystemSession(username, LOGGER);
+messageIdManager.setInMailboxes(messageId, Arrays.asList(mailboxIds), 
mailboxSession);
+}
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9875a46b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
--
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index 26b1e29..85c38d8 100644
--- 

[12/15] james-project git commit: JAMES-1785 Improve SetMessagesMethodTest.java with indents

2017-01-23 Thread btellier
http://git-wip-us.apache.org/repos/asf/james-project/blob/91e352e4/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 587dec3..caf57a2 100644
--- 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -144,20 +144,20 @@ public abstract class SetMessagesMethodTest {
 
 private String getMailboxId(AccessToken accessToken, Role role) {
 return getAllMailboxesIds(accessToken).stream()
-.filter(x -> x.get("role").equals(role.serialize()))
-.map(x -> x.get("id"))
-.findFirst().get();
+.filter(x -> x.get("role").equals(role.serialize()))
+.map(x -> x.get("id"))
+.findFirst().get();
 }
 
 private List> getAllMailboxesIds(AccessToken 
accessToken) {
 return with()
-.header("Authorization", accessToken.serialize())
-.body("[[\"getMailboxes\", {\"properties\": [\"role\", 
\"id\"]}, \"#0\"]]")
+.header("Authorization", accessToken.serialize())
+.body("[[\"getMailboxes\", {\"properties\": [\"role\", \"id\"]}, 
\"#0\"]]")
 .post("/jmap")
-.andReturn()
-.body()
-.jsonPath()
-.getList(ARGUMENTS + ".list");
+.andReturn()
+.body()
+.jsonPath()
+.getList(ARGUMENTS + ".list");
 }
 
 @Test
@@ -203,9 +203,9 @@ public abstract class SetMessagesMethodTest {
 .body(NAME, equalTo("messagesSet"))
 .body(ARGUMENTS + ".destroyed", empty())
 .body(ARGUMENTS + ".notDestroyed", 
hasEntry(equalTo(unknownMailboxMessageId), Matchers.allOf(
-hasEntry("type", "notFound"),
-hasEntry("description", "The message " + 
unknownMailboxMessageId + " can't be found"),
-hasEntry(equalTo("properties"), isEmptyOrNullString(
+hasEntry("type", "notFound"),
+hasEntry("description", "The message " + 
unknownMailboxMessageId + " can't be found"),
+hasEntry(equalTo("properties"), isEmptyOrNullString(
 );
 }
 
@@ -225,9 +225,9 @@ public abstract class SetMessagesMethodTest {
 .body(NAME, equalTo("messagesSet"))
 .body(ARGUMENTS + ".destroyed", empty())
 .body(ARGUMENTS + ".notDestroyed", hasEntry(equalTo(messageId), 
Matchers.allOf(
-hasEntry("type", "notFound"),
-hasEntry("description", "The message " + messageId + " 
can't be found"),
-hasEntry(equalTo("properties"), isEmptyOrNullString(
+hasEntry("type", "notFound"),
+hasEntry("description", "The message " + messageId + " can't 
be found"),
+hasEntry(equalTo("properties"), isEmptyOrNullString(
 );
 }
 
@@ -237,7 +237,7 @@ public abstract class SetMessagesMethodTest {
 
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "mailbox");
 
 ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, USER_MAILBOX,
-new ByteArrayInputStream("Subject: 
test\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), new Date(), false, new 
Flags());
+new ByteArrayInputStream("Subject: 
test\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), new Date(), false, new 
Flags());
 await();
 
 given()
@@ -260,7 +260,7 @@ public abstract class SetMessagesMethodTest {
 
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "mailbox");
 
 ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, USER_MAILBOX,
-new ByteArrayInputStream("Subject: 
test\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), new Date(), false, new 
Flags());
+new ByteArrayInputStream("Subject: 
test\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), new Date(), false, new 
Flags());
 await();
 
 // When
@@ -291,22 +291,22 @@ public abstract class SetMessagesMethodTest {
 
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 

[13/15] james-project git commit: JAMES-1785 Improve SetMessagesMethodTest.java with indents

2017-01-23 Thread btellier
JAMES-1785 Improve SetMessagesMethodTest.java
with indents


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/91e352e4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/91e352e4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/91e352e4

Branch: refs/heads/master
Commit: 91e352e41c0c325d1a3a624ba069c234253ae383
Parents: d30b24e
Author: Quynh Nguyen 
Authored: Thu Jan 19 12:46:31 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:20 2017 +0700

--
 .../integration/SetMessagesMethodTest.java  | 1404 +-
 1 file changed, 702 insertions(+), 702 deletions(-)
--



-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[14/15] james-project git commit: JAMES-1785 Adding tests for GetMessages on message in multiple mailboxes

2017-01-23 Thread btellier
JAMES-1785 Adding tests for GetMessages on message in multiple mailboxes


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/bd6bd223
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/bd6bd223
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/bd6bd223

Branch: refs/heads/master
Commit: bd6bd22379434ca494ea774fad9b70f68d607c37
Parents: d409d2b
Author: Benoit Tellier 
Authored: Wed Jan 18 09:40:07 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:20 2017 +0700

--
 .../james/jmap/methods/GetMessagesMethod.java   | 22 +++---
 .../apache/james/jmap/methods/JmapResponse.java |  2 +-
 .../james/jmap/model/GetMessagesResponse.java   |  7 
 .../org/apache/james/jmap/model/Message.java|  7 
 .../apache/james/jmap/model/MessageFactory.java | 26 +++-
 .../jmap/methods/GetMessagesMethodTest.java | 42 
 6 files changed, 90 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/bd6bd223/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
--
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
index 15fbceb..41f68ae 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
@@ -39,7 +39,9 @@ import 
org.apache.james.jmap.model.MessageProperties.HeaderProperty;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.MessageResult;
 
 import com.fasterxml.jackson.databind.ser.PropertyFilter;
 import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
@@ -104,7 +106,7 @@ public class GetMessagesMethod implements Method {
 }
 
 private GetMessagesResponse getMessagesResponse(MailboxSession 
mailboxSession, GetMessagesRequest getMessagesRequest) {
-
getMessagesRequest.getAccountId().ifPresent(GetMessagesMethod::notImplemented);
+getMessagesRequest.getAccountId().ifPresent((input) -> 
notImplemented());
 
 Function loadMessages = 
loadMessage(mailboxSession);
 Function convertToJmapMessage = 
Throwing.function(messageFactory::fromMetaDataWithContent).sneakyThrow();
@@ -117,18 +119,28 @@ public class GetMessagesMethod implements Method {
 return 
GetMessagesResponse.builder().messages(result).expectedMessageIds(getMessagesRequest.getIds()).build();
 }
 
-private static void notImplemented(String input) {
+private static void notImplemented() {
 throw new NotImplementedException();
 }
 
 private Function 
loadMessage(MailboxSession mailboxSession) {
-ThrowingFunction 
toMetaDataWithContentStream = (MessageId messageId) -> {
-return messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.FULL_CONTENT, mailboxSession)
+ThrowingFunction 
toMetaDataWithContentStream =
+(MessageId messageId) -> {
+ImmutableList messageResults = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.FULL_CONTENT, mailboxSession)
 .stream()
+.collect(Guavate.toImmutableList());
+List mailboxIds = messageResults.stream()
+.map(MessageResult::getMailboxId)
+.collect(Guavate.toImmutableList());
+return messageResults.stream()
+.findFirst()
+.map(Stream::of)
+.orElse(Stream.of())
 
.map(Throwing.function(MetaDataWithContent::builderFromMessageResult).sneakyThrow())
 .map(builder -> builder.messageId(messageId))
+.map(builder -> builder.mailboxIds(mailboxIds))
 .map(MetaDataWithContent.Builder::build);
-};
+};
 return Throwing.function(toMetaDataWithContentStream).sneakyThrow();
 }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/bd6bd223/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponse.java

[02/15] james-project git commit: JAMES-1785 Add more binding for SystemMailboxesProvider

2017-01-23 Thread btellier
JAMES-1785 Add more binding for SystemMailboxesProvider


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c996365e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c996365e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c996365e

Branch: refs/heads/master
Commit: c996365e12637ab8c5d13669e8b86b34bc377e6d
Parents: f96b6d2
Author: Quynh Nguyen 
Authored: Wed Jan 18 11:20:14 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:41:41 2017 +0700

--
 .../src/main/java/org/apache/james/jmap/JMAPModule.java | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/c996365e/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
--
diff --git 
a/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
 
b/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
index af78a3a..7269cb1 100644
--- 
a/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
+++ 
b/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
@@ -65,6 +65,7 @@ public class JMAPModule extends AbstractModule {
 bind(RequestHandler.class).in(Scopes.SINGLETON);
 bind(UploadHandler.class).in(Scopes.SINGLETON);
 bind(MailboxBasedHtmlTextExtractor.class).in(Scopes.SINGLETON);
+bind(SystemMailboxesProviderImpl.class).in(Scopes.SINGLETON);
 
 bind(HtmlTextExtractor.class).to(MailboxBasedHtmlTextExtractor.class);
 Multibinder.newSetBinder(binder(), 
ConfigurationPerformer.class).addBinding().to(RequiredCapabilitiesPrecondition.class);


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[07/15] james-project git commit: JAMES-1785 Moving to trash is not yet supported

2017-01-23 Thread btellier
JAMES-1785 Moving to trash is not yet supported


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/52be7f03
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/52be7f03
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/52be7f03

Branch: refs/heads/master
Commit: 52be7f0373ad321574b08985d5b91bafa43e148d
Parents: 89994c3
Author: Benoit Tellier 
Authored: Tue Jan 17 14:41:16 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:46:06 2017 +0700

--
 .../integration/SetMessagesMethodTest.java  | 41 
 1 file changed, 41 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/52be7f03/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 4eec224..3fb43cd 100644
--- 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -123,6 +123,8 @@ public abstract class SetMessagesMethodTest {
 accessToken = JmapAuthentication.authenticateJamesUser(USERNAME, 
password);
 
 
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "outbox");
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "trash");
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
USERNAME, "draft");
 await();
 
 Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
@@ -1677,6 +1679,45 @@ public abstract class SetMessagesMethodTest {
 + "(through reference chain: 
org.apache.james.jmap.model.Builder[\"mailboxIds\"])"))
.body(ARGUMENTS + ".updated", hasSize(0));
 }
+
+@Test
+public void moveToTrashIsNotYetSupported() throws Exception {
+String newMailboxName = "heartFolder";
+jmapServer.serverProbe().createMailbox("#private", USERNAME, 
newMailboxName);
+String trashId = jmapServer.serverProbe().getMailbox("#private", 
USERNAME, "trash").getMailboxId().serialize();
+
+ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
+ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, new MailboxPath("#private", 
USERNAME, "inbox"),
+new ByteArrayInputStream("Subject: my test 
subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), 
Date.from(dateTime.toInstant()), false, new Flags());
+
+String messageToMoveId = message.getMessageId().serialize();
+String requestBody = "[" +
+"  [" +
+"\"setMessages\","+
+"{" +
+"  \"update\": { \"" + messageToMoveId + "\" : {" +
+"\"mailboxIds\": [\"" + trashId + "\"]" +
+"  }}" +
+"}," +
+"\"#0\"" +
+"  ]" +
+"]";
+
+given()
+.header("Authorization", accessToken.serialize())
+.body(requestBody)
+.when()
+.post("/jmap")
+.then()
+.log().ifValidationFails()
+.statusCode(200)
+.body(NAME, equalTo("messagesSet"))
+.body(NOT_UPDATED, hasKey(messageToMoveId))
+.body(NOT_UPDATED + "[\""+messageToMoveId+"\"].type", 
equalTo("invalidProperties"))
+.body(NOT_UPDATED + "[\""+messageToMoveId+"\"].properties", 
hasSize(1))
+.body(NOT_UPDATED + "[\""+messageToMoveId+"\"].properties[0]", 
equalTo("inMailboxes"))
+.body(ARGUMENTS + ".updated", hasSize(0));
+}
 
 @Test
 public void 
setMessagesShouldReturnAttachmentsNotFoundWhenBlobIdDoesntExist() throws 
Exception {


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[06/15] james-project git commit: JAMES-1785 Copying a message to trash is allowed

2017-01-23 Thread btellier
JAMES-1785 Copying a message to trash is allowed


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b0e8e3ed
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b0e8e3ed
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b0e8e3ed

Branch: refs/heads/master
Commit: b0e8e3ed38e2069acecc6fdf81e10e21ea5f87fa
Parents: 52be7f0
Author: Benoit Tellier 
Authored: Tue Jan 17 15:09:33 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:46:06 2017 +0700

--
 .../integration/SetMessagesMethodTest.java  | 44 
 1 file changed, 44 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/b0e8e3ed/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 3fb43cd..93b7a50 100644
--- 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -1718,6 +1718,50 @@ public abstract class SetMessagesMethodTest {
 .body(NOT_UPDATED + "[\""+messageToMoveId+"\"].properties[0]", 
equalTo("inMailboxes"))
 .body(ARGUMENTS + ".updated", hasSize(0));
 }
+
+@Test
+public void copyToTrashShouldWork() throws Exception {
+String newMailboxName = "heartFolder";
+jmapServer.serverProbe().createMailbox("#private", USERNAME, 
newMailboxName);
+String trashId = jmapServer.serverProbe().getMailbox("#private", 
USERNAME, "trash").getMailboxId().serialize();
+
+ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
+ComposedMessageId message = 
jmapServer.serverProbe().appendMessage(USERNAME, new MailboxPath("#private", 
USERNAME, "inbox"),
+new ByteArrayInputStream("Subject: my test 
subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), 
Date.from(dateTime.toInstant()), false, new Flags());
+
+String messageToMoveId = message.getMessageId().serialize();
+String mailboxId = message.getMailboxId().serialize();
+String requestBody = "[" +
+"  [" +
+"\"setMessages\","+
+"{" +
+"  \"update\": { \"" + messageToMoveId + "\" : {" +
+"\"mailboxIds\": [\"" + trashId + "," + mailboxId + "\"]" +
+"  }}" +
+"}," +
+"\"#0\"" +
+"  ]" +
+"]";
+
+given()
+.header("Authorization", accessToken.serialize())
+.body(requestBody)
+.when()
+.post("/jmap");
+
+String firstMessage = ARGUMENTS + ".list[0]";
+given()
+.header("Authorization", accessToken.serialize())
+.body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + 
"\"]}, \"#0\"]]")
+.when()
+.post("/jmap")
+.then()
+.statusCode(200)
+.log().ifValidationFails()
+.body(NAME, equalTo("messages"))
+.body(ARGUMENTS + ".list", hasSize(1))
+.body(firstMessage + ".mailboxIds", contains(trashId, mailboxId));
+}
 
 @Test
 public void 
setMessagesShouldReturnAttachmentsNotFoundWhenBlobIdDoesntExist() throws 
Exception {


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[04/15] james-project git commit: JAMES-1785 Testing for SystemMailboxesProviderImpl

2017-01-23 Thread btellier
JAMES-1785 Testing for SystemMailboxesProviderImpl


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/54fe9a4b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/54fe9a4b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/54fe9a4b

Branch: refs/heads/master
Commit: 54fe9a4bd00b69cc048d554464ee987f3c302343
Parents: 1acd459
Author: Quynh Nguyen 
Authored: Wed Jan 18 16:29:53 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:46:01 2017 +0700

--
 .../utils/SystemMailboxesProviderImplTest.java  | 137 ++-
 1 file changed, 132 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/54fe9a4b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
--
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
index 3ee868d..1d40c41 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
@@ -19,15 +19,142 @@
 
 package org.apache.james.jmap.utils;
 
-import org.junit.Ignore;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.stream.Stream;
+
+import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
+import org.apache.james.jmap.model.mailbox.Role;
+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.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxMetaData;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MailboxQuery;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.store.SimpleMailboxMetaData;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.common.collect.ImmutableList;
 
 public class SystemMailboxesProviderImplTest {
 
-@Ignore("1716 this class needs a test suite")
+private static final MailboxPath INBOX = 
MailboxManagerFixture.MAILBOX_PATH1;
+private static final MailboxPath OUTBOX = 
MailboxManagerFixture.MAILBOX_PATH2;
+private static final char DELIMITER = '.';
+
+private static final MailboxId inboxId = TestId.of(1);
+private static final MailboxId outboxId = TestId.of(2);
+
+private static final MailboxMetaData inboxMetadata = new 
SimpleMailboxMetaData(INBOX, inboxId, DELIMITER);
+private static final MailboxMetaData outboxMetadata = new 
SimpleMailboxMetaData(OUTBOX, outboxId, DELIMITER);
+
+private MailboxSession mailboxSession = new MockMailboxSession("user");
+private SystemMailboxesProviderImpl systemMailboxProvider;
+
+private MailboxManager mailboxManager;
+
+private MessageManager inboxMessageManager;
+private MessageManager outboxMessageManager;
+
+@Rule
+public ExpectedException expectedException = ExpectedException.none();
+
+@Before
+public void setUp() throws Exception {
+mailboxManager = mock(MailboxManager.class);
+inboxMessageManager = mock(MessageManager.class);
+outboxMessageManager = mock(MessageManager.class);
+
+systemMailboxProvider = new 
SystemMailboxesProviderImpl(mailboxManager);
+}
+
+@Test
+public void findMailboxesShouldReturnEmptyWhenEmptySearchResult() throws 
Exception {
+when(mailboxManager.search(any(MailboxQuery.class), 
eq(mailboxSession))).thenReturn(ImmutableList.of());
+
+assertThat(systemMailboxProvider.listMailboxes(Role.INBOX, 
mailboxSession)).isEmpty();
+}
+
+@Test
+public void findMailboxesShouldFilterTheMailboxByItsRole() throws 
Exception {
+when(mailboxManager.search(any(MailboxQuery.class), 
eq(mailboxSession))).thenReturn(ImmutableList.of(inboxMetadata, 
outboxMetadata));
+when(mailboxManager.getMailbox(eq(INBOX), 
eq(mailboxSession))).thenReturn(inboxMessageManager);
+
+Stream result = 
systemMailboxProvider.listMailboxes(Role.INBOX, 

[09/15] james-project git commit: JAMES-1785 Improve MailboxNotFoundException with an error message

2017-01-23 Thread btellier
JAMES-1785 Improve MailboxNotFoundException with an error message


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d30b24e4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d30b24e4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d30b24e4

Branch: refs/heads/master
Commit: d30b24e42cd902688fc4be4a6c9d623626e63f94
Parents: 9875a46
Author: Benoit Tellier 
Authored: Wed Jan 18 10:26:02 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:58:20 2017 +0700

--
 .../apache/james/mailbox/exception/MailboxNotFoundException.java| 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/d30b24e4/mailbox/api/src/main/java/org/apache/james/mailbox/exception/MailboxNotFoundException.java
--
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/exception/MailboxNotFoundException.java
 
b/mailbox/api/src/main/java/org/apache/james/mailbox/exception/MailboxNotFoundException.java
index 8301d76..2e538cb 100644
--- 
a/mailbox/api/src/main/java/org/apache/james/mailbox/exception/MailboxNotFoundException.java
+++ 
b/mailbox/api/src/main/java/org/apache/james/mailbox/exception/MailboxNotFoundException.java
@@ -44,6 +44,7 @@ public class MailboxNotFoundException extends 
MailboxException {
  *name of the mailbox, not null
  */
 public MailboxNotFoundException(MailboxPath mailboxPath) {
+super(mailboxPath + " can not be found");
 this.mailboxName = mailboxPath.toString();
 }
 


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[05/15] james-project git commit: JAMES-1785 Implement move feature on JMAP using setInMailboxes

2017-01-23 Thread btellier
JAMES-1785 Implement move feature on JMAP using setInMailboxes


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/89994c30
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/89994c30
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/89994c30

Branch: refs/heads/master
Commit: 89994c30809c7a963938a7a6eebe9b62baa62774
Parents: 54fe9a4
Author: Quynh Nguyen 
Authored: Wed Jan 18 11:29:33 2017 +0700
Committer: Quynh Nguyen 
Committed: Tue Jan 24 09:46:05 2017 +0700

--
 .../methods/SetMessagesUpdateProcessor.java | 49 ++--
 .../james/jmap/model/UpdateMessagePatch.java| 32 +++--
 .../methods/SetMessagesUpdateProcessorTest.java |  4 +-
 3 files changed, 64 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/89994c30/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
--
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
index ba55a8d..f04e180 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
@@ -28,21 +28,28 @@ import java.util.stream.Stream;
 import javax.inject.Inject;
 import javax.mail.Flags;
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.jmap.model.MessageProperties;
 import org.apache.james.jmap.model.SetError;
 import org.apache.james.jmap.model.SetMessagesRequest;
 import org.apache.james.jmap.model.SetMessagesResponse;
 import org.apache.james.jmap.model.UpdateMessagePatch;
+import org.apache.james.jmap.model.mailbox.Role;
+import org.apache.james.jmap.utils.SystemMailboxesProvider;
+import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxId.Factory;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -54,13 +61,21 @@ public class SetMessagesUpdateProcessor implements 
SetMessagesProcessor {
 
 private final UpdateMessagePatchConverter updatePatchConverter;
 private final MessageIdManager messageIdManager;
+private final Factory mailboxIdFactory;
+private final MailboxManager mailboxManager;
+private final SystemMailboxesProvider systemMailboxesProvider;
 
 @Inject
 @VisibleForTesting SetMessagesUpdateProcessor(
-UpdateMessagePatchConverter updatePatchConverter,
-MessageIdManager messageIdManager) {
+UpdateMessagePatchConverter updatePatchConverter,
+MessageIdManager messageIdManager,
+Factory mailboxIdFactory,
+MailboxManager mailboxManager, SystemMailboxesProvider 
systemMailboxesProvider) {
 this.updatePatchConverter = updatePatchConverter;
 this.messageIdManager = messageIdManager;
+this.mailboxIdFactory = mailboxIdFactory;
+this.mailboxManager = mailboxManager;
+this.systemMailboxesProvider = systemMailboxesProvider;
 }
 
 public SetMessagesResponse process(SetMessagesRequest request,  
MailboxSession mailboxSession) {
@@ -78,14 +93,16 @@ public class SetMessagesUpdateProcessor implements 
SetMessagesProcessor {
 SetMessagesResponse.Builder builder) {
 try {
 List messages = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, mailboxSession);
+
 if (messages.isEmpty()) {
 addMessageIdNotFoundToResponse(messageId, builder);
 } else {
+setInMailboxes(messageId, updateMessagePatch, mailboxSession);
 Optional updateError = messages.stream()
 .flatMap(message -> updateFlags(messageId, 
updateMessagePatch, mailboxSession, message))
 .findAny();
 if (updateError.isPresent()) {
-

james-project git commit: JAMES-1915 Using concurrent safe collection for ConcurrentTestRunnerTest

2017-01-23 Thread btellier
Repository: james-project
Updated Branches:
  refs/heads/master 84ed5a28a -> 8813d2e57


JAMES-1915 Using concurrent safe collection for ConcurrentTestRunnerTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8813d2e5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8813d2e5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8813d2e5

Branch: refs/heads/master
Commit: 8813d2e57195ef60dc2403fedc341e7018059de4
Parents: 84ed5a2
Author: Benoit Tellier 
Authored: Mon Jan 23 09:47:31 2017 +0700
Committer: Benoit Tellier 
Committed: Tue Jan 24 08:33:14 2017 +0700

--
 .../mail/model/concurrency/ConcurrentTestRunnerTest.java  | 10 --
 1 file changed, 4 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/8813d2e5/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
--
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
index 60fa367..302ed9e 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
@@ -21,15 +21,13 @@ package 
org.apache.james.mailbox.store.mail.model.concurrency;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.util.List;
+import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.TimeUnit;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.collect.Lists;
-
 public class ConcurrentTestRunnerTest {
 
 public static final ConcurrentTestRunner.BiConsumer EMPTY_BI_CONSUMER = 
new ConcurrentTestRunner.BiConsumer() {
@@ -120,18 +118,18 @@ public class ConcurrentTestRunnerTest {
 public void runShouldPerformAllOperations() throws Exception {
 int operationCount = 2;
 int threadCount = 2;
-final List list = Lists.newArrayList();
+final ConcurrentLinkedQueue queue = new 
ConcurrentLinkedQueue();
 
 ConcurrentTestRunner concurrentTestRunner = new 
ConcurrentTestRunner(threadCount, operationCount,
 new ConcurrentTestRunner.BiConsumer() {
 @Override
 public void consume(int threadNumber, int step) throws 
Exception {
-list.add(threadNumber + ":" + step);
+queue.add(threadNumber + ":" + step);
 }
 })
 .run();
 
 assertThat(concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, 
TimeUnit.MILLISECONDS)).isTrue();
-assertThat(list).containsOnly("0:0", "0:1", "1:0", "1:1");
+assertThat(queue).containsOnly("0:0", "0:1", "1:0", "1:1");
 }
 }


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[01/10] james-project git commit: Fix Eclipse Neon.2 compilation error in lambdas

2017-01-23 Thread btellier
Repository: james-project
Updated Branches:
  refs/heads/master fabccf51c -> 84ed5a28a


Fix Eclipse Neon.2 compilation error in lambdas


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/35b7fe34
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/35b7fe34
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/35b7fe34

Branch: refs/heads/master
Commit: 35b7fe34173f417a96acaaf377ce34d6e686b5fc
Parents: fabccf5
Author: Antoine Duprat 
Authored: Thu Jan 19 10:23:49 2017 +0100
Committer: Antoine Duprat 
Committed: Mon Jan 23 09:58:23 2017 +0100

--
 .../james/mailbox/cassandra/mail/CassandraMessageIdMapper.java | 2 +-
 .../james/mailbox/cassandra/mail/CassandraMessageMapper.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7fe34/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
--
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index 31fc26a..b4e0474 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -289,7 +289,7 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
 return imapUidDAO.updateMetadata(newComposedId, 
oldComposedId.getModSeq())
 .thenCompose(updateSuccess -> Optional.of(updateSuccess)
 .filter(b -> b)
-.map(any -> 
messageIdDAO.updateMetadata(newComposedId).thenApply(v -> updateSuccess))
+.map((Boolean any) -> 
messageIdDAO.updateMetadata(newComposedId).thenApply(v -> updateSuccess))
 .orElse(CompletableFuture.completedFuture(updateSuccess)))
 .thenApply(success -> Optional.of(success)
 .filter(b -> b)

http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7fe34/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
--
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index 339f9ab..79763ee 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -325,7 +325,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
 return imapUidDAO.updateMetadata(composedMessageIdWithMetaData, 
oldModSeq)
 .thenCompose(success -> Optional.of(success)
 .filter(b -> b)
-.map(any -> 
messageIdDAO.updateMetadata(composedMessageIdWithMetaData)
+.map((Boolean any) -> 
messageIdDAO.updateMetadata(composedMessageIdWithMetaData)
 .thenApply(v -> success))
 .orElse(CompletableFuture.completedFuture(success)))
 .join();


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[02/10] james-project git commit: Fix Eclipse warnings

2017-01-23 Thread btellier
Fix Eclipse 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/4a59c1b2
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4a59c1b2
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4a59c1b2

Branch: refs/heads/master
Commit: 4a59c1b216bd8cd7c284cb6c472cf5cadaa97e32
Parents: 35b7fe3
Author: Antoine Duprat 
Authored: Thu Jan 19 10:27:45 2017 +0100
Committer: Antoine Duprat 
Committed: Mon Jan 23 10:05:14 2017 +0100

--
 .../cassandra/mail/CassandraMessageIdDAO.java |  1 -
 .../CassandraCombinationManagerTestSystem.java|  6 ++
 .../store/AbstractCombinationManagerTest.java |  1 +
 mailet/icalendar/pom.xml  |  5 +
 .../james/transport/mailets/ICalendarParser.java  |  2 ++
 .../mailets/ICALToJsonAttributeTest.java  |  3 +--
 .../transport/mailets/ICalendarParserTest.java| 18 --
 mailet/standard/pom.xml   |  1 -
 8 files changed, 11 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/4a59c1b2/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
--
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
index 9a6acc7..e7d5a34 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
@@ -69,7 +69,6 @@ import com.google.common.collect.ImmutableSet;
 
 public class CassandraMessageIdDAO {
 
-private static final String MOD_SEQ_CONDITION = "modSeqCondition";
 private static final String IMAP_UID_GTE = IMAP_UID + "_GTE";
 private static final String IMAP_UID_LTE = IMAP_UID + "_LTE";
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4a59c1b2/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
--
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
index d3387fd..42ef8e5 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
@@ -31,7 +31,7 @@ import 
org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
 public class CassandraCombinationManagerTestSystem extends 
CombinationManagerTestSystem {
-private final CassandraMessageId.Factory messageIdFactory;
+
 private final CassandraMailboxSessionMapperFactory mapperFactory;
 private final CassandraMailboxManager cassandraMailboxManager;
 
@@ -39,14 +39,12 @@ public class CassandraCombinationManagerTestSystem extends 
CombinationManagerTes
 CassandraMailboxSessionMapperFactory mapperFactory = 
CassandraTestSystemFixture.createMapperFactory();
 
 return new 
CassandraCombinationManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory,
 quotaManager, dispatcher),
-new CassandraMessageId.Factory(),
 mapperFactory,
 CassandraTestSystemFixture.createMailboxManager(mapperFactory));
 }
 
-private CassandraCombinationManagerTestSystem(MessageIdManager 
messageIdManager, CassandraMessageId.Factory messageIdFactory, 
CassandraMailboxSessionMapperFactory mapperFactory, MailboxManager 
cassandraMailboxManager) {
+private CassandraCombinationManagerTestSystem(MessageIdManager 
messageIdManager, CassandraMailboxSessionMapperFactory mapperFactory, 
MailboxManager cassandraMailboxManager) {
 super(cassandraMailboxManager, messageIdManager);
-this.messageIdFactory = messageIdFactory;
 this.mapperFactory = mapperFactory;
 this.cassandraMailboxManager = 
(CassandraMailboxManager)cassandraMailboxManager;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4a59c1b2/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
--
diff --git 

[06/10] james-project git commit: MAILET-149 Adding integration tests for Base64 ICS attachments

2017-01-23 Thread btellier
MAILET-149 Adding integration tests for Base64 ICS attachments


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f1955243
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f1955243
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f1955243

Branch: refs/heads/master
Commit: f19552431b9c751f3c1342f79cefd51d53d4ae6c
Parents: 03c8f69
Author: Benoit Tellier 
Authored: Fri Jan 20 11:05:15 2017 +0700
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:24 2017 +0100

--
 .../mailet/base/test/MimeMessageBuilder.java| 16 ++--
 .../mailets/ICSAttachmentWorkflowTest.java  | 89 
 2 files changed, 99 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/f1955243/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
--
diff --git 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index 1246bf7..40a7e18 100644
--- 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -21,6 +21,7 @@ package org.apache.mailet.base.test;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Properties;
@@ -136,21 +137,20 @@ public class MimeMessageBuilder {
 }
 
 public BodyPart build() throws IOException, MessagingException {
-Preconditions.checkState(dataAsString.isPresent() ^ 
dataAsBytes.isPresent(), "one and only one of data as string or data as bytes 
should be specified");
+Preconditions.checkState(!(dataAsString.isPresent() && 
dataAsBytes.isPresent()), "Can not specify data as bytes and data as string at 
the same time");
 MimeBodyPart bodyPart = new MimeBodyPart();
-if (dataAsString.isPresent()) {
+if (dataAsBytes.isPresent()) {
 bodyPart.setDataHandler(
 new DataHandler(
 new ByteArrayDataSource(
-dataAsString.or(DEFAULT_VALUE),
+dataAsBytes.get(),
 type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
 ));
-}
-if (dataAsBytes.isPresent()) {
+} else {
 bodyPart.setDataHandler(
 new DataHandler(
 new ByteArrayDataSource(
-dataAsBytes.get(),
+dataAsString.or(DEFAULT_VALUE),
 type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
 ));
 }
@@ -198,6 +198,10 @@ public class MimeMessageBuilder {
 return new BodyPartBuilder();
 }
 
+public static BodyPart bodyPartFromBytes(byte[] bytes) throws 
MessagingException {
+return new MimeBodyPart(new ByteArrayInputStream(bytes));
+}
+
 private Optional text = Optional.absent();
 private Optional subject = Optional.absent();
 private Optional sender = Optional.absent();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f1955243/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 2a6ffe1..376f5fe 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -201,6 +201,35 @@ public class ICSAttachmentWorkflowTest {
 "END:VEVENT\n" +
 "END:VCALENDAR\n";
 
+private static final String ICS_BASE64 = "Content-Type: 
application/ics;\n" +
+" name=\"invite.ics\"\n" +
+"Content-Transfer-Encoding: base64\n" +
+"Content-Disposition: attachment;\n" +
+" filename=\"invite.ics\"\n" +
+"\n" +
+
"QkVHSU46VkNBTEVOREFSDQpQUk9ESUQ6LS8vR29vZ2xlIEluYy8vR29vZ2xlIENhbGVuZGFy\n" +
+
"IDcwLjkwNTQvL0VODQpWRVJTSU9OOjIuMA0KQ0FMU0NBTEU6R1JFR09SSUFODQpNRVRIT0Q6\n" +
+

[09/10] james-project git commit: MAILET-149 Integration test for multiple out of order ICS publish when several attachments

2017-01-23 Thread btellier
MAILET-149 Integration test for multiple out of order ICS publish when several 
attachments


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d0b61696
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d0b61696
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d0b61696

Branch: refs/heads/master
Commit: d0b6169635417f66c7495e12f6e857955288edb5
Parents: 229c4d3
Author: Benoit Tellier 
Authored: Fri Jan 20 15:03:33 2017 +0700
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:25 2017 +0100

--
 .../mailets/ICSAttachmentWorkflowTest.java  | 86 ++--
 1 file changed, 63 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/d0b61696/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 376f5fe..9302fe7 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -47,6 +47,7 @@ import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
+import com.google.common.collect.ImmutableList;
 import com.jayway.awaitility.Awaitility;
 import com.jayway.awaitility.Duration;
 import com.jayway.awaitility.core.ConditionFactory;
@@ -243,6 +244,7 @@ public class ICSAttachmentWorkflowTest {
 private MimeMessage messageWithoutICSAttached;
 private MimeMessage messageWithICSAttached;
 private MimeMessage messageWithICSBase64Attached;
+private MimeMessage messageWithThreeICSAttached;
 
 @Before
 public void setup() throws Exception {
@@ -349,6 +351,29 @@ public class ICSAttachmentWorkflowTest {
 
MimeMessageBuilder.bodyPartFromBytes(ICS_BASE64.getBytes(Charsets.UTF_8)))
 .setSubject("test")
 .build();
+
+messageWithThreeICSAttached = MimeMessageBuilder.mimeMessageBuilder()
+.setMultipartWithBodyParts(
+MimeMessageBuilder.bodyPartBuilder()
+.data("simple text")
+.build(),
+MimeMessageBuilder.bodyPartBuilder()
+.data(ICS_1.getBytes(Charsets.UTF_8))
+.filename("test1.txt")
+.disposition("attachment")
+.build(),
+MimeMessageBuilder.bodyPartBuilder()
+.data(ICS_2.getBytes(Charsets.UTF_8))
+.filename("test2.txt")
+.disposition("attachment")
+.build(),
+MimeMessageBuilder.bodyPartBuilder()
+.data(ICS_3.getBytes(Charsets.UTF_8))
+.filename("test3.txt")
+.disposition("attachment")
+.build())
+.setSubject("test")
+.build();
 }
 
 @After
@@ -507,29 +532,6 @@ public class ICSAttachmentWorkflowTest {
 
 @Test
 public void 
headersShouldBeFilledOnlyWithOneICalAttachmentWhenMailHasSeveral() throws 
Exception {
-MimeMessage messageWithThreeICSAttached = 
MimeMessageBuilder.mimeMessageBuilder()
-.setMultipartWithBodyParts(
-MimeMessageBuilder.bodyPartBuilder()
-.data("simple text")
-.build(),
-MimeMessageBuilder.bodyPartBuilder()
-.data(ICS_1.getBytes(Charsets.UTF_8))
-.filename("test1.txt")
-.disposition("attachment")
-.build(),
-MimeMessageBuilder.bodyPartBuilder()
-.data(ICS_2.getBytes(Charsets.UTF_8))
-.filename("test2.txt")
-.disposition("attachment")
-.build(),
-MimeMessageBuilder.bodyPartBuilder()
-.data(ICS_3.getBytes(Charsets.UTF_8))
-.filename("test3.txt")
-.disposition("attachment")
-.build())
-.setSubject("test")
-.build();
-
 Mail mail = FakeMail.builder()
   .mimeMessage(messageWithThreeICSAttached)
   .sender(new MailAddress(FROM))
@@ -551,4 +553,42 @@ public class 

[07/10] james-project git commit: MAILET-149 Solving ICS ordering issue

2017-01-23 Thread btellier
MAILET-149 Solving ICS ordering issue


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/03c8f69b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/03c8f69b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/03c8f69b

Branch: refs/heads/master
Commit: 03c8f69b209b2a0267bf390cb2ecd3e70c13c1d9
Parents: b1b4631
Author: Benoit Tellier 
Authored: Fri Jan 20 10:33:23 2017 +0700
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:24 2017 +0100

--
 .../transport/mailets/ICSAttachmentWorkflowTest.java | 11 ---
 1 file changed, 4 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/03c8f69b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index a6b03e5..2a6ffe1 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -41,7 +41,6 @@ import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
@@ -417,7 +416,6 @@ public class ICSAttachmentWorkflowTest {
 }
 }
 
-@Ignore("See JIRA issue MAILET-151")
 @Test
 public void 
headersShouldBeFilledOnlyWithOneICalAttachmentWhenMailHasSeveral() throws 
Exception {
 MimeMessage messageWithThreeICSAttached = 
MimeMessageBuilder.mimeMessageBuilder()
@@ -427,17 +425,17 @@ public class ICSAttachmentWorkflowTest {
 .build(),
 MimeMessageBuilder.bodyPartBuilder()
 .data(ICS_1.getBytes(Charsets.UTF_8))
-.filename("test.txt")
+.filename("test1.txt")
 .disposition("attachment")
 .build(),
 MimeMessageBuilder.bodyPartBuilder()
 .data(ICS_2.getBytes(Charsets.UTF_8))
-.filename("test.txt")
+.filename("test2.txt")
 .disposition("attachment")
 .build(),
 MimeMessageBuilder.bodyPartBuilder()
 .data(ICS_3.getBytes(Charsets.UTF_8))
-.filename("test.txt")
+.filename("test3.txt")
 .disposition("attachment")
 .build())
 .setSubject("test")
@@ -456,8 +454,7 @@ public class ICSAttachmentWorkflowTest {
 calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> 
imapMessageReader.userReceivedMessage(RECIPIENT, PASSWORD));
 
 String receivedHeaders = 
imapMessageReader.readFirstMessageHeadersInInbox(RECIPIENT, PASSWORD);
-
-//Here only the third ICal attachment is used to fill headers
+
 assertThat(receivedHeaders).contains("X-MEETING-UID: " + ICS_UID);
 assertThat(receivedHeaders).contains("X-MEETING-METHOD: " + 
ICS_METHOD);
 assertThat(receivedHeaders).contains("X-MEETING-SEQUENCE: " + 
ICS_SEQUENCE);


-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[10/10] james-project git commit: MAILET-149 Filename should be generated when none

2017-01-23 Thread btellier
MAILET-149 Filename should be generated when none


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/84ed5a28
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/84ed5a28
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/84ed5a28

Branch: refs/heads/master
Commit: 84ed5a28a266ec9102fc90896c52f62f10abf0db
Parents: d0b6169
Author: Antoine Duprat 
Authored: Mon Jan 23 10:09:37 2017 +0100
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:26 2017 +0100

--
 .../transport/mailets/StripAttachment.java  |  6 +--
 .../transport/mailets/StripAttachmentTest.java  | 52 ++--
 .../mailets/AmqpForwardAttachmentTest.java  |  2 +-
 3 files changed, 51 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/84ed5a28/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
--
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
index 4bf7a5c..58b7304 100644
--- 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
@@ -31,6 +31,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.UUID;
 import java.util.regex.Pattern;
 
 import javax.mail.BodyPart;
@@ -310,9 +311,6 @@ public class StripAttachment extends GenericMailet {
 
 private boolean shouldBeRemoved(BodyPart bodyPart, Mail mail) throws 
MessagingException, Exception {
 String fileName = getFilename(bodyPart);
-if (fileName == null) {
-return false;
-}
 
 boolean shouldRemove = removeAttachments.equals(REMOVE_ALL);
 String decodedName = DecoderUtil.decodeEncodedWords(fileName, 
DecodeMonitor.SILENT);
@@ -379,7 +377,7 @@ public class StripAttachment extends GenericMailet {
 if (fileName != null) {
 return renameWithConfigurationPattern(decodeFilename(fileName));
 }
-return fileName;
+return UUID.randomUUID().toString();
 }
 
 private String renameWithConfigurationPattern(String fileName) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/84ed5a28/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
--
diff --git 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 0c481c9..5995f98 100644
--- 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -55,6 +55,8 @@ import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.FluentIterable;
 
 public class StripAttachmentTest {
 
@@ -217,7 +219,7 @@ public class StripAttachmentTest {
 MimeMessageBuilder.bodyPartBuilder()
 .data("simple text")
 .build(),
-createAttachmentBodyPart(expectedAttachmentContent, 
"temp.tmp", TEXT_HEADERS),
+createAttachmentBodyPart(expectedAttachmentContent, 
"temp_filname.tmp", TEXT_HEADERS),
 createAttachmentBodyPart("\u0014\u00A3\u00E1\u00E2\u00E4", 
"winmail.dat", TEXT_HEADERS))
 .build();
 
@@ -230,13 +232,26 @@ public class StripAttachmentTest {
 @SuppressWarnings("unchecked")
 Collection savedAttachments = (Collection) 
mail.getAttribute(StripAttachment.SAVED_ATTACHMENTS_ATTRIBUTE_KEY);
 assertThat(savedAttachments).isNotNull();
-assertThat(savedAttachments).hasSize(1);
-
-String attachmentFilename = savedAttachments.iterator().next();
+assertThat(savedAttachments).hasSize(2);
 
+String attachmentFilename = 
retrieveFilenameStartingWith(savedAttachments, "temp_filname");
+assertThat(attachmentFilename).isNotNull();
 assertThat(new File(folderPath + 
attachmentFilename)).hasContent(expectedAttachmentContent);
 }
 
+private String retrieveFilenameStartingWith(Collection 
savedAttachments, final String filename) {
+return FluentIterable.from(savedAttachments)
+.filter(new 

[08/10] james-project git commit: MAILET-149 Decode file names in StripAttachment

2017-01-23 Thread btellier
MAILET-149 Decode file names in StripAttachment


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/229c4d38
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/229c4d38
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/229c4d38

Branch: refs/heads/master
Commit: 229c4d382db5f6884d1f2c136ab6feb5a3071dd7
Parents: f195524
Author: Benoit Tellier 
Authored: Fri Jan 20 14:36:48 2017 +0700
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:25 2017 +0100

--
 .../mailet/base/test/MimeMessageBuilder.java|   4 +
 .../transport/mailets/StripAttachment.java  |   9 +-
 .../transport/mailets/StripAttachmentTest.java  |  36 +
 .../standard/src/test/resources/mime/gmail.mime | 153 +++
 4 files changed, 199 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/229c4d38/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
--
diff --git 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index 40a7e18..c75136d 100644
--- 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -186,6 +186,10 @@ public class MimeMessageBuilder {
 return new MimeMessage(Session.getDefaultInstance(new Properties()));
 }
 
+public static MimeMessage mimeMessageFromStream(InputStream inputStream) 
throws MessagingException {
+return new MimeMessage(Session.getDefaultInstance(new Properties()), 
inputStream);
+}
+
 public static MimeMessageBuilder mimeMessageBuilder() {
 return new MimeMessageBuilder();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/229c4d38/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
--
diff --git 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
index 20ff946..4bf7a5c 100644
--- 
a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
+++ 
b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
@@ -43,6 +43,8 @@ import javax.mail.internet.MimeUtility;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.james.mime4j.codec.DecodeMonitor;
+import org.apache.james.mime4j.codec.DecoderUtil;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailetException;
 import org.apache.mailet.base.GenericMailet;
@@ -313,9 +315,10 @@ public class StripAttachment extends GenericMailet {
 }
 
 boolean shouldRemove = removeAttachments.equals(REMOVE_ALL);
-if (isMatching(bodyPart, fileName)) {
-storeBodyPartAsFile(bodyPart, mail, fileName);
-storeBodyPartAsMailAttribute(bodyPart, mail, fileName);
+String decodedName = DecoderUtil.decodeEncodedWords(fileName, 
DecodeMonitor.SILENT);
+if (isMatching(bodyPart, decodedName)) {
+storeBodyPartAsFile(bodyPart, mail, decodedName);
+storeBodyPartAsMailAttribute(bodyPart, mail, decodedName);
 if (removeAttachments.equals(REMOVE_MATCHED)) {
 shouldRemove = true;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/229c4d38/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
--
diff --git 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index d888c44..0c481c9 100644
--- 
a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ 
b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -310,6 +310,42 @@ public class StripAttachmentTest {
 }
 
 @Test
+public void serviceShouldDecodeHeaderFilenames() throws 
MessagingException, IOException {
+StripAttachment mailet = new StripAttachment();
+
+String customAttribute = "my.custom.attribute";
+FakeMailetConfig mci = FakeMailetConfig.builder()
+.mailetName("Test")
+.setProperty("pattern", ".*\\.tmp")
+.setProperty("attribute", customAttribute)
+.build();
+ 

[04/10] james-project git commit: MAILET-149 Use a test rule for AMQP queue

2017-01-23 Thread btellier
MAILET-149 Use a test rule for AMQP queue


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6d1f913e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6d1f913e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6d1f913e

Branch: refs/heads/master
Commit: 6d1f913e9865c0f26f73bfff9f5c9cf8b37fad40
Parents: 28eedd5
Author: Benoit Tellier 
Authored: Fri Jan 20 10:03:30 2017 +0700
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:24 2017 +0100

--
 server/mailet/integration-testing/pom.xml   |   2 +-
 .../mailets/AmqpForwardAttachmentTest.java  |  66 ++-
 .../mailets/ICSAttachmentWorkflowTest.java  |  76 +++-
 .../james/transport/mailets/amqp/AmqpRule.java  | 115 +++
 4 files changed, 142 insertions(+), 117 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/6d1f913e/server/mailet/integration-testing/pom.xml
--
diff --git a/server/mailet/integration-testing/pom.xml 
b/server/mailet/integration-testing/pom.xml
index 31eb20c..be3cd62 100644
--- a/server/mailet/integration-testing/pom.xml
+++ b/server/mailet/integration-testing/pom.xml
@@ -220,7 +220,7 @@
   
   org.assertj
   assertj-core
-  ${assertj-1.version}
+  ${assertj-3.version}
   test
   
   

http://git-wip-us.apache.org/repos/asf/james-project/blob/6d1f913e/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index 67f63cd..400f965 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -22,12 +22,8 @@ package org.apache.james.transport.mailets;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.net.InetAddress;
 import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 
 import javax.mail.MessagingException;
 import javax.mail.Session;
@@ -43,6 +39,7 @@ import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
 import org.apache.james.mailets.utils.IMAPMessageReader;
 import org.apache.james.mailets.utils.SMTPMessageSender;
+import org.apache.james.transport.mailets.amqp.AmqpRule;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
@@ -55,16 +52,10 @@ import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
-import com.google.common.net.InetAddresses;
 import com.google.common.primitives.Bytes;
 import com.jayway.awaitility.Awaitility;
 import com.jayway.awaitility.Duration;
 import com.jayway.awaitility.core.ConditionFactory;
-import com.rabbitmq.client.BuiltinExchangeType;
-import com.rabbitmq.client.Channel;
-import com.rabbitmq.client.Connection;
-import com.rabbitmq.client.ConnectionFactory;
-import com.rabbitmq.client.GetResponse;
 
 public class AmqpForwardAttachmentTest {
 
@@ -88,22 +79,16 @@ public class AmqpForwardAttachmentTest {
 .withAffinityToContainer();
 
 public TemporaryFolder temporaryFolder = new TemporaryFolder();
+public AmqpRule amqpRule = new AmqpRule(rabbitMqContainer, EXCHANGE_NAME, 
ROUTING_KEY);
 
 @Rule
-public final RuleChain chain = 
RuleChain.outerRule(temporaryFolder).around(rabbitMqContainer);
+public final RuleChain chain = 
RuleChain.outerRule(temporaryFolder).around(rabbitMqContainer).around(amqpRule);
 
 private TemporaryJamesServer jamesServer;
 private ConditionFactory calmlyAwait;
-private Channel channel;
-private String queueName;
-private Connection connection;
 
 @Before
 public void setup() throws Exception {
-@SuppressWarnings("deprecation")
-InetAddress containerIp = 
InetAddresses.forString(rabbitMqContainer.getContainerInfo().getNetworkSettings().getIpAddress());
-String amqpUri = "amqp://" + 

[03/10] james-project git commit: MAILET-149 Use MimeMessageBuilder for mailet integration tests

2017-01-23 Thread btellier
MAILET-149 Use MimeMessageBuilder for mailet integration tests


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b1b46312
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b1b46312
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b1b46312

Branch: refs/heads/master
Commit: b1b4631251096146492554f6063a2e5906366ea7
Parents: 6d1f913
Author: Benoit Tellier 
Authored: Fri Jan 20 10:29:55 2017 +0700
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:24 2017 +0100

--
 .../mailet/base/test/MimeMessageBuilder.java|  34 +++--
 .../mailets/AmqpForwardAttachmentTest.java  |  49 ++-
 .../mailets/ICSAttachmentWorkflowTest.java  | 146 +++
 .../transport/mailets/StripAttachmentTest.java  |  54 +++
 4 files changed, 114 insertions(+), 169 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/b1b46312/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
--
diff --git 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index 42a2339..1246bf7 100644
--- 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -91,7 +91,8 @@ public class MimeMessageBuilder {
 private Optional filename = Optional.absent();
 private ImmutableList.Builder headers = 
ImmutableList.builder();
 private Optional disposition = Optional.absent();
-private Optional data = Optional.absent();
+private Optional dataAsString = Optional.absent();
+private Optional dataAsBytes = Optional.absent();
 private Optional type = Optional.absent();
 
 public BodyPartBuilder cid(String cid) {
@@ -110,7 +111,12 @@ public class MimeMessageBuilder {
 }
 
 public BodyPartBuilder data(String data) {
-this.data = Optional.of(data);
+this.dataAsString = Optional.of(data);
+return this;
+}
+
+public BodyPartBuilder data(byte[] data) {
+this.dataAsBytes = Optional.of(data);
 return this;
 }
 
@@ -130,14 +136,24 @@ public class MimeMessageBuilder {
 }
 
 public BodyPart build() throws IOException, MessagingException {
-Preconditions.checkNotNull(data);
+Preconditions.checkState(dataAsString.isPresent() ^ 
dataAsBytes.isPresent(), "one and only one of data as string or data as bytes 
should be specified");
 MimeBodyPart bodyPart = new MimeBodyPart();
-bodyPart.setDataHandler(
-new DataHandler(
-new ByteArrayDataSource(
-data.or(DEFAULT_VALUE),
-type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
-));
+if (dataAsString.isPresent()) {
+bodyPart.setDataHandler(
+new DataHandler(
+new ByteArrayDataSource(
+dataAsString.or(DEFAULT_VALUE),
+type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+));
+}
+if (dataAsBytes.isPresent()) {
+bodyPart.setDataHandler(
+new DataHandler(
+new ByteArrayDataSource(
+dataAsBytes.get(),
+type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+));
+}
 if (filename.isPresent()) {
 bodyPart.setFileName(filename.get());
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b1b46312/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index 400f965..2ebc972 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -21,15 +21,7 @@ package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.io.ByteArrayInputStream;
-import 

[05/10] james-project git commit: MAILET-149 Introduce ICS mailets workflow tests

2017-01-23 Thread btellier
MAILET-149 Introduce ICS mailets workflow tests


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/28eedd5d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/28eedd5d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/28eedd5d

Branch: refs/heads/master
Commit: 28eedd5d7f48f5b2b9c721349c7f8e90e42c5c9e
Parents: 4a59c1b
Author: Antoine Duprat 
Authored: Tue Jan 17 10:14:50 2017 +0100
Committer: Antoine Duprat 
Committed: Mon Jan 23 16:19:24 2017 +0100

--
 server/mailet/integration-testing/pom.xml   |  10 +
 .../james/mailets/utils/IMAPMessageReader.java  |  10 +-
 .../mailets/ICSAttachmentWorkflowTest.java  | 550 +++
 3 files changed, 569 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/28eedd5d/server/mailet/integration-testing/pom.xml
--
diff --git a/server/mailet/integration-testing/pom.xml 
b/server/mailet/integration-testing/pom.xml
index 7395aa7..31eb20c 100644
--- a/server/mailet/integration-testing/pom.xml
+++ b/server/mailet/integration-testing/pom.xml
@@ -161,6 +161,11 @@
   
   
   org.apache.james
+  apache-mailet-icalendar
+  ${project.version}
+  
+  
+  org.apache.james
   james-server-data-memory
   
   
@@ -194,6 +199,11 @@
   test
   
   
+  com.jayway.jsonpath
+  json-path
+  test
+  
+  
   com.rabbitmq
   amqp-client
   test

http://git-wip-us.apache.org/repos/asf/james-project/blob/28eedd5d/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/IMAPMessageReader.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/IMAPMessageReader.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/IMAPMessageReader.java
index 17c7afd..931df1a 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/IMAPMessageReader.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/IMAPMessageReader.java
@@ -54,9 +54,17 @@ public class IMAPMessageReader implements Closeable {
 }
 
 public String readFirstMessageInInbox(String user, String password) throws 
IOException {
+return readFirstMessageInInbox(user, password, "(BODY[])");
+}
+
+public String readFirstMessageHeadersInInbox(String user, String password) 
throws IOException {
+return readFirstMessageInInbox(user, password, "(RFC822.HEADER)");
+}
+
+private String readFirstMessageInInbox(String user, String password, 
String parameters) throws IOException {
 imapClient.login(user, password);
 imapClient.select("INBOX");
-imapClient.fetch("1:1", "(BODY[])");
+imapClient.fetch("1:1", parameters);
 return imapClient.getReplyString();
 }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/28eedd5d/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
--
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
new file mode 100644
index 000..51a23e2
--- /dev/null
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -0,0 +1,550 @@
+/
+ * 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,   *

[jira] [Commented] (JAMES-1916) No HTML body returned in JMAP

2017-01-23 Thread Laura Royet (JIRA)

[ 
https://issues.apache.org/jira/browse/JAMES-1916?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15834539#comment-15834539
 ] 

Laura Royet commented on JAMES-1916:


https://github.com/linagora/james-project/issues/545

> No HTML body returned in JMAP
> -
>
> Key: JAMES-1916
> URL: https://issues.apache.org/jira/browse/JAMES-1916
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Reporter: Laura Royet
>Assignee: Antoine Duprat
>
> No HTML body returned in JMAP



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Created] (JAMES-1916) No HTML body returned in JMAP

2017-01-23 Thread Laura Royet (JIRA)
Laura Royet created JAMES-1916:
--

 Summary: No HTML body returned in JMAP
 Key: JAMES-1916
 URL: https://issues.apache.org/jira/browse/JAMES-1916
 Project: James Server
  Issue Type: Bug
  Components: JMAP
Reporter: Laura Royet
Assignee: Antoine Duprat


No HTML body returned in JMAP



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org