[5/8] james-project git commit: PROTOCOLS-117 Rewrite StoreManagerTests without mock
PROTOCOLS-117 Rewrite StoreManagerTests without mock Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2b4626fc Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2b4626fc Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2b4626fc Branch: refs/heads/master Commit: 2b4626fc7e689ba13f5e70a45cf177f6956ec613 Parents: 7e8aaea Author: benwa Authored: Thu Nov 9 10:06:31 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:25:59 2017 +0100 -- .../mailbox/store/StoreRightManagerTest.java| 85 ++-- 1 file changed, 42 insertions(+), 43 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/2b4626fc/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java -- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java index 265bfe8..9d765d5 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java @@ -30,8 +30,6 @@ import static org.mockito.Mockito.when; import javax.mail.Flags; -import org.apache.james.mailbox.acl.GroupMembershipResolver; -import org.apache.james.mailbox.acl.MailboxACLResolver; import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.exception.DifferentDomainException; @@ -43,25 +41,21 @@ import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.MailboxACL; import org.apache.james.mailbox.model.MailboxACL.ACLCommand; import org.apache.james.mailbox.model.MailboxACL.Right; +import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; import org.junit.Before; -import org.junit.Rule; +import org.junit.Ignore; import org.junit.Test; -import org.junit.rules.ExpectedException; public class StoreRightManagerTest { -public static final long UID_VALIDITY = 3421l; +private static final long UID_VALIDITY = 3421L; private StoreRightManager storeRightManager; -private MailboxACLResolver mailboxAclResolver; -private GroupMembershipResolver groupMembershipResolver; private MockMailboxSession aliceSession; -@Rule -public ExpectedException expectedException = ExpectedException.none(); private MailboxMapper mockedMailboxMapper; @Before @@ -69,29 +63,29 @@ public class StoreRightManagerTest { aliceSession = new MockMailboxSession(MailboxFixture.ALICE); MailboxSessionMapperFactory mockedMapperFactory = mock(MailboxSessionMapperFactory.class); mockedMailboxMapper = mock(MailboxMapper.class); -mailboxAclResolver = new UnionMailboxACLResolver(); -groupMembershipResolver = new SimpleGroupMembershipResolver(); when(mockedMapperFactory.getMailboxMapper(aliceSession)) .thenReturn(mockedMailboxMapper); + storeRightManager = new StoreRightManager(mockedMapperFactory, - mailboxAclResolver, - groupMembershipResolver); +new UnionMailboxACLResolver(), +new SimpleGroupMembershipResolver()); } @Test public void hasRightShouldThrowMailboxNotFoundExceptionWhenMailboxDoesNotExist() throws MailboxException { -expectedException.expect(MailboxNotFoundException.class); - MailboxPath mailboxPath = MailboxPath.forUser(MailboxFixture.ALICE, "unexisting mailbox"); when(mockedMailboxMapper.findMailboxByPath(mailboxPath)) .thenThrow(new MailboxNotFoundException("")); -storeRightManager.hasRight(mailboxPath, Right.Read, aliceSession); + +assertThatThrownBy(() -> +storeRightManager.hasRight(mailboxPath, Right.Read, aliceSession)) +.isInstanceOf(MailboxNotFoundException.class); } +@Ignore("PROTOCOLS-117 Will be solved in next commit") @Test public void hasRightShouldReturnTrueWhenTheUserOwnTheMailbox() throws MailboxException { -Mailbox mailbox = mock(Mailbox.class); -when(mailbox.getUser()).thenReturn(MailboxFixture.ALICE); +Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(ALICE, MailboxConstants.INBOX), UID_VALIDITY);
[3/8] james-project git commit: PROTOCOLS-117 Delete GroupFolderResolver
PROTOCOLS-117 Delete GroupFolderResolver Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5218473d Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5218473d Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5218473d Branch: refs/heads/master Commit: 5218473de5c1e74f150c6b8ebe46ff63fac7466f Parents: 48d7caf Author: benwa Authored: Wed Nov 8 16:27:23 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:23:06 2017 +0100 -- .../mailbox/store/GroupFolderResolver.java | 41 --- .../james/mailbox/store/StoreRightManager.java | 11 ++- .../mailbox/store/GroupFolderResolverTest.java | 75 3 files changed, 8 insertions(+), 119 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/5218473d/mailbox/store/src/main/java/org/apache/james/mailbox/store/GroupFolderResolver.java -- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/GroupFolderResolver.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/GroupFolderResolver.java deleted file mode 100644 index 7be235d..000 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/GroupFolderResolver.java +++ /dev/null @@ -1,41 +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.store; - -import org.apache.james.mailbox.MailboxSession; -import org.apache.james.mailbox.model.MailboxConstants; -import org.apache.james.mailbox.store.mail.model.Mailbox; - -public class GroupFolderResolver { - -private final MailboxSession mailboxSession; - -public GroupFolderResolver(MailboxSession mailboxSession) { -this.mailboxSession = mailboxSession; -} - -public boolean isGroupFolder(Mailbox mailbox) { -String namespace = mailbox.getNamespace(); -return namespace == null || -(!namespace.equals(mailboxSession.getPersonalSpace()) -&& !namespace.equals(MailboxConstants.USER_NAMESPACE) -&& !namespace.equals(mailboxSession.getOtherUsersSpace())); -} -} http://git-wip-us.apache.org/repos/asf/james-project/blob/5218473d/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java -- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java index e1796fb..38076df 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java @@ -50,6 +50,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; public class StoreRightManager implements RightManager { +public static final boolean GROUP_FOLDER = true; private final MailboxSessionMapperFactory mailboxSessionMapperFactory; private final MailboxACLResolver aclResolver; @@ -102,7 +103,7 @@ public class StoreRightManager implements RightManager { groupMembershipResolver, mailbox.getACL(), mailbox.getUser(), -new GroupFolderResolver(session).isGroupFolder(mailbox))) +!GROUP_FOLDER)) .sneakyThrow()) .orElse(MailboxACL.NO_RIGHTS); } @@ -111,7 +112,11 @@ public class StoreRightManager implements RightManager { public R
[2/8] james-project git commit: PROTOCOLS-117 MailboxPath should be immutable
PROTOCOLS-117 MailboxPath should be immutable Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6a6e74cf Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6a6e74cf Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6a6e74cf Branch: refs/heads/master Commit: 6a6e74cf0f869c3f69bbb82991fd703bb0f1c42b Parents: 5218473 Author: benwa Authored: Wed Nov 8 10:04:41 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:23:06 2017 +0100 -- .../apache/james/mailbox/model/MailboxPath.java | 28 ++--- .../hbase/mail/HBaseMailboxMapperTest.java | 20 .../mailbox/store/StoreMailboxManager.java | 32 +--- 3 files changed, 38 insertions(+), 42 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/6a6e74cf/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java -- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java index ea5e760..42de9a4 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java @@ -49,9 +49,9 @@ public class MailboxPath { return new MailboxPath(MailboxConstants.USER_NAMESPACE, username, mailboxName); } -private String namespace; -private String user; -private String name; +private final String namespace; +private final String user; +private final String name; public MailboxPath(String namespace, String user, String name) { this.namespace = Optional.ofNullable(namespace) @@ -79,13 +79,6 @@ public class MailboxPath { } /** - * Set the namespace this mailbox is in - */ -public void setNamespace(String namespace) { -this.namespace = namespace; -} - -/** * Get the name of the user who owns the mailbox. This can be null e.g. for * shared mailboxes. * @@ -96,13 +89,6 @@ public class MailboxPath { } /** - * Set the name of the user who owns the mailbox. - */ -public void setUser(String user) { -this.user = user; -} - -/** * Get the name of the mailbox. This is the pure name without user or * namespace, so this is what a user would see in his client. * @@ -113,14 +99,6 @@ public class MailboxPath { } /** - * Set the name of the mailbox. This is the pure name without user or - * namespace, so this is what a user would see in his client. - */ -public void setName(String name) { -this.name = name; -} - -/** * Return a list of MailboxPath representing the hierarchy levels of this * MailboxPath. E.g. INBOX.main.sub would yield * http://git-wip-us.apache.org/repos/asf/james-project/blob/6a6e74cf/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java -- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java index 078824c..dca113b 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java @@ -160,18 +160,26 @@ public class HBaseMailboxMapperTest { MailboxPath newPath; for (int i = start; i < end; i++) { -newPath = new MailboxPath(path); -newPath.setName(i + newPath.getName() + " " + i); -// test for paths with null user -if (i % 2 == 0) { -newPath.setUser(null); -} +newPath = new MailboxPath(path.getNamespace(), +computeUserName(path.getUser(), i), +computeMailboxName(path.getName(), i)); addMailbox(new HBaseMailbox(newPath, 1234)); } result = mapper.findMailboxWithPathLike(path); assertEquals(end - start + 1, result.size()); } +private String computeUserName(String user, int i) { +if (i % 2 == 0) { +return null; +} +return user; +} + +private String computeMailboxName(String name, int i) { +return i + name + " " + i; +} + /** * Test of list method, of class HBaseMailboxMapper. */ http://git-wip-us.apache.org/repos/asf/james-project/blob/6a6e74cf/mailbox/store/src/main/java/org/apache/james/mailbox/store/
[4/8] james-project git commit: PROTOCOLS-117 MailboxPath creation SHOULD NOT be dynamic
PROTOCOLS-117 MailboxPath creation SHOULD NOT be dynamic Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/48d7caf6 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/48d7caf6 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/48d7caf6 Branch: refs/heads/master Commit: 48d7caf604ca9090ba9253689b4b5b5f5d5c356c Parents: 9047b4b Author: benwa Authored: Wed Nov 8 16:42:42 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:23:06 2017 +0100 -- .../java/org/apache/james/mailbox/model/MailboxPath.java| 3 +-- .../james/mailbox/maildir/mail/MaildirMailboxMapper.java| 2 +- .../org/apache/james/imap/processor/CopyProcessorTest.java | 9 +++-- .../org/apache/james/imap/processor/MoveProcessorTest.java | 9 +++-- .../james/transport/mailets/delivery/MailboxAppender.java | 4 ++-- .../james/jmap/DefaultMailboxesProvisioningFilter.java | 2 +- .../james/jmap/methods/SetMailboxesCreationProcessor.java | 6 -- .../james/jmap/methods/SetMailboxesUpdateProcessor.java | 6 +++--- .../apache/james/webadmin/service/UserMailboxesService.java | 2 +- 9 files changed, 19 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/48d7caf6/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java -- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java index 92afdf2..ea5e760 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java @@ -39,7 +39,7 @@ public class MailboxPath { * @return inbox */ public static MailboxPath inbox(MailboxSession session) { -return new MailboxPath(session.getPersonalSpace(), session.getUser().getUserName(), MailboxConstants.INBOX); +return MailboxPath.forUser(session.getUser().getUserName(), MailboxConstants.INBOX); } /** @@ -47,7 +47,6 @@ public class MailboxPath { */ public static MailboxPath forUser(String username, String mailboxName) { return new MailboxPath(MailboxConstants.USER_NAMESPACE, username, mailboxName); - } private String namespace; http://git-wip-us.apache.org/repos/asf/james-project/blob/48d7caf6/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java -- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java index fe0348a..16ed62a 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java @@ -314,7 +314,7 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail } // Special case for INBOX: Let's use the user's folder. -MailboxPath inboxMailboxPath = new MailboxPath(session.getPersonalSpace(), userName, MailboxConstants.INBOX); +MailboxPath inboxMailboxPath = MailboxPath.forUser(userName, MailboxConstants.INBOX); mailboxList.add(maildirStore.loadMailbox(session, inboxMailboxPath)); // List all INBOX sub folders. http://git-wip-us.apache.org/repos/asf/james-project/blob/48d7caf6/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 index 5c0f875..eb61e67 100644 --- 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 @@ -24,6 +24,7 @@ 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 java.util.Optional; import org.apache.james.imap.api.ImapCommand; @@ -48,11 +49,11 @@ import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.store.MailboxMetaData; import org.apache.james.metrics.api.NoopMetricFactory; - -import com.google.
[1/8] james-project git commit: PROTOCOLS-117 Rework MailboxPath equals
Repository: james-project Updated Branches: refs/heads/master 9047b4bab -> 3aa1732b3 PROTOCOLS-117 Rework MailboxPath equals Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3757e5e7 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3757e5e7 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3757e5e7 Branch: refs/heads/master Commit: 3757e5e713722737a653b7624995939c77756c8b Parents: 6a6e74c Author: benwa Authored: Wed Nov 8 09:23:30 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:23:06 2017 +0100 -- .../apache/james/mailbox/model/MailboxPath.java | 52 +--- .../james/mailbox/model/MailboxPathTest.java| 9 2 files changed, 22 insertions(+), 39 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/3757e5e7/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java -- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java index 42de9a4..1f4f2f9 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java @@ -21,6 +21,7 @@ package org.apache.james.mailbox.model; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; import org.apache.james.mailbox.MailboxSession; @@ -135,50 +136,23 @@ public class MailboxPath { return asString(); } -/* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ @Override -public boolean equals(Object mailboxPath) { -if (this == mailboxPath) -return true; - -if (!(mailboxPath instanceof MailboxPath)) -return false; -MailboxPath mp = (MailboxPath) mailboxPath; -if (namespace == null) { -if (mp.getNamespace() != null) -return false; -} else if (!namespace.equals(mp.getNamespace())) -return false; -if (user == null) { -if (mp.getUser() != null) -return false; -} else if (!user.equals(mp.getUser())) -return false; -if (name == null) { -if (mp.getName() != null) -return false; -} else if (!name.equals(mp.getName())) -return false; -return true; +public final boolean equals(Object o) { +if (o instanceof MailboxPath) { +MailboxPath that = (MailboxPath) o; + +return Objects.equals(this.namespace, that.namespace) +&& Objects.equals(this.user, that.user) +&& Objects.equals(this.name, that.name); +} +return false; } @Override -public int hashCode() { -final int PRIME = 31; -int result = 1; -if (getName() != null) -result = PRIME * result + getName().hashCode(); -if (getUser() != null) -result = PRIME * result + getUser().hashCode(); -if (getNamespace() != null) -result = PRIME * result + getNamespace().hashCode(); -return result; +public final int hashCode() { +return Objects.hash(namespace, user, name); } - + /** * Return the full name of the {@link MailboxPath}, which is constructed via the {@link #namespace} and {@link #name} * http://git-wip-us.apache.org/repos/asf/james-project/blob/3757e5e7/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java -- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java index d51608f..2761658 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java @@ -24,9 +24,18 @@ import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class MailboxPathTest { @Test +public void shouldMatchBeanContract() { +EqualsVerifier.forClass(MailboxPath.class) +.allFieldsShouldBeUsed() +.verify(); +} + +@Test public void getHierarchyLevelsShouldBeOrdered() { assertThat(MailboxPath.forUser("user", "inbox.folder.subfolder") .getHierarchyLevels('.')) - To un
[8/8] james-project git commit: PROTOCOLS-117 Case issues in StoreManagerTests
PROTOCOLS-117 Case issues in StoreManagerTests Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3aa1732b Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3aa1732b Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3aa1732b Branch: refs/heads/master Commit: 3aa1732b3b823185edfae549f8db55a9002f6e29 Parents: 14a6930 Author: benwa Authored: Thu Nov 9 10:07:18 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:25:59 2017 +0100 -- .../org/apache/james/mailbox/store/StoreRightManagerTest.java| 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/3aa1732b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java -- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java index 5ebe23b..78ce9e6 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java @@ -90,7 +90,7 @@ public class StoreRightManagerTest { } @Test -public void hasRightShouldReturnTrueWhenTheUserDoesnotOwnTheMailboxButHaveTheCorrectRightOnIt() throws MailboxException { +public void hasRightShouldReturnTrueWhenTheUserDoesNotOwnTheMailboxButHaveTheCorrectRightOnIt() throws MailboxException { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, MailboxConstants.INBOX), UID_VALIDITY); mailbox.setACL(new MailboxACL(new MailboxACL.Entry(MailboxFixture.ALICE, Right.Write))); @@ -99,7 +99,7 @@ public class StoreRightManagerTest { } @Test -public void hasRightShouldReturnTrueWhenTheUserDoesnotOwnTheMailboxButHasAtLeastTheCorrectRightOnIt() throws MailboxException { +public void hasRightShouldReturnTrueWhenTheUserDoesNotOwnTheMailboxButHasAtLeastTheCorrectRightOnIt() throws MailboxException { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, MailboxConstants.INBOX), UID_VALIDITY); mailbox.setACL(new MailboxACL(new MailboxACL.Entry(MailboxFixture.ALICE, Right.Write, Right.Lookup))); - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[7/8] james-project git commit: PROTOCOLS-117 Correct StoreManagerTests
PROTOCOLS-117 Correct StoreManagerTests Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/14a6930f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/14a6930f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/14a6930f Branch: refs/heads/master Commit: 14a6930f1a56f574ffd27e9488e971b10041208d Parents: 2b4626f Author: benwa Authored: Thu Nov 9 10:06:58 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:25:59 2017 +0100 -- .../org/apache/james/mailbox/store/StoreRightManagerTest.java| 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/14a6930f/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java -- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java index 9d765d5..5ebe23b 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java @@ -47,7 +47,6 @@ import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; public class StoreRightManagerTest { @@ -82,13 +81,12 @@ public class StoreRightManagerTest { .isInstanceOf(MailboxNotFoundException.class); } -@Ignore("PROTOCOLS-117 Will be solved in next commit") @Test public void hasRightShouldReturnTrueWhenTheUserOwnTheMailbox() throws MailboxException { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(ALICE, MailboxConstants.INBOX), UID_VALIDITY); assertThat(storeRightManager.hasRight(mailbox, Right.Write, aliceSession)) -.isFalse(); +.isTrue(); } @Test - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[6/8] james-project git commit: PROTOCOLS-117 MailboxPath sanitizing should be handled by MailboxPath
PROTOCOLS-117 MailboxPath sanitizing should be handled by MailboxPath Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7e8aaea4 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7e8aaea4 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7e8aaea4 Branch: refs/heads/master Commit: 7e8aaea41677ff280065719d1e0d9ae2507ea8ee Parents: 3757e5e Author: benwa Authored: Wed Nov 8 16:35:40 2017 +0700 Committer: Antoine Duprat Committed: Mon Nov 13 16:25:59 2017 +0100 -- .../apache/james/mailbox/model/MailboxPath.java | 16 ++ .../james/mailbox/model/MailboxPathTest.java| 56 .../mailbox/store/StoreMailboxManager.java | 14 + 3 files changed, 73 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/7e8aaea4/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java -- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java index 1f4f2f9..02daf0b 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java @@ -127,6 +127,22 @@ public class MailboxPath { return levels; } +public MailboxPath sanitize(char delimiter) { +if (name == null) { +return this; +} +if (name.endsWith(String.valueOf(delimiter))) { +int length = name.length(); +String sanitizedName = name.substring(0, length - 1); +return new MailboxPath( +namespace, +user, +sanitizedName); +} +return this; +} + + public String asString() { return namespace + ":" + user + ":" + name; } http://git-wip-us.apache.org/repos/asf/james-project/blob/7e8aaea4/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java -- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java index 2761658..5292690 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java @@ -68,4 +68,60 @@ public class MailboxPathTest { .containsExactly( MailboxPath.forUser("user", null)); } + +@Test +public void sanitizeShouldNotThrowOnNullMailboxName() { +assertThat(MailboxPath.forUser("user", null) +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", null)); +} + +@Test +public void sanitizeShouldReturnEmptyWhenEmpty() { +assertThat(MailboxPath.forUser("user", "") +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", "")); +} + +@Test +public void sanitizeShouldRemoveMaximumOneTrailingDelimiterWhenAlone() { +assertThat(MailboxPath.forUser("user", ".") +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", "")); +} + +@Test +public void sanitizeShouldPreserveHeadingDelimiter() { +assertThat(MailboxPath.forUser("user", ".a") +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", ".a")); +} + +@Test +public void sanitizeShouldRemoveTrailingDelimiter() { +assertThat(MailboxPath.forUser("user", "a.") +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", "a")); +} + +@Test +public void sanitizeShouldRemoveMaximumOneTrailingDelimiter() { +assertThat(MailboxPath.forUser("user", "a..") +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", "a.")); +} + +@Test +public void sanitizeShouldPreserveRedundantDelimiters() { +assertThat(MailboxPath.forUser("user", "a..a") +.sanitize('.')) +.isEqualTo( +MailboxPath.forUser("user", "a..a")); +} } http://git-wip-us.apache.org/repos/asf/james-project/blob/7e8aaea4/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/StoreMailbox
[jira] [Created] (JAMES-2215) Integration test about coherence of total and unread counts on a shared folder
Antoine Duprat created JAMES-2215: - Summary: Integration test about coherence of total and unread counts on a shared folder Key: JAMES-2215 URL: https://issues.apache.org/jira/browse/JAMES-2215 Project: James Server Issue Type: Test Components: JMAP Reporter: Antoine Duprat Assignee: Antoine Duprat Write a integration test to check that at any time, sharer and sharee of a mailbox see the same number of message and unread message for this mailbox. Here is a list of operations to check: * when receiving an email * when the owner copies a mail to the delegated mailbox * when the owner moves a mail out of the delegated mailboxes * when the sharee copies a mail to the delegated mailbox * when the sharee moves a mail out of the delegated mailbox * when the sharee tries copying a seen mail to the delegated mailbox but don't have the right. -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-2212) Fix Debian packaging
[ https://issues.apache.org/jira/browse/JAMES-2212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Antoine Duprat resolved JAMES-2212. --- Resolution: Fixed merged > Fix Debian packaging > > > Key: JAMES-2212 > URL: https://issues.apache.org/jira/browse/JAMES-2212 > Project: James Server > Issue Type: Bug >Reporter: Raphaël Ouazana > > Due to some changes in jar generation, and also in some external repository, > packaging is now broken. I will fix it. -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Closed] (JAMES-2212) Fix Debian packaging
[ https://issues.apache.org/jira/browse/JAMES-2212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Antoine Duprat closed JAMES-2212. - > Fix Debian packaging > > > Key: JAMES-2212 > URL: https://issues.apache.org/jira/browse/JAMES-2212 > Project: James Server > Issue Type: Bug >Reporter: Raphaël Ouazana > > Due to some changes in jar generation, and also in some external repository, > packaging is now broken. I will fix it. -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-2209) Upgrade libraries containing CVEs
[ https://issues.apache.org/jira/browse/JAMES-2209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Antoine Duprat resolved JAMES-2209. --- Resolution: Fixed merged > Upgrade libraries containing CVEs > - > > Key: JAMES-2209 > URL: https://issues.apache.org/jira/browse/JAMES-2209 > Project: James Server > Issue Type: Bug >Affects Versions: master >Reporter: Thibaut SAUTEREAU > > The following libraries were reported by the OWASP Dependency Checker as > containing CVEs: > ActiveMQ (CVE-2015-5183 and CVE-2015-5184) > -> upgrade from 5.15.0 to 5.15.2 (last stable) > logback-classic (CVE-2017-5929) > -> upgrade from 1.1.7 to 1.1.11 (last stable of 1.1.x) > jetty (CVE-2017-9735) > -> upgrade from 9.4.4 to 9.4.7.v20170914 (last stable) -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Closed] (JAMES-2209) Upgrade libraries containing CVEs
[ https://issues.apache.org/jira/browse/JAMES-2209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Antoine Duprat closed JAMES-2209. - > Upgrade libraries containing CVEs > - > > Key: JAMES-2209 > URL: https://issues.apache.org/jira/browse/JAMES-2209 > Project: James Server > Issue Type: Bug >Affects Versions: master >Reporter: Thibaut SAUTEREAU > > The following libraries were reported by the OWASP Dependency Checker as > containing CVEs: > ActiveMQ (CVE-2015-5183 and CVE-2015-5184) > -> upgrade from 5.15.0 to 5.15.2 (last stable) > logback-classic (CVE-2017-5929) > -> upgrade from 1.1.7 to 1.1.11 (last stable of 1.1.x) > jetty (CVE-2017-9735) > -> upgrade from 9.4.4 to 9.4.7.v20170914 (last stable) -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[5/6] james-project git commit: JAMES-2212 Jar names have changed, upgrade packaging to new names
JAMES-2212 Jar names have changed, upgrade packaging to new names Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fb166b48 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fb166b48 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fb166b48 Branch: refs/heads/master Commit: fb166b485b2b6b551e29ee210d1dfde4bca79e8c Parents: 662b9b2 Author: Raphael Ouazana Authored: Fri Nov 10 17:13:00 2017 +0100 Committer: Raphael Ouazana Committed: Fri Nov 10 17:14:38 2017 +0100 -- dockerfiles/packaging/debian/package.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/fb166b48/dockerfiles/packaging/debian/package.sh -- diff --git a/dockerfiles/packaging/debian/package.sh b/dockerfiles/packaging/debian/package.sh index 425d9b8..d6c2278 100755 --- a/dockerfiles/packaging/debian/package.sh +++ b/dockerfiles/packaging/debian/package.sh @@ -14,9 +14,10 @@ fi RELEASE=$1 ITERATION=$2 -cp /jars/james-server.jar /debian/package/usr/share/james/ +cp /jars/james-server-cassandra-guice.jar /debian/package/usr/share/james/james-server.jar cp -r /jars/james-server-cassandra-guice.lib /debian/package/usr/share/james/ -cp /jars/james-cli.jar /debian/package/usr/share/james/ +cp /jars/james-server-cli.jar /debian/package/usr/share/james/james-cli.jar +cp -r /jars/james-server-cli.lib /debian/package/usr/share/james/ fpm -s dir -t deb \ -n james \ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[2/6] james-project git commit: JAMES-2209 Upgrade ActiveMQ to 5.15.2
JAMES-2209 Upgrade ActiveMQ to 5.15.2 ActiveMQ 5.15.0 is vulberable to CVE-2015-5183 and CVE-2015-5184. Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/36ee0401 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/36ee0401 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/36ee0401 Branch: refs/heads/master Commit: 36ee04014f0136a3dafcbba23bc5b42fa09a81e0 Parents: 1209385 Author: Thibaut SAUTEREAU Authored: Wed Nov 8 16:47:04 2017 +0700 Committer: benwa Committed: Thu Nov 9 15:43:44 2017 +0700 -- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/36ee0401/pom.xml -- diff --git a/pom.xml b/pom.xml index 5e8f82f..4cb639c 100644 --- a/pom.xml +++ b/pom.xml @@ -578,7 +578,7 @@ --> -5.15.0 +5.15.2 0.8.1 2.19.1 10.9.1.0 - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[3/6] james-project git commit: JAMES-2209 Upgrade Logback to 1.1.11
JAMES-2209 Upgrade Logback to 1.1.11 logback-classic is vulnerable to CVE-2017-5929. Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/434126b3 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/434126b3 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/434126b3 Branch: refs/heads/master Commit: 434126b3253416e1c0ab3365950bf3908cfba8b4 Parents: 36ee040 Author: Thibaut SAUTEREAU Authored: Wed Nov 8 16:48:24 2017 +0700 Committer: benwa Committed: Thu Nov 9 15:43:44 2017 +0700 -- mpt/pom.xml | 2 -- pom.xml | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/434126b3/mpt/pom.xml -- diff --git a/mpt/pom.xml b/mpt/pom.xml index 7392481..89cd85f 100644 --- a/mpt/pom.xml +++ b/mpt/pom.xml @@ -65,8 +65,6 @@ 1.2.16 3.6.0 1.7.25 - -1.1.7 http://git-wip-us.apache.org/repos/asf/james-project/blob/434126b3/pom.xml -- diff --git a/pom.xml b/pom.xml index 4cb639c..668a55e 100644 --- a/pom.xml +++ b/pom.xml @@ -672,7 +672,7 @@ 4.0 2.5.2 -1.1.7 +1.1.11 @@ -1396,7 +1396,7 @@ ch.qos.logback logback-core -1.1.7 +${logback.version} com.beetstra.jutf7 - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[6/6] james-project git commit: Merge remote-tracking branch 'rouazana/JAMES-2212'
Merge remote-tracking branch 'rouazana/JAMES-2212' Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9047b4ba Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9047b4ba Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9047b4ba Branch: refs/heads/master Commit: 9047b4babd8ba2d17c3e53d6b5b63f5eb5a631d8 Parents: 7efdc53 fb166b4 Author: Antoine Duprat Authored: Mon Nov 13 10:11:39 2017 +0100 Committer: Antoine Duprat Committed: Mon Nov 13 10:11:39 2017 +0100 -- dockerfiles/compilation/java-8/Dockerfile | 2 +- dockerfiles/packaging/debian/package.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) -- - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[4/6] james-project git commit: JAMES-2212 Old Maven release is not available on mirror, get it from archives
JAMES-2212 Old Maven release is not available on mirror, get it from archives Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/662b9b2c Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/662b9b2c Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/662b9b2c Branch: refs/heads/master Commit: 662b9b2c3510d307a1cd27a93aa2eb6c2f30c2a6 Parents: 1209385 Author: Raphael Ouazana Authored: Thu Nov 9 15:23:09 2017 +0100 Committer: Raphael Ouazana Committed: Fri Nov 10 17:13:18 2017 +0100 -- dockerfiles/compilation/java-8/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/662b9b2c/dockerfiles/compilation/java-8/Dockerfile -- diff --git a/dockerfiles/compilation/java-8/Dockerfile b/dockerfiles/compilation/java-8/Dockerfile index d4ed03c..4ff6660 100644 --- a/dockerfiles/compilation/java-8/Dockerfile +++ b/dockerfiles/compilation/java-8/Dockerfile @@ -8,7 +8,7 @@ ENV GIT_VERSION 1:2.1.4-2.1 # Install Maven WORKDIR /root -RUN wget http://mirrors.ircam.fr/pub/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz +RUN wget https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz RUN tar -xvf apache-maven-3.5.0-bin.tar.gz RUN ln -s /root/apache-maven-3.5.0/bin/mvn /usr/bin/mvn - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[1/6] james-project git commit: JAMES-2209 Upgrade Jetty to 9.4.7.v20170914
Repository: james-project Updated Branches: refs/heads/master 1209385ca -> 9047b4bab JAMES-2209 Upgrade Jetty to 9.4.7.v20170914 Jetty 9.4.4.v20170414 is vulnerable to CVE-2017-9735. Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7efdc530 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7efdc530 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7efdc530 Branch: refs/heads/master Commit: 7efdc530b17d8f64eb0461183b64fdfb1d2b2fee Parents: 434126b Author: Thibaut SAUTEREAU Authored: Wed Nov 8 16:51:52 2017 +0700 Committer: benwa Committed: Thu Nov 9 15:43:44 2017 +0700 -- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/james-project/blob/7efdc530/pom.xml -- diff --git a/pom.xml b/pom.xml index 668a55e..6fbd7de 100644 --- a/pom.xml +++ b/pom.xml @@ -634,7 +634,7 @@ 2.3.0 1.6.4 2.6.3 -9.4.4.v20170414 +9.4.7.v20170914 2.1.9.2 3.1.0 1.4.2 - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org