JAMES-2544 Use registered extensions for Cassandra event sourcing systems
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6e8d222a Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6e8d222a Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6e8d222a Branch: refs/heads/master Commit: 6e8d222aca6366f1b90b4374e693f6752e66c5da Parents: df6fe4f Author: Benoit Tellier <[email protected]> Authored: Thu Sep 13 15:22:51 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Fri Sep 14 10:18:33 2018 +0700 ---------------------------------------------------------------------- .../CassandraEventSourcingSystemTest.java | 7 +- .../cassandra/CassandraEventStoreExtension.java | 60 ++++++++++++++- .../cassandra/CassandraEventStoreTest.java | 7 +- .../CassandraGenericEventStoreExtension.java | 80 -------------------- .../listeners/CassandraEventStoreExtension.java | 31 -------- ...draQuotaMailingListenersIntegrationTest.java | 10 ++- ...draEventSourcingFilteringManagementTest.java | 9 ++- .../filtering/CassandraFilteringExtension.java | 30 -------- 8 files changed, 75 insertions(+), 159 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java ---------------------------------------------------------------------- diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java index e538b93..92c5401 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java @@ -20,9 +20,10 @@ package org.apache.james.eventsourcing.eventstore.cassandra; import org.apache.james.eventsourcing.EventSourcingSystemTest; -import org.junit.jupiter.api.extension.ExtendWith; +import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules; +import org.junit.jupiter.api.extension.RegisterExtension; -@ExtendWith(CassandraEventStoreExtension.class) public class CassandraEventSourcingSystemTest implements EventSourcingSystemTest { - + @RegisterExtension + static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(TestEventDTOModules.TEST_TYPE); } http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java ---------------------------------------------------------------------- diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java index b913ef8..52ce427 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java @@ -19,12 +19,64 @@ package org.apache.james.eventsourcing.eventstore.cassandra; -import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules; +import java.util.Arrays; +import java.util.Set; + +import org.apache.james.backends.cassandra.CassandraClusterExtension; +import org.apache.james.backends.cassandra.utils.CassandraUtils; +import org.apache.james.eventsourcing.eventstore.EventStore; +import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; +import org.junit.jupiter.api.extension.AfterAllCallback; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeAllCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.ParameterContext; +import org.junit.jupiter.api.extension.ParameterResolutionException; +import org.junit.jupiter.api.extension.ParameterResolver; import com.google.common.collect.ImmutableSet; -public class CassandraEventStoreExtension extends CassandraGenericEventStoreExtension { - public CassandraEventStoreExtension() { - super(ImmutableSet.of(TestEventDTOModules.TEST_TYPE)); +public class CassandraEventStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver { + private final Set<EventDTOModule> modules; + private CassandraClusterExtension cassandra; + private EventStoreDao eventStoreDao; + + public CassandraEventStoreExtension(EventDTOModule... modules) { + this.modules = Arrays.stream(modules).collect(ImmutableSet.toImmutableSet()); + this.cassandra = new CassandraClusterExtension(CassandraEventStoreModule.MODULE); + } + + @Override + public void beforeAll(ExtensionContext context) { + cassandra.beforeAll(context); + } + + @Override + public void afterAll(ExtensionContext context) { + cassandra.afterAll(context); + } + + @Override + public void beforeEach(ExtensionContext context) { + JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules); + + eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION, + jsonEventSerializer); + } + + @Override + public void afterEach(ExtensionContext context) { + cassandra.afterEach(context); + } + + @Override + public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { + return (parameterContext.getParameter().getType() == EventStore.class); + } + + @Override + public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { + return new CassandraEventStore(eventStoreDao); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java ---------------------------------------------------------------------- diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java index 6d240c3..f40eac1 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java @@ -20,9 +20,10 @@ package org.apache.james.eventsourcing.eventstore.cassandra; import org.apache.james.eventsourcing.eventstore.EventStoreTest; -import org.junit.jupiter.api.extension.ExtendWith; +import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules; +import org.junit.jupiter.api.extension.RegisterExtension; -@ExtendWith(CassandraEventStoreExtension.class) class CassandraEventStoreTest implements EventStoreTest { - + @RegisterExtension + static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(TestEventDTOModules.TEST_TYPE); } http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java ---------------------------------------------------------------------- diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java deleted file mode 100644 index 56eee29..0000000 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java +++ /dev/null @@ -1,80 +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.eventsourcing.eventstore.cassandra; - -import java.util.Set; - -import org.apache.james.backends.cassandra.CassandraClusterExtension; -import org.apache.james.backends.cassandra.utils.CassandraUtils; -import org.apache.james.eventsourcing.eventstore.EventStore; -import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.ParameterContext; -import org.junit.jupiter.api.extension.ParameterResolutionException; -import org.junit.jupiter.api.extension.ParameterResolver; - -public class CassandraGenericEventStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver { - @SuppressWarnings("rawtypes") - private final Set<EventDTOModule> modules; - private CassandraClusterExtension cassandra; - private EventStoreDao eventStoreDao; - - public CassandraGenericEventStoreExtension(@SuppressWarnings("rawtypes") Set<EventDTOModule> modules) { - this.modules = modules; - cassandra = new CassandraClusterExtension(CassandraEventStoreModule.MODULE); - } - - @Override - public void beforeAll(ExtensionContext context) { - cassandra.beforeAll(context); - } - - @Override - public void afterAll(ExtensionContext context) { - cassandra.afterAll(context); - } - - @Override - public void beforeEach(ExtensionContext context) { - JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules); - - eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION, - jsonEventSerializer); - } - - @Override - public void afterEach(ExtensionContext context) { - cassandra.afterEach(context); - } - - @Override - public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { - return (parameterContext.getParameter().getType() == EventStore.class); - } - - @Override - public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { - return new CassandraEventStore(eventStoreDao); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java deleted file mode 100644 index 0218c78..0000000 --- a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java +++ /dev/null @@ -1,31 +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.quota.cassandra.listeners; - -import org.apache.james.eventsourcing.eventstore.cassandra.CassandraGenericEventStoreExtension; -import org.apache.james.mailbox.quota.cassandra.dto.QuotaEventDTOModules; - -import com.google.common.collect.ImmutableSet; - -public class CassandraEventStoreExtension extends CassandraGenericEventStoreExtension { - public CassandraEventStoreExtension() { - super(ImmutableSet.of(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE)); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java index 7835898..8864507 100644 --- a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java +++ b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java @@ -19,10 +19,12 @@ package org.apache.james.mailbox.quota.cassandra.listeners; +import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension; +import org.apache.james.mailbox.quota.cassandra.dto.QuotaEventDTOModules; import org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdMailingIntegrationTest; -import org.junit.jupiter.api.extension.ExtendWith; - -@ExtendWith(CassandraEventStoreExtension.class) -public class CassandraQuotaMailingListenersIntegrationTest implements QuotaThresholdMailingIntegrationTest { +import org.junit.jupiter.api.extension.RegisterExtension; +class CassandraQuotaMailingListenersIntegrationTest implements QuotaThresholdMailingIntegrationTest { + @RegisterExtension + static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE); } http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java index 61cf8e8..68be998 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java @@ -19,10 +19,11 @@ package org.apache.james.jmap.cassandra.filtering; +import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension; import org.apache.james.jmap.api.filtering.FilteringManagementContract; -import org.junit.jupiter.api.extension.ExtendWith; - -@ExtendWith(CassandraFilteringExtension.class) -public class CassandraEventSourcingFilteringManagementTest implements FilteringManagementContract { +import org.junit.jupiter.api.extension.RegisterExtension; +class CassandraEventSourcingFilteringManagementTest implements FilteringManagementContract { + @RegisterExtension + static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(FilteringRuleSetDefineDTOModules.FILTERING_RULE_SET_DEFINED); } http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java deleted file mode 100644 index 300bd5d..0000000 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java +++ /dev/null @@ -1,30 +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.jmap.cassandra.filtering; - -import org.apache.james.eventsourcing.eventstore.cassandra.CassandraGenericEventStoreExtension; - -import com.google.common.collect.ImmutableSet; - -public class CassandraFilteringExtension extends CassandraGenericEventStoreExtension { - public CassandraFilteringExtension() { - super(ImmutableSet.of(FilteringRuleSetDefineDTOModules.FILTERING_RULE_SET_DEFINED)); - } -} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
