diff --git a/build.gradle b/build.gradle index 9e6aa6020e4..7405154491b 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ subprojects { apply plugin: 'idea' apply plugin: 'io.franzbecker.gradle-lombok' apply from: "$rootDir/gradle/shading.gradle" - apply plugin: 'com.diffplug.spotless' + apply from: "$rootDir/gradle/spotless.gradle" apply plugin: 'checkstyle' apply plugin: 'org.gradle.test-retry' @@ -128,28 +128,6 @@ subprojects { testImplementation 'ch.qos.logback:logback-classic:1.3.3' } - spotless { - java { - toggleOffOn() - removeUnusedImports() - trimTrailingWhitespace() - endWithNewline() - - prettier(['prettier': '2.5.1', 'prettier-plugin-java': '1.6.1']) - .config([ - 'parser' : 'java', - 'tabWidth' : 4, - 'printWidth': 120 - ]) - - importOrder('', 'java', 'javax', '\\#') - } - groovyGradle { - target '**/*.groovy' - greclipse('4.19.0') - } - } - checkstyle { toolVersion = "9.3" configFile = rootProject.file('config/checkstyle/checkstyle.xml') diff --git a/examples/build.gradle b/examples/build.gradle index d340e297d33..b1c31a29c7f 100644 --- a/examples/build.gradle +++ b/examples/build.gradle @@ -1,10 +1,21 @@ // empty build.gradle for dependabot +plugins { + id 'com.diffplug.spotless' version '6.8.0' apply false +} + apply from: "$rootDir/../gradle/ci-support.gradle" subprojects { apply plugin:"java" + apply from: "$rootDir/../gradle/spotless.gradle" + apply plugin: 'checkstyle' repositories { mavenCentral() } + + checkstyle { + toolVersion = "9.3" + configFile = rootProject.file('../config/checkstyle/checkstyle.xml') + } } diff --git a/examples/cucumber/build.gradle b/examples/cucumber/build.gradle index 1b9fe04efd8..49dbd831cf5 100644 --- a/examples/cucumber/build.gradle +++ b/examples/cucumber/build.gradle @@ -13,4 +13,5 @@ dependencies { testImplementation 'io.cucumber:cucumber-java:7.8.0' testImplementation 'io.cucumber:cucumber-junit:7.8.0' testImplementation 'org.testcontainers:selenium' + testImplementation 'org.assertj:assertj-core:3.23.1' } diff --git a/examples/cucumber/src/test/java/org/testcontainers/examples/CucumberTest.java b/examples/cucumber/src/test/java/org/testcontainers/examples/CucumberTest.java index f55919c0fe6..717c42351a8 100644 --- a/examples/cucumber/src/test/java/org/testcontainers/examples/CucumberTest.java +++ b/examples/cucumber/src/test/java/org/testcontainers/examples/CucumberTest.java @@ -5,8 +5,5 @@ import org.junit.runner.RunWith; @RunWith(Cucumber.class) -@CucumberOptions(plugin = {"pretty"}) -public class CucumberTest { - - -} +@CucumberOptions(plugin = { "pretty" }) +public class CucumberTest {} diff --git a/examples/cucumber/src/test/java/org/testcontainers/examples/Stepdefs.java b/examples/cucumber/src/test/java/org/testcontainers/examples/Stepdefs.java index e1b9c7e81ef..1378100f959 100644 --- a/examples/cucumber/src/test/java/org/testcontainers/examples/Stepdefs.java +++ b/examples/cucumber/src/test/java/org/testcontainers/examples/Stepdefs.java @@ -10,22 +10,23 @@ import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.RemoteWebDriver; import org.testcontainers.containers.BrowserWebDriverContainer; +import org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode; import org.testcontainers.lifecycle.TestDescription; import java.io.File; import java.util.List; import java.util.Optional; -import static junit.framework.TestCase.assertEquals; -import static org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL; +import static org.assertj.core.api.Assertions.assertThat; public class Stepdefs { private BrowserWebDriverContainer container = new BrowserWebDriverContainer() - .withCapabilities(new ChromeOptions()) - .withRecordingMode(RECORD_ALL, new File("build")); + .withCapabilities(new ChromeOptions()) + .withRecordingMode(VncRecordingMode.RECORD_ALL, new File("build")); private String location; + private String answer; @Before @@ -35,17 +36,20 @@ public void beforeScenario() { @After public void afterScenario(Scenario scenario) { - container.afterTest(new TestDescription() { - @Override - public String getTestId() { - return scenario.getId(); - } + container.afterTest( + new TestDescription() { + @Override + public String getTestId() { + return scenario.getId(); + } - @Override - public String getFilesystemFriendlyName() { - return scenario.getName(); - } - }, Optional.of(scenario).filter(Scenario::isFailed).map(__ -> new RuntimeException())); + @Override + public String getFilesystemFriendlyName() { + return scenario.getName(); + } + }, + Optional.of(scenario).filter(Scenario::isFailed).map(__ -> new RuntimeException()) + ); } @Given("^location is \"([^\"]*)\"$") @@ -63,8 +67,6 @@ public void iAskIsItPossibleToSearchHere() throws Exception { @Then("^I should be told \"([^\"]*)\"$") public void iShouldBeTold(String expected) throws Exception { - assertEquals(expected, answer); + assertThat(answer).isEqualTo(expected); } - - } diff --git a/examples/immudb/src/test/java/ImmuDbTest.java b/examples/immudb/src/test/java/ImmuDbTest.java index fd515ddd4aa..f8c208a1073 100644 --- a/examples/immudb/src/test/java/ImmuDbTest.java +++ b/examples/immudb/src/test/java/ImmuDbTest.java @@ -8,6 +8,7 @@ import org.junit.Test; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; + import static org.assertj.core.api.Assertions.assertThat; /** @@ -17,28 +18,33 @@ public class ImmuDbTest { // Default port for the ImmuDb server private static final int IMMUDB_PORT = 3322; + // Default username for the ImmuDb server private final String IMMUDB_USER = "immudb"; + // Default password for the ImmuDb server private final String IMMUDB_PASSWORD = "immudb"; + // Default database name for the ImmuDb server private final String IMMUDB_DATABASE = "defaultdb"; // Test container for the ImmuDb database, with the latest version of the image and exposed port @ClassRule public static final GenericContainer immuDbContainer = new GenericContainer<>("codenotary/immudb:1.3") - .withExposedPorts(IMMUDB_PORT).waitingFor( - Wait.forLogMessage(".*Web API server enabled.*", 1) - ); + .withExposedPorts(IMMUDB_PORT) + .waitingFor(Wait.forLogMessage(".*Web API server enabled.*", 1)); + // ImmuClient used to interact with the DB private ImmuClient immuClient; @Before public void setUp() { - this.immuClient = ImmuClient.newBuilder() - .withServerUrl(immuDbContainer.getHost()) - .withServerPort(immuDbContainer.getMappedPort(IMMUDB_PORT)) - .build(); + this.immuClient = + ImmuClient + .newBuilder() + .withServerUrl(immuDbContainer.getHost()) + .withServerPort(immuDbContainer.getMappedPort(IMMUDB_PORT)) + .build(); this.immuClient.login(IMMUDB_USER, IMMUDB_PASSWORD); this.immuClient.useDatabase(IMMUDB_DATABASE); } diff --git a/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerCluster.java b/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerCluster.java index 398488fe3f9..9ab3f25e0ff 100644 --- a/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerCluster.java +++ b/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerCluster.java @@ -4,10 +4,9 @@ import org.rnorth.ducttape.unreliables.Unreliables; import org.testcontainers.containers.Container; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.KafkaContainer; import org.testcontainers.containers.Network; import org.testcontainers.lifecycle.Startable; -import org.testcontainers.lifecycle.Startables; -import org.testcontainers.containers.KafkaContainer; import org.testcontainers.utility.DockerImageName; import java.time.Duration; @@ -17,16 +16,17 @@ import java.util.stream.IntStream; import java.util.stream.Stream; -import static java.util.concurrent.TimeUnit.SECONDS; - /** * Provides an easy way to launch a Kafka cluster with multiple brokers. */ public class KafkaContainerCluster implements Startable { private final int brokersNum; + private final Network network; + private final GenericContainer zookeeper; + private final Collection brokers; public KafkaContainerCluster(String confluentPlatformVersion, int brokersNum, int internalTopicsRf) { @@ -34,33 +34,39 @@ public KafkaContainerCluster(String confluentPlatformVersion, int brokersNum, in throw new IllegalArgumentException("brokersNum '" + brokersNum + "' must be greater than 0"); } if (internalTopicsRf < 0 || internalTopicsRf > brokersNum) { - throw new IllegalArgumentException("internalTopicsRf '" + internalTopicsRf + "' must be less than brokersNum and greater than 0"); + throw new IllegalArgumentException( + "internalTopicsRf '" + internalTopicsRf + "' must be less than brokersNum and greater than 0" + ); } this.brokersNum = brokersNum; this.network = Network.newNetwork(); - this.zookeeper = new GenericContainer<>(DockerImageName.parse("confluentinc/cp-zookeeper").withTag(confluentPlatformVersion)) - .withNetwork(network) - .withNetworkAliases("zookeeper") - .withEnv("ZOOKEEPER_CLIENT_PORT", String.valueOf(KafkaContainer.ZOOKEEPER_PORT)); - - this.brokers = IntStream - .range(0, this.brokersNum) - .mapToObj(brokerNum -> { - return new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka").withTag(confluentPlatformVersion)) - .withNetwork(this.network) - .withNetworkAliases("broker-" + brokerNum) - .dependsOn(this.zookeeper) - .withExternalZookeeper("zookeeper:" + KafkaContainer.ZOOKEEPER_PORT) - .withEnv("KAFKA_BROKER_ID", brokerNum + "") - .withEnv("KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR", internalTopicsRf + "") - .withEnv("KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS", internalTopicsRf + "") - .withEnv("KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR", internalTopicsRf + "") - .withEnv("KAFKA_TRANSACTION_STATE_LOG_MIN_ISR", internalTopicsRf + "") - .withStartupTimeout(Duration.ofMinutes(1)); - }) - .collect(Collectors.toList()); + this.zookeeper = + new GenericContainer<>(DockerImageName.parse("confluentinc/cp-zookeeper").withTag(confluentPlatformVersion)) + .withNetwork(network) + .withNetworkAliases("zookeeper") + .withEnv("ZOOKEEPER_CLIENT_PORT", String.valueOf(KafkaContainer.ZOOKEEPER_PORT)); + + this.brokers = + IntStream + .range(0, this.brokersNum) + .mapToObj(brokerNum -> { + return new KafkaContainer( + DockerImageName.parse("confluentinc/cp-kafka").withTag(confluentPlatformVersion) + ) + .withNetwork(this.network) + .withNetworkAliases("broker-" + brokerNum) + .dependsOn(this.zookeeper) + .withExternalZookeeper("zookeeper:" + KafkaContainer.ZOOKEEPER_PORT) + .withEnv("KAFKA_BROKER_ID", brokerNum + "") + .withEnv("KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR", internalTopicsRf + "") + .withEnv("KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS", internalTopicsRf + "") + .withEnv("KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR", internalTopicsRf + "") + .withEnv("KAFKA_TRANSACTION_STATE_LOG_MIN_ISR", internalTopicsRf + "") + .withStartupTimeout(Duration.ofMinutes(1)); + }) + .collect(Collectors.toList()); } public Collection getBrokers() { @@ -68,16 +74,11 @@ public Collection getBrokers() { } public String getBootstrapServers() { - return brokers.stream() - .map(KafkaContainer::getBootstrapServers) - .collect(Collectors.joining(",")); + return brokers.stream().map(KafkaContainer::getBootstrapServers).collect(Collectors.joining(",")); } private Stream> allContainers() { - return Stream.concat( - this.brokers.stream(), - Stream.of(this.zookeeper) - ); + return Stream.concat(this.brokers.stream(), Stream.of(this.zookeeper)); } @Override @@ -86,15 +87,23 @@ public void start() { // sequential start to avoid resource contention on CI systems with weaker hardware brokers.forEach(GenericContainer::start); - Unreliables.retryUntilTrue(30, TimeUnit.SECONDS, () -> { - Container.ExecResult result = this.zookeeper.execInContainer( - "sh", "-c", - "zookeeper-shell zookeeper:" + KafkaContainer.ZOOKEEPER_PORT + " ls /brokers/ids | tail -n 1" - ); - String brokers = result.getStdout(); - - return brokers != null && brokers.split(",").length == this.brokersNum; - }); + Unreliables.retryUntilTrue( + 30, + TimeUnit.SECONDS, + () -> { + Container.ExecResult result = + this.zookeeper.execInContainer( + "sh", + "-c", + "zookeeper-shell zookeeper:" + + KafkaContainer.ZOOKEEPER_PORT + + " ls /brokers/ids | tail -n 1" + ); + String brokers = result.getStdout(); + + return brokers != null && brokers.split(",").length == this.brokersNum; + } + ); } @Override diff --git a/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerClusterTest.java b/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerClusterTest.java index a431c14bba3..63253f4b309 100644 --- a/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerClusterTest.java +++ b/examples/kafka-cluster/src/test/java/com/example/kafkacluster/KafkaContainerClusterTest.java @@ -29,9 +29,7 @@ public class KafkaContainerClusterTest { @Test public void testKafkaContainerCluster() throws Exception { - try ( - KafkaContainerCluster cluster = new KafkaContainerCluster("6.2.1", 3, 2) - ) { + try (KafkaContainerCluster cluster = new KafkaContainerCluster("6.2.1", 3, 2)) { cluster.start(); String bootstrapServers = cluster.getBootstrapServers(); @@ -43,24 +41,27 @@ public void testKafkaContainerCluster() throws Exception { protected void testKafkaFunctionality(String bootstrapServers, int partitions, int rf) throws Exception { try ( - AdminClient adminClient = AdminClient.create(ImmutableMap.of( - AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers - )); - + AdminClient adminClient = AdminClient.create( + ImmutableMap.of(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers) + ); KafkaProducer producer = new KafkaProducer<>( ImmutableMap.of( - ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers, - ProducerConfig.CLIENT_ID_CONFIG, UUID.randomUUID().toString() + ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, + bootstrapServers, + ProducerConfig.CLIENT_ID_CONFIG, + UUID.randomUUID().toString() ), new StringSerializer(), new StringSerializer() ); - KafkaConsumer consumer = new KafkaConsumer<>( ImmutableMap.of( - ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers, - ConsumerConfig.GROUP_ID_CONFIG, "tc-" + UUID.randomUUID(), - ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest" + ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, + bootstrapServers, + ConsumerConfig.GROUP_ID_CONFIG, + "tc-" + UUID.randomUUID(), + ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, + "earliest" ), new StringDeserializer(), new StringDeserializer() @@ -75,23 +76,26 @@ protected void testKafkaFunctionality(String bootstrapServers, int partitions, i producer.send(new ProducerRecord<>(topicName, "testcontainers", "rulezzz")).get(); - Unreliables.retryUntilTrue(10, TimeUnit.SECONDS, () -> { - ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); + Unreliables.retryUntilTrue( + 10, + TimeUnit.SECONDS, + () -> { + ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); - if (records.isEmpty()) { - return false; - } + if (records.isEmpty()) { + return false; + } - assertThat(records) - .hasSize(1) - .extracting(ConsumerRecord::topic, ConsumerRecord::key, ConsumerRecord::value) - .containsExactly(tuple(topicName, "testcontainers", "rulezzz")); + assertThat(records) + .hasSize(1) + .extracting(ConsumerRecord::topic, ConsumerRecord::key, ConsumerRecord::value) + .containsExactly(tuple(topicName, "testcontainers", "rulezzz")); - return true; - }); + return true; + } + ); consumer.unsubscribe(); } } - } diff --git a/examples/linked-container/src/main/java/com/example/linkedcontainer/RedmineClient.java b/examples/linked-container/src/main/java/com/example/linkedcontainer/RedmineClient.java index be62d932971..c95ec133e2f 100644 --- a/examples/linked-container/src/main/java/com/example/linkedcontainer/RedmineClient.java +++ b/examples/linked-container/src/main/java/com/example/linkedcontainer/RedmineClient.java @@ -13,6 +13,7 @@ public class RedmineClient { private String url; + private OkHttpClient client; public RedmineClient(String url) { @@ -21,9 +22,7 @@ public RedmineClient(String url) { } public int getIssueCount() throws IOException { - Request request = new Request.Builder() - .url(url + "/issues.json") - .build(); + Request request = new Request.Builder().url(url + "/issues.json").build(); Response response = client.newCall(request).execute(); JSONObject jsonObject = new JSONObject(response.body().string()); diff --git a/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineClientTest.java b/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineClientTest.java index 6e4186698e7..721c00835c9 100644 --- a/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineClientTest.java +++ b/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineClientTest.java @@ -13,25 +13,26 @@ public class RedmineClientTest { private static final String POSTGRES_USERNAME = "redmine"; + private static final String POSTGRES_PASSWORD = "secret"; - private PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer<>(LinkedContainerTestImages.POSTGRES_TEST_IMAGE) - .withUsername(POSTGRES_USERNAME) - .withPassword(POSTGRES_PASSWORD); + private PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer<>( + LinkedContainerTestImages.POSTGRES_TEST_IMAGE + ) + .withUsername(POSTGRES_USERNAME) + .withPassword(POSTGRES_PASSWORD); private RedmineContainer redmineContainer = new RedmineContainer(LinkedContainerTestImages.REDMINE_TEST_IMAGE) - .withLinkToContainer(postgreSQLContainer, "postgres") - .withEnv("POSTGRES_ENV_POSTGRES_USER", POSTGRES_USERNAME) - .withEnv("POSTGRES_ENV_POSTGRES_PASSWORD", POSTGRES_PASSWORD); + .withLinkToContainer(postgreSQLContainer, "postgres") + .withEnv("POSTGRES_ENV_POSTGRES_USER", POSTGRES_USERNAME) + .withEnv("POSTGRES_ENV_POSTGRES_PASSWORD", POSTGRES_PASSWORD); @Rule - public RuleChain chain = RuleChain.outerRule(postgreSQLContainer) - .around(redmineContainer); + public RuleChain chain = RuleChain.outerRule(postgreSQLContainer).around(redmineContainer); @Test public void canGetIssueCount() throws Exception { - RedmineClient redmineClient = new RedmineClient( - redmineContainer.getRedmineUrl()); + RedmineClient redmineClient = new RedmineClient(redmineContainer.getRedmineUrl()); assertThat(redmineClient.getIssueCount()).as("The issue count can be retrieved.").isZero(); } diff --git a/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineContainer.java b/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineContainer.java index 4303bbee682..0f0bea36c1a 100644 --- a/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineContainer.java +++ b/examples/linked-container/src/test/java/com/example/linkedcontainer/RedmineContainer.java @@ -28,8 +28,6 @@ public RedmineContainer withLinkToContainer(LinkableContainer otherContainer, St } public String getRedmineUrl() { - return String.format("http://%s:%d", - this.getHost(), - this.getMappedPort(REDMINE_PORT)); + return String.format("http://%s:%d", this.getHost(), this.getMappedPort(REDMINE_PORT)); } } diff --git a/examples/neo4j-container/src/test/java/org/testcontainers/containers/Neo4jExampleTest.java b/examples/neo4j-container/src/test/java/org/testcontainers/containers/Neo4jExampleTest.java index bc7aeed10bd..9ce3a3f078c 100644 --- a/examples/neo4j-container/src/test/java/org/testcontainers/containers/Neo4jExampleTest.java +++ b/examples/neo4j-container/src/test/java/org/testcontainers/containers/Neo4jExampleTest.java @@ -1,5 +1,14 @@ package org.testcontainers.containers; +import org.junit.jupiter.api.Test; +import org.neo4j.driver.AuthTokens; +import org.neo4j.driver.Driver; +import org.neo4j.driver.GraphDatabase; +import org.neo4j.driver.Session; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -10,15 +19,6 @@ import java.util.Collections; import java.util.stream.Collectors; -import org.junit.jupiter.api.Test; -import org.neo4j.driver.AuthTokens; -import org.neo4j.driver.Driver; -import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Session; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; @@ -27,19 +27,14 @@ class Neo4jExampleTest { @Container - private static Neo4jContainer neo4jContainer = - new Neo4jContainer<>(DockerImageName.parse("neo4j:4.4")) + private static Neo4jContainer neo4jContainer = new Neo4jContainer<>(DockerImageName.parse("neo4j:4.4")) .withAdminPassword(null); // Disable password @Test void testSomethingUsingBolt() { - // Retrieve the Bolt URL from the container String boltUrl = neo4jContainer.getBoltUrl(); - try ( - Driver driver = GraphDatabase.driver(boltUrl, AuthTokens.none()); - Session session = driver.session() - ) { + try (Driver driver = GraphDatabase.driver(boltUrl, AuthTokens.none()); Session session = driver.session()) { long one = session.run("RETURN 1", Collections.emptyMap()).next().get(0).asLong(); assertThat(one).isEqualTo(1L); } catch (Exception e) { @@ -49,7 +44,6 @@ void testSomethingUsingBolt() { @Test void testSomethingUsingHttp() throws IOException { - // Retrieve the HTTP URL from the container String httpUrl = neo4jContainer.getHttpUrl(); diff --git a/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/Cache.java b/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/Cache.java index 996c31ecac7..f0c7710b355 100644 --- a/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/Cache.java +++ b/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/Cache.java @@ -6,7 +6,6 @@ * Cache, for storing data associated with keys. */ public interface Cache { - /** * Store a value object in the cache with no specific expiry time. The object may be evicted by the cache any time, * if necessary. @@ -24,4 +23,4 @@ public interface Cache { * @return the object if it was in the cache, or an empty Optional if not found. */ Optional get(String key, Class expectedClass); -} \ No newline at end of file +} diff --git a/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/RedisBackedCache.java b/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/RedisBackedCache.java index 2c80818c150..8349de77869 100644 --- a/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/RedisBackedCache.java +++ b/examples/redis-backed-cache-testng/src/main/java/com/mycompany/cache/RedisBackedCache.java @@ -11,7 +11,9 @@ public class RedisBackedCache implements Cache { private final Jedis jedis; + private final String cacheName; + private final Gson gson; public RedisBackedCache(Jedis jedis, String cacheName) { diff --git a/examples/redis-backed-cache-testng/src/test/java/RedisBackedCacheTest.java b/examples/redis-backed-cache-testng/src/test/java/RedisBackedCacheTest.java index e02b271f290..45c482c098e 100644 --- a/examples/redis-backed-cache-testng/src/test/java/RedisBackedCacheTest.java +++ b/examples/redis-backed-cache-testng/src/test/java/RedisBackedCacheTest.java @@ -17,13 +17,14 @@ */ public class RedisBackedCacheTest { - private static GenericContainer redis = new GenericContainer<>(DockerImageName.parse("redis:3.0.6")).withExposedPorts(6379); + private static GenericContainer redis = new GenericContainer<>(DockerImageName.parse("redis:3.0.6")) + .withExposedPorts(6379); private Cache cache; @BeforeClass public static void startContainer() { - redis.start(); + redis.start(); } @AfterClass @@ -44,13 +45,17 @@ public void testFindingAnInsertedValue() { Optional foundObject = cache.get("foo", String.class); assertThat(foundObject).as("When an object in the cache is retrieved, it can be found").isPresent(); - assertThat(foundObject).as("When we put a String in to the cache and retrieve it, the value is the same").contains("FOO"); + assertThat(foundObject) + .as("When we put a String in to the cache and retrieve it, the value is the same") + .contains("FOO"); } @Test public void testNotFindingAValueThatWasNotInserted() { Optional foundObject = cache.get("bar", String.class); - assertThat(foundObject).as("When an object that's not in the cache is retrieved, nothing is found").isNotPresent(); + assertThat(foundObject) + .as("When an object that's not in the cache is retrieved, nothing is found") + .isNotPresent(); } } diff --git a/examples/redis-backed-cache/src/main/java/com/mycompany/cache/Cache.java b/examples/redis-backed-cache/src/main/java/com/mycompany/cache/Cache.java index 996c31ecac7..f0c7710b355 100644 --- a/examples/redis-backed-cache/src/main/java/com/mycompany/cache/Cache.java +++ b/examples/redis-backed-cache/src/main/java/com/mycompany/cache/Cache.java @@ -6,7 +6,6 @@ * Cache, for storing data associated with keys. */ public interface Cache { - /** * Store a value object in the cache with no specific expiry time. The object may be evicted by the cache any time, * if necessary. @@ -24,4 +23,4 @@ public interface Cache { * @return the object if it was in the cache, or an empty Optional if not found. */ Optional get(String key, Class expectedClass); -} \ No newline at end of file +} diff --git a/examples/redis-backed-cache/src/main/java/com/mycompany/cache/RedisBackedCache.java b/examples/redis-backed-cache/src/main/java/com/mycompany/cache/RedisBackedCache.java index 2c80818c150..8349de77869 100644 --- a/examples/redis-backed-cache/src/main/java/com/mycompany/cache/RedisBackedCache.java +++ b/examples/redis-backed-cache/src/main/java/com/mycompany/cache/RedisBackedCache.java @@ -11,7 +11,9 @@ public class RedisBackedCache implements Cache { private final Jedis jedis; + private final String cacheName; + private final Gson gson; public RedisBackedCache(Jedis jedis, String cacheName) { diff --git a/examples/redis-backed-cache/src/test/java/RedisBackedCacheTest.java b/examples/redis-backed-cache/src/test/java/RedisBackedCacheTest.java index 24a21723b15..e820646a0da 100644 --- a/examples/redis-backed-cache/src/test/java/RedisBackedCacheTest.java +++ b/examples/redis-backed-cache/src/test/java/RedisBackedCacheTest.java @@ -18,7 +18,8 @@ public class RedisBackedCacheTest { @Rule public GenericContainer redis = new GenericContainer<>(DockerImageName.parse("redis:3.0.6")) - .withExposedPorts(6379); + .withExposedPorts(6379); + private Cache cache; @Before @@ -34,13 +35,17 @@ public void testFindingAnInsertedValue() { Optional foundObject = cache.get("foo", String.class); assertThat(foundObject.isPresent()).as("When an object in the cache is retrieved, it can be found").isTrue(); - assertThat(foundObject.get()).as("When we put a String in to the cache and retrieve it, the value is the same").isEqualTo("FOO"); + assertThat(foundObject.get()) + .as("When we put a String in to the cache and retrieve it, the value is the same") + .isEqualTo("FOO"); } @Test public void testNotFindingAValueThatWasNotInserted() { Optional foundObject = cache.get("bar", String.class); - assertThat(foundObject.isPresent()).as("When an object that's not in the cache is retrieved, nothing is found").isFalse(); + assertThat(foundObject.isPresent()) + .as("When an object that's not in the cache is retrieved, nothing is found") + .isFalse(); } } diff --git a/examples/selenium-container/src/main/java/com/example/DemoApplication.java b/examples/selenium-container/src/main/java/com/example/DemoApplication.java index 909a1ec36e1..6c42baef27d 100644 --- a/examples/selenium-container/src/main/java/com/example/DemoApplication.java +++ b/examples/selenium-container/src/main/java/com/example/DemoApplication.java @@ -9,5 +9,4 @@ public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } - } diff --git a/examples/selenium-container/src/test/java/SeleniumContainerTest.java b/examples/selenium-container/src/test/java/SeleniumContainerTest.java index c28c9bc54cb..52871c4f37e 100644 --- a/examples/selenium-container/src/test/java/SeleniumContainerTest.java +++ b/examples/selenium-container/src/test/java/SeleniumContainerTest.java @@ -7,8 +7,8 @@ import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.RemoteWebDriver; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ApplicationListener; import org.springframework.context.ConfigurableApplicationContext; @@ -16,12 +16,12 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.testcontainers.Testcontainers; import org.testcontainers.containers.BrowserWebDriverContainer; +import org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode; import java.io.File; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL; /** * Simple example of plain Selenium usage. @@ -36,8 +36,8 @@ public class SeleniumContainerTest { @Rule public BrowserWebDriverContainer chrome = new BrowserWebDriverContainer() - .withCapabilities(new ChromeOptions()) - .withRecordingMode(RECORD_ALL, new File("build")); + .withCapabilities(new ChromeOptions()) + .withRecordingMode(VncRecordingMode.RECORD_ALL, new File("build")); @Test public void simplePlainSeleniumTest() { @@ -50,12 +50,14 @@ public void simplePlainSeleniumTest() { } public static class Initializer implements ApplicationContextInitializer { + @Override public void initialize(ConfigurableApplicationContext applicationContext) { - applicationContext.addApplicationListener((ApplicationListener) event -> { - Testcontainers.exposeHostPorts(event.getWebServer().getPort()); - }); + applicationContext.addApplicationListener( + (ApplicationListener) event -> { + Testcontainers.exposeHostPorts(event.getWebServer().getPort()); + } + ); } } - } diff --git a/examples/singleton-container/src/main/java/com/example/cache/Cache.java b/examples/singleton-container/src/main/java/com/example/cache/Cache.java index 986838d20f9..8a0c5776d80 100644 --- a/examples/singleton-container/src/main/java/com/example/cache/Cache.java +++ b/examples/singleton-container/src/main/java/com/example/cache/Cache.java @@ -3,8 +3,7 @@ import java.util.Optional; public interface Cache { - void put(String key, Object value); Optional get(String key, Class expectedClass); -} \ No newline at end of file +} diff --git a/examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java b/examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java index 34553dde1f4..430afb2b1f5 100644 --- a/examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java +++ b/examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java @@ -8,7 +8,9 @@ public class RedisBackedCache implements Cache { private final Jedis jedis; + private final String cacheName; + private final Gson gson; public RedisBackedCache(Jedis jedis, String cacheName) { diff --git a/examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java b/examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java index d152540fb1c..729e9fb124d 100644 --- a/examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java +++ b/examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java @@ -6,7 +6,7 @@ public abstract class AbstractIntegrationTest { public static final GenericContainer redis = new GenericContainer<>(DockerImageName.parse("redis:3.0.6")) - .withExposedPorts(6379); + .withExposedPorts(6379); static { redis.start(); diff --git a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java index fff6e1a4a3a..6b9050be277 100644 --- a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java @@ -27,7 +27,8 @@ public void testInsertValue() { Optional foundObject = cache.get("bar", String.class); assertThat(foundObject).as("When inserting an object into the cache, it can be retrieved").isPresent(); - assertThat(foundObject).as("When accessing the value of a retrieved object, the value must be the same").contains("BAR"); + assertThat(foundObject) + .as("When accessing the value of a retrieved object, the value must be the same") + .contains("BAR"); } - } diff --git a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java index 11ad98a0580..ea071202dcd 100644 --- a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java @@ -27,6 +27,8 @@ public void testInsertValue() { Optional foundObject = cache.get("foo", String.class); assertThat(foundObject).as("When inserting an object into the cache, it can be retrieved").isPresent(); - assertThat(foundObject).as("When accessing the value of a retrieved object, the value must be the same").contains("FOO"); + assertThat(foundObject) + .as("When accessing the value of a retrieved object, the value must be the same") + .contains("FOO"); } } diff --git a/examples/solr-container/src/main/java/com/example/SearchEngine.java b/examples/solr-container/src/main/java/com/example/SearchEngine.java index c05bc23aad2..397327fe369 100644 --- a/examples/solr-container/src/main/java/com/example/SearchEngine.java +++ b/examples/solr-container/src/main/java/com/example/SearchEngine.java @@ -1,6 +1,5 @@ package com.example; public interface SearchEngine { - public SearchResult search(String term); } diff --git a/examples/solr-container/src/main/java/com/example/SearchResult.java b/examples/solr-container/src/main/java/com/example/SearchResult.java index 06544f0ba34..89722d1a5a4 100644 --- a/examples/solr-container/src/main/java/com/example/SearchResult.java +++ b/examples/solr-container/src/main/java/com/example/SearchResult.java @@ -1,13 +1,13 @@ package com.example; -import java.util.List; -import java.util.Map; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; +import java.util.Map; + @Data @Builder @NoArgsConstructor diff --git a/examples/solr-container/src/main/java/com/example/SolrSearchEngine.java b/examples/solr-container/src/main/java/com/example/SolrSearchEngine.java index 8a7f38e455d..3be96f76690 100644 --- a/examples/solr-container/src/main/java/com/example/SolrSearchEngine.java +++ b/examples/solr-container/src/main/java/com/example/SolrSearchEngine.java @@ -1,16 +1,15 @@ package com.example; -import java.util.stream.Collectors; - import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; - import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.util.ClientUtils; import org.apache.solr.common.SolrDocument; +import java.util.stream.Collectors; + @RequiredArgsConstructor public class SolrSearchEngine implements SearchEngine { @@ -20,7 +19,6 @@ public class SolrSearchEngine implements SearchEngine { @SneakyThrows public SearchResult search(String term) { - SolrQuery query = new SolrQuery(); query.setQuery("title:" + ClientUtils.escapeQueryChars(term)); QueryResponse response = client.query(COLLECTION_NAME, query); @@ -28,12 +26,10 @@ public SearchResult search(String term) { } private SearchResult createResult(QueryResponse response) { - return SearchResult.builder() + return SearchResult + .builder() .totalHits(response.getResults().getNumFound()) - .results(response.getResults() - .stream() - .map(SolrDocument::getFieldValueMap) - .collect(Collectors.toList())) + .results(response.getResults().stream().map(SolrDocument::getFieldValueMap).collect(Collectors.toList())) .build(); } } diff --git a/examples/solr-container/src/test/java/com/example/SolrQueryTest.java b/examples/solr-container/src/test/java/com/example/SolrQueryTest.java index 6443a19b869..e65504c0276 100644 --- a/examples/solr-container/src/test/java/com/example/SolrQueryTest.java +++ b/examples/solr-container/src/test/java/com/example/SolrQueryTest.java @@ -15,7 +15,6 @@ import java.util.HashMap; import java.util.Map; -import static com.example.SolrSearchEngine.COLLECTION_NAME; import static org.assertj.core.api.Assertions.assertThat; public class SolrQueryTest { @@ -23,31 +22,44 @@ public class SolrQueryTest { private static final DockerImageName SOLR_IMAGE = DockerImageName.parse("solr:8.3.0"); public static final SolrContainer solrContainer = new SolrContainer(SOLR_IMAGE) - .withCollection(COLLECTION_NAME); + .withCollection(SolrSearchEngine.COLLECTION_NAME); private static SolrClient solrClient; @BeforeClass public static void setUp() throws IOException, SolrServerException { solrContainer.start(); - solrClient = new Http2SolrClient.Builder("http://" + solrContainer.getHost() + ":" + solrContainer.getSolrPort() + "/solr").build(); + solrClient = + new Http2SolrClient.Builder( + "http://" + solrContainer.getHost() + ":" + solrContainer.getSolrPort() + "/solr" + ) + .build(); // Add Sample Data - solrClient.add(COLLECTION_NAME, Collections.singletonList( - new SolrInputDocument(createMap( - "id", createInputField("id", "1"), - "title", createInputField("title", "old skool - trainers - shoes") - )) - )); - - solrClient.add(COLLECTION_NAME, Collections.singletonList( - new SolrInputDocument(createMap( - "id", createInputField("id", "2"), - "title", createInputField("title", "print t-shirt") - )) - )); - - solrClient.commit(COLLECTION_NAME); + solrClient.add( + SolrSearchEngine.COLLECTION_NAME, + Collections.singletonList( + new SolrInputDocument( + createMap( + "id", + createInputField("id", "1"), + "title", + createInputField("title", "old skool - trainers - shoes") + ) + ) + ) + ); + + solrClient.add( + SolrSearchEngine.COLLECTION_NAME, + Collections.singletonList( + new SolrInputDocument( + createMap("id", createInputField("id", "2"), "title", createInputField("title", "print t-shirt")) + ) + ) + ); + + solrClient.commit(SolrSearchEngine.COLLECTION_NAME); } @Test diff --git a/examples/spring-boot/src/main/java/com/example/DemoApplication.java b/examples/spring-boot/src/main/java/com/example/DemoApplication.java index c968eb42b78..af96419ad6a 100644 --- a/examples/spring-boot/src/main/java/com/example/DemoApplication.java +++ b/examples/spring-boot/src/main/java/com/example/DemoApplication.java @@ -8,8 +8,7 @@ @EnableJpaRepositories public class DemoApplication { - public static void main(String[] args) { - SpringApplication.run(DemoApplication.class, args); - } - + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } } diff --git a/examples/spring-boot/src/main/java/com/example/DemoController.java b/examples/spring-boot/src/main/java/com/example/DemoController.java index 79f48711cad..90cea36804e 100644 --- a/examples/spring-boot/src/main/java/com/example/DemoController.java +++ b/examples/spring-boot/src/main/java/com/example/DemoController.java @@ -7,6 +7,7 @@ public class DemoController { private final StringRedisTemplate stringRedisTemplate; + private final DemoService demoService; public DemoController(StringRedisTemplate stringRedisTemplate, DemoService demoService) { diff --git a/examples/spring-boot/src/main/java/com/example/DemoEntity.java b/examples/spring-boot/src/main/java/com/example/DemoEntity.java index 47c0fa94f75..71fceb2c8e8 100644 --- a/examples/spring-boot/src/main/java/com/example/DemoEntity.java +++ b/examples/spring-boot/src/main/java/com/example/DemoEntity.java @@ -7,7 +7,6 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; - @Data @Entity public class DemoEntity { diff --git a/examples/spring-boot/src/main/java/com/example/DemoRepository.java b/examples/spring-boot/src/main/java/com/example/DemoRepository.java index 89f3775deb0..8ed3216cc18 100644 --- a/examples/spring-boot/src/main/java/com/example/DemoRepository.java +++ b/examples/spring-boot/src/main/java/com/example/DemoRepository.java @@ -1,7 +1,5 @@ package com.example; - import org.springframework.data.jpa.repository.JpaRepository; -public interface DemoRepository extends JpaRepository { -} +public interface DemoRepository extends JpaRepository {} diff --git a/examples/spring-boot/src/main/java/com/example/DemoService.java b/examples/spring-boot/src/main/java/com/example/DemoService.java index 18e8690a99f..78e8c41e907 100644 --- a/examples/spring-boot/src/main/java/com/example/DemoService.java +++ b/examples/spring-boot/src/main/java/com/example/DemoService.java @@ -4,15 +4,14 @@ @Service public class DemoService { + private final DemoRepository demoRepository; public DemoService(DemoRepository demoRepository) { this.demoRepository = demoRepository; } - public DemoEntity getDemoEntity(Long id) { - return demoRepository.findById(id) - .orElseThrow(() ->new RuntimeException("Entity not found")); + return demoRepository.findById(id).orElseThrow(() -> new RuntimeException("Entity not found")); } } diff --git a/examples/spring-boot/src/test/java/com/example/AbstractIntegrationTest.java b/examples/spring-boot/src/test/java/com/example/AbstractIntegrationTest.java index dd1b7b6fb5a..8a1a508c0b3 100644 --- a/examples/spring-boot/src/test/java/com/example/AbstractIntegrationTest.java +++ b/examples/spring-boot/src/test/java/com/example/AbstractIntegrationTest.java @@ -11,9 +11,11 @@ import org.testcontainers.utility.DockerImageName; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = DemoApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, properties = { - "spring.datasource.url=jdbc:tc:postgresql:11-alpine:///databasename", -}) +@SpringBootTest( + classes = DemoApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + properties = { "spring.datasource.url=jdbc:tc:postgresql:11-alpine:///databasename" } +) @ActiveProfiles("test") public abstract class AbstractIntegrationTest { diff --git a/examples/spring-boot/src/test/java/com/example/DemoControllerTest.java b/examples/spring-boot/src/test/java/com/example/DemoControllerTest.java index c305ae67811..4282920b37c 100644 --- a/examples/spring-boot/src/test/java/com/example/DemoControllerTest.java +++ b/examples/spring-boot/src/test/java/com/example/DemoControllerTest.java @@ -33,5 +33,4 @@ public void simpleJPATest() { assertThat(result.getValue()).as("value is set").isEqualTo("Some value"); } - } diff --git a/gradle/spotless.gradle b/gradle/spotless.gradle new file mode 100644 index 00000000000..ce71829331e --- /dev/null +++ b/gradle/spotless.gradle @@ -0,0 +1,23 @@ +apply plugin: 'com.diffplug.spotless' + +spotless { + java { + toggleOffOn() + removeUnusedImports() + trimTrailingWhitespace() + endWithNewline() + + prettier(['prettier': '2.5.1', 'prettier-plugin-java': '1.6.1']) + .config([ + 'parser' : 'java', + 'tabWidth' : 4, + 'printWidth': 120 + ]) + + importOrder('', 'java', 'javax', '\\#') + } + groovyGradle { + target '**/*.groovy' + greclipse('4.19.0') + } +}