You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/08/03 00:58:16 UTC
[1/8] james-project git commit: JAMES-2470 Modest performance
improvment by making unreachable MX static
Repository: james-project
Updated Branches:
refs/heads/master 5935abbb7 -> c3715e708
JAMES-2470 Modest performance improvment by making unreachable MX static
It allows to gain ~12 s
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a139cc26
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a139cc26
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a139cc26
Branch: refs/heads/master
Commit: a139cc2619d8f96b12d91d3f716c5d410c88ffce
Parents: 5935abb
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 2 14:20:32 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 2 14:20:32 2018 +0700
----------------------------------------------------------------------
.../mailets/DirectResolutionRemoteDeliveryIntegrationTest.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a139cc26/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
index f48587f..69c088c 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
@@ -49,6 +49,7 @@ import org.apache.james.utils.SMTPMessageSender;
import org.awaitility.Duration;
import org.junit.After;
import org.junit.Before;
+import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -75,8 +76,8 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
public SMTPMessageSender messageSender = new SMTPMessageSender(DEFAULT_DOMAIN);
@Rule
public FakeSmtp fakeSmtp = new FakeSmtp();
- @Rule
- public FakeSmtp fakeSmtpOnPort26 = FakeSmtp.withSmtpPort(26);
+ @ClassRule
+ public static FakeSmtp fakeSmtpOnPort26 = FakeSmtp.withSmtpPort(26);
private TemporaryJamesServer jamesServer;
private DataProbe dataProbe;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[7/8] james-project git commit: JAMES-2425 Avoid adding URL to Mail
Repository Store when unknown protocol
Posted by bt...@apache.org.
JAMES-2425 Avoid adding URL to Mail Repository Store when unknown protocol
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a1710240
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a1710240
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a1710240
Branch: refs/heads/master
Commit: a17102407973ba01c4b965f9e0bb49c58823b6f8
Parents: 6592d7c
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 1 17:03:12 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:57:22 2018 +0700
----------------------------------------------------------------------
.../org/apache/james/utils/InMemoryMailRepositoryStore.java | 2 +-
.../apache/james/utils/InMemoryMailRepositoryStoreTest.java | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a1710240/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
index b6e1491..6bf875d 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
@@ -117,8 +117,8 @@ public class InMemoryMailRepositoryStore implements MailRepositoryStore, Configu
}
private MailRepository createNewMailRepository(MailRepositoryUrl mailRepositoryUrl) throws MailRepositoryStoreException {
- urlStore.add(mailRepositoryUrl);
MailRepository newMailRepository = retrieveMailRepository(mailRepositoryUrl);
+ urlStore.add(mailRepositoryUrl);
newMailRepository = initializeNewRepository(newMailRepository, createRepositoryCombinedConfig(mailRepositoryUrl));
MailRepository previousRepository = destinationToRepositoryAssociations.putIfAbsent(mailRepositoryUrl, newMailRepository);
return Optional.ofNullable(previousRepository)
http://git-wip-us.apache.org/repos/asf/james-project/blob/a1710240/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
index 44b91a9..04e6950 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
@@ -47,6 +47,7 @@ import com.google.common.collect.Sets;
public class InMemoryMailRepositoryStoreTest {
private static final MailRepositoryUrl FILE_REPO = MailRepositoryUrl.from("file://repo");
+ private static final MailRepositoryUrl UNKNOWN_PROTOCOL_REPO = MailRepositoryUrl.from("toto://repo");
private static final MailRepositoryUrl MEMORY_REPO = MailRepositoryUrl.from("memory://repo");
private static final MailRepositoryPath PATH_REPO = MailRepositoryPath.from("repo");
@@ -265,4 +266,11 @@ public class InMemoryMailRepositoryStoreTest {
assertThat(actualSize).isEqualTo(threadCount);
}
+ @Test
+ public void selectShouldNotAddUrlWhenProtocolDoNotExist() {
+ assertThatThrownBy(() -> repositoryStore.select(UNKNOWN_PROTOCOL_REPO));
+
+ assertThat(urlStore.listDistinct()).isEmpty();
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/8] james-project git commit: JAMES-2468 Add tests for quota
updates upon mailbox deletion
Posted by bt...@apache.org.
JAMES-2468 Add tests for quota updates upon mailbox deletion
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/31662d59
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/31662d59
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/31662d59
Branch: refs/heads/master
Commit: 31662d5969f5758754e4a0bbc846177a95d9c49c
Parents: a4214bd
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 1 15:28:43 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:56:28 2018 +0700
----------------------------------------------------------------------
.../manager/QuotaMessageManagerTest.java | 41 ++++++++++++++++++++
1 file changed, 41 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/31662d59/mailbox/api/src/test/java/org/apache/james/mailbox/manager/QuotaMessageManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/QuotaMessageManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/QuotaMessageManagerTest.java
index f8e6308..cea2c5d 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/QuotaMessageManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/QuotaMessageManagerTest.java
@@ -19,6 +19,8 @@
package org.apache.james.mailbox.manager;
+import java.nio.charset.StandardCharsets;
+
import javax.mail.Flags;
import org.apache.james.core.quota.QuotaCount;
@@ -31,8 +33,12 @@ import org.apache.james.mailbox.exception.OverQuotaException;
import org.apache.james.mailbox.mock.MockMail;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.Quota;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
+import org.apache.james.mime4j.dom.Message;
+import org.assertj.core.api.SoftAssertions;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -142,5 +148,40 @@ public abstract class QuotaMessageManagerTest<T extends MailboxManager> {
resources.appendMessage(messageManager, session, new FlagsBuilder().add(Flags.Flag.SEEN).build());
}
+ @Test
+ public void deletingAMailboxShouldDecreaseCurrentQuota() throws Exception {
+ resources.fillMailbox();
+
+ mailboxManager.deleteMailbox(inbox, session);
+
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(inbox);
+ Quota<QuotaCount> messageQuota = resources.getQuotaManager().getMessageQuota(quotaRoot);
+ Quota<QuotaSize> storageQuota = resources.getQuotaManager().getStorageQuota(quotaRoot);
+ SoftAssertions.assertSoftly(softly -> {
+ softly.assertThat(messageQuota.getUsed()).isEqualTo(QuotaCount.count(0));
+ softly.assertThat(storageQuota.getUsed()).isEqualTo(QuotaSize.size(0));
+ });
+ }
+
+ @Test
+ public void deletingAMailboxShouldPreserveQuotaOfOtherMailboxes() throws Exception {
+ resources.fillMailbox();
+ mailboxManager.getMailbox(subFolder, session)
+ .appendMessage(MessageManager.AppendCommand.from(
+ Message.Builder.of()
+ .setSubject("test")
+ .setBody("testmail", StandardCharsets.UTF_8)
+ .build()), session);
+
+ mailboxManager.deleteMailbox(subFolder, session);
+
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(inbox);
+ Quota<QuotaCount> messageQuota = resources.getQuotaManager().getMessageQuota(quotaRoot);
+ Quota<QuotaSize> storageQuota = resources.getQuotaManager().getStorageQuota(quotaRoot);
+ SoftAssertions.assertSoftly(softly -> {
+ softly.assertThat(messageQuota.getUsed()).isEqualTo(QuotaCount.count(32));
+ softly.assertThat(storageQuota.getUsed()).isEqualTo(QuotaSize.size(7904));
+ });
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[8/8] james-project git commit: JAMES-2425 Make MailRepositoryStore
javadoc more explicit for get* methods
Posted by bt...@apache.org.
JAMES-2425 Make MailRepositoryStore javadoc more explicit for get* methods
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c3715e70
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c3715e70
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c3715e70
Branch: refs/heads/master
Commit: c3715e7083fbe025cf98ec326afcbffe2f93848d
Parents: a171024
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 2 16:13:15 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:57:22 2018 +0700
----------------------------------------------------------------------
.../mailrepository/api/MailRepositoryStore.java | 36 ++++++++++++++------
1 file changed, 25 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c3715e70/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
index babc19c..7d0c520 100644
--- a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
+++ b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
@@ -25,17 +25,18 @@ import java.util.stream.Stream;
public interface MailRepositoryStore {
/**
- * Select the {@link MailRepository} for the given url. Repository will be created if it does not exist already.
- *
- * @param url
- * @return repository
- * @throws MailRepositoryStoreException
+ * Select the {@link MailRepository} for the given url.
+ *
+ * If the repository is not referenced by {@link MailRepositoryStore::getUrls}, it will be created, and its URL referenced
+ * by {@link MailRepositoryStore::getUrls}.
*/
MailRepository select(MailRepositoryUrl url) throws MailRepositoryStoreException;
/**
* Create the {@link MailRepository} for the given url and return it. If the repository already exists,
* then no new repository is created, the old one will be returned.
+ *
+ * The URL of the created repository will be referenced by {@link MailRepositoryStore::getUrls}
*/
default MailRepository create(MailRepositoryUrl url) throws MailRepositoryStoreException {
return select(url);
@@ -43,24 +44,37 @@ public interface MailRepositoryStore {
/**
* Returns the {@link MailRepository} for the given url.
- * This mail repository will not be created if it does not exist.
+ *
+ * This mail repository will not be created if the URL is not referenced by {@link MailRepositoryStore::getUrls}.
+ *
+ * If the repository is referenced by {@link MailRepositoryStore::getUrls}, and the repository do not exist locally, then
+ * this repository will be created locally.
*/
Optional<MailRepository> get(MailRepositoryUrl url) throws MailRepositoryStoreException;
/**
- * Returns all the {@link MailRepository} for the given path.
+ * Returns all the {@link MailRepository} referenced by {@link MailRepositoryStore::getUrls} got a given path.
+ *
+ * The corresponding mail repositories will not be created if they do not exist.
+ *
+ * If the path matches URLs referenced by {@link MailRepositoryStore::getUrls}, and the repositories do not exist locally, then
+ * these repositories will be created locally.
*/
Stream<MailRepository> getByPath(MailRepositoryPath path) throws MailRepositoryStoreException;
/**
- * Return a {@link Stream} which contains all urls of the selected
- * {@link MailRepository}'s
+ * Return a {@link Stream} which contains all urls of the selected {@link MailRepository}'s.
+ *
+ * Note that this may include MailRepositories that do not exist locally.
+ *
+ * This can be the case if:
+ * - The MailRepository had been created by another James server in a clustered environment
+ * - The MailRepository had been dynamically created, and James was restarted
*/
Stream<MailRepositoryUrl> getUrls();
/**
- * Return a {@link Stream} which contains all paths of the selected
- * {@link MailRepository}'s
+ * Return a {@link Stream} which contains all paths of the selected {@link MailRepository}'s
*/
default Stream<MailRepositoryPath> getPaths() {
return getUrls()
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/8] james-project git commit: JAMES-2470 Allow FakeSmtp to be reused
Posted by bt...@apache.org.
JAMES-2470 Allow FakeSmtp to be reused
This allow to use statically FakeSmtp, saving time
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f6af9e07
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f6af9e07
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f6af9e07
Branch: refs/heads/master
Commit: f6af9e078575363c3fa6a70e4d30d945b119b459
Parents: a139cc2
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 2 15:29:51 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:55:59 2018 +0700
----------------------------------------------------------------------
.../apache/james/mpt/smtp/ForwardSmtpTest.java | 33 ++++++++++----------
...ResolutionRemoteDeliveryIntegrationTest.java | 11 ++++---
.../GatewayRemoteDeliveryIntegrationTest.java | 14 ++++++---
.../james/smtp/SmtpAuthorizedAddressesTest.java | 22 +++++++------
.../mailets/GroupMappingRelayTest.java | 14 ++++++---
.../jmap/VacationRelayIntegrationTest.java | 16 ++++++----
.../java/org/apache/james/utils/FakeSmtp.java | 14 ++++++++-
7 files changed, 79 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
index e30d555..d6bffc8 100644
--- a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
+++ b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
@@ -18,7 +18,7 @@
****************************************************************/
package org.apache.james.mpt.smtp;
-import static org.awaitility.Duration.FIVE_HUNDRED_MILLISECONDS;
+import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
import static org.awaitility.Duration.ONE_MINUTE;
import static org.hamcrest.Matchers.equalTo;
@@ -30,7 +30,8 @@ import org.awaitility.Awaitility;
import org.awaitility.Duration;
import org.awaitility.core.ConditionFactory;
import org.junit.Before;
-import org.junit.Rule;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Test;
public abstract class ForwardSmtpTest {
@@ -39,17 +40,27 @@ public abstract class ForwardSmtpTest {
public static final String DOMAIN = "mydomain.tld";
public static final String USER_AT_DOMAIN = USER + "@" + DOMAIN;
public static final String PASSWORD = "secret";
+ public static final Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS;
+ public static final ConditionFactory calmlyAwait = Awaitility.with()
+ .pollInterval(slowPacedPollInterval)
+ .and()
+ .with()
+ .pollDelay(slowPacedPollInterval)
+ .await();
- @Rule
- public FakeSmtp fakeSmtp = new FakeSmtp();
-
- private ConditionFactory calmlyAwait;
+ @ClassRule
+ public static FakeSmtp fakeSmtp = new FakeSmtp();
protected abstract SmtpHostSystem createSmtpHostSystem();
private SmtpHostSystem hostSystem;
private SimpleScriptedTestProtocol scriptedTest;
+ @BeforeClass
+ public static void classSetUp() {
+ fakeSmtp.awaitStarted(calmlyAwait.atMost(ONE_MINUTE));
+ }
+
@Before
public void setUp() throws Exception {
hostSystem = createSmtpHostSystem();
@@ -61,16 +72,6 @@ public abstract class ForwardSmtpTest {
hostSystem.getInMemoryDnsService()
.registerMxRecord("yopmail.com", fakeSmtp.getContainer().getContainerIp());
hostSystem.addAddressMapping(USER, DOMAIN, "ray@yopmail.com");
-
- Duration slowPacedPollInterval = FIVE_HUNDRED_MILLISECONDS;
- calmlyAwait = Awaitility.with()
- .pollInterval(slowPacedPollInterval)
- .and()
- .with()
- .pollDelay(slowPacedPollInterval)
- .await();
-
- fakeSmtp.awaitStarted(calmlyAwait.atMost(ONE_MINUTE));
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
index 69c088c..c9509a4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
@@ -48,7 +48,7 @@ import org.apache.james.utils.IMAPMessageReader;
import org.apache.james.utils.SMTPMessageSender;
import org.awaitility.Duration;
import org.junit.After;
-import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
@@ -74,22 +74,23 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
public IMAPMessageReader imapMessageReader = new IMAPMessageReader();
@Rule
public SMTPMessageSender messageSender = new SMTPMessageSender(DEFAULT_DOMAIN);
- @Rule
- public FakeSmtp fakeSmtp = new FakeSmtp();
+ @ClassRule
+ public static FakeSmtp fakeSmtp = new FakeSmtp();
@ClassRule
public static FakeSmtp fakeSmtpOnPort26 = FakeSmtp.withSmtpPort(26);
private TemporaryJamesServer jamesServer;
private DataProbe dataProbe;
- @Before
- public void setup() {
+ @BeforeClass
+ public static void setup() {
fakeSmtp.awaitStarted(awaitAtMostOneMinute);
fakeSmtpOnPort26.awaitStarted(awaitAtMostOneMinute);
}
@After
public void tearDown() {
+ fakeSmtp.clean();
if (jamesServer != null) {
jamesServer.shutdown();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index 9da3345..71c1ebe 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -46,6 +46,8 @@ import org.apache.james.utils.SMTPMessageSender;
import org.awaitility.Duration;
import org.junit.After;
import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -56,29 +58,33 @@ public class GatewayRemoteDeliveryIntegrationTest {
private static final String FROM = "from@" + DEFAULT_DOMAIN;
private static final String RECIPIENT = "touser@" + JAMES_ANOTHER_DOMAIN;
+ @ClassRule
+ public static FakeSmtp fakeSmtp = new FakeSmtp();
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Rule
public IMAPMessageReader imapMessageReader = new IMAPMessageReader();
@Rule
public SMTPMessageSender messageSender = new SMTPMessageSender(DEFAULT_DOMAIN);
- @Rule
- public FakeSmtp fakeSmtp = new FakeSmtp();
private TemporaryJamesServer jamesServer;
private DataProbe dataProbe;
private InMemoryDNSService inMemoryDNSService;
- @Before
- public void setup() throws Exception {
+ @BeforeClass
+ public static void classSetUp() {
fakeSmtp.awaitStarted(awaitAtMostOneMinute);
+ }
+ @Before
+ public void setup() throws Exception {
inMemoryDNSService = new InMemoryDNSService()
.registerMxRecord(JAMES_ANOTHER_DOMAIN, fakeSmtp.getContainer().getContainerIp());
}
@After
public void tearDown() {
+ fakeSmtp.clean();
if (jamesServer != null) {
jamesServer.shutdown();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
index 1248a04..ed3a9b6 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
@@ -46,7 +46,8 @@ import org.apache.james.utils.SMTPSendingException;
import org.apache.james.utils.SmtpSendingStep;
import org.awaitility.Duration;
import org.junit.After;
-import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -55,8 +56,8 @@ public class SmtpAuthorizedAddressesTest {
private static final String FROM = "fromuser@" + DEFAULT_DOMAIN;
private static final String TO = "to@any.com";
- @Rule
- public FakeSmtp fakeSmtp = new FakeSmtp();
+ @ClassRule
+ public static FakeSmtp fakeSmtp = new FakeSmtp();
@Rule
public IMAPMessageReader imapMessageReader = new IMAPMessageReader();
@Rule
@@ -66,8 +67,8 @@ public class SmtpAuthorizedAddressesTest {
private TemporaryJamesServer jamesServer;
- @Before
- public void setup() {
+ @BeforeClass
+ public static void setup() {
fakeSmtp.awaitStarted(awaitAtMostOneMinute);
}
@@ -93,6 +94,7 @@ public class SmtpAuthorizedAddressesTest {
@After
public void tearDown() {
+ fakeSmtp.clean();
if (jamesServer != null) {
jamesServer.shutdown();
}
@@ -107,10 +109,12 @@ public class SmtpAuthorizedAddressesTest {
messageSender.connect(LOCALHOST_IP, SMTP_PORT)
.sendMessage(FROM, TO);
- awaitAtMostOneMinute.until(() -> fakeSmtp.isReceived(response -> response
- .body("", hasSize(1))
- .body("[0].from", equalTo(FROM))
- .body("[0].subject", equalTo("test"))));
+ awaitAtMostOneMinute
+ .pollDelay(Duration.ONE_HUNDRED_MILLISECONDS)
+ .until(() -> fakeSmtp.isReceived(response -> response
+ .body("", hasSize(1))
+ .body("[0].from", equalTo(FROM))
+ .body("[0].subject", equalTo("test"))));
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
index b9842a1..7a58eff 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
@@ -52,6 +52,8 @@ import org.apache.mailet.base.test.FakeMail;
import org.awaitility.Duration;
import org.junit.After;
import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -73,8 +75,8 @@ public class GroupMappingRelayTest {
private MimeMessage message;
private RequestSpecification webAdminApi;
- @Rule
- public final FakeSmtp fakeSmtp = new FakeSmtp();
+ @ClassRule
+ public static final FakeSmtp fakeSmtp = new FakeSmtp();
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Rule
@@ -82,6 +84,11 @@ public class GroupMappingRelayTest {
@Rule
public SMTPMessageSender messageSender = new SMTPMessageSender(DEFAULT_DOMAIN);
+ @BeforeClass
+ public static void classSetUp() {
+ fakeSmtp.awaitStarted(awaitAtMostOneMinute);
+ }
+
@Before
public void setup() throws Exception {
MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
@@ -115,8 +122,6 @@ public class GroupMappingRelayTest {
.withMailetContainer(mailetContainer)
.build(temporaryFolder);
- fakeSmtp.awaitStarted(awaitAtMostOneMinute);
-
DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
dataProbe.addDomain(DOMAIN1);
@@ -135,6 +140,7 @@ public class GroupMappingRelayTest {
@After
public void tearDown() {
+ fakeSmtp.clean();
jamesServer.shutdown();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
index 050f9e0..0a40262 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
@@ -44,7 +44,8 @@ import org.apache.james.utils.FakeSmtp;
import org.apache.james.utils.JmapGuiceProbe;
import org.junit.After;
import org.junit.Before;
-import org.junit.Rule;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Test;
public abstract class VacationRelayIntegrationTest {
@@ -54,9 +55,8 @@ public abstract class VacationRelayIntegrationTest {
private static final String PASSWORD = "secret";
private static final String REASON = "Message explaining my wonderful vacations";
-
- @Rule
- public FakeSmtp fakeSmtp = new FakeSmtp();
+ @ClassRule
+ public static FakeSmtp fakeSmtp = new FakeSmtp();
private GuiceJamesServer guiceJamesServer;
private JmapGuiceProbe jmapGuiceProbe;
@@ -67,6 +67,11 @@ public abstract class VacationRelayIntegrationTest {
protected abstract InMemoryDNSService getInMemoryDns();
+ @BeforeClass
+ public static void classSetUp() {
+ fakeSmtp.awaitStarted(calmlyAwait.atMost(ONE_MINUTE));
+ }
+
@Before
public void setUp() throws Exception {
getInMemoryDns()
@@ -84,12 +89,11 @@ public abstract class VacationRelayIntegrationTest {
await();
jmapGuiceProbe = guiceJamesServer.getProbe(JmapGuiceProbe.class);
-
- fakeSmtp.awaitStarted(calmlyAwait.atMost(ONE_MINUTE));
}
@After
public void teardown() {
+ fakeSmtp.clean();
guiceJamesServer.stop();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6af9e07/server/testing/src/main/java/org/apache/james/utils/FakeSmtp.java
----------------------------------------------------------------------
diff --git a/server/testing/src/main/java/org/apache/james/utils/FakeSmtp.java b/server/testing/src/main/java/org/apache/james/utils/FakeSmtp.java
index 167a0a7..51685dd 100644
--- a/server/testing/src/main/java/org/apache/james/utils/FakeSmtp.java
+++ b/server/testing/src/main/java/org/apache/james/utils/FakeSmtp.java
@@ -65,7 +65,7 @@ public class FakeSmtp implements TestRule {
this(fakeSmtpContainer().withExposedPorts(SMTP_PORT), SMTP_PORT);
}
- public FakeSmtp(SwarmGenericContainer container, Integer smtpPort) {
+ private FakeSmtp(SwarmGenericContainer container, Integer smtpPort) {
this.smtpPort = smtpPort;
this.container = container;
}
@@ -105,4 +105,16 @@ public class FakeSmtp implements TestRule {
public SwarmGenericContainer getContainer() {
return container;
}
+
+ public void clean() {
+ given(requestSpecification(), RESPONSE_SPECIFICATION)
+ .get("/api/email")
+ .jsonPath()
+ .getList("id", String.class)
+ .stream()
+ .mapToInt(Integer::valueOf)
+ .max()
+ .ifPresent(id -> given(requestSpecification(), RESPONSE_SPECIFICATION)
+ .get("/api/email/purge/" + id));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[5/8] james-project git commit: JAMES-2468 Handle quota update on
mailbox deletion
Posted by bt...@apache.org.
JAMES-2468 Handle quota update on mailbox deletion
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a4214bdf
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a4214bdf
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a4214bdf
Branch: refs/heads/master
Commit: a4214bdfcf359a6e8510c31c93bc0503fecbd163
Parents: 3a1a896
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 2 09:51:59 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:56:28 2018 +0700
----------------------------------------------------------------------
.../apache/james/mailbox/MailboxListener.java | 21 ++++-
.../james/mailbox/MailboxManagerTest.java | 17 ++++
.../resources/META-INF/spring/event-system.xml | 4 -
mailbox/store/pom.xml | 4 +
.../mailbox/store/StoreMailboxManager.java | 27 ++++--
.../james/mailbox/store/event/EventFactory.java | 12 ++-
.../store/event/MailboxEventDispatcher.java | 4 +-
.../store/json/JacksonEventSerializer.java | 94 +++++++++++++++++++-
.../store/json/event/EventConverter.java | 37 ++++++--
.../json/event/EventNotValidException.java | 26 ++++++
.../json/event/dto/EventDataTransferObject.java | 53 ++++++++++-
.../quota/ListeningCurrentQuotaUpdater.java | 9 ++
.../DefaultDelegatingMailboxListenerTest.java | 15 +++-
.../event/MailboxAnnotationListenerTest.java | 9 +-
.../BroadcastDelegatingMailboxListenerTest.java | 10 ++-
...RegisteredDelegatingMailboxListenerTest.java | 10 ++-
.../mailbox/store/json/EventSerializerTest.java | 14 ++-
.../quota/ListeningCurrentQuotaUpdaterTest.java | 13 +++
.../registrations/GlobalRegistrationTest.java | 8 +-
19 files changed, 353 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
index 5329b87..3112378 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
@@ -170,8 +170,27 @@ public interface MailboxListener {
*/
private static final long serialVersionUID = 1L;
- public MailboxDeletion(MailboxSession session, MailboxPath path) {
+ private final QuotaRoot quotaRoot;
+ private final QuotaCount deletedMessageCOunt;
+ private final QuotaSize totalDeletedSize;
+
+ public MailboxDeletion(MailboxSession session, MailboxPath path, QuotaRoot quotaRoot, QuotaCount deletedMessageCOunt, QuotaSize totalDeletedSize) {
super(session, path);
+ this.quotaRoot = quotaRoot;
+ this.deletedMessageCOunt = deletedMessageCOunt;
+ this.totalDeletedSize = totalDeletedSize;
+ }
+
+ public QuotaRoot getQuotaRoot() {
+ return quotaRoot;
+ }
+
+ public QuotaCount getDeletedMessageCount() {
+ return deletedMessageCOunt;
+ }
+
+ public QuotaSize getTotalDeletedSize() {
+ return totalDeletedSize;
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 796d80e..a89a602 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -933,6 +933,23 @@ public abstract class MailboxManagerTest {
}
@Test
+ public void deleteMailboxShouldFireMailboxDeletionEvent() throws Exception {
+ Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Quota));
+ session = mailboxManager.createSystemSession(USER_1);
+
+ EventCollector listener = new EventCollector();
+ mailboxManager.addGlobalListener(listener, session);
+
+ MailboxPath inbox = MailboxPath.inbox(session);
+ mailboxManager.createMailbox(inbox, session);
+ mailboxManager.deleteMailbox(inbox, session);
+
+ assertThat(listener.getEvents())
+ .filteredOn(event -> event instanceof MailboxListener.MailboxDeletion)
+ .isNotEmpty();
+ }
+
+ @Test
public void moveMessagesShouldNotThrowWhenMovingAllMessagesOfAnEmptyMailbox() throws Exception {
session = mailboxManager.createSystemSession(USER_1);
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
----------------------------------------------------------------------
diff --git a/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml b/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
index 2647d0c..b168c72 100644
--- a/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
+++ b/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
@@ -54,10 +54,6 @@
<constructor-arg index="0" ref="mailbox-converter"/>
</bean>
- <bean id="message-pack-event-serializer" class="org.apache.james.mailbox.store.json.MessagePackEventSerializer" lazy-init="true">
- <constructor-arg index="0" ref="event-converter"/>
- </bean>
-
<bean id="event-converter" class="org.apache.james.mailbox.store.json.event.EventConverter" lazy-init="true">
<constructor-arg index="0" ref="mailbox-converter"/>
</bean>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index 1913e89..ae0fabb 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -81,6 +81,10 @@
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.github.steveash.guavate</groupId>
<artifactId>guavate</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/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 31307fa..f5d7a54 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
@@ -30,6 +30,8 @@ import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxAnnotationManager;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxManager;
@@ -60,6 +62,7 @@ import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageId.Factory;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.search.MailboxNameExpression;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -69,7 +72,9 @@ import org.apache.james.mailbox.store.event.MailboxAnnotationListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.MailboxMapper;
+import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -79,6 +84,7 @@ import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
import org.apache.james.mailbox.store.transaction.Mapper;
+import org.apache.james.util.streams.Iterators;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -529,22 +535,29 @@ public class StoreMailboxManager implements MailboxManager {
public void deleteMailbox(final MailboxPath mailboxPath, final MailboxSession session) throws MailboxException {
LOGGER.info("deleteMailbox {}", mailboxPath);
assertIsOwner(session, mailboxPath);
- final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
+ MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(session);
+ MessageMapper messageMapper = mailboxSessionMapperFactory.getMessageMapper(session);
- Mailbox mailbox = mapper.execute((Mapper.Transaction<Mailbox>) () -> {
- final Mailbox mailbox1 = mapper.findMailboxByPath(mailboxPath);
- if (mailbox1 == null) {
+ mailboxMapper.execute((Mapper.Transaction<Mailbox>) () -> {
+ Mailbox mailbox = mailboxMapper.findMailboxByPath(mailboxPath);
+ if (mailbox == null) {
throw new MailboxNotFoundException(mailboxPath);
}
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxPath);
+ long messageCount = messageMapper.countMessagesInMailbox(mailbox);
+ long totalSize = Iterators.toStream(messageMapper.findInMailbox(mailbox, MessageRange.all(), MessageMapper.FetchType.Metadata, -1))
+ .mapToLong(Message::getFullContentOctets)
+ .sum();
+
// We need to create a copy of the mailbox as maybe we can not refer to the real
// mailbox once we remove it
- SimpleMailbox m = new SimpleMailbox(mailbox1);
- mapper.delete(mailbox1);
+ SimpleMailbox m = new SimpleMailbox(mailbox);
+ mailboxMapper.delete(mailbox);
+ dispatcher.mailboxDeleted(session, mailbox, quotaRoot, QuotaCount.count(messageCount), QuotaSize.size(totalSize));
return m;
});
- dispatcher.mailboxDeleted(session, mailbox);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
index aa38509..4ee78b6 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
@@ -23,6 +23,8 @@ import java.util.List;
import java.util.Map;
import java.util.SortedMap;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageUid;
@@ -30,6 +32,7 @@ import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageMoves;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.StoreMailboxPath;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -136,8 +139,8 @@ public class EventFactory {
public final class MailboxDeletionImpl extends MailboxListener.MailboxDeletion implements MailboxAware {
private final Mailbox mailbox;
- public MailboxDeletionImpl(MailboxSession session, Mailbox mailbox) {
- super(session, new StoreMailboxPath(mailbox));
+ public MailboxDeletionImpl(MailboxSession session, Mailbox mailbox, QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
+ super(session, new StoreMailboxPath(mailbox), quotaRoot, deletedMessageCount, totalDeletedSize);
this.mailbox = mailbox;
}
@@ -204,8 +207,9 @@ public class EventFactory {
return new MailboxRenamedEventImpl(session, from, to);
}
- public MailboxListener.MailboxDeletion mailboxDeleted(MailboxSession session, Mailbox mailbox) {
- return new MailboxDeletionImpl(session, mailbox);
+ public MailboxListener.MailboxDeletion mailboxDeleted(MailboxSession session, Mailbox mailbox, QuotaRoot quotaRoot,
+ QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
+ return new MailboxDeletionImpl(session, mailbox, quotaRoot, deletedMessageCount, totalDeletedSize);
}
public MailboxListener.MailboxAdded mailboxAdded(MailboxSession session, Mailbox mailbox) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
index c897ac9..da0f503 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
@@ -145,8 +145,8 @@ public class MailboxEventDispatcher {
* Should get called when a Mailbox was deleted. All registered
* MailboxListener will get triggered then
*/
- public void mailboxDeleted(MailboxSession session, Mailbox mailbox) {
- listener.event(eventFactory.mailboxDeleted(session, mailbox));
+ public void mailboxDeleted(MailboxSession session, Mailbox mailbox, QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
+ listener.event(eventFactory.mailboxDeleted(session, mailbox, quotaRoot, deletedMessageCount, totalDeletedSize));
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
index 82fc394..6710b58 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
@@ -20,18 +20,26 @@
package org.apache.james.mailbox.store.json;
import java.io.IOException;
+import java.util.Optional;
+import org.apache.james.core.Domain;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageId.Factory;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.event.EventSerializer;
import org.apache.james.mailbox.store.json.event.EventConverter;
import org.apache.james.mailbox.store.json.event.dto.EventDataTransferObject;
import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.ObjectCodec;
+import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
@@ -39,6 +47,9 @@ import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.node.TextNode;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.github.fge.lambdas.Throwing;
public class JacksonEventSerializer implements EventSerializer {
@@ -69,7 +80,13 @@ public class JacksonEventSerializer implements EventSerializer {
module.addKeySerializer(MessageUid.class, new MessageUidKeySerializer());
module.addSerializer(MessageId.class, new MessageIdSerializer());
module.addDeserializer(MessageId.class, new MessageIdDeserializer(messageIdFactory));
- objectMapper.registerModule(module);
+ module.addSerializer(QuotaRoot.class, new QuotaRootSerializer());
+ module.addDeserializer(QuotaRoot.class, new QuotaRootDeserializer());
+ module.addSerializer(QuotaCount.class, new QuotaCountSerializer());
+ module.addDeserializer(QuotaCount.class, new QuotaCountDeserializer());
+ module.addSerializer(QuotaSize.class, new QuotaSizeSerializer());
+ module.addDeserializer(QuotaSize.class, new QuotaSizeDeserializer());
+ objectMapper.registerModules(module, new Jdk8Module());
return objectMapper;
}
@@ -132,4 +149,79 @@ public class JacksonEventSerializer implements EventSerializer {
}
+ private static final String QUOTA_ROOT_VALUE_FIELD = "value";
+ private static final String QUOTA_ROOT_DOMAIN_FIELD = "domain";
+
+ public static class QuotaRootSerializer extends JsonSerializer<QuotaRoot> {
+
+ @Override
+ public void serialize(QuotaRoot value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
+ generator.writeStartObject();
+ generator.writeStringField(QUOTA_ROOT_VALUE_FIELD, value.getValue());
+ value.getDomain()
+ .ifPresent(Throwing.consumer(domain -> generator.writeStringField(QUOTA_ROOT_DOMAIN_FIELD, domain.asString())));
+ generator.writeEndObject();
+ }
+
+ }
+
+ public static class QuotaRootDeserializer extends JsonDeserializer<QuotaRoot> {
+
+ @Override
+ public QuotaRoot deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
+ ObjectCodec codec = parser.getCodec();
+ TreeNode node = codec.readTree(parser);
+ return QuotaRoot.quotaRoot(value(node), domain(node));
+ }
+
+ private String value(TreeNode node) throws IOException, JsonParseException {
+ TextNode value = (TextNode) node.get(QUOTA_ROOT_VALUE_FIELD);
+ return value.asText();
+ }
+
+ private Optional<Domain> domain(TreeNode node) throws IOException, JsonParseException {
+ TreeNode value = node.get(QUOTA_ROOT_DOMAIN_FIELD);
+ if (value == null || value.isMissingNode()) {
+ return Optional.empty();
+ }
+ return Optional.ofNullable(node.asToken().asString()).map(Domain::of);
+ }
+
+ }
+
+ public static class QuotaCountSerializer extends JsonSerializer<QuotaCount> {
+
+ @Override
+ public void serialize(QuotaCount value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
+ generator.writeNumber(value.asLong());
+ }
+
+ }
+
+ public static class QuotaCountDeserializer extends JsonDeserializer<QuotaCount> {
+
+ @Override
+ public QuotaCount deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
+ return QuotaCount.count(parser.getLongValue());
+ }
+
+ }
+
+ public static class QuotaSizeSerializer extends JsonSerializer<QuotaSize> {
+
+ @Override
+ public void serialize(QuotaSize value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
+ generator.writeNumber(value.asLong());
+ }
+
+ }
+
+ public static class QuotaSizeDeserializer extends JsonDeserializer<QuotaSize> {
+
+ @Override
+ public QuotaSize deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
+ return QuotaSize.size(parser.getLongValue());
+ }
+
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
index 12c54e8..d92d077 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
@@ -22,15 +22,19 @@ package org.apache.james.mailbox.store.json.event;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.json.event.dto.EventDataTransferObject;
@@ -83,11 +87,15 @@ public class EventConverter {
mailboxDataTransferObject,
event.getMailboxPath());
} else if (event instanceof MailboxListener.MailboxDeletion) {
- return constructMailboxEventProxy(EventType.MAILBOX_DELETED,
+ MailboxListener.MailboxDeletion deletionEvent = (MailboxListener.MailboxDeletion) event;
+ return constructMailboxDeletionProxy(EventType.MAILBOX_DELETED,
event.getSession(),
- mailboxDataTransferObject);
+ mailboxDataTransferObject,
+ deletionEvent.getQuotaRoot(),
+ deletionEvent.getDeletedMessageCount(),
+ deletionEvent.getTotalDeletedSize());
} else if (event instanceof MailboxListener.MailboxAdded) {
- return constructMailboxEventProxy(EventType.MAILBOX_ADDED,
+ return constructMailboxAddedProxy(EventType.MAILBOX_ADDED,
event.getSession(),
mailboxDataTransferObject);
} else {
@@ -115,7 +123,10 @@ public class EventConverter {
case MAILBOX_ADDED:
return eventFactory.mailboxAdded(eventDataTransferObject.getSession().getMailboxSession(), mailbox);
case MAILBOX_DELETED:
- return eventFactory.mailboxDeleted(eventDataTransferObject.getSession().getMailboxSession(), mailbox);
+ return eventFactory.mailboxDeleted(eventDataTransferObject.getSession().getMailboxSession(), mailbox,
+ eventDataTransferObject.getQuotaRoot().orElseThrow(() -> new EventNotValidException("Not a Deletion event, missing quotaRoot")),
+ eventDataTransferObject.getDeletedMessageCount().orElseThrow(() -> new EventNotValidException("Not a Deletion event, missing quotaCount")),
+ eventDataTransferObject.getTotalDeletedSize().orElseThrow(() -> new EventNotValidException("Not a Deletion event, missing quotaSize")));
case MAILBOX_RENAMED:
return eventFactory.mailboxRenamed(eventDataTransferObject.getSession().getMailboxSession(),
eventDataTransferObject.getFrom().getPath(),
@@ -125,7 +136,7 @@ public class EventConverter {
}
}
- private EventDataTransferObject constructMailboxEventProxy(EventType eventType,
+ private EventDataTransferObject constructMailboxAddedProxy(EventType eventType,
MailboxSession mailboxSession,
MailboxDataTransferObject mailboxIntermediate) {
return EventDataTransferObject.builder()
@@ -135,6 +146,22 @@ public class EventConverter {
.build();
}
+ private EventDataTransferObject constructMailboxDeletionProxy(EventType eventType,
+ MailboxSession mailboxSession,
+ MailboxDataTransferObject mailboxIntermediate,
+ QuotaRoot quotaRoot,
+ QuotaCount deletedMessageCount,
+ QuotaSize totalDeletedSize) {
+ return EventDataTransferObject.builder()
+ .type(eventType)
+ .session(new MailboxSessionDataTransferObject(mailboxSession))
+ .mailbox(mailboxIntermediate)
+ .quotaRoot(Optional.of(quotaRoot))
+ .deletedMessageCount(Optional.of(deletedMessageCount))
+ .totalDeletedSize(Optional.of(totalDeletedSize))
+ .build();
+ }
+
private EventDataTransferObject constructMailboxRenamedProxy(MailboxSession mailboxSession,
MailboxDataTransferObject mailboxIntermediate,
MailboxPath from) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java
new file mode 100644
index 0000000..f4536be
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java
@@ -0,0 +1,26 @@
+/****************************************************************
+ * 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.json.event;
+
+public class EventNotValidException extends Exception {
+
+ public EventNotValidException(String message) {
+ super(message);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
index e007f9d..0041a21 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
@@ -21,8 +21,12 @@ package org.apache.james.mailbox.store.json.event.dto;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.model.QuotaRoot;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -38,6 +42,9 @@ public class EventDataTransferObject {
private Map<MessageUid, MessageMetaDataDataTransferObject> metaData;
private List<UpdatedFlagsDataTransferObject> updatedFlags;
private MailboxPathDataTransferObject from;
+ private Optional<QuotaRoot> quotaRoot;
+ private Optional<QuotaCount> deletedMessageCount;
+ private Optional<QuotaSize> totalDeletedSize;
public Builder type(EventType type) {
this.type = type;
@@ -74,8 +81,23 @@ public class EventDataTransferObject {
return this;
}
+ public Builder quotaRoot(Optional<QuotaRoot> quotaRoot) {
+ this.quotaRoot = quotaRoot;
+ return this;
+ }
+
+ public Builder deletedMessageCount(Optional<QuotaCount> deletedMessageCount) {
+ this.deletedMessageCount = deletedMessageCount;
+ return this;
+ }
+
+ public Builder totalDeletedSize(Optional<QuotaSize> totalDeletedSize) {
+ this.totalDeletedSize = totalDeletedSize;
+ return this;
+ }
+
public EventDataTransferObject build() {
- return new EventDataTransferObject(type, mailbox, session, uids, metaData, updatedFlags, from);
+ return new EventDataTransferObject(type, mailbox, session, uids, metaData, updatedFlags, from, quotaRoot, deletedMessageCount, totalDeletedSize);
}
}
@@ -98,6 +120,12 @@ public class EventDataTransferObject {
private List<UpdatedFlagsDataTransferObject> updatedFlags;
@JsonProperty()
private MailboxPathDataTransferObject from;
+ @JsonProperty()
+ private Optional<QuotaRoot> quotaRoot;
+ @JsonProperty()
+ private Optional<QuotaCount> deletedMessageCount;
+ @JsonProperty()
+ private Optional<QuotaSize> totalDeletedSize;
public EventDataTransferObject() {}
@@ -107,7 +135,10 @@ public class EventDataTransferObject {
List<MessageUid> uids,
Map<MessageUid, MessageMetaDataDataTransferObject> metaData,
List<UpdatedFlagsDataTransferObject> updatedFlags,
- MailboxPathDataTransferObject from) {
+ MailboxPathDataTransferObject from,
+ Optional<QuotaRoot> quotaRoot,
+ Optional<QuotaCount> deletedMessageCount,
+ Optional<QuotaSize> totalDeletedSize) {
this.type = type;
this.mailbox = mailbox;
this.session = session;
@@ -115,6 +146,9 @@ public class EventDataTransferObject {
this.metaData = metaData;
this.updatedFlags = updatedFlags;
this.from = from;
+ this.quotaRoot = quotaRoot;
+ this.deletedMessageCount = deletedMessageCount;
+ this.totalDeletedSize = totalDeletedSize;
}
@JsonIgnore
@@ -151,4 +185,19 @@ public class EventDataTransferObject {
public MailboxPathDataTransferObject getFrom() {
return from;
}
+
+ @JsonIgnore
+ public Optional<QuotaRoot> getQuotaRoot() {
+ return quotaRoot;
+ }
+
+ @JsonIgnore
+ public Optional<QuotaCount> getDeletedMessageCount() {
+ return deletedMessageCount;
+ }
+
+ @JsonIgnore
+ public Optional<QuotaSize> getTotalDeletedSize() {
+ return totalDeletedSize;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
index 4ffbf4a..a6c8308 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
@@ -66,6 +66,9 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat
Expunged expungedEvent = (Expunged) event;
QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(expungedEvent.getMailboxPath());
handleExpungedEvent(expungedEvent, quotaRoot);
+ } else if (event instanceof MailboxDeletion) {
+ MailboxDeletion mailboxDeletionEvent = (MailboxDeletion) event;
+ handleMailboxDeletionEvent(mailboxDeletionEvent);
}
} catch (MailboxException e) {
LOGGER.error("Error while updating quotas", e);
@@ -107,4 +110,10 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat
quotaManager.getStorageQuota(quotaRoot));
}
+ private void handleMailboxDeletionEvent(MailboxDeletion mailboxDeletionEvent) throws MailboxException {
+ currentQuotaManager.decrease(mailboxDeletionEvent.getQuotaRoot(),
+ mailboxDeletionEvent.getDeletedMessageCount().asLong(),
+ mailboxDeletionEvent.getTotalDeletedSize().asLong());
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
index 1e5d36d..fe509ec 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
@@ -24,11 +24,16 @@ import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.util.Optional;
+
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.util.EventCollector;
import org.junit.Before;
import org.junit.Test;
@@ -124,7 +129,10 @@ public class DefaultDelegatingMailboxListenerTest {
@Test
public void mailboxDeletionShouldUnregisterMAILBOXListeners() throws Exception {
- MailboxListener.MailboxDeletion event = new MailboxListener.MailboxDeletion(null, MAILBOX_PATH) {};
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount deletedMessageCount = QuotaCount.count(123);
+ QuotaSize totalDeletedSize = QuotaSize.size(456);
+ MailboxListener.MailboxDeletion event = new MailboxListener.MailboxDeletion(null, MAILBOX_PATH, quotaRoot, deletedMessageCount, totalDeletedSize) {};
defaultDelegatingMailboxListener.event(event);
MailboxListener.MailboxEvent secondEvent = new MailboxListener.MailboxEvent(null, MAILBOX_PATH) {};
defaultDelegatingMailboxListener.event(secondEvent);
@@ -135,7 +143,10 @@ public class DefaultDelegatingMailboxListenerTest {
@Test
public void mailboxDeletionShouldNotRegisterMAILBOXListenerToOtherPaths() throws Exception {
- MailboxListener.MailboxDeletion event = new MailboxListener.MailboxDeletion(null, MAILBOX_PATH) {};
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount quotaCount = QuotaCount.count(123);
+ QuotaSize quotaSize = QuotaSize.size(456);
+ MailboxListener.MailboxDeletion event = new MailboxListener.MailboxDeletion(null, MAILBOX_PATH, quotaRoot, quotaCount, quotaSize) {};
defaultDelegatingMailboxListener.event(event);
MailboxListener.MailboxEvent secondEvent = new MailboxListener.MailboxEvent(null, OTHER_MAILBOX_PATH) {};
defaultDelegatingMailboxListener.event(secondEvent);
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
index cbc1ae3..524ad7d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
@@ -26,7 +26,10 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import java.util.List;
+import java.util.Optional;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.mock.MockMailboxSession;
@@ -34,6 +37,7 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
import org.apache.james.mailbox.model.MailboxAnnotationKey;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.mail.AnnotationMapper;
@@ -77,7 +81,10 @@ public class MailboxAnnotationListenerTest {
eventFactory = new EventFactory();
mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY, mailboxId);
- deleteEvent = eventFactory.mailboxDeleted(mailboxSession, mailbox);
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount quotaCount = QuotaCount.count(123);
+ QuotaSize quotaSize = QuotaSize.size(456);
+ deleteEvent = eventFactory.mailboxDeleted(mailboxSession, mailbox, quotaRoot, quotaCount, quotaSize);
when(mailboxSessionMapperFactory.getAnnotationMapper(eq(deleteEvent.getSession()))).thenReturn(annotationMapper);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerTest.java
index 94460c7..a0d6ac8 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerTest.java
@@ -25,10 +25,15 @@ 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.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.event.EventSerializer;
import org.apache.james.mailbox.store.publisher.MessageConsumer;
import org.apache.james.mailbox.store.publisher.Publisher;
@@ -166,7 +171,10 @@ public class BroadcastDelegatingMailboxListenerTest {
@Test
public void deletionDistantEventsShouldBeWellHandled() throws Exception {
- final MailboxListener.MailboxEvent event = new MailboxListener.MailboxDeletion(mailboxSession, MAILBOX_PATH);
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount quotaCount = QuotaCount.count(123);
+ QuotaSize quotaSize = QuotaSize.size(456);
+ MailboxListener.MailboxEvent event = new MailboxListener.MailboxDeletion(mailboxSession, MAILBOX_PATH, quotaRoot, quotaCount, quotaSize);
broadcastDelegatingMailboxListener.addListener(MAILBOX_PATH, mailboxEventCollector, mailboxSession);
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenReturn(event);
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/RegisteredDelegatingMailboxListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/RegisteredDelegatingMailboxListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/RegisteredDelegatingMailboxListenerTest.java
index 259174b..b904e53 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/RegisteredDelegatingMailboxListenerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/RegisteredDelegatingMailboxListenerTest.java
@@ -26,11 +26,16 @@ 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.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.event.EventSerializer;
import org.apache.james.mailbox.store.publisher.MessageConsumer;
import org.apache.james.mailbox.store.publisher.Publisher;
@@ -157,7 +162,10 @@ public class RegisteredDelegatingMailboxListenerTest {
@Test
public void deletionEventsShouldBeWellHandled() throws Exception {
- MailboxListener.MailboxEvent event = new MailboxListener.MailboxDeletion(mailboxSession, MAILBOX_PATH);
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount quotaCount = QuotaCount.count(123);
+ QuotaSize quotaSize = QuotaSize.size(456);
+ MailboxListener.MailboxEvent event = new MailboxListener.MailboxDeletion(mailboxSession, MAILBOX_PATH, quotaRoot, quotaCount, quotaSize);
testee.addListener(MAILBOX_PATH, mailboxEventCollector, mailboxSession);
verify(mockedMailboxPathRegister).register(MAILBOX_PATH);
when(mockedMailboxPathRegister.getTopics(MAILBOX_PATH)).thenReturn(Sets.newHashSet(TOPIC, TOPIC_2));
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
index 629cced..f6d68b8 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
@@ -21,10 +21,13 @@ package org.apache.james.mailbox.store.json;
import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
import java.util.TreeMap;
import javax.mail.Flags;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageUid;
@@ -32,6 +35,7 @@ import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.model.UpdatedFlags;
@@ -133,12 +137,18 @@ public abstract class EventSerializerTest {
@Test
public void mailboxDeletionShouldBeWellConverted() throws Exception {
- MailboxListener.MailboxEvent event = eventFactory.mailboxDeleted(mailboxSession, mailbox);
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount quotaCount = QuotaCount.count(123);
+ QuotaSize quotaSize = QuotaSize.size(456);
+ MailboxListener.MailboxDeletion event = eventFactory.mailboxDeleted(mailboxSession, mailbox, quotaRoot, quotaCount, quotaSize);
byte[] serializedEvent = serializer.serializeEvent(event);
- MailboxListener.MailboxEvent deserializedEvent = serializer.deSerializeEvent(serializedEvent);
+ MailboxListener.MailboxDeletion deserializedEvent = (MailboxListener.MailboxDeletion) serializer.deSerializeEvent(serializedEvent);
assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
assertThat(deserializedEvent).isInstanceOf(MailboxListener.MailboxDeletion.class);
+ assertThat(deserializedEvent.getQuotaRoot()).isEqualTo(quotaRoot);
+ assertThat(deserializedEvent.getDeletedMessageCount()).isEqualTo(quotaCount);
+ assertThat(deserializedEvent.getTotalDeletedSize()).isEqualTo(quotaSize);
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index 158cd97..f2f2385 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -29,6 +29,8 @@ import java.util.Optional;
import javax.mail.Flags;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.model.MailboxPath;
@@ -105,4 +107,15 @@ public class ListeningCurrentQuotaUpdaterTest {
verify(mockedCurrentQuotaManager, never()).increase(QUOTA_ROOT, 0, 0);
}
+ @Test
+ public void mailboxDeletionEventShouldDecreaseCurrentQuotaValues() throws Exception {
+ MailboxListener.MailboxDeletion deletion = mock(MailboxListener.MailboxDeletion.class);
+ when(deletion.getMailboxPath()).thenReturn(MAILBOX_PATH);
+ when(deletion.getQuotaRoot()).thenReturn(QUOTA_ROOT);
+ when(deletion.getDeletedMessageCount()).thenReturn(QuotaCount.count(10));
+ when(deletion.getTotalDeletedSize()).thenReturn(QuotaSize.size(5));
+ when(mockedQuotaRootResolver.getQuotaRoot(MAILBOX_PATH)).thenReturn(QUOTA_ROOT);
+ testee.event(deletion);
+ verify(mockedCurrentQuotaManager).decrease(QUOTA_ROOT, 10, 5);
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a4214bdf/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
index 86fe5b6..2717c05 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
@@ -23,9 +23,12 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
+import org.apache.james.core.quota.QuotaCount;
+import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.junit.Before;
@@ -63,7 +66,10 @@ public class GlobalRegistrationTest {
@Test
public void pathToIndexShouldBeNullifiedByDeletedEvents() {
- MailboxListener.MailboxEvent event = eventFactory.mailboxDeleted(session, MAILBOX);
+ QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
+ QuotaCount quotaCount = QuotaCount.count(123);
+ QuotaSize quotaSize = QuotaSize.size(456);
+ MailboxListener.MailboxEvent event = eventFactory.mailboxDeleted(session, MAILBOX, quotaRoot, quotaCount, quotaSize);
globalRegistration.event(event);
assertThat(globalRegistration.getPathToIndex(INBOX)).isEqualTo(Optional.empty());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[6/8] james-project git commit: JAMES-2425
MailRepositoryStore::getByPath should create mail repository when repository
exist
Posted by bt...@apache.org.
JAMES-2425 MailRepositoryStore::getByPath should create mail repository when repository exist
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6592d7ce
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6592d7ce
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6592d7ce
Branch: refs/heads/master
Commit: 6592d7cebacb4f8b5d4cfae82991700e41f69cac
Parents: 31662d5
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 1 16:56:50 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:57:22 2018 +0700
----------------------------------------------------------------------
.../org/apache/james/utils/InMemoryMailRepositoryStore.java | 8 +++-----
.../apache/james/utils/InMemoryMailRepositoryStoreTest.java | 8 ++++++++
2 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/6592d7ce/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
index b93ea77..b6e1491 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java
@@ -103,11 +103,9 @@ public class InMemoryMailRepositoryStore implements MailRepositoryStore, Configu
@Override
public Stream<MailRepository> getByPath(MailRepositoryPath path) {
- return destinationToRepositoryAssociations
- .keySet()
- .stream()
- .filter((MailRepositoryUrl key) -> key.getPath().equals(path))
- .map(destinationToRepositoryAssociations::get);
+ return urlStore.listDistinct()
+ .filter(url -> url.getPath().equals(path))
+ .map(this::select);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/6592d7ce/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
index cb6cb00..44b91a9 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
@@ -197,6 +197,14 @@ public class InMemoryMailRepositoryStoreTest {
}
@Test
+ public void getByPathShouldReturnRepositoryWhenUrlExists() {
+ urlStore.add(FILE_REPO);
+
+ assertThat(repositoryStore.getByPath(FILE_REPO.getPath()))
+ .isNotEmpty();
+ }
+
+ @Test
public void getShouldReturnPreviouslyCreatedMailRepository() {
MailRepository mailRepository = repositoryStore.select(FILE_REPO);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/8] james-project git commit: JAMES-2468 Remove message pack
EventSerializer implementation
Posted by bt...@apache.org.
JAMES-2468 Remove message pack EventSerializer implementation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3a1a896d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3a1a896d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3a1a896d
Branch: refs/heads/master
Commit: 3a1a896d8c81fa78cfa400d8efe232dd6a65a0b6
Parents: f6af9e0
Author: Antoine Duprat <ad...@linagora.com>
Authored: Mon Jul 16 12:42:44 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 07:56:28 2018 +0700
----------------------------------------------------------------------
...istributedMailboxDelegatingListenerTest.java | 20 ++++-------
mailbox/store/pom.xml | 5 ---
.../james/mailbox/store/MessageBatcher.java | 3 +-
.../store/json/MessagePackEventSerializer.java | 35 ------------------
...elegatingMailboxListenerIntegrationTest.java | 20 ++++-------
.../json/MessagePackEventSerializerTest.java | 37 --------------------
6 files changed, 16 insertions(+), 104 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/3a1a896d/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index ca6dc84..b1563d1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -40,7 +40,7 @@ import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.event.distributed.DistantMailboxPathRegister;
import org.apache.james.mailbox.store.event.distributed.PublisherReceiver;
import org.apache.james.mailbox.store.event.distributed.RegisteredDelegatingMailboxListener;
-import org.apache.james.mailbox.store.json.MessagePackEventSerializer;
+import org.apache.james.mailbox.store.json.JsonEventSerializer;
import org.apache.james.mailbox.store.json.event.EventConverter;
import org.apache.james.mailbox.store.json.event.MailboxConverter;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -98,11 +98,11 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
+ JsonEventSerializer eventSerializer = new JsonEventSerializer(
+ new EventConverter(new MailboxConverter(new TestIdDeserializer())),
+ new TestMessageId.Factory());
registeredDelegatingMailboxListener1 = new RegisteredDelegatingMailboxListener(
- new MessagePackEventSerializer(
- new EventConverter(new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory()
- ),
+ eventSerializer,
publisherReceiver,
publisherReceiver,
mailboxPathRegister1);
@@ -114,10 +114,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener2 = new RegisteredDelegatingMailboxListener(
- new MessagePackEventSerializer(
- new EventConverter(new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory()
- ),
+ eventSerializer,
publisherReceiver,
publisherReceiver,
mailboxPathRegister2);
@@ -129,10 +126,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener3 = new RegisteredDelegatingMailboxListener(
- new MessagePackEventSerializer(
- new EventConverter(new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory()
- ),
+ eventSerializer,
publisherReceiver,
publisherReceiver,
mailboxPathRegister3);
http://git-wip-us.apache.org/repos/asf/james-project/blob/3a1a896d/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index 8033192..1913e89 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -135,11 +135,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.msgpack</groupId>
- <artifactId>jackson-dataformat-msgpack</artifactId>
- <version>0.7.0-p9</version>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3a1a896d/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
index c51154b..a1119e0 100644
--- 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
@@ -24,7 +24,8 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MessageRange;
-import org.msgpack.core.Preconditions;
+
+import com.google.common.base.Preconditions;
public class MessageBatcher {
http://git-wip-us.apache.org/repos/asf/james-project/blob/3a1a896d/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java
deleted file mode 100644
index 6f09e47..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java
+++ /dev/null
@@ -1,35 +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.json;
-
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.store.json.event.EventConverter;
-import org.msgpack.jackson.dataformat.MessagePackFactory;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * MailboxMessage Pack ( http://msgpack.org/ ) Event Serializer
- */
-public class MessagePackEventSerializer extends JacksonEventSerializer {
- public MessagePackEventSerializer(EventConverter eventConverter, MessageId.Factory messageIdFactory) {
- super(eventConverter, configureObjectMapper(new ObjectMapper(new MessagePackFactory()), messageIdFactory));
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3a1a896d/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
index 9eaca45..9403bfc 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
@@ -32,7 +32,7 @@ import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.TestIdDeserializer;
import org.apache.james.mailbox.store.event.EventFactory;
-import org.apache.james.mailbox.store.json.MessagePackEventSerializer;
+import org.apache.james.mailbox.store.json.JsonEventSerializer;
import org.apache.james.mailbox.store.json.event.EventConverter;
import org.apache.james.mailbox.store.json.event.MailboxConverter;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -71,26 +71,20 @@ public class BroadcastDelegatingMailboxListenerIntegrationTest {
@Before
public void setUp() throws Exception {
PublisherReceiver publisherReceiver = new PublisherReceiver();
+ JsonEventSerializer eventSerializer = new JsonEventSerializer(
+ new EventConverter(new MailboxConverter(new TestIdDeserializer())),
+ new TestMessageId.Factory());
broadcastDelegatingMailboxListener1 = new BroadcastDelegatingMailboxListener(publisherReceiver,
publisherReceiver,
- new MessagePackEventSerializer(
- new EventConverter(new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory()
- ),
+ eventSerializer,
TOPIC);
broadcastDelegatingMailboxListener2 = new BroadcastDelegatingMailboxListener(publisherReceiver,
publisherReceiver,
- new MessagePackEventSerializer(
- new EventConverter(new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory()
- ),
+ eventSerializer,
TOPIC);
broadcastDelegatingMailboxListener3 = new BroadcastDelegatingMailboxListener(publisherReceiver,
publisherReceiver,
- new MessagePackEventSerializer(
- new EventConverter(new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory()
- ),
+ eventSerializer,
TOPIC);
eventCollectorMailbox1 = new EventCollector(MailboxListener.ListenerType.MAILBOX);
eventCollectorMailbox2 = new EventCollector(MailboxListener.ListenerType.MAILBOX);
http://git-wip-us.apache.org/repos/asf/james-project/blob/3a1a896d/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/MessagePackEventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/MessagePackEventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/MessagePackEventSerializerTest.java
deleted file mode 100644
index 5273005..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/MessagePackEventSerializerTest.java
+++ /dev/null
@@ -1,37 +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.json;
-
-import org.apache.james.mailbox.model.TestMessageId;
-import org.apache.james.mailbox.store.TestIdDeserializer;
-import org.apache.james.mailbox.store.event.EventSerializer;
-import org.apache.james.mailbox.store.json.event.EventConverter;
-import org.apache.james.mailbox.store.json.event.MailboxConverter;
-
-public class MessagePackEventSerializerTest extends EventSerializerTest {
-
- @Override
- EventSerializer createSerializer() {
- return new MessagePackEventSerializer(
- new EventConverter(
- new MailboxConverter(new TestIdDeserializer())),
- new TestMessageId.Factory());
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org