MAILBOX-342 Use CassandraModule.Builder for Cassandra event sourcing 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/3c507709 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3c507709 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3c507709 Branch: refs/heads/master Commit: 3c50770952bbc4ea03a2bb360648ec4829cb5935 Parents: 2fa0bbe Author: benwa <[email protected]> Authored: Tue Jul 24 14:55:01 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jul 26 13:47:39 2018 +0700 ---------------------------------------------------------------------- .../cassandra/CassandraEventStoreModule.java | 46 +++++--------------- .../CassandraGenericEventStoreExtension.java | 2 +- .../eventstore/CassandraEventStoreModule.java | 2 +- ...tSourcingDLPConfigurationStoreExtension.java | 2 +- 4 files changed, 15 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java ---------------------------------------------------------------------- diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java index 85dab3c..6613654 100644 --- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java +++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java @@ -19,44 +19,22 @@ package org.apache.james.eventsourcing.eventstore.cassandra; -import java.util.List; - import org.apache.james.backends.cassandra.components.CassandraModule; -import org.apache.james.backends.cassandra.components.CassandraTable; -import org.apache.james.backends.cassandra.components.CassandraType; import org.apache.james.backends.cassandra.utils.CassandraConstants; import com.datastax.driver.core.DataType; import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; - -public class CassandraEventStoreModule implements CassandraModule { - private final List<CassandraTable> tables; - private final List<CassandraType> types; - - public CassandraEventStoreModule() { - tables = ImmutableList.of( - new CassandraTable(CassandraEventStoreTable.EVENTS_TABLE, - SchemaBuilder.createTable(CassandraEventStoreTable.EVENTS_TABLE) - .ifNotExists() - .addPartitionKey(CassandraEventStoreTable.AGGREGATE_ID, DataType.varchar()) - .addClusteringColumn(CassandraEventStoreTable.EVENT_ID, DataType.cint()) - .addColumn(CassandraEventStoreTable.EVENT, DataType.text()) - .withOptions() - .comment("Store events of a EventSourcing aggregate") - .caching(SchemaBuilder.KeyCaching.ALL, - SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); - types = ImmutableList.of(); - } - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - - @Override - public List<CassandraType> moduleTypes() { - return types; - } +public interface CassandraEventStoreModule { + CassandraModule MODULE = CassandraModule.table(CassandraEventStoreTable.EVENTS_TABLE) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(CassandraEventStoreTable.AGGREGATE_ID, DataType.varchar()) + .addClusteringColumn(CassandraEventStoreTable.EVENT_ID, DataType.cint()) + .addColumn(CassandraEventStoreTable.EVENT, DataType.text()) + .withOptions() + .comment("Store events of a EventSourcing aggregate") + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/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 index 1db5f09..94d4e10 100644 --- 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 @@ -53,7 +53,7 @@ public class CassandraGenericEventStoreExtension implements BeforeAllCallback, A dockerCassandraExtension.beforeAll(context); dockerCassandra = dockerCassandraExtension.getDockerCassandra(); cassandra = CassandraCluster.create( - new CassandraEventStoreModule(), dockerCassandra.getHost()); + CassandraEventStoreModule.MODULE, dockerCassandra.getHost()); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java index 6707c12..39ccced 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java @@ -37,7 +37,7 @@ public class CassandraEventStoreModule extends AbstractModule { Multibinder.newSetBinder(binder(), CassandraModule.class) .addBinding() - .to(org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule.class); + .toInstance(org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule.MODULE); Multibinder.newSetBinder(binder(), EventDTOModule.class); } http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java index b10ff03..e5d04fb 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java @@ -50,7 +50,7 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef public void beforeAll(ExtensionContext context) throws Exception { dockerCassandraExtension.beforeAll(context); cassandra = CassandraCluster.create( - new CassandraEventStoreModule(), + CassandraEventStoreModule.MODULE, dockerCassandraExtension.getDockerCassandra().getHost()); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
