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]

Reply via email to