diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfiguration.java index 9fb7c9a921..5641d51821 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfiguration.java @@ -16,8 +16,6 @@ package org.springframework.boot.autoconfigure.influx; -import java.net.URI; - import okhttp3.OkHttpClient; import org.influxdb.InfluxDB; import org.influxdb.impl.InfluxDBImpl; @@ -25,16 +23,11 @@ import org.influxdb.impl.InfluxDBImpl; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration.InfluxDBCondition; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Condition; -import org.springframework.context.annotation.Conditional; /** * {@link EnableAutoConfiguration Auto-configuration} for InfluxDB. @@ -49,23 +42,16 @@ import org.springframework.context.annotation.Conditional; */ @AutoConfiguration @ConditionalOnClass(InfluxDB.class) -@Conditional(InfluxDBCondition.class) @EnableConfigurationProperties(InfluxDbProperties.class) +@ConditionalOnProperty("spring.influx.url") public class InfluxDbAutoConfiguration { - @Bean - @ConditionalOnMissingBean(InfluxDbConnectionDetails.class) - PropertiesInfluxDbConnectionDetails influxDbConnectionDetails(InfluxDbProperties properties) { - return new PropertiesInfluxDbConnectionDetails(properties); - } - @Bean @ConditionalOnMissingBean - public InfluxDB influxDb(InfluxDbConnectionDetails connectionDetails, - ObjectProvider builder, + public InfluxDB influxDb(InfluxDbProperties properties, ObjectProvider builder, ObjectProvider customizers) { - InfluxDB influxDb = new InfluxDBImpl(connectionDetails.getUrl().toString(), connectionDetails.getUsername(), - connectionDetails.getPassword(), determineBuilder(builder.getIfAvailable())); + InfluxDB influxDb = new InfluxDBImpl(properties.getUrl().toString(), properties.getUser(), + properties.getPassword(), determineBuilder(builder.getIfAvailable())); customizers.orderedStream().forEach((customizer) -> customizer.customize(influxDb)); return influxDb; } @@ -77,54 +63,4 @@ public class InfluxDbAutoConfiguration { return new OkHttpClient.Builder(); } - /** - * {@link Condition} that matches when either {@code spring.influx.url} has been set - * or there is an {@link InfluxDbConnectionDetails} bean. - */ - static final class InfluxDBCondition extends AnyNestedCondition { - - InfluxDBCondition() { - super(ConfigurationPhase.REGISTER_BEAN); - } - - @ConditionalOnProperty(prefix = "spring.influx", name = "url") - private static final class InfluxUrlCondition { - - } - - @ConditionalOnBean(InfluxDbConnectionDetails.class) - private static final class InfluxDbConnectionDetailsCondition { - - } - - } - - /** - * Adapts {@link InfluxDbProperties} to {@link InfluxDbConnectionDetails}. - */ - static class PropertiesInfluxDbConnectionDetails implements InfluxDbConnectionDetails { - - private final InfluxDbProperties properties; - - PropertiesInfluxDbConnectionDetails(InfluxDbProperties properties) { - this.properties = properties; - } - - @Override - public URI getUrl() { - return URI.create(this.properties.getUrl()); - } - - @Override - public String getUsername() { - return this.properties.getUser(); - } - - @Override - public String getPassword() { - return this.properties.getPassword(); - } - - } - } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbConnectionDetails.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbConnectionDetails.java deleted file mode 100644 index 0f00832b61..0000000000 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/influx/InfluxDbConnectionDetails.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed 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 - * - * https://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.springframework.boot.autoconfigure.influx; - -import java.net.URI; - -import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails; - -/** - * Details required to establish a connection to an InfluxDB service. - * - * @author Moritz Halbritter - * @author Andy Wilkinson - * @author Phillip Webb - * @since 3.1.0 - */ -public interface InfluxDbConnectionDetails extends ConnectionDetails { - - /** - * URL of the InfluxDB instance to which to connect. - * @return the URL of the InfluxDB instance to which to connect - */ - URI getUrl(); - - /** - * Login user. - * @return the login user or {@code null} - */ - String getUsername(); - - /** - * Login password. - * @return the login password or {@code null} - */ - String getPassword(); - -} diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfigurationTests.java index 436b019172..7d37ee994c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/influx/InfluxDbAutoConfigurationTests.java @@ -16,7 +16,6 @@ package org.springframework.boot.autoconfigure.influx; -import java.net.URI; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; @@ -25,7 +24,6 @@ import org.junit.jupiter.api.Test; import retrofit2.Retrofit; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration.PropertiesInfluxDbConnectionDetails; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; @@ -54,35 +52,6 @@ class InfluxDbAutoConfigurationTests { this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(InfluxDB.class)); } - @Test - void definesPropertiesBasedConnectionDetailsByDefault() { - this.contextRunner.withPropertyValues("spring.influx.url=http://localhost") - .run((context) -> assertThat(context).hasSingleBean(PropertiesInfluxDbConnectionDetails.class)); - } - - @Test - void shouldUseCustomConnectionDetailsWhenDefined() { - this.contextRunner.withBean(InfluxDbConnectionDetails.class, this::influxDbConnectionDetails).run((context) -> { - assertThat(context).hasSingleBean(InfluxDB.class) - .hasSingleBean(InfluxDbConnectionDetails.class) - .doesNotHaveBean(PropertiesInfluxDbConnectionDetails.class); - InfluxDB influxDb = context.getBean(InfluxDB.class); - assertThat(influxDb).hasFieldOrPropertyWithValue("hostName", "localhost"); - }); - } - - @Test - void connectionDetailsOverwriteProperties() { - this.contextRunner.withBean(InfluxDbConnectionDetails.class, this::influxDbConnectionDetails) - .withPropertyValues("spring.influx.url=http://some-other-host", "spring.influx.user=user", - "spring.influx.password=password") - .run((context) -> { - assertThat(context).hasSingleBean(InfluxDB.class); - InfluxDB influxDb = context.getBean(InfluxDB.class); - assertThat(influxDb).hasFieldOrPropertyWithValue("hostName", "localhost"); - }); - } - @Test void influxDbCanBeCustomized() { this.contextRunner @@ -129,27 +98,6 @@ class InfluxDbAutoConfigurationTests { return callFactory.readTimeoutMillis(); } - private InfluxDbConnectionDetails influxDbConnectionDetails() { - return new InfluxDbConnectionDetails() { - - @Override - public URI getUrl() { - return URI.create("http://localhost"); - } - - @Override - public String getUsername() { - return "user-1"; - } - - @Override - public String getPassword() { - return "password-1"; - } - - }; - } - @Configuration(proxyBeanMethods = false) static class CustomOkHttpClientBuilderProviderConfig { diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc index 83035217b2..2dc2e24127 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc @@ -958,9 +958,6 @@ The following service connection factories are provided in the `spring-boot-test | `FlywayConnectionDetails` | Containers of type `JdbcDatabaseContainer` -| `InfluxDbConnectionDetails` -| Containers of type `InfluxDBContainer` - | `JdbcConnectionDetails` | Containers of type `JdbcDatabaseContainer` diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/influx/InfluxDbContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/influx/InfluxDbContainerConnectionDetailsFactory.java deleted file mode 100644 index f9c6935a20..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/influx/InfluxDbContainerConnectionDetailsFactory.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed 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 - * - * https://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.springframework.boot.testcontainers.service.connection.influx; - -import java.net.URI; - -import org.testcontainers.containers.InfluxDBContainer; - -import org.springframework.boot.autoconfigure.influx.InfluxDbConnectionDetails; -import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; -import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; - -/** - * {@link ContainerConnectionDetailsFactory} to create {@link InfluxDbConnectionDetails} - * from a {@link ServiceConnection @ServiceConnection}-annotated - * {@link InfluxDBContainer}. - * - * @author Moritz Halbritter - * @author Andy Wilkinson - * @author Phillip Webb - */ -class InfluxDbContainerConnectionDetailsFactory - extends ContainerConnectionDetailsFactory> { - - @Override - protected InfluxDbConnectionDetails getContainerConnectionDetails( - ContainerConnectionSource> source) { - return new InfluxDbContainerConnectionDetails(source); - } - - /** - * {@link InfluxDbConnectionDetails} backed by a {@link ContainerConnectionSource}. - */ - private static final class InfluxDbContainerConnectionDetails extends ContainerConnectionDetails - implements InfluxDbConnectionDetails { - - private final InfluxDBContainer container; - - private InfluxDbContainerConnectionDetails(ContainerConnectionSource> source) { - super(source); - this.container = source.getContainer(); - } - - @Override - public String getUsername() { - return this.container.getUsername(); - } - - @Override - public String getPassword() { - return this.container.getPassword(); - } - - @Override - public URI getUrl() { - return URI.create(this.container.getUrl()); - } - - } - -} diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/influx/package-info.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/influx/package-info.java deleted file mode 100644 index 420191a8a3..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/influx/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed 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 - * - * https://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. - */ - -/** - * Support for testcontainers InfluxDB service connections. - */ -package org.springframework.boot.testcontainers.service.connection.influx; diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring.factories index d7f0dfb531..226a52f024 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring.factories @@ -13,7 +13,6 @@ org.springframework.boot.testcontainers.service.connection.cassandra.CassandraCo org.springframework.boot.testcontainers.service.connection.couchbase.CouchbaseContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.flyway.FlywayContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.elasticsearch.ElasticsearchContainerConnectionDetailsFactory,\ -org.springframework.boot.testcontainers.service.connection.influx.InfluxDbContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.jdbc.JdbcContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.kafka.KafkaContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.liquibase.LiquibaseContainerConnectionDetailsFactory,\ diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/influx/InfluxDbContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/influx/InfluxDbContainerConnectionDetailsFactoryIntegrationTests.java deleted file mode 100644 index 3d33d1688b..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/influx/InfluxDbContainerConnectionDetailsFactoryIntegrationTests.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed 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 - * - * https://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.springframework.boot.testcontainers.service.connection.influx; - -import org.influxdb.InfluxDB; -import org.junit.jupiter.api.Test; -import org.testcontainers.containers.InfluxDBContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link InfluxDbContainerConnectionDetailsFactory}. - * - * @author Moritz Halbritter - * @author Andy Wilkinson - * @author Phillip Webb - */ -@SpringJUnitConfig -@Testcontainers(disabledWithoutDocker = true) -class InfluxDbContainerConnectionDetailsFactoryIntegrationTests { - - @Container - @ServiceConnection - static final InfluxDBContainer influxDbService = new InfluxDBContainer<>(DockerImageNames.influxDb()); - - @Autowired - private InfluxDB influxDb; - - @Test - void connectionCanBeMadeToInfluxDbContainer() { - assertThat(this.influxDb.version()).isEqualTo("v" + DockerImageNames.influxDb().getVersionPart()); - } - - @Configuration(proxyBeanMethods = false) - @ImportAutoConfiguration(InfluxDbAutoConfiguration.class) - static class TestConfiguration { - - } - -}