[jira] [Closed] (JAMES-1686) Enhance MailboxExpressionTest to match best test practice

2016-03-04 Thread Laura Royet (JIRA)

 [ 
https://issues.apache.org/jira/browse/JAMES-1686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Laura Royet closed JAMES-1686.
--

> Enhance MailboxExpressionTest to match best test practice
> -
>
> Key: JAMES-1686
> URL: https://issues.apache.org/jira/browse/JAMES-1686
> Project: James Server
>  Issue Type: Improvement
>Reporter: Laura Royet
>
> Enhance MailboxExpressionTest to match best test practice



--
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] [Resolved] (JAMES-1686) Enhance MailboxExpressionTest to match best test practice

2016-03-04 Thread Laura Royet (JIRA)

 [ 
https://issues.apache.org/jira/browse/JAMES-1686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Laura Royet resolved JAMES-1686.

Resolution: Fixed

merged

> Enhance MailboxExpressionTest to match best test practice
> -
>
> Key: JAMES-1686
> URL: https://issues.apache.org/jira/browse/JAMES-1686
> Project: James Server
>  Issue Type: Improvement
>Reporter: Laura Royet
>
> Enhance MailboxExpressionTest to match best test practice



--
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



[1/2] james-project git commit: JAMES-1686 Enhance MailboxExpressionTest to match best test practice

2016-03-04 Thread aduprat
Repository: james-project
Updated Branches:
  refs/heads/master 8b970f59d -> 11071d5cc


JAMES-1686 Enhance MailboxExpressionTest to match best test practice


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

Branch: refs/heads/master
Commit: c587fb6709fd3e8bb1dfef5e920fb73e80f45914
Parents: e4424ad
Author: Laura Royet 
Authored: Wed Feb 17 18:59:53 2016 +0100
Committer: Laura Royet 
Committed: Fri Mar 4 15:48:38 2016 +0100

--
 .../james/mailbox/MailboxExpressionTest.java|  319 -
 .../james/mailbox/model/MailboxQueryTest.java   | 1232 --
 2 files changed, 1096 insertions(+), 455 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/c587fb67/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxExpressionTest.java
--
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxExpressionTest.java 
b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxExpressionTest.java
deleted file mode 100644
index 5f813c3..000
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxExpressionTest.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information*
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the*
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *  *
- *   http://www.apache.org/licenses/LICENSE-2.0 *
- *  *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
- * KIND, either express or implied.  See the License for the*
- * specific language governing permissions and limitations  *
- * under the License.   *
- /
-
-package org.apache.james.mailbox;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.MailboxQuery;
-import org.junit.Test;
-
-public class MailboxExpressionTest {
-
-private static final String PART = "mailbox";
-
-private static final String SECOND_PART = "sub";
-
-private static final String BASE = "BASE";
-private static final MailboxPath BASE_PATH = new MailboxPath(null, null, 
BASE);
-
-
-private MailboxQuery create(String expression) {
-return new MailboxQuery(BASE_PATH, expression, '.');
-}
-
-@Test
-public void testIsWild() throws Exception {
-assertTrue(create("*").isWild());
-assertTrue(create("%").isWild());
-assertTrue(create("One*").isWild());
-assertTrue(create("*One").isWild());
-assertTrue(create("A*A").isWild());
-assertTrue(create("One%").isWild());
-assertTrue(create("%One").isWild());
-assertTrue(create("A%A").isWild());
-assertFalse(create("").isWild());
-assertFalse(create(null).isWild());
-assertFalse(create("ONE").isWild());
-}
-
-@Test
-public void combinedNameWithNoExpressionShouldReturnBase() throws 
Exception {
-MailboxQuery expression = new MailboxQuery(BASE_PATH, "", '.');
-assertThat(expression.getCombinedName()).isEqualTo(BASE);
-}
-
-@Test
-public void combinedNameOnNullShouldBeEmpty() throws Exception {
-MailboxQuery expression = new MailboxQuery(new MailboxPath(null, null, 
null), null, '.');
-assertThat(expression.getCombinedName()).isEmpty();
-}
-
-@Test
-public void combinedNameShouldContainBaseAndPart() throws Exception {
-MailboxQuery expression = new MailboxQuery(BASE_PATH, PART, '.');
-assertThat(expression.getCombinedName()).isEqualTo(BASE + "." + PART);
-}
-
-@Test
-public void combinedNameOnPartStartingWithDelimiterShouldIgnoreDelimiter() 
throws Exception {
-MailboxQuery expression = 

[2/2] james-project git commit: Merge remote-tracking branch 'lroyet/JAMES-1686'

2016-03-04 Thread aduprat
Merge remote-tracking branch 'lroyet/JAMES-1686'


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

Branch: refs/heads/master
Commit: 11071d5cc3a7e1d4711342934b8c5df806734ce9
Parents: 8b970f5 c587fb6
Author: Antoine Duprat 
Authored: Fri Mar 4 16:00:11 2016 +0100
Committer: Antoine Duprat 
Committed: Fri Mar 4 16:00:11 2016 +0100

--
 .../james/mailbox/MailboxExpressionTest.java|  319 -
 .../james/mailbox/model/MailboxQueryTest.java   | 1232 --
 2 files changed, 1096 insertions(+), 455 deletions(-)
--



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



[jira] [Commented] (JAMES-1700) New user provisionning throwing on concurrent requests

2016-03-04 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on JAMES-1700:
---

Github user rouazana closed the pull request at:

https://github.com/apache/james-project/pull/37


> New user provisionning throwing on concurrent requests
> --
>
> Key: JAMES-1700
> URL: https://issues.apache.org/jira/browse/JAMES-1700
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Reporter: Antoine Duprat
>
> Such exception occured:
> {code}
> java.lang.RuntimeException: 
> org.apache.james.user.api.UsersRepositoryException: User with username 
> us...@open-paas.org already exist!
>   at com.google.common.base.Throwables.propagate(Throwables.java:160)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccountIfNeeded(FirstUserConnectionFilter.java:80)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter$$Lambda$96/446105096.accept(Unknown
>  Source)
>   at java.util.Optional.ifPresent(Optional.java:159)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.doFilter(FirstUserConnectionFilter.java:69)
>   at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
>   at 
> org.apache.james.jmap.AuthenticationFilter.doFilter(AuthenticationFilter.java:78)
>   at 
> org.apache.james.jmap.BypassAuthOnRequestMethod.tryAuth(BypassAuthOnRequestMethod.java:115)
>   at 
> org.apache.james.jmap.BypassAuthOnRequestMethod.doFilter(BypassAuthOnRequestMethod.java:97)
>   at 
> org.apache.james.jmap.AllowAllCrossOriginRequests.doFilter(AllowAllCrossOriginRequests.java:46)
>   at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
>   at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
>   at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:513)
>   at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>   at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
>   at org.eclipse.jetty.server.Server.handle(Server.java:517)
>   at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306)
>   at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
>   at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)
>   at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
>   at 
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
>   at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
>   at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
>   at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
>   at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
>   at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.james.user.api.UsersRepositoryException: User with 
> username us...@open-paas.org already exist!
>   at 
> org.apache.james.user.cassandra.CassandraUsersRepository.doAddUser(CassandraUsersRepository.java:163)
>   at 
> org.apache.james.user.cassandra.CassandraUsersRepository.addUser(CassandraUsersRepository.java:145)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createUser(FirstUserConnectionFilter.java:94)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccount(FirstUserConnectionFilter.java:89)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccountIfNeeded(FirstUserConnectionFilter.java:77)
>   ... 24 more
> {code}



--
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] [Commented] (JAMES-1700) New user provisionning throwing on concurrent requests

2016-03-04 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on JAMES-1700:
---

Github user rouazana commented on the pull request:

https://github.com/apache/james-project/pull/37#issuecomment-192296392
  
Reopen here: https://github.com/linagora/james-project/pull/178


> New user provisionning throwing on concurrent requests
> --
>
> Key: JAMES-1700
> URL: https://issues.apache.org/jira/browse/JAMES-1700
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Reporter: Antoine Duprat
>
> Such exception occured:
> {code}
> java.lang.RuntimeException: 
> org.apache.james.user.api.UsersRepositoryException: User with username 
> us...@open-paas.org already exist!
>   at com.google.common.base.Throwables.propagate(Throwables.java:160)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccountIfNeeded(FirstUserConnectionFilter.java:80)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter$$Lambda$96/446105096.accept(Unknown
>  Source)
>   at java.util.Optional.ifPresent(Optional.java:159)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.doFilter(FirstUserConnectionFilter.java:69)
>   at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
>   at 
> org.apache.james.jmap.AuthenticationFilter.doFilter(AuthenticationFilter.java:78)
>   at 
> org.apache.james.jmap.BypassAuthOnRequestMethod.tryAuth(BypassAuthOnRequestMethod.java:115)
>   at 
> org.apache.james.jmap.BypassAuthOnRequestMethod.doFilter(BypassAuthOnRequestMethod.java:97)
>   at 
> org.apache.james.jmap.AllowAllCrossOriginRequests.doFilter(AllowAllCrossOriginRequests.java:46)
>   at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
>   at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
>   at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:513)
>   at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>   at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
>   at org.eclipse.jetty.server.Server.handle(Server.java:517)
>   at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306)
>   at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
>   at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)
>   at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
>   at 
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
>   at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
>   at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
>   at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
>   at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
>   at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.james.user.api.UsersRepositoryException: User with 
> username us...@open-paas.org already exist!
>   at 
> org.apache.james.user.cassandra.CassandraUsersRepository.doAddUser(CassandraUsersRepository.java:163)
>   at 
> org.apache.james.user.cassandra.CassandraUsersRepository.addUser(CassandraUsersRepository.java:145)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createUser(FirstUserConnectionFilter.java:94)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccount(FirstUserConnectionFilter.java:89)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccountIfNeeded(FirstUserConnectionFilter.java:77)
>   ... 24 more
> {code}



--
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] [Commented] (JAMES-1700) New user provisionning throwing on concurrent requests

2016-03-04 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on JAMES-1700:
---

GitHub user rouazana opened a pull request:

https://github.com/apache/james-project/pull/37

JAMES-1700 Don't fail in account creation if user already exists

Using thread-weaver to really test racing condition.
Manual mock seems to be necessary as Mockito and thread-weaver seem to 
conflict.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/rouazana/james-project JAMES-1700

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/james-project/pull/37.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #37


commit e5fce8814f0531d8d334f8c242acc4823f4181c5
Author: Raphael Ouazana 
Date:   2016-03-04T13:59:56Z

JAMES-1700 Don't fail in account creation if user already exists




> New user provisionning throwing on concurrent requests
> --
>
> Key: JAMES-1700
> URL: https://issues.apache.org/jira/browse/JAMES-1700
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Reporter: Antoine Duprat
>
> Such exception occured:
> {code}
> java.lang.RuntimeException: 
> org.apache.james.user.api.UsersRepositoryException: User with username 
> us...@open-paas.org already exist!
>   at com.google.common.base.Throwables.propagate(Throwables.java:160)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccountIfNeeded(FirstUserConnectionFilter.java:80)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter$$Lambda$96/446105096.accept(Unknown
>  Source)
>   at java.util.Optional.ifPresent(Optional.java:159)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.doFilter(FirstUserConnectionFilter.java:69)
>   at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
>   at 
> org.apache.james.jmap.AuthenticationFilter.doFilter(AuthenticationFilter.java:78)
>   at 
> org.apache.james.jmap.BypassAuthOnRequestMethod.tryAuth(BypassAuthOnRequestMethod.java:115)
>   at 
> org.apache.james.jmap.BypassAuthOnRequestMethod.doFilter(BypassAuthOnRequestMethod.java:97)
>   at 
> org.apache.james.jmap.AllowAllCrossOriginRequests.doFilter(AllowAllCrossOriginRequests.java:46)
>   at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
>   at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
>   at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:513)
>   at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>   at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
>   at org.eclipse.jetty.server.Server.handle(Server.java:517)
>   at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306)
>   at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
>   at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)
>   at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
>   at 
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
>   at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
>   at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
>   at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
>   at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
>   at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.james.user.api.UsersRepositoryException: User with 
> username us...@open-paas.org already exist!
>   at 
> org.apache.james.user.cassandra.CassandraUsersRepository.doAddUser(CassandraUsersRepository.java:163)
>   at 
> org.apache.james.user.cassandra.CassandraUsersRepository.addUser(CassandraUsersRepository.java:145)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createUser(FirstUserConnectionFilter.java:94)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccount(FirstUserConnectionFilter.java:89)
>   at 
> org.apache.james.jmap.FirstUserConnectionFilter.createAccountIfNeeded(FirstUserConnectionFilter.java:77)
>   ... 24 more
> {code}



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

-
To 

[jira] [Commented] (IMAP-370) Consider supporting the upcoming MOVE extension

2016-03-04 Thread Tellier Benoit (JIRA)

[ 
https://issues.apache.org/jira/browse/IMAP-370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15179839#comment-15179839
 ] 

Tellier Benoit commented on IMAP-370:
-

I just contributed a fix for the inheritance fix.

I also activate the MOVE capability if supported by the backend.

> Consider supporting the upcoming MOVE extension
> ---
>
> Key: IMAP-370
> URL: https://issues.apache.org/jira/browse/IMAP-370
> Project: James Imap
>  Issue Type: Improvement
>  Components: Protocol
>Reporter: Andrzej Rusin
> Attachments: IMAP-370-2.patch, IMAP-370-capability-v1.patch, 
> IMAP-370-v1.patch
>
>
> As we see at 
> http://datatracker.ietf.org/doc/draft-ietf-imapmove-command/ballot/ IETF is 
> about to finally accept the IMAP MOVE extension.
> This extension enables great performance optimization possibilities for the 
> more advanced Mailstore backends, eg the ones that use a underlying 
> relational or non-relational database: 
> One of the most common usage scenarios in IMAP is moving messages across 
> folders, and with the MOVE extention it can be finally accomplished without a 
> COPY/DELETE cycle on certain Mailbox backends.
> Therefore, in my belief, it would be very nice to have that extension 
> implemented in James.
> Some of the bundled Mailstore implementations already are based on SQL/noSQL 
> datasources, and can directly benefit from it.
> Some of the independent Mailstore implementations (including mine) can 
> benefit from it too.
> Some of IMAP clients (including Thunderbird as of 3.something) already 
> support that extension or the X-MOVE or X-AOL-MOVE one.
> So James has a great opportunity to be the leader of standards adoption on 
> the server side.
> What do you think? Please comment.



--
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] [Commented] (IMAP-167) Add support for Quotas

2016-03-04 Thread Tellier Benoit (JIRA)

[ 
https://issues.apache.org/jira/browse/IMAP-167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15179838#comment-15179838
 ] 

Tellier Benoit commented on IMAP-167:
-

I contributed commits and MPT tests for that.

Can someone close the issue ?

Shouldn't these issue be migrated to protocols ?

> Add support for Quotas
> --
>
> Key: IMAP-167
> URL: https://issues.apache.org/jira/browse/IMAP-167
> Project: James Imap
>  Issue Type: New Feature
>Reporter: Norman Maurer
>
> It would be cool to support some kind of quotas. Thats not part of the IMAP 
> specification but its a very common need.



--
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] [Resolved] (MAILBOX-265) Cassandra backend must take fetchType into account

2016-03-04 Thread Tellier Benoit (JIRA)

 [ 
https://issues.apache.org/jira/browse/MAILBOX-265?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tellier Benoit resolved MAILBOX-265.

Resolution: Fixed

> Cassandra backend must take fetchType into account
> --
>
> Key: MAILBOX-265
> URL: https://issues.apache.org/jira/browse/MAILBOX-265
> Project: James Mailbox
>  Issue Type: Improvement
>Affects Versions: 0.6
>Reporter: Tellier Benoit
> Fix For: 0.6
>
>
> Today, CassandraMessageMapper :: findInMailbox do not use fetch type.
> This means that it retrieves always full messages from database, even when 
> not needed.
> For instance this is the case upon SELECT statement, where the full mailbox 
> metadata is retrieved in order to build the UID <=>Message Sequence Number 
> mapping.
> Making Cassandra backend sensible to Fetch Type will highly improve 
> efficiency of such an operation.



--
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



[19/20] james-project git commit: IMAP-370 Add MOVE extension to supported commands in documentation

2016-03-04 Thread btellier
IMAP-370 Add MOVE extension to supported commands in 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/6ffe855a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6ffe855a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6ffe855a

Branch: refs/heads/master
Commit: 6ffe855a07220f6a45cfbd7bbec0602c5f3327f4
Parents: 33a53fa
Author: Benoit Tellier 
Authored: Fri Feb 26 11:27:43 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 protocols/src/site/xdoc/imap4.xml  |  7 ---
 server/src/site/xdoc/feature-protocols.xml | 20 +---
 2 files changed, 21 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/6ffe855a/protocols/src/site/xdoc/imap4.xml
--
diff --git a/protocols/src/site/xdoc/imap4.xml 
b/protocols/src/site/xdoc/imap4.xml
index 909e5f4..ee37a0a 100644
--- a/protocols/src/site/xdoc/imap4.xml
+++ b/protocols/src/site/xdoc/imap4.xml
@@ -14,7 +14,7 @@
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
-  specific language govaerning permissions and limitations
+  specific language governing permissions and limitations
   under the License.
 -->
 
@@ -56,10 +56,11 @@
ENABLE (in release 0.2.1)
CONDSTORE (RFC 4551 http://www.ietf.org/rfc/rfc4551.txt in release 
0.3)
RESYNCH (RFC 5162 http://www.ietf.org/rfc/rfc5162.txt in trunk)
+   MOVE (RFC 6851 https://tools.ietf.org/html/rfc6851 in trunk). This 
is enabled only if you use a MailboxManager exposing the Move capability
  
- We follow RFC2683 recommandations for our implementations:
+ We follow RFC2683 recommendations for our implementations:
  
-   IMAP4 Implementation Recommandations (RFC 2683 
http://www.ietf.org/rfc/rfc2683.txt)
+   IMAP4 Implementation Recommendations (RFC 2683 
http://www.ietf.org/rfc/rfc2683.txt)
  
  Interesting features:
  

http://git-wip-us.apache.org/repos/asf/james-project/blob/6ffe855a/server/src/site/xdoc/feature-protocols.xml
--
diff --git a/server/src/site/xdoc/feature-protocols.xml 
b/server/src/site/xdoc/feature-protocols.xml
index 687ddb3..a479726 100644
--- a/server/src/site/xdoc/feature-protocols.xml
+++ b/server/src/site/xdoc/feature-protocols.xml
@@ -52,7 +52,10 @@
   client/server communication.
   
   More information on configuring the SMTP service can be found here.
-
+
+  You can find further information about supported protocols and RFCs
+http://james.apache.org/protocols/smtp.html;>on the 
JAMES-PROTOCOLS project SMTP page
+  
 
 
 
@@ -66,7 +69,15 @@
   IMAP4 client connecting to the server.
   
   More information on configuring the IMAP4 service can be found here.
-
+
+  You can find further information about supported protocols and RFCs
+http://james.apache.org/protocols/imap4.html;>on the 
JAMES-PROTOCOLS project IMAP4 page
+  
+
+  
+Note that MOVE extension (RFC-6851) needs a MailboxManager 
implementing the move function. For now, this is only done with
+the CassandraMailboxManager
+  
 
 
 
@@ -80,7 +91,10 @@
   POP3 client connecting to the server.
   
   More information on configuring the POP3 service can be found here.
-
+
+  You can find further information about supported protocols and RFCs
+http://james.apache.org/protocols/pop3.html;>on the 
JAMES-PROTOCOLS project POP3 page
+  
 
 
 


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



[15/20] james-project git commit: IMAP-370 Mailbox configuration page should link to mailbox project page and include a notice about Cassandra back-end

2016-03-04 Thread btellier
IMAP-370 Mailbox configuration page should link to mailbox project page and 
include a notice about Cassandra back-end


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

Branch: refs/heads/master
Commit: c7e784f479616bf7f8fee2ffe4e8b609a0c39f30
Parents: 2782a95
Author: Benoit Tellier 
Authored: Fri Feb 26 14:19:20 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 server/src/site/xdoc/config-mailbox.xml | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/c7e784f4/server/src/site/xdoc/config-mailbox.xml
--
diff --git a/server/src/site/xdoc/config-mailbox.xml 
b/server/src/site/xdoc/config-mailbox.xml
index c37d7bf..bdb6307 100644
--- a/server/src/site/xdoc/config-mailbox.xml
+++ b/server/src/site/xdoc/config-mailbox.xml
@@ -35,9 +35,12 @@
 
   
 provider
-Supported providers are: jpa (default), jcr, maildir, memory. Be 
aware that maildir will only work on unix like operation systems!
+Supported providers are: jpa (default), jcr, maildir, cassandra, 
memory. Be aware that maildir will only work on unix like operation systems!
+Cassandra mailbox need to be compiled and run using java 8.
   
 
+  See http://james.apache.org/mailbox/index.html;>documentation page to 
learn more about the different back-ends and their capabilities.
+
   
 
 


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



[18/20] james-project git commit: IMAP-370 Document capabilities on mailboxes + add cassandra page

2016-03-04 Thread btellier
IMAP-370 Document capabilities on mailboxes + add cassandra page


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

Branch: refs/heads/master
Commit: 2782a9551dd8e8c0a0523b447542af33348832e6
Parents: 6ffe855
Author: Benoit Tellier 
Authored: Fri Feb 26 14:09:52 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 mailbox/src/site/site.xml   |  2 +-
 mailbox/src/site/xdoc/index.xml |  8 +
 mailbox/src/site/xdoc/mailbox-api.xml   | 10 +-
 mailbox/src/site/xdoc/mailbox-cassandra.xml | 40 
 mailbox/src/site/xdoc/mailbox-guice.xml | 33 ---
 mailbox/src/site/xdoc/mailbox-hbase.xml | 11 ---
 mailbox/src/site/xdoc/mailbox-jcr.xml   |  1 +
 mailbox/src/site/xdoc/mailbox-jpa.xml   |  3 +-
 mailbox/src/site/xdoc/mailbox-maildir.xml   |  3 +-
 mailbox/src/site/xdoc/mailbox-memory.xml|  1 +
 mailbox/src/site/xdoc/mailbox-spring.xml|  2 +-
 mailbox/src/site/xdoc/mailbox-store.xml |  6 ++--
 12 files changed, 74 insertions(+), 46 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/2782a955/mailbox/src/site/site.xml
--
diff --git a/mailbox/src/site/site.xml b/mailbox/src/site/site.xml
index 0ab1cd4..ca68afe 100644
--- a/mailbox/src/site/site.xml
+++ b/mailbox/src/site/site.xml
@@ -45,6 +45,7 @@
 
 
   
+  
   
   
   
@@ -52,7 +53,6 @@
 
 
   
-  
   
  
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/2782a955/mailbox/src/site/xdoc/index.xml
--
diff --git a/mailbox/src/site/xdoc/index.xml b/mailbox/src/site/xdoc/index.xml
index 3abe9bc..f91c206 100644
--- a/mailbox/src/site/xdoc/index.xml
+++ b/mailbox/src/site/xdoc/index.xml
@@ -46,6 +46,14 @@
 You can http://james.apache.org/download.cgi;>download 
current 0.4 release. 
The API as the schemas for the different 
implementations are susceptible to evolve.
 
+  Here are the different implementations of the mailbox we propose :
+  Memory for testing 
purposes
+  Cassandra
+  Maildir
+  JPA 
+  JCR 
+  HBase)
+  
   
 
   

http://git-wip-us.apache.org/repos/asf/james-project/blob/2782a955/mailbox/src/site/xdoc/mailbox-api.xml
--
diff --git a/mailbox/src/site/xdoc/mailbox-api.xml 
b/mailbox/src/site/xdoc/mailbox-api.xml
index f80f326..a0084ce 100644
--- a/mailbox/src/site/xdoc/mailbox-api.xml
+++ b/mailbox/src/site/xdoc/mailbox-api.xml
@@ -49,7 +49,15 @@
   
 
   The Mailbox Manager is responsible for session creation, operations 
on mailbox (create, delete, search)
- and to return a Message Manager. It also allows to copy and list 
messages.
+ and to return a Message Manager. It also allows to copy and list 
messages.
+  
+
+
+Mailbox manager capabilities represents which operations a mailbox 
manager is able to support. For now the list is :
+Basic: supports all basic operations
+Move: implements the move capability
+
+
 
+
+
+
+Mailbox Cassandra
+
+
+
+
+
+This module provides a mailbox implementation for persisting 
mailboxes (messages, and subscriptions) in a Cassandra cluster.
+It supports the Basic and Move capabilities.
+
+
+
+The Cassandra implementation comes with a 
CassandraMailboxManager and a CassandraMessageManager for persisting users 
mailboxes.
+This implementation also have a CurrentQuotaManager and a 
MaxQuotaManager, for storing users quotas in a Cassandra cluster.
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/james-project/blob/2782a955/mailbox/src/site/xdoc/mailbox-guice.xml
--
diff --git a/mailbox/src/site/xdoc/mailbox-guice.xml 
b/mailbox/src/site/xdoc/mailbox-guice.xml
deleted file mode 100644
index 6abdf12..000
--- a/mailbox/src/site/xdoc/mailbox-guice.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-  
- Mailbox Guice
-  
-
-
-
-  
-  
-
-
-
-

http://git-wip-us.apache.org/repos/asf/james-project/blob/2782a955/mailbox/src/site/xdoc/mailbox-hbase.xml
--
diff --git a/mailbox/src/site/xdoc/mailbox-hbase.xml 

[17/20] james-project git commit: IMAP-370 MOVE capability should be announced when MailboxManager supports Move capability

2016-03-04 Thread btellier
IMAP-370 MOVE capability should be announced when MailboxManager supports Move 
capability


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

Branch: refs/heads/master
Commit: 33a53faaa2b4f77a77f1dca6452cc325dcf1d4ac
Parents: f37d2b4
Author: Benoit Tellier 
Authored: Thu Feb 25 14:17:46 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../src/main/resources/org/apache/james/imap/scripts/Move.test  | 5 +
 1 file changed, 5 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/33a53faa/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Move.test
--
diff --git 
a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Move.test
 
b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Move.test
index ade2415..de6067c 100644
--- 
a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Move.test
+++ 
b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Move.test
@@ -16,6 +16,11 @@
 # specific language governing permissions and limitations  #
 # under the License.   #
 
+
+C: a0 CAPABILITY
+S: \* CAPABILITY .* MOVE .*
+S: a0 OK CAPABILITY completed.
+
 C: a1 CREATE moved
 S: a1 OK CREATE completed.
 


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



[16/20] james-project git commit: MAILBOX-265 Cassandra Message Mapper should take Headers and Metadata fetch Type into account

2016-03-04 Thread btellier
MAILBOX-265 Cassandra Message Mapper should take Headers and Metadata fetch 
Type into account


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

Branch: refs/heads/master
Commit: 7a86fe1a7250fa05c658cf817190c2eff7e83c1f
Parents: 6a90560
Author: Benoit Tellier 
Authored: Thu Mar 3 11:52:26 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../cassandra/mail/CassandraMessageMapper.java  | 103 +--
 .../cassandra/table/CassandraMessageTable.java  |   3 +
 2 files changed, 72 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/7a86fe1a/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 e001839..a401b90 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
@@ -33,10 +33,12 @@ import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.BOD
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.BODY_START_OCTET;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.FIELDS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.FULL_CONTENT_OCTETS;
+import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.HEADERS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.HEADER_CONTENT;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.IMAP_UID;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.INTERNAL_DATE;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.MAILBOX_ID;
+import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.METADATA;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.MOD_SEQ;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.PROPERTIES;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.TABLE_NAME;
@@ -164,15 +166,15 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 @Override
 public Iterator 
findInMailbox(Mailbox mailbox, MessageRange set, FetchType ftype, 
int max) throws MailboxException {
-return 
CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set)))
-.map(this::message)
+return 
CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set, ftype)))
+.map(row -> message(row, ftype))
 .sorted(Comparator.comparingLong(MailboxMessage::getUid))
 .iterator();
 }
 
 @Override
 public List findRecentMessageUidsInMailbox(Mailbox 
mailbox) throws MailboxException {
-return 
CassandraUtils.convertToStream(session.execute(selectAll(mailbox).and((eq(RECENT,
 true)
+return 
CassandraUtils.convertToStream(session.execute(selectAll(mailbox, 
FetchType.Metadata).and((eq(RECENT, true)
 .map((row) -> row.getLong(IMAP_UID))
 .sorted()
 .collect(Collectors.toList());
@@ -180,7 +182,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 @Override
 public Long findFirstUnseenMessageUid(Mailbox mailbox) throws 
MailboxException {
-return 
CassandraUtils.convertToStream(session.execute(selectAll(mailbox).and((eq(SEEN, 
false)
+return 
CassandraUtils.convertToStream(session.execute(selectAll(mailbox, 
FetchType.Metadata).and((eq(SEEN, false)
 .map((row) -> row.getLong(IMAP_UID))
 .sorted()
 .findFirst()
@@ -189,8 +191,8 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 @Override
 public Map 
expungeMarkedForDeletionInMailbox(Mailbox mailbox, MessageRange 
set) throws MailboxException {
-return 
CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, 
set).and(eq(DELETED, true
-.map(this::message)
+return 
CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set, 

[20/20] james-project git commit: MAILBOX-265 Cassandra Message Mapper should take limit into account

2016-03-04 Thread btellier
MAILBOX-265 Cassandra Message Mapper should take limit into account


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

Branch: refs/heads/master
Commit: 8b970f59d6103ad1852409b5e11939b7d7d4b2c6
Parents: fb4a3ec
Author: Benoit Tellier 
Authored: Thu Mar 3 12:05:51 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:25 2016 +0700

--
 .../mailbox/cassandra/mail/CassandraMessageMapper.java   | 11 ++-
 .../store/mail/model/AbstractMessageMapperTest.java  |  3 ---
 2 files changed, 10 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/8b970f59/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 7f9bbc4..b406391 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
@@ -69,6 +69,8 @@ import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 import javax.mail.util.SharedByteArrayInputStream;
 
+import com.datastax.driver.core.Statement;
+import com.datastax.driver.core.querybuilder.Select;
 import com.google.common.base.Throwables;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.utils.CassandraConstants;
@@ -167,12 +169,19 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 @Override
 public Iterator 
findInMailbox(Mailbox mailbox, MessageRange set, FetchType ftype, 
int max) throws MailboxException {
-return 
CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set, ftype)))
+return 
CassandraUtils.convertToStream(session.execute(buildSelectQueryWithLimit(buildQuery(mailbox,
 set, ftype), max)))
 .map(row -> message(row, ftype))
 .sorted(Comparator.comparingLong(MailboxMessage::getUid))
 .iterator();
 }
 
+private Statement buildSelectQueryWithLimit(Select.Where selectStatement, 
int max) {
+if (max <= 0) {
+return selectStatement;
+}
+return selectStatement.limit(max);
+}
+
 @Override
 public List findRecentMessageUidsInMailbox(Mailbox 
mailbox) throws MailboxException {
 return 
CassandraUtils.convertToStream(session.execute(selectAll(mailbox, 
FetchType.Metadata).and((eq(RECENT, true)

http://git-wip-us.apache.org/repos/asf/james-project/blob/8b970f59/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
--
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
index a8ede55..3198507 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
@@ -44,7 +44,6 @@ import 
org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public abstract class AbstractMessageMapperTest {
@@ -256,8 +255,6 @@ public abstract class AbstractMessageMapperTest {
 assertThat(retrievedMessageIterator).isEmpty();
 }
 
-// No limit used for the moment
-@Ignore
 @Test
 public void retrievingMessagesWithALimitShouldLimitTheNumberOfMessages() 
throws MailboxException {
 int limit = 2;


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



[12/20] james-project git commit: IMAP-370 MOVE capability should be exposed and MoveProcessor enabled only if implemented by the MailboxManager

2016-03-04 Thread btellier
IMAP-370 MOVE capability should be exposed and MoveProcessor enabled only if 
implemented by the MailboxManager


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

Branch: refs/heads/master
Commit: f37d2b42a8121827a0092ca71a6e3b35d78004fc
Parents: 7958d56
Author: Benoit Tellier 
Authored: Thu Feb 25 13:30:44 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../apache/james/mailbox/MailboxManager.java|  7 +++
 .../cassandra/CassandraMailboxManager.java  |  9 
 .../mailbox/store/StoreMailboxManager.java  |  7 +++
 .../imap/processor/DefaultProcessorChain.java   | 10 +++-
 .../james/imap/processor/MoveProcessor.java | 53 ++--
 .../james/imap/processor/MoveProcessorTest.java | 14 ++
 .../base/MailboxEventAnalyserTest.java  | 10 +++-
 7 files changed, 90 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/f37d2b42/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
--
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index 712291d..22cad9d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -69,6 +69,13 @@ import org.slf4j.Logger;
 
 public interface MailboxManager extends RequestAware, MailboxListenerSupport {
 
+enum Capabilities {
+Basic,
+Move
+}
+
+List getSupportedCapabilities();
+
 /**
  * Return the delimiter to use for folders
  * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f37d2b42/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
--
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index 2f8c736..369a928 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.cassandra;
 
+import java.util.List;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -36,6 +38,8 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
 
+import com.google.common.collect.Lists;
+
 /**
  * Cassandra implementation of {@link StoreMailboxManager}
  */
@@ -60,6 +64,11 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
 }
 
 @Override
+public List getSupportedCapabilities() {
+return Lists.newArrayList(Capabilities.Basic, Capabilities.Move);
+}
+
+@Override
 protected Mailbox doCreateMailbox(MailboxPath mailboxPath, 
MailboxSession session) throws MailboxException {
 SimpleMailbox cassandraMailbox = new 
SimpleMailbox<>(mailboxPath, randomUidValidity());
 cassandraMailbox.setACL(SimpleMailboxACL.EMPTY);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f37d2b42/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
--
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 9262a87..4d7f463 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -71,6 +71,8 @@ import org.apache.james.mailbox.store.transaction.Mapper;
 import org.apache.james.mailbox.store.transaction.TransactionalMapper;
 import org.slf4j.Logger;
 
+import com.google.common.collect.Lists;
+
 /**
  * This base class of an {@link MailboxManager} implementation provides a 
high-level api for writing your own
  * {@link MailboxManager} implementation. If you plan to write your own {@link 
MailboxManager} its most times so easiest
@@ -196,6 +198,11 @@ public class StoreMailboxManager 
implements 

[04/20] james-project git commit: IMAP-370 Solve inheritance bugg on request handling

2016-03-04 Thread btellier
IMAP-370 Solve inheritance bugg on request handling


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

Branch: refs/heads/master
Commit: 792a87a04872842060cd9054a86bb6de8987ca19
Parents: b06992f
Author: Benoit Tellier 
Authored: Wed Feb 24 13:31:53 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:19 2016 +0700

--
 .../AbstractMessageRangeCommandParser.java  |  45 
 .../imap/decode/parser/CopyCommandParser.java   |  26 +
 .../imap/decode/parser/MoveCommandParser.java   |   5 +-
 .../request/AbstractMessageRangeRequest.java|  49 
 .../james/imap/message/request/CopyRequest.java |  35 +-
 .../james/imap/message/request/MoveRequest.java |   5 +-
 .../AbstractMessageRangeProcessor.java  | 114 +++
 .../james/imap/processor/CopyProcessor.java |  93 ++-
 .../imap/processor/DefaultProcessorChain.java   |   5 +-
 .../james/imap/processor/MoveProcessor.java |  23 ++--
 10 files changed, 245 insertions(+), 155 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/792a87a0/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractMessageRangeCommandParser.java
--
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractMessageRangeCommandParser.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractMessageRangeCommandParser.java
new file mode 100644
index 000..0a2f81b
--- /dev/null
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractMessageRangeCommandParser.java
@@ -0,0 +1,45 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
+package org.apache.james.imap.decode.parser;
+
+import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.message.IdRange;
+import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.decode.ImapRequestLineReader;
+import org.apache.james.imap.message.request.AbstractMessageRangeRequest;
+import org.apache.james.protocols.imap.DecodingException;
+
+public abstract class AbstractMessageRangeCommandParser extends 
AbstractUidCommandParser {
+
+public AbstractMessageRangeCommandParser(ImapCommand command) {
+super(command);
+}
+
+protected ImapMessage decode(ImapCommand command, ImapRequestLineReader 
request, String tag, boolean useUids, ImapSession session) throws 
DecodingException {
+IdRange[] idSet = request.parseIdRange(session);
+String mailboxName = request.mailbox();
+request.eol();
+return createRequest(command, tag, useUids, idSet, mailboxName);
+}
+
+abstract protected AbstractMessageRangeRequest createRequest(ImapCommand 
command, String tag, boolean useUids, IdRange[] idSet, String mailboxName);
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/792a87a0/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java
--
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CopyCommandParser.java
index 4abc0b4..0487839 100644
--- 

[11/20] james-project git commit: IMAP-370 Add MPT checks for MOVE command

2016-03-04 Thread btellier
IMAP-370 Add MPT checks for MOVE command


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

Branch: refs/heads/master
Commit: 7958d56f2eab83795fb9367fe1019f6d05ea9e3c
Parents: 53755c7
Author: Benoit Tellier 
Authored: Thu Feb 25 10:26:29 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../cassandra/CassandraMailboxTest.java |  4 +-
 .../james/mpt/imapmailbox/suite/Move.java   | 44 +
 .../org/apache/james/imap/scripts/Move.test | 69 
 3 files changed, 116 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/7958d56f/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTest.java
--
diff --git 
a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTest.java
 
b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTest.java
index da7ce09..643c9c6 100644
--- 
a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTest.java
+++ 
b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTest.java
@@ -28,6 +28,7 @@ import 
org.apache.james.mpt.imapmailbox.suite.FetchBodySection;
 import org.apache.james.mpt.imapmailbox.suite.FetchBodyStructure;
 import org.apache.james.mpt.imapmailbox.suite.FetchHeaders;
 import org.apache.james.mpt.imapmailbox.suite.Listing;
+import org.apache.james.mpt.imapmailbox.suite.Move;
 import org.apache.james.mpt.imapmailbox.suite.NonAuthenticatedState;
 import org.apache.james.mpt.imapmailbox.suite.PartialFetch;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
@@ -65,7 +66,8 @@ import org.junit.runners.Suite;
 SelectedState.class,
 UidSearch.class,
 UserFlagsSupport.class,
-QuotaTest.class
+QuotaTest.class,
+Move.class
 })
 @GuiceModules({ CassandraMailboxTestModule.class })
 public class CassandraMailboxTest {

http://git-wip-us.apache.org/repos/asf/james-project/blob/7958d56f/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Move.java
--
diff --git 
a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Move.java
 
b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Move.java
new file mode 100644
index 000..489b148
--- /dev/null
+++ 
b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Move.java
@@ -0,0 +1,44 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
+package org.apache.james.mpt.imapmailbox.suite;
+
+import java.util.Locale;
+
+import javax.inject.Inject;
+
+import org.apache.james.mpt.api.HostSystem;
+import org.apache.james.mpt.imapmailbox.suite.base.BaseSelectedState;
+import org.junit.Test;
+
+public class Move  extends BaseSelectedState {
+
+@Inject
+private static HostSystem system;
+
+public Move() throws Exception {
+super(system);
+}
+
+@Test
+public void moveShouldWork() throws Exception {
+scriptTest("Move", Locale.US);
+}
+
+}


[13/20] james-project git commit: IMAP-370 Kill un efficient and unnecessary prepared query from query string

2016-03-04 Thread btellier
IMAP-370 Kill un efficient and unnecessary prepared query from query string


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

Branch: refs/heads/master
Commit: ca531c0d9dbbae1facfd1b5abf1727575c152243
Parents: bb92cd4
Author: Benoit Tellier 
Authored: Thu Mar 3 10:25:03 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../cassandra/mail/CassandraMessageMapper.java  | 16 
 1 file changed, 4 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/ca531c0d/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 12137c5..e001839 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
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
-import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.decr;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.gte;
@@ -94,14 +93,11 @@ import 
org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleProperty;
 
-import com.datastax.driver.core.BoundStatement;
-import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.UDTValue;
 import com.datastax.driver.core.querybuilder.Assignment;
-import com.datastax.driver.core.querybuilder.Insert;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
 import com.datastax.driver.core.querybuilder.Select.Where;
 import com.google.common.io.ByteStreams;
@@ -322,7 +318,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 private MessageMetaData save(Mailbox mailbox, 
MailboxMessage message) throws MailboxException {
 try {
-Insert query = insertInto(TABLE_NAME)
+session.execute(insertInto(TABLE_NAME)
 .value(MAILBOX_ID, mailbox.getMailboxId().asUuid())
 .value(IMAP_UID, message.getUid())
 .value(MOD_SEQ, message.getModSeq())
@@ -338,8 +334,8 @@ public class CassandraMessageMapper implements 
MessageMapper {
 .value(SEEN, message.isSeen())
 .value(USER, message.createFlags().contains(Flag.USER))
 .value(USER_FLAGS, userFlagsSet(message))
-.value(BODY_CONTENT, bindMarker())
-.value(HEADER_CONTENT, bindMarker())
+.value(BODY_CONTENT, toByteBuffer(message.getBodyContent()))
+.value(HEADER_CONTENT, 
toByteBuffer(message.getHeaderContent()))
 .value(PROPERTIES, message.getProperties().stream()
 .map(x -> typesProvider.getDefinedUserType(PROPERTIES)
 .newValue()
@@ -347,12 +343,8 @@ public class CassandraMessageMapper implements 
MessageMapper {
 .setString(Properties.NAME, x.getLocalName())
 .setString(Properties.VALUE, x.getValue()))
 .collect(Collectors.toList()))
-.value(TEXTUAL_LINE_COUNT, message.getTextualLineCount());
-PreparedStatement preparedStatement = 
session.prepare(query.toString());
+.value(TEXTUAL_LINE_COUNT, message.getTextualLineCount()));
 
-
-BoundStatement boundStatement = 
preparedStatement.bind(toByteBuffer(message.getBodyContent()), 
toByteBuffer(message.getHeaderContent()));
-session.execute(boundStatement);
 return new SimpleMessageMetaData(message);
 } catch (IOException e) {
 throw new MailboxException("Error saving mail", e);


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

[10/20] james-project git commit: IMAP-370 Factorize COPY operations with APPEND operations on Cassandra backend

2016-03-04 Thread btellier
IMAP-370 Factorize COPY operations with APPEND operations on Cassandra backend


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

Branch: refs/heads/master
Commit: bb92cd4b2367555d61c00ab2305ad29e3f8011b7
Parents: c7e784f
Author: Benoit Tellier 
Authored: Thu Mar 3 10:10:28 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../mailbox/cassandra/mail/CassandraMessageMapper.java  | 9 +
 1 file changed, 1 insertion(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/bb92cd4b/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 c46447d..12137c5 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
@@ -246,15 +246,8 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 @Override
 public MessageMetaData copy(Mailbox mailbox, 
MailboxMessage original) throws MailboxException {
-
-original.setUid(uidProvider.nextUid(mailboxSession, mailbox));
-original.setModSeq(modSeqProvider.nextModSeq(mailboxSession, mailbox));
-incrementCount(mailbox.getMailboxId());
-if(!original.isSeen()) {
-incrementUnseen(mailbox.getMailboxId());
-}
 original.setFlags(new 
FlagsBuilder().add(original.createFlags()).add(Flag.RECENT).build());
-return save(mailbox, original);
+return add(mailbox, original);
 }
 
 @Override


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



[01/20] james-project git commit: IMAP-370 Missing license

2016-03-04 Thread btellier
Repository: james-project
Updated Branches:
  refs/heads/master 0af4d200f -> 8b970f59d


IMAP-370 Missing license


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

Branch: refs/heads/master
Commit: 8a292171f63472ac362a8a3f980f62a01a56baa7
Parents: 0af4d20
Author: Benoit Tellier 
Authored: Wed Feb 24 16:57:45 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:32:17 2016 +0700

--
 .../james/imap/message/request/MoveRequest.java  | 19 +++
 1 file changed, 19 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/8a292171/protocols/imap/src/main/java/org/apache/james/imap/message/request/MoveRequest.java
--
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/message/request/MoveRequest.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/message/request/MoveRequest.java
index 3f5370f..9015ea0 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/message/request/MoveRequest.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/message/request/MoveRequest.java
@@ -1,3 +1,22 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
 package org.apache.james.imap.message.request;
 
 import org.apache.james.imap.api.ImapCommand;


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



[06/20] james-project git commit: IMAP-370 Expunge notification should be sent upon move

2016-03-04 Thread btellier
IMAP-370 Expunge notification should be sent upon move


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

Branch: refs/heads/master
Commit: 762af8ed3f2309305663caf75d2da2db809645c9
Parents: 792a87a
Author: Benoit Tellier 
Authored: Wed Feb 24 16:26:02 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:23 2016 +0700

--
 .../apache/james/mailbox/store/MoveResult.java  | 43 
 .../mailbox/store/StoreMessageManager.java  | 15 ---
 2 files changed, 53 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/762af8ed/mailbox/store/src/main/java/org/apache/james/mailbox/store/MoveResult.java
--
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MoveResult.java 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MoveResult.java
new file mode 100644
index 000..76bbb86
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MoveResult.java
@@ -0,0 +1,43 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
+package org.apache.james.mailbox.store;
+
+import java.util.Iterator;
+
+import org.apache.james.mailbox.model.MessageMetaData;
+
+public class MoveResult {
+
+private final Iterator movedMessages;
+private final Iterator originalMessages;
+
+public MoveResult(Iterator movedMessages, 
Iterator originalMessages) {
+this.movedMessages = movedMessages;
+this.originalMessages = originalMessages;
+}
+
+public Iterator getMovedMessages() {
+return movedMessages;
+}
+
+public Iterator getOriginalMessages() {
+return originalMessages;
+}
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/762af8ed/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
--
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index f0098c3..6b842bb 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -84,6 +84,9 @@ import org.apache.james.mime4j.stream.MimeConfig;
 import org.apache.james.mime4j.stream.MimeTokenStream;
 import org.apache.james.mime4j.stream.RecursionMode;
 
+import com.google.common.base.Function;
+import com.google.common.collect.Iterators;
+
 /**
  * Base class for {@link org.apache.james.mailbox.MessageManager}
  * implementations.
@@ -716,23 +719,23 @@ public class StoreMessageManager 
implements org.apache.jam
 return copiedRows.iterator();
 }
 
-private Iterator move(Iterator 
originalRows,
-   MailboxSession session) throws MailboxException {
+private MoveResult move(Iterator originalRows, 
MailboxSession session) throws MailboxException {
 final List movedRows = new 
ArrayList();
+final List originalRowsCopy = new 
ArrayList();
 final MessageMapper messageMapper = 
mapperFactory.getMessageMapper(session);
 
 while (originalRows.hasNext()) {
 final MailboxMessage originalMessage = originalRows.next();
+

[14/20] james-project git commit: IMAP-370 In Memory implementation for the MOVE method

2016-03-04 Thread btellier
IMAP-370 In Memory implementation for the MOVE method


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

Branch: refs/heads/master
Commit: 6a90560af84d2b1d01fb8573b6ee57be6a761e2b
Parents: ca531c0
Author: Benoit Tellier 
Authored: Thu Mar 3 16:43:06 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../inmemory/InMemoryMailboxManager.java| 43 +++
 .../inmemory/mail/InMemoryMessageMapper.java| 28 ++--
 .../inmemory/InMemoryMailboxManagerTest.java|  8 ++--
 .../inmemory/mail/InMemoryMapperProvider.java   | 45 
 .../inmemory/mail/InMemoryMessageMoveTest.java  | 30 +
 .../manager/InMemoryIntegrationResources.java   |  4 +-
 .../mail/model/AbstractMessageMoveTest.java |  4 +-
 .../inmemory/InMemoryMailboxTest.java   |  4 +-
 .../inmemory/host/InMemoryHostSystem.java   | 15 +++
 9 files changed, 152 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/6a90560a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
--
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
new file mode 100644
index 000..1814766
--- /dev/null
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
@@ -0,0 +1,43 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
+package org.apache.james.mailbox.inmemory;
+
+import java.util.List;
+
+import org.apache.james.mailbox.MailboxPathLocker;
+import org.apache.james.mailbox.acl.GroupMembershipResolver;
+import org.apache.james.mailbox.acl.MailboxACLResolver;
+import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.StoreMailboxManager;
+
+import com.google.common.collect.Lists;
+
+public class InMemoryMailboxManager extends StoreMailboxManager {
+
+public InMemoryMailboxManager(Authenticator authenticator, 
MailboxPathLocker locker, MailboxACLResolver aclResolver, 
GroupMembershipResolver groupMembershipResolver) {
+super(new InMemoryMailboxSessionMapperFactory(), authenticator, 
locker, aclResolver, groupMembershipResolver);
+}
+
+@Override
+public List getSupportedCapabilities() {
+return Lists.newArrayList(Capabilities.Basic, Capabilities.Move);
+
+}
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/6a90560a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
--
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
index b201d34..1986946 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
@@ -55,10 +55,14 @@ public class InMemoryMessageMapper extends 
AbstractMessageMapper {
 }
 
 private Map 
getMembershipByUidForMailbox(Mailbox mailbox) {
-

[05/20] james-project git commit: IMAP-370 Provide tests for CopyProcessor and MoveProcessor

2016-03-04 Thread btellier
IMAP-370 Provide tests for CopyProcessor and MoveProcessor


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

Branch: refs/heads/master
Commit: 45edd6c04f8d00fa4ea55d7d0c9400f6810f1140
Parents: 762af8e
Author: Benoit Tellier 
Authored: Wed Feb 24 16:28:04 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:23 2016 +0700

--
 protocols/imap/pom.xml  |   5 +
 .../james/imap/processor/CopyProcessorTest.java | 232 +++
 .../james/imap/processor/MoveProcessorTest.java | 231 ++
 3 files changed, 468 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/45edd6c0/protocols/imap/pom.xml
--
diff --git a/protocols/imap/pom.xml b/protocols/imap/pom.xml
index 20e8586..49c074f 100644
--- a/protocols/imap/pom.xml
+++ b/protocols/imap/pom.xml
@@ -96,6 +96,11 @@
 test
 
 
+org.mockito
+mockito-core
+test
+
+
 org.apache.james
 apache-james-mailbox-store
 test

http://git-wip-us.apache.org/repos/asf/james-project/blob/45edd6c0/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
--
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
new file mode 100644
index 000..bacef9d
--- /dev/null
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
@@ -0,0 +1,232 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
+package org.apache.james.imap.processor;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.ImapSessionState;
+import org.apache.james.imap.api.ImapSessionUtils;
+import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.api.message.IdRange;
+import org.apache.james.imap.api.message.response.StatusResponse;
+import org.apache.james.imap.api.message.response.StatusResponseFactory;
+import org.apache.james.imap.api.process.ImapProcessor;
+import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.api.process.SelectedMailbox;
+import org.apache.james.imap.message.request.CopyRequest;
+import org.apache.james.imap.message.request.MoveRequest;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.store.MailboxMetaData;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Lists;
+
+public class CopyProcessorTest {
+
+public static final String TAG = "TAG";
+private static final Logger LOGGER 

[09/20] james-project git commit: IMAP-370 Provide tests for CopyCommandParser and MoveCommandParser

2016-03-04 Thread btellier
IMAP-370 Provide tests for CopyCommandParser and MoveCommandParser


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

Branch: refs/heads/master
Commit: 53755c7b785c03ccaf6b92af73e321f9722e1d46
Parents: 45edd6c
Author: Benoit Tellier 
Authored: Wed Feb 24 16:55:05 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 protocols/imap/pom.xml  |  6 +++
 .../request/AbstractMessageRangeRequest.java| 28 +++
 .../imap/decode/parser/CopyParserTest.java  | 49 
 .../imap/decode/parser/MoveParserTest.java  | 49 
 4 files changed, 132 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/53755c7b/protocols/imap/pom.xml
--
diff --git a/protocols/imap/pom.xml b/protocols/imap/pom.xml
index 49c074f..305985d 100644
--- a/protocols/imap/pom.xml
+++ b/protocols/imap/pom.xml
@@ -86,6 +86,12 @@
 guava
 
 
+org.assertj
+assertj-core
+${assertj-1.version}
+test
+
+
 org.jmock
 jmock
 test

http://git-wip-us.apache.org/repos/asf/james-project/blob/53755c7b/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMessageRangeRequest.java
--
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMessageRangeRequest.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMessageRangeRequest.java
index f9672a0..a6c56c1 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMessageRangeRequest.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMessageRangeRequest.java
@@ -19,9 +19,15 @@
 
 package org.apache.james.imap.message.request;
 
+import java.util.Arrays;
+import java.util.List;
+
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.message.IdRange;
 
+import com.google.common.base.Objects;
+import com.google.common.hash.HashCode;
+
 public abstract class AbstractMessageRangeRequest extends AbstractImapRequest {
 
 private final IdRange[] idSet;
@@ -46,4 +52,26 @@ public abstract class AbstractMessageRangeRequest extends 
AbstractImapRequest {
 public final boolean isUseUids() {
 return useUids;
 }
+
+@Override
+public boolean equals(Object o) {
+if (o == null || getClass() != o.getClass()) return false;
+
+AbstractMessageRangeRequest that = (AbstractMessageRangeRequest) o;
+
+return equals(this.idSet, that.idSet)
+&& Objects.equal(this.mailboxName, that.mailboxName)
+&& Objects.equal(this.useUids, that.useUids);
+}
+
+private boolean equals(IdRange[] idSet1, IdRange[] idSet2) {
+List idRanges1 = Arrays.asList(idSet1);
+List idRanges2 = Arrays.asList(idSet2);
+return Objects.equal(idRanges1, idRanges2);
+}
+
+@Override
+public int hashCode() {
+return Objects.hashCode(idSet, mailboxName, useUids);
+}
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/53755c7b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/CopyParserTest.java
--
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/CopyParserTest.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/CopyParserTest.java
new file mode 100644
index 000..05a5bfc
--- /dev/null
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/CopyParserTest.java
@@ -0,0 +1,49 @@
+/
+ * 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 

[07/20] james-project git commit: MAILBOX-265 Cassandra Message Mapper should take Body fetch Type into account

2016-03-04 Thread btellier
MAILBOX-265 Cassandra Message Mapper should take Body fetch Type into account


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

Branch: refs/heads/master
Commit: fb4a3ec303693d95403118ac9b284d1f61a5b561
Parents: 16cbae9
Author: Benoit Tellier 
Authored: Thu Mar 3 13:47:47 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../mailbox/cassandra/mail/CassandraMessageMapper.java   | 11 +--
 .../cassandra/modules/CassandraMessageModule.java|  4 ++--
 .../mailbox/cassandra/table/CassandraMessageTable.java   |  1 +
 3 files changed, 12 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/fb4a3ec3/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 a401b90..7f9bbc4 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
@@ -28,6 +28,7 @@ import static 
com.datastax.driver.core.querybuilder.QueryBuilder.lte;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.set;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.update;
+import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.BODY;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.BODY_CONTENT;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.BODY_OCTECTS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageTable.BODY_START_OCTET;
@@ -277,7 +278,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
 SimpleMailboxMessage message =
 new SimpleMailboxMessage<>(
 row.getDate(INTERNAL_DATE),
-row.getInt(FULL_CONTENT_OCTETS),
+row.getLong(FULL_CONTENT_OCTETS),
 row.getInt(BODY_START_OCTET),
 buildContent(row, fetchType),
 getFlags(row),
@@ -469,6 +470,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
 private String[] retrieveFields(FetchType fetchType) {
 switch (fetchType) {
 case Body:
+return BODY;
 case Full:
 return FIELDS;
 case Headers:
@@ -483,10 +485,11 @@ public class CassandraMessageMapper implements 
MessageMapper {
 private SharedByteArrayInputStream buildContent(Row row, FetchType 
fetchType) {
 switch (fetchType) {
 case Full:
-case Body:
 return new SharedByteArrayInputStream(getFullContent(row));
 case Headers:
 return new 
SharedByteArrayInputStream(getFieldContent(HEADER_CONTENT, row));
+case Body:
+return new SharedByteArrayInputStream(getBodyContent(row));
 case Metadata:
 return new SharedByteArrayInputStream(new byte[]{});
 default:
@@ -498,6 +501,10 @@ public class CassandraMessageMapper implements 
MessageMapper {
 return Bytes.concat(getFieldContent(HEADER_CONTENT, row), 
getFieldContent(BODY_CONTENT, row));
 }
 
+private byte[] getBodyContent(Row row) {
+return Bytes.concat(new byte[row.getInt(BODY_START_OCTET)], 
getFieldContent(BODY_CONTENT, row));
+}
+
 private byte[] getFieldContent(String field, Row row) {
 byte[] headerContent = new byte[row.getBytes(field).remaining()];
 row.getBytes(field).get(headerContent);

http://git-wip-us.apache.org/repos/asf/james-project/blob/fb4a3ec3/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
--
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
index febfba0..d401782 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
+++ 

[08/20] james-project git commit: MAILBOX-265 FetchType FULL should be used when computing and reading Mime structure

2016-03-04 Thread btellier
MAILBOX-265 FetchType FULL should be used when computing and reading Mime 
structure


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

Branch: refs/heads/master
Commit: 16cbae9fea243f68ba3ce94b16e5b58cdeaf7aaf
Parents: 7a86fe1
Author: Benoit Tellier 
Authored: Thu Mar 3 14:50:31 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:35:24 2016 +0700

--
 .../java/org/apache/james/mailbox/model/FetchGroupImpl.java| 6 ++
 .../apache/james/mailbox/store/StoreMessageResultIterator.java | 5 -
 .../mailbox/store/StoreMailboxMessageResultIteratorTest.java   | 3 ++-
 .../org/apache/james/mailbox/copier/MailboxCopierImpl.java | 3 ++-
 .../org/apache/james/pop3server/mailbox/MailboxAdapter.java| 3 ++-
 5 files changed, 12 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/16cbae9f/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
--
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
index b7faba7..38d4bd1 100644
--- 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
+++ 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
@@ -42,16 +42,14 @@ public class FetchGroupImpl implements 
MessageResult.FetchGroup {
 private Set partContentDescriptors;
 
 public FetchGroupImpl() {
-super();
+this(0, new HashSet());
 }
 
 public FetchGroupImpl(int content) {
-super();
-this.content = content;
+this(content, new HashSet());
 }
 
 public FetchGroupImpl(int content, Set 
partContentDescriptors) {
-super();
 this.content = content;
 this.partContentDescriptors = partContentDescriptors;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/16cbae9f/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
--
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index 4e2b635..6741352 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -82,7 +82,10 @@ public class StoreMessageResultIterator implements Message
 headers = true;
 content -= FetchGroup.HEADERS;
 }
-if ((content & FetchGroup.BODY_CONTENT) > 0) {
+if (group.getPartContentDescriptors().size() > 0) {
+full = true;
+}
+if ((content & FetchGroup.BODY_CONTENT ) > 0 ) {
 body = true;
 content -= FetchGroup.BODY_CONTENT;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/16cbae9f/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
--
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
index de9e35d..b60e238 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.store;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -50,7 +51,7 @@ public class StoreMailboxMessageResultIteratorTest {
 private final class TestFetchGroup implements FetchGroup {
 @Override
 public Set getPartContentDescriptors() {
-return null;
+return new HashSet();
 }
 
 @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/16cbae9f/mailbox/tool/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java
--
diff --git 

[02/20] james-project git commit: IMAP-370 Cassandra should implement move command

2016-03-04 Thread btellier
IMAP-370 Cassandra should implement move command


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

Branch: refs/heads/master
Commit: ea9d77dee363f4b197ff42eece6a731f64d63b17
Parents: 8a29217
Author: Benoit Tellier 
Authored: Tue Feb 23 16:11:15 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:32:49 2016 +0700

--
 .../cassandra/mail/CassandraMessageMapper.java  |  48 +++---
 .../mail/CassandraMessageMoveTest.java  |  30 
 .../mail/model/AbstractMessageMoveTest.java | 145 +++
 3 files changed, 202 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/ea9d77de/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 1ec2348..c46447d 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
@@ -151,14 +151,18 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 @Override
 public void delete(Mailbox mailbox, 
MailboxMessage message) {
+deleteUsingMailboxId(mailbox.getMailboxId(), message);
+}
+
+private void deleteUsingMailboxId(CassandraId mailboxId, 
MailboxMessage message) {
 session.execute(
 QueryBuilder.delete()
 .from(TABLE_NAME)
-.where(eq(MAILBOX_ID, mailbox.getMailboxId().asUuid()))
+.where(eq(MAILBOX_ID, mailboxId.asUuid()))
 .and(eq(IMAP_UID, message.getUid(;
-decrementCount(mailbox);
+decrementCount(mailboxId);
 if (!message.isSeen()) {
-decrementUnseen(mailbox);
+decrementUnseen(mailboxId);
 }
 }
 
@@ -196,8 +200,10 @@ public class CassandraMessageMapper implements 
MessageMapper {
 }
 
 @Override
-public MessageMetaData move(Mailbox mailbox, 
MailboxMessage original) throws MailboxException {
-throw new UnsupportedOperationException("Not implemented - see 
https://issues.apache.org/jira/browse/IMAP-370;);
+public MessageMetaData move(Mailbox destinationMailbox, 
MailboxMessage original) throws MailboxException {
+MessageMetaData messageMetaData = copy(destinationMailbox, original);
+deleteUsingMailboxId(original.getMailboxId(), original);
+return messageMetaData;
 }
 
 @Override
@@ -216,9 +222,9 @@ public class CassandraMessageMapper implements 
MessageMapper {
 message.setModSeq(modSeqProvider.nextModSeq(mailboxSession, mailbox));
 MessageMetaData messageMetaData = save(mailbox, message);
 if (!message.isSeen()) {
-incrementUnseen(mailbox);
+incrementUnseen(mailbox.getMailboxId());
 }
-incrementCount(mailbox);
+incrementCount(mailbox.getMailboxId());
 return messageMetaData;
 }
 
@@ -243,9 +249,9 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
 original.setUid(uidProvider.nextUid(mailboxSession, mailbox));
 original.setModSeq(modSeqProvider.nextModSeq(mailboxSession, mailbox));
-incrementCount(mailbox);
+incrementCount(mailbox.getMailboxId());
 if(!original.isSeen()) {
-incrementUnseen(mailbox);
+incrementUnseen(mailbox.getMailboxId());
 }
 original.setFlags(new 
FlagsBuilder().add(original.createFlags()).add(Flag.RECENT).build());
 return save(mailbox, original);
@@ -256,24 +262,24 @@ public class CassandraMessageMapper implements 
MessageMapper {
 return uidProvider.lastUid(mailboxSession, mailbox);
 }
 
-private void decrementCount(Mailbox mailbox) {
-updateMailbox(mailbox, decr(CassandraMailboxCountersTable.COUNT));
+private void decrementCount(CassandraId mailboxId) {
+updateMailbox(mailboxId, decr(CassandraMailboxCountersTable.COUNT));
 }
 
-private void incrementCount(Mailbox mailbox) {
-updateMailbox(mailbox, incr(CassandraMailboxCountersTable.COUNT));
+private void incrementCount(CassandraId mailboxId) {
+updateMailbox(mailboxId, incr(CassandraMailboxCountersTable.COUNT));
 }
 
-private void 

[03/20] james-project git commit: IMAP-370 Factorize code between copies and moves

2016-03-04 Thread btellier
IMAP-370 Factorize code between copies and moves


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

Branch: refs/heads/master
Commit: b06992f18a09ca351d64880e37cc9ef7f13433d0
Parents: ea9d77d
Author: Benoit Tellier 
Authored: Wed Feb 24 12:09:53 2016 +0700
Committer: Benoit Tellier 
Committed: Fri Mar 4 19:33:23 2016 +0700

--
 .../james/mailbox/store/MessageBatcher.java | 57 
 .../mailbox/store/StoreMailboxManager.java  | 57 +++-
 .../mailbox/store/StoreMessageManager.java  | 39 ---
 .../james/mailbox/store/MessageBatcherTest.java | 71 
 4 files changed, 168 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/b06992f1/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageBatcher.java
--
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageBatcher.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageBatcher.java
new file mode 100644
index 000..0631f02
--- /dev/null
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageBatcher.java
@@ -0,0 +1,57 @@
+/
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information*
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the*
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *  *
+ *   http://www.apache.org/licenses/LICENSE-2.0 *
+ *  *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   *
+ * KIND, either express or implied.  See the License for the*
+ * specific language governing permissions and limitations  *
+ * under the License.   *
+ /
+
+package org.apache.james.mailbox.store;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.store.mail.model.MailboxId;
+import org.msgpack.core.Preconditions;
+
+public class MessageBatcher {
+
+public static final int NO_BATCH_SIZE = 0;
+
+public interface BatchedOperation {
+List execute(MessageRange messageRange) throws 
MailboxException;
+}
+
+private final int moveBatchSize;
+
+public MessageBatcher(int moveBatchSize) {
+Preconditions.checkArgument(moveBatchSize >= NO_BATCH_SIZE);
+this.moveBatchSize = moveBatchSize;
+}
+
+public List batchMessages(MessageRange set, BatchedOperation 
batchedOperation) throws MailboxException {
+if (moveBatchSize > 0) {
+List movedRanges = new ArrayList();
+for (MessageRange messageRange : set.split(moveBatchSize)) {
+movedRanges.addAll(batchedOperation.execute(messageRange));
+}
+return movedRanges;
+} else {
+return batchedOperation.execute(set);
+}
+}
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/b06992f1/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
--
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 7a2fda2..9262a87 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.store;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Random;
@@ -99,9 +98,9 @@ public class StoreMailboxManager 
implements 

[jira] [Closed] (JAMES-1699) setMessages - send message feature - add tests

2016-03-04 Thread Fabien VIGNON (JIRA)

 [ 
https://issues.apache.org/jira/browse/JAMES-1699?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabien VIGNON closed JAMES-1699.

Resolution: Done

> setMessages - send message feature - add tests
> --
>
> Key: JAMES-1699
> URL: https://issues.apache.org/jira/browse/JAMES-1699
> Project: James Server
>  Issue Type: Improvement
>  Components: JMAP
>Reporter: Fabien VIGNON
>
> recently added "setMessages - send a message" feature is missing some 
> integration tests.



--
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



[2/3] james-project git commit: JAMES-1699 spec: mark setMessages/send message as implemented

2016-03-04 Thread aduprat
JAMES-1699 spec: mark setMessages/send message as implemented


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

Branch: refs/heads/master
Commit: 7d25d879745e1c123c3715434408b51718714b04
Parents: bf65ad9
Author: Fabien Vignon 
Authored: Thu Mar 3 15:43:02 2016 +0100
Committer: Fabien Vignon 
Committed: Fri Mar 4 10:51:54 2016 +0100

--
 .../james/jmap/methods/SetMessagesMethodTest.java | 18 +-
 server/protocols/jmap/doc/specs/spec/message.mdwn |  1 -
 2 files changed, 9 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/7d25d879/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
index fa16c1f..1828097 100644
--- 
a/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
@@ -72,9 +72,9 @@ public abstract class SetMessagesMethodTest {
 
 private static final String NAME = "[0][0]";
 private static final String ARGUMENTS = "[0][1]";
-public static final String SECOND_NAME = "[1][0]";
-public static final String SECOND_ARGUMENTS = "[1][1]";
-public static final String USERS_DOMAIN = "domain.tld";
+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 final TemporaryFolder temporaryFolder = new TemporaryFolder();
 private final EmbeddedElasticSearch embeddedElasticSearch = new 
EmbeddedElasticSearch();
@@ -670,7 +670,7 @@ public abstract class SetMessagesMethodTest {
 "\"setMessages\","+
 "{" +
 "  \"create\": { \"" + messageCreationId  + "\" : {" +
-"\"from\": { \"name\": \"MAILER-DEAMON\", \"email\": 
\"postmas...@example.com\"}," +
+"\"from\": { \"name\": \"MAILER-DAEMON\", \"email\": 
\"postmas...@example.com\"}," +
 "\"to\": [{ \"name\": \"BOB\", \"email\": 
\"some...@example.com\"}]," +
 "\"subject\": \"Thank you for joining example.com!\"," 
+
 "\"textBody\": \"Hello someone, and thank you for 
joining example.com!\"," +
@@ -828,7 +828,7 @@ public abstract class SetMessagesMethodTest {
 "\"setMessages\","+
 "{" +
 "  \"create\": { \"" + messageCreationId  + "\" : {" +
-"\"from\": { \"name\": \"MAILER-DEAMON\", \"email\": 
\"postmas...@example.com\"}," +
+"\"from\": { \"name\": \"MAILER-DAEMON\", \"email\": 
\"postmas...@example.com\"}," +
 "\"to\": [{ \"name\": \"BOB\", \"email\": 
\"some...@example.com@example.com\"}]," +
 "\"cc\": [{ \"name\": \"ALICE\"}]," +
 "\"subject\": \"Thank you for joining example.com!\"," 
+
@@ -984,7 +984,7 @@ public abstract class SetMessagesMethodTest {
 "\"setMessages\","+
 "{" +
 "  \"create\": { \"" + messageCreationId  + "\" : {" +
-"\"from\": { \"name\": \"MAILER-DEAMON\", \"email\": 
\"postmas...@example.com\"}," +
+"\"from\": { \"name\": \"MAILER-DAEMON\", \"email\": 
\"postmas...@example.com\"}," +
 "\"to\": [{ \"name\": \"BOB\", \"email\": 
\"some...@example.com\"}]," +
 "\"cc\": [{ \"name\": \"ALICE\"}]," +
 "\"textBody\": \"Hello someone, and thank you for 
joining example.com!\"," +
@@ -1015,7 +1015,7 @@ public abstract class SetMessagesMethodTest {
 }
 
 @Test
-public void setMessagesShouldPushMessageIntoRecipientUsersInbox() throws 
Exception {
+public void setMessagesShouldDeliverMessageToRecipient() throws Exception {
 // Sender
 
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
username, "sent");
 // Recipient
@@ -1056,10 +1056,10 @@ public abstract class SetMessagesMethodTest {

[3/3] james-project git commit: Merge remote-tracking branch 'fvignon/JAMES-1699'

2016-03-04 Thread aduprat
Merge remote-tracking branch 'fvignon/JAMES-1699'


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

Branch: refs/heads/master
Commit: 0af4d200fbffc36f144f03edc5201420c220b582
Parents: 9e3a28c 7d25d87
Author: Antoine Duprat 
Authored: Fri Mar 4 11:01:13 2016 +0100
Committer: Antoine Duprat 
Committed: Fri Mar 4 11:01:13 2016 +0100

--
 .../jmap/methods/SetMessagesMethodTest.java | 244 ---
 .../protocols/jmap/doc/specs/spec/message.mdwn  |   1 -
 2 files changed, 213 insertions(+), 32 deletions(-)
--



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



[1/3] james-project git commit: JAMES-1699 add tests for JAMES-1692 setMessages - send a new message

2016-03-04 Thread aduprat
Repository: james-project
Updated Branches:
  refs/heads/master 9e3a28cdb -> 0af4d200f


JAMES-1699 add tests for JAMES-1692 setMessages - send a new message

check messsages are moved from sender's outbox to sent mailbox
check recipient's inbox has a new message once sender has sent a new 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/bf65ad95
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/bf65ad95
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/bf65ad95

Branch: refs/heads/master
Commit: bf65ad956bd7018759fefb8c187ab6980b7d
Parents: 45d2607
Author: Fabien Vignon 
Authored: Tue Mar 1 14:58:16 2016 +0100
Committer: Fabien Vignon 
Committed: Fri Mar 4 10:51:53 2016 +0100

--
 .../jmap/methods/SetMessagesMethodTest.java | 238 ---
 1 file changed, 210 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/bf65ad95/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
--
diff --git 
a/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
index 70dcd8f..fa16c1f 100644
--- 
a/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
@@ -39,6 +39,7 @@ import java.io.ByteArrayInputStream;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 import javax.mail.Flags;
 
@@ -59,6 +60,9 @@ import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
+import com.jayway.awaitility.Awaitility;
+import com.jayway.awaitility.Duration;
+import com.jayway.awaitility.core.ConditionFactory;
 import com.jayway.restassured.RestAssured;
 import com.jayway.restassured.builder.ResponseSpecBuilder;
 import com.jayway.restassured.http.ContentType;
@@ -68,12 +72,15 @@ public abstract class SetMessagesMethodTest {
 
 private static final String NAME = "[0][0]";
 private static final String ARGUMENTS = "[0][1]";
+public static final String SECOND_NAME = "[1][0]";
+public static final String SECOND_ARGUMENTS = "[1][1]";
+public static final String USERS_DOMAIN = "domain.tld";
 
 private final TemporaryFolder temporaryFolder = new TemporaryFolder();
 private final EmbeddedElasticSearch embeddedElasticSearch = new 
EmbeddedElasticSearch();
 private final EmbeddedCassandra cassandra = 
EmbeddedCassandra.createStartServer();
 private final JmapServer jmapServer = jmapServer(temporaryFolder, 
embeddedElasticSearch, cassandra);
-private String outboxId;
+private ConditionFactory calmlyAwait;
 
 protected abstract JmapServer jmapServer(TemporaryFolder temporaryFolder, 
EmbeddedElasticSearch embeddedElasticSearch, EmbeddedCassandra cassandra);
 
@@ -91,32 +98,39 @@ public abstract class SetMessagesMethodTest {
 RestAssured.port = jmapServer.getPort();
 RestAssured.config = 
newConfig().encoderConfig(encoderConfig().defaultContentCharset(Charsets.UTF_8));
 
-String domain = "domain.tld";
-username = "username@" + domain;
+username = "username@" + USERS_DOMAIN;
 String password = "password";
-jmapServer.serverProbe().addDomain(domain);
+jmapServer.serverProbe().addDomain(USERS_DOMAIN);
 jmapServer.serverProbe().addUser(username, password);
-jmapServer.serverProbe().createMailbox("#private", "username", 
"inbox");
+jmapServer.serverProbe().createMailbox("#private", username, "inbox");
 accessToken = JmapAuthentication.authenticateJamesUser(username, 
password);
 
 
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
username, "outbox");
 embeddedElasticSearch.awaitForElasticSearch();
-// Find the newly created outbox mailbox (using getMailboxes command 
on /jmap endpoint)
-List> mailboxes = with()
+
+Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
+calmlyAwait = 
Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await();
+}
+
+private String getOutboxId() {
+// Find username's outbox (using getMailboxes command on /jmap 
endpoint)
+return 

[1/2] james-project git commit: update docker/guice section in README

2016-03-04 Thread aduprat
Repository: james-project
Updated Branches:
  refs/heads/master 45d2607fb -> 9e3a28cdb


update docker/guice section in README

- add command for building james artifact (guice/cassandra section)
- add missing jmap port mapping when running james container.
- fix section's missing markdown formatting


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

Branch: refs/heads/master
Commit: e1b36e10425efaa14988a030dced820df6746702
Parents: 00678d8
Author: Fabien Vignon 
Authored: Tue Mar 1 14:50:10 2016 +0100
Committer: Fabien Vignon 
Committed: Tue Mar 1 15:23:30 2016 +0100

--
 README.txt | 31 ---
 1 file changed, 24 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/james-project/blob/e1b36e10/README.txt
--
diff --git a/README.txt b/README.txt
index ce61fb3..a29b6ad 100644
--- a/README.txt
+++ b/README.txt
@@ -97,26 +97,43 @@ This feature available for two configurations :
 Run James with Java 8 + Guice + Cassandra + ElasticSearch
 =
 
-* Requirements
+## Requirements
 Built artifacts should be in ./dockerfiles/run/guice/destination folder.
-
-* Howto ?
-You need a running cassandra in docker. To achieve this run :
+If you haven't already:
+```bash
+$ docker build -t james/project dockerfiles/compilation/java-8
+$ docker run -v $HOME/.m2:/root/.m2 -v $PWD:/origin \
+  -v $PWD/dockerfiles/run/guice/destination:/destination \
+  -t james/project -s HEAD
+```
+
+## Howto ?
+You need a running **cassandra** in docker. To achieve this run :
+```bash
 $ docker run -d --name=cassandra cassandra:2.2.3
+```
 
-You need a running ElasticSearch in docker. To achieve this run :
+You need a running **ElasticSearch** in docker. To achieve this run :
+```bash
 $ docker run -d --name=elasticsearch elasticsearch:1.5.2
+```
 
 We need to provide the key we will use for TLS. For obvious reasons, this is 
not provided in this git.
 
-Copy your TSL keys to destination/run/guice/conf/keystore or generate it using 
the following command. The password must be james72laBalle to match default 
configuration.
+Copy your TLS keys to `destination/run/guice/conf/keystore` or generate it 
using the following command. The password must be `james72laBalle` to match 
default configuration.
+```bash
 $ keytool -genkey -alias james -keyalg RSA -keystore 
dockerfiles/run/guice/destination/conf/keystore
+```
 
 Then we need to build james container :
+```bash
 $ docker build -t james_run dockerfiles/run/guice/
+```
 
 To run this container :
-$ docker run --hostname HOSTNAME -p "25:25" -p "110:110" -p "143:143" -p 
"465:465" -p "587:587" -p "993:993" --link cassandra:cassandra --link 
elasticsearch:elasticsearch --name james_run -t james_run
+```bash
+$ docker run --hostname HOSTNAME -p "25:25" -p 80:80 -p "110:110" -p "143:143" 
-p "465:465" -p "587:587" -p "993:993" --link cassandra:cassandra --link 
elasticsearch:elasticsearch --name james_run -t james_run
+```
 
 Where :
 - HOSTNAME: is the hostname you want to give to your James container. This DNS 
entry will be used to send mail to your James server.


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



[2/2] james-project git commit: Merge remote-tracking branch 'fvignon/DockerJamesReadMeFix'

2016-03-04 Thread aduprat
Merge remote-tracking branch 'fvignon/DockerJamesReadMeFix'


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

Branch: refs/heads/master
Commit: 9e3a28cdb7c2745431a0361f5f07745496c45d66
Parents: 45d2607 e1b36e1
Author: Antoine Duprat 
Authored: Fri Mar 4 10:51:04 2016 +0100
Committer: Antoine Duprat 
Committed: Fri Mar 4 10:51:04 2016 +0100

--
 README.txt | 31 ---
 1 file changed, 24 insertions(+), 7 deletions(-)
--



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