Start building against Spring Data Bom 2023.1.0 snapshots

See gh-36190
This commit is contained in:
Andy Wilkinson 2023-07-03 19:26:50 +01:00
parent e847e662c2
commit ec8e1e2c95
4 changed files with 41 additions and 14 deletions

View File

@ -69,6 +69,7 @@ import org.springframework.data.couchbase.CouchbaseClientFactory;
import org.springframework.data.couchbase.cache.CouchbaseCache; import org.springframework.data.couchbase.cache.CouchbaseCache;
import org.springframework.data.couchbase.cache.CouchbaseCacheConfiguration; import org.springframework.data.couchbase.cache.CouchbaseCacheConfiguration;
import org.springframework.data.couchbase.cache.CouchbaseCacheManager; import org.springframework.data.couchbase.cache.CouchbaseCacheManager;
import org.springframework.data.redis.cache.FixedDurationTtlFunction;
import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
@ -273,7 +274,10 @@ class CacheAutoConfigurationTests extends AbstractCacheAutoConfigurationTests {
RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class); RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class);
assertThat(cacheManager.getCacheNames()).isEmpty(); assertThat(cacheManager.getCacheNames()).isEmpty();
RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager); RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager);
assertThat(redisCacheConfiguration.getTtl()).isEqualTo(java.time.Duration.ofSeconds(15)); assertThat(redisCacheConfiguration).extracting(RedisCacheConfiguration::getTtlFunction)
.isInstanceOf(FixedDurationTtlFunction.class)
.extracting("duration")
.isEqualTo(java.time.Duration.ofSeconds(15));
assertThat(redisCacheConfiguration.getAllowCacheNullValues()).isFalse(); assertThat(redisCacheConfiguration.getAllowCacheNullValues()).isFalse();
assertThat(redisCacheConfiguration.getKeyPrefixFor("MyCache")).isEqualTo("prefixMyCache::"); assertThat(redisCacheConfiguration.getKeyPrefixFor("MyCache")).isEqualTo("prefixMyCache::");
assertThat(redisCacheConfiguration.usePrefix()).isTrue(); assertThat(redisCacheConfiguration.usePrefix()).isTrue();
@ -289,7 +293,10 @@ class CacheAutoConfigurationTests extends AbstractCacheAutoConfigurationTests {
RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class); RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class);
assertThat(cacheManager.getCacheNames()).isEmpty(); assertThat(cacheManager.getCacheNames()).isEmpty();
RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager); RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager);
assertThat(redisCacheConfiguration.getTtl()).isEqualTo(java.time.Duration.ofSeconds(30)); assertThat(redisCacheConfiguration).extracting(RedisCacheConfiguration::getTtlFunction)
.isInstanceOf(FixedDurationTtlFunction.class)
.extracting("duration")
.isEqualTo(java.time.Duration.ofSeconds(30));
assertThat(redisCacheConfiguration.getKeyPrefixFor("")).isEqualTo("bar::"); assertThat(redisCacheConfiguration.getKeyPrefixFor("")).isEqualTo("bar::");
}); });
} }
@ -301,7 +308,10 @@ class CacheAutoConfigurationTests extends AbstractCacheAutoConfigurationTests {
.run((context) -> { .run((context) -> {
RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class); RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class);
RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager); RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager);
assertThat(redisCacheConfiguration.getTtl()).isEqualTo(java.time.Duration.ofSeconds(10)); assertThat(redisCacheConfiguration).extracting(RedisCacheConfiguration::getTtlFunction)
.isInstanceOf(FixedDurationTtlFunction.class)
.extracting("duration")
.isEqualTo(java.time.Duration.ofSeconds(10));
}); });
} }
@ -321,7 +331,10 @@ class CacheAutoConfigurationTests extends AbstractCacheAutoConfigurationTests {
RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class); RedisCacheManager cacheManager = getCacheManager(context, RedisCacheManager.class);
assertThat(cacheManager.getCacheNames()).containsOnly("foo", "bar"); assertThat(cacheManager.getCacheNames()).containsOnly("foo", "bar");
RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager); RedisCacheConfiguration redisCacheConfiguration = getDefaultRedisCacheConfiguration(cacheManager);
assertThat(redisCacheConfiguration.getTtl()).isEqualTo(java.time.Duration.ofMinutes(0)); assertThat(redisCacheConfiguration).extracting(RedisCacheConfiguration::getTtlFunction)
.isInstanceOf(FixedDurationTtlFunction.class)
.extracting("duration")
.isEqualTo(java.time.Duration.ofSeconds(0));
assertThat(redisCacheConfiguration.getAllowCacheNullValues()).isTrue(); assertThat(redisCacheConfiguration.getAllowCacheNullValues()).isTrue();
assertThat(redisCacheConfiguration.getKeyPrefixFor("test")).isEqualTo("test::"); assertThat(redisCacheConfiguration.getKeyPrefixFor("test")).isEqualTo("test::");
assertThat(redisCacheConfiguration.usePrefix()).isTrue(); assertThat(redisCacheConfiguration.usePrefix()).isTrue();

View File

@ -18,10 +18,14 @@ package org.springframework.boot.autoconfigure.data.mongo;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.function.Supplier;
import com.mongodb.ConnectionString; import com.mongodb.ConnectionString;
import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.gridfs.GridFSBucket;
import org.assertj.core.api.InstanceOfAssertFactories;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanCreationException;
@ -78,32 +82,43 @@ class MongoDataAutoConfigurationTests {
} }
@Test @Test
@SuppressWarnings("unchecked")
void whenGridFsDatabaseIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() { void whenGridFsDatabaseIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() {
this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.database:grid").run((context) -> { this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.database:grid").run((context) -> {
assertThat(context).hasSingleBean(GridFsTemplate.class); assertThat(context).hasSingleBean(GridFsTemplate.class);
GridFsTemplate template = context.getBean(GridFsTemplate.class); GridFsTemplate template = context.getBean(GridFsTemplate.class);
MongoDatabaseFactory factory = (MongoDatabaseFactory) ReflectionTestUtils.getField(template, "dbFactory"); GridFSBucket bucket = ((Supplier<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
assertThat(factory.getMongoDatabase().getName()).isEqualTo("grid"); .get();
assertThat(bucket).extracting("filesCollection", InstanceOfAssertFactories.type(MongoCollection.class))
.extracting((collection) -> collection.getNamespace().getDatabaseName())
.isEqualTo("grid");
}); });
} }
@Test @Test
@SuppressWarnings("unchecked")
void usesMongoConnectionDetailsIfAvailable() { void usesMongoConnectionDetailsIfAvailable() {
this.contextRunner.withUserConfiguration(ConnectionDetailsConfiguration.class).run((context) -> { this.contextRunner.withUserConfiguration(ConnectionDetailsConfiguration.class).run((context) -> {
assertThat(context).hasSingleBean(GridFsTemplate.class); assertThat(context).hasSingleBean(GridFsTemplate.class);
GridFsTemplate template = context.getBean(GridFsTemplate.class); GridFsTemplate template = context.getBean(GridFsTemplate.class);
assertThat(template).hasFieldOrPropertyWithValue("bucket", "connection-details-bucket"); GridFSBucket bucket = ((Supplier<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
MongoDatabaseFactory factory = (MongoDatabaseFactory) ReflectionTestUtils.getField(template, "dbFactory"); .get();
assertThat(factory.getMongoDatabase().getName()).isEqualTo("grid-database-1"); assertThat(bucket.getBucketName()).isEqualTo("connection-details-bucket");
assertThat(bucket).extracting("filesCollection", InstanceOfAssertFactories.type(MongoCollection.class))
.extracting((collection) -> collection.getNamespace().getDatabaseName())
.isEqualTo("grid-database-1");
}); });
} }
@Test @Test
@SuppressWarnings("unchecked")
void whenGridFsBucketIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() { void whenGridFsBucketIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() {
this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.bucket:test-bucket").run((context) -> { this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.bucket:test-bucket").run((context) -> {
assertThat(context).hasSingleBean(GridFsTemplate.class); assertThat(context).hasSingleBean(GridFsTemplate.class);
GridFsTemplate template = context.getBean(GridFsTemplate.class); GridFsTemplate template = context.getBean(GridFsTemplate.class);
assertThat(template).hasFieldOrPropertyWithValue("bucket", "test-bucket"); GridFSBucket bucket = ((Supplier<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
.get();
assertThat(bucket.getBucketName()).isEqualTo("test-bucket");
}); });
} }

View File

@ -1393,7 +1393,7 @@ bom {
] ]
} }
} }
library("Spring Data Bom", "2023.0.1") { library("Spring Data Bom", "2023.1.0-SNAPSHOT") {
group("org.springframework.data") { group("org.springframework.data") {
imports = [ imports = [
"spring-data-bom" "spring-data-bom"

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2022 the original author or authors. * Copyright 2012-2023 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -19,8 +19,7 @@ package org.springframework.boot.docs.data.nosql.elasticsearch.connectingusingsp
import org.springframework.stereotype.Component import org.springframework.stereotype.Component
@Component @Component
@Suppress("DEPRECATION") class MyBean(private val template: org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate ) {
class MyBean(private val template: org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate ) {
// @fold:on // ... // @fold:on // ...
fun someMethod(id: String): Boolean { fun someMethod(id: String): Boolean {