diff --git a/persistence-modules/java-cassandra/pom.xml b/persistence-modules/java-cassandra/pom.xml
index 0dd148e528..6479ae3312 100644
--- a/persistence-modules/java-cassandra/pom.xml
+++ b/persistence-modules/java-cassandra/pom.xml
@@ -13,26 +13,11 @@
-
com.datastax.cassandra
cassandra-driver-core
${cassandra-driver-core.version}
- true
-
-
- com.google.guava
- guava
-
-
-
-
- org.cassandraunit
- cassandra-unit
- ${cassandra-unit.version}
-
-
com.datastax.oss
java-driver-core
@@ -48,32 +33,28 @@
netty-transport
${netty-transport-version}
+
+ org.testcontainers
+ cassandra
+ ${cassandra-testcontainer.version}
+ test
+
-
-
- integration-lite-first
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- 1
- true
-
-
-
-
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
3.1.2
- 3.1.1.0
4.1.0
+ 1.15.3
4.1.71.Final
diff --git a/persistence-modules/java-cassandra/src/main/java/com/baeldung/cassandra/batch/CassandraConnector.java b/persistence-modules/java-cassandra/src/main/java/com/baeldung/cassandra/batch/CassandraConnector.java
index 02d63c62f6..7c9a00f088 100644
--- a/persistence-modules/java-cassandra/src/main/java/com/baeldung/cassandra/batch/CassandraConnector.java
+++ b/persistence-modules/java-cassandra/src/main/java/com/baeldung/cassandra/batch/CassandraConnector.java
@@ -5,8 +5,6 @@ import com.datastax.oss.driver.api.core.CqlSessionBuilder;
import java.net.InetSocketAddress;
-import org.apache.commons.lang3.StringUtils;
-
public class CassandraConnector {
private CqlSession session;
@@ -14,11 +12,11 @@ public class CassandraConnector {
public void connect(final String node, final Integer port, final String dataCenter) {
CqlSessionBuilder builder = CqlSession.builder();
builder.addContactPoint(new InetSocketAddress(node, port));
- if (StringUtils.isNotBlank(dataCenter)) {
+ if (dataCenter != null && !dataCenter.isEmpty()) {
builder.withLocalDatacenter(dataCenter);
}
- session = builder.build();
+ session = builder.build();
}
public CqlSession getSession() {
diff --git a/persistence-modules/java-cassandra/src/main/java/com/baeldung/datastax/cassandra/Application.java b/persistence-modules/java-cassandra/src/main/java/com/baeldung/datastax/cassandra/Application.java
index f067ee8b73..57f5d8cf0e 100644
--- a/persistence-modules/java-cassandra/src/main/java/com/baeldung/datastax/cassandra/Application.java
+++ b/persistence-modules/java-cassandra/src/main/java/com/baeldung/datastax/cassandra/Application.java
@@ -1,5 +1,6 @@
package com.baeldung.datastax.cassandra;
+import com.baeldung.cassandra.batch.repository.ProductRepository;
import com.baeldung.datastax.cassandra.domain.Video;
import com.baeldung.datastax.cassandra.repository.KeyspaceRepository;
import com.baeldung.datastax.cassandra.repository.VideoRepository;
@@ -30,9 +31,11 @@ public class Application {
keyspaceRepository.useKeyspace("testKeyspace");
VideoRepository videoRepository = new VideoRepository(session);
+ ProductRepository productRepository = new ProductRepository(session);
videoRepository.createTable();
+ productRepository.createProductTableByName("testKeyspace");
videoRepository.insertVideo(new Video("Video Title 1", Instant.now()));
videoRepository.insertVideo(new Video("Video Title 2",
Instant.now().minus(1, ChronoUnit.DAYS)));
diff --git a/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/batch/epository/ProductRepositoryIntegrationTest.java b/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/batch/epository/ProductRepositoryLiveTest.java
similarity index 80%
rename from persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/batch/epository/ProductRepositoryIntegrationTest.java
rename to persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/batch/epository/ProductRepositoryLiveTest.java
index 55dc3dad9f..9e6839b2b4 100644
--- a/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/batch/epository/ProductRepositoryIntegrationTest.java
+++ b/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/batch/epository/ProductRepositoryLiveTest.java
@@ -1,24 +1,5 @@
package com.baeldung.cassandra.batch.epository;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.thrift.transport.TTransportException;
-import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-import com.baeldung.cassandra.batch.CassandraConnector;
import com.baeldung.cassandra.batch.domain.Product;
import com.baeldung.cassandra.batch.repository.KeyspaceRepository;
import com.baeldung.cassandra.batch.repository.ProductRepository;
@@ -26,10 +7,25 @@ import com.datastax.oss.driver.api.core.CqlIdentifier;
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.cql.ColumnDefinition;
import com.datastax.oss.driver.api.core.cql.ResultSet;
+import org.junit.Before;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+import org.testcontainers.containers.CassandraContainer;
+
+import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class ProductRepositoryIntegrationTest {
-
+public class ProductRepositoryLiveTest {
+ @Rule
+ public CassandraContainer> cassandra = new CassandraContainer<>("cassandra:3.11.2");
private KeyspaceRepository schemaRepository;
private ProductRepository productRepository;
@@ -39,21 +35,20 @@ public class ProductRepositoryIntegrationTest {
private final String KEYSPACE_NAME = "testBaeldungKeyspace";
private final String PRODUCT = "product";
- @BeforeClass
- public static void init() throws ConfigurationException, TTransportException, IOException, InterruptedException {
- // Start an embedded Cassandra Server
- EmbeddedCassandraServerHelper.startEmbeddedCassandra(20000L);
- }
-
@Before
public void connect() {
- CassandraConnector client = new CassandraConnector();
- client.connect("127.0.0.1", 9142,"datacenter1");
- session = client.getSession();
- schemaRepository = new KeyspaceRepository(client.getSession());
+ cassandra.start();
+
+ this.session = CqlSession
+ .builder()
+ .addContactPoint(new InetSocketAddress(cassandra.getHost(),cassandra.getFirstMappedPort()))
+ .withLocalDatacenter("datacenter1")
+ .build();
+
+ schemaRepository = new KeyspaceRepository(this.session);
schemaRepository.createKeyspace(KEYSPACE_NAME, 1);
schemaRepository.useKeyspace(KEYSPACE_NAME);
- productRepository = new ProductRepository(client.getSession());
+ productRepository = new ProductRepository(this.session);
}
@Test
@@ -114,14 +109,7 @@ public class ProductRepositoryIntegrationTest {
assertEquals(productList.get(0).getPrice(), 12f,0f);
assertEquals(productList.get(1).getPrice(), 12f,0f);
}
-
-
- @AfterClass
- public static void cleanup() {
- EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
- }
-
private Product getTestProduct() {
Product product = new Product();
product.setProductName("Banana");
diff --git a/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/BookRepositoryIntegrationTest.java b/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/BookRepositoryLiveTest.java
similarity index 82%
rename from persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/BookRepositoryIntegrationTest.java
rename to persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/BookRepositoryLiveTest.java
index 62eae94c7c..2fa39113c6 100644
--- a/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/BookRepositoryIntegrationTest.java
+++ b/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/BookRepositoryLiveTest.java
@@ -1,31 +1,24 @@
package com.baeldung.cassandra.java.client.repository;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.thrift.transport.TTransportException;
-import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.baeldung.cassandra.java.client.CassandraConnector;
import com.baeldung.cassandra.java.client.domain.Book;
+import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.exceptions.InvalidQueryException;
import com.datastax.driver.core.utils.UUIDs;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.testcontainers.containers.CassandraContainer;
-public class BookRepositoryIntegrationTest {
+import java.util.List;
+import java.util.stream.Collectors;
- private KeyspaceRepository schemaRepository;
+import static org.junit.Assert.*;
+
+public class BookRepositoryLiveTest {
+ @Rule
+ public CassandraContainer> cassandra = new CassandraContainer<>("cassandra:3.11.2");
private BookRepository bookRepository;
@@ -35,18 +28,18 @@ public class BookRepositoryIntegrationTest {
final String BOOKS = "books";
final String BOOKS_BY_TITLE = "booksByTitle";
- @BeforeClass
- public static void init() throws ConfigurationException, TTransportException, IOException, InterruptedException {
- // Start an embedded Cassandra Server
- EmbeddedCassandraServerHelper.startEmbeddedCassandra(20000L);
- }
-
@Before
public void connect() {
- CassandraConnector client = new CassandraConnector();
- client.connect("127.0.0.1", 9142);
- this.session = client.getSession();
- schemaRepository = new KeyspaceRepository(session);
+ cassandra.start();
+
+ this.session = Cluster
+ .builder()
+ .addContactPoint(cassandra.getHost())
+ .withPort(cassandra.getMappedPort(CassandraContainer.CQL_PORT))
+ .build()
+ .newSession();
+
+ KeyspaceRepository schemaRepository = new KeyspaceRepository(session);
schemaRepository.createKeyspace(KEYSPACE_NAME, "SimpleStrategy", 1);
schemaRepository.useKeyspace(KEYSPACE_NAME);
bookRepository = new BookRepository(session);
@@ -166,9 +159,4 @@ public class BookRepositoryIntegrationTest {
session.execute("SELECT * FROM " + KEYSPACE_NAME + "." + BOOKS + ";");
}
-
- @AfterClass
- public static void cleanup() {
- EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
- }
}
diff --git a/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/KeyspaceRepositoryIntegrationTest.java b/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/KeyspaceRepositoryLiveTest.java
similarity index 61%
rename from persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/KeyspaceRepositoryIntegrationTest.java
rename to persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/KeyspaceRepositoryLiveTest.java
index 9df46b3176..3a8411ddce 100644
--- a/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/KeyspaceRepositoryIntegrationTest.java
+++ b/persistence-modules/java-cassandra/src/test/java/com/baeldung/cassandra/java/client/repository/KeyspaceRepositoryLiveTest.java
@@ -1,45 +1,38 @@
package com.baeldung.cassandra.java.client.repository;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Session;
+import org.junit.Before;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+import org.testcontainers.containers.CassandraContainer;
-import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.thrift.transport.TTransportException;
-import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-import com.baeldung.cassandra.java.client.CassandraConnector;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Session;
+import static org.junit.Assert.*;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class KeyspaceRepositoryIntegrationTest {
-
+public class KeyspaceRepositoryLiveTest {
+ @Rule
+ public CassandraContainer> cassandra = new CassandraContainer<>("cassandra:3.11.2");
private KeyspaceRepository schemaRepository;
-
private Session session;
- @BeforeClass
- public static void init() throws ConfigurationException, TTransportException, IOException, InterruptedException {
- // Start an embedded Cassandra Server
- EmbeddedCassandraServerHelper.startEmbeddedCassandra(20000L);
- }
-
@Before
public void connect() {
- CassandraConnector client = new CassandraConnector();
- client.connect("127.0.0.1", 9142);
- this.session = client.getSession();
+ cassandra.start();
+
+ this.session = Cluster
+ .builder()
+ .addContactPoint(cassandra.getHost())
+ .withPort(cassandra.getMappedPort(CassandraContainer.CQL_PORT))
+ .build()
+ .newSession();
+
schemaRepository = new KeyspaceRepository(session);
}
@@ -62,16 +55,11 @@ public class KeyspaceRepositoryIntegrationTest {
public void whenDeletingAKeyspace_thenDoesNotExist() {
String keyspaceName = "testBaeldungKeyspace";
- // schemaRepository.createKeyspace(keyspaceName, "SimpleStrategy", 1);
+ schemaRepository.createKeyspace(keyspaceName, "SimpleStrategy", 1);
schemaRepository.deleteKeyspace(keyspaceName);
ResultSet result = session.execute("SELECT * FROM system_schema.keyspaces;");
boolean isKeyspaceCreated = result.all().stream().anyMatch(r -> r.getString(0).equals(keyspaceName.toLowerCase()));
assertFalse(isKeyspaceCreated);
}
-
- @AfterClass
- public static void cleanup() {
- EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
- }
}
diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index f370347aea..e2d6ef67f3 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -35,6 +35,7 @@
hibernate-queries
hibernate-enterprise
influxdb
+ java-cassandra
java-cockroachdb
java-jdbi
java-jpa
diff --git a/pom.xml b/pom.xml
index 114a34f3f9..1618ac684f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -366,7 +366,6 @@
web-modules/restx
persistence-modules/deltaspike
persistence-modules/hibernate-ogm
- persistence-modules/java-cassandra
persistence-modules/spring-data-cassandra-reactive
java-nashorn
jeromq
@@ -542,7 +541,6 @@
web-modules/restx
persistence-modules/deltaspike
persistence-modules/hibernate-ogm
- persistence-modules/java-cassandra
persistence-modules/spring-data-cassandra-reactive
java-nashorn
spring-ejb-modules/ejb-beans