Skip to content

Commit 2f6b51b

Browse files
pdambrauskassnicoll
authored andcommitted
Upgrade to Embedded Mongo 3.0.0
See gh-24254
1 parent bb78b6a commit 2f6b51b

File tree

4 files changed

+46
-44
lines changed

4 files changed

+46
-44
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/embedded/DownloadConfigBuilderCustomizer.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
package org.springframework.boot.autoconfigure.mongo.embedded;
1818

19-
import de.flapdoodle.embed.mongo.config.DownloadConfigBuilder;
20-
import de.flapdoodle.embed.process.config.store.IDownloadConfig;
19+
import de.flapdoodle.embed.process.config.store.DownloadConfig;
20+
import de.flapdoodle.embed.process.config.store.ImmutableDownloadConfig;
2121

2222
/**
2323
* Callback interface that can be implemented by beans wishing to customize the
24-
* {@link IDownloadConfig} via a {@link DownloadConfigBuilder} whilst retaining default
25-
* auto-configuration.
24+
* {@link DownloadConfig} via a {@link ImmutableDownloadConfig.Builder} whilst retaining
25+
* default auto-configuration.
2626
*
2727
* @author Michael Gmeiner
2828
* @since 2.2.0
@@ -31,9 +31,10 @@
3131
public interface DownloadConfigBuilderCustomizer {
3232

3333
/**
34-
* Customize the {@link DownloadConfigBuilder}.
35-
* @param downloadConfigBuilder the {@link DownloadConfigBuilder} to customize
34+
* Customize the {@link ImmutableDownloadConfig.Builder}.
35+
* @param downloadConfigBuilder the {@link ImmutableDownloadConfig.Builder} to
36+
* customize
3637
*/
37-
void customize(DownloadConfigBuilder downloadConfigBuilder);
38+
void customize(ImmutableDownloadConfig.Builder downloadConfigBuilder);
3839

3940
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfiguration.java

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,24 @@
2727
import de.flapdoodle.embed.mongo.Command;
2828
import de.flapdoodle.embed.mongo.MongodExecutable;
2929
import de.flapdoodle.embed.mongo.MongodStarter;
30-
import de.flapdoodle.embed.mongo.config.DownloadConfigBuilder;
31-
import de.flapdoodle.embed.mongo.config.ExtractedArtifactStoreBuilder;
32-
import de.flapdoodle.embed.mongo.config.IMongodConfig;
33-
import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
30+
import de.flapdoodle.embed.mongo.config.Defaults;
31+
import de.flapdoodle.embed.mongo.config.ImmutableMongodConfig;
32+
import de.flapdoodle.embed.mongo.config.MongodConfig;
3433
import de.flapdoodle.embed.mongo.config.Net;
35-
import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder;
3634
import de.flapdoodle.embed.mongo.config.Storage;
3735
import de.flapdoodle.embed.mongo.distribution.Feature;
3836
import de.flapdoodle.embed.mongo.distribution.IFeatureAwareVersion;
3937
import de.flapdoodle.embed.mongo.distribution.Version;
4038
import de.flapdoodle.embed.mongo.distribution.Versions;
41-
import de.flapdoodle.embed.process.config.IRuntimeConfig;
39+
import de.flapdoodle.embed.process.config.RuntimeConfig;
4240
import de.flapdoodle.embed.process.config.io.ProcessOutput;
43-
import de.flapdoodle.embed.process.config.store.IDownloadConfig;
44-
import de.flapdoodle.embed.process.distribution.GenericVersion;
41+
import de.flapdoodle.embed.process.config.store.DownloadConfig;
42+
import de.flapdoodle.embed.process.config.store.ImmutableDownloadConfig;
4543
import de.flapdoodle.embed.process.io.Processors;
4644
import de.flapdoodle.embed.process.io.Slf4jLevel;
4745
import de.flapdoodle.embed.process.io.progress.Slf4jProgressListener;
4846
import de.flapdoodle.embed.process.runtime.Network;
49-
import de.flapdoodle.embed.process.store.ArtifactStoreBuilder;
47+
import de.flapdoodle.embed.process.store.ExtractedArtifactStore;
5048
import org.slf4j.Logger;
5149
import org.slf4j.LoggerFactory;
5250

@@ -81,6 +79,7 @@
8179
* @author Yogesh Lonkar
8280
* @author Mark Paluch
8381
* @author Issam El-atif
82+
* @author Paulius Dambrauskas
8483
* @since 1.3.0
8584
*/
8685
@Configuration(proxyBeanMethods = false)
@@ -97,14 +96,14 @@ public class EmbeddedMongoAutoConfiguration {
9796

9897
private final MongoProperties properties;
9998

100-
public EmbeddedMongoAutoConfiguration(MongoProperties properties, EmbeddedMongoProperties embeddedProperties) {
99+
public EmbeddedMongoAutoConfiguration(MongoProperties properties) {
101100
this.properties = properties;
102101
}
103102

104103
@Bean(initMethod = "start", destroyMethod = "stop")
105104
@ConditionalOnMissingBean
106-
public MongodExecutable embeddedMongoServer(IMongodConfig mongodConfig, IRuntimeConfig runtimeConfig,
107-
ApplicationContext context) throws IOException {
105+
public MongodExecutable embeddedMongoServer(MongodConfig mongodConfig, RuntimeConfig runtimeConfig,
106+
ApplicationContext context) {
108107
Integer configuredPort = this.properties.getPort();
109108
if (configuredPort == null || configuredPort == 0) {
110109
setEmbeddedPort(context, mongodConfig.net().getPort());
@@ -113,7 +112,7 @@ public MongodExecutable embeddedMongoServer(IMongodConfig mongodConfig, IRuntime
113112
return mongodStarter.prepare(mongodConfig);
114113
}
115114

116-
private MongodStarter getMongodStarter(IRuntimeConfig runtimeConfig) {
115+
private MongodStarter getMongodStarter(RuntimeConfig runtimeConfig) {
117116
if (runtimeConfig == null) {
118117
return MongodStarter.getDefaultInstance();
119118
}
@@ -122,8 +121,8 @@ private MongodStarter getMongodStarter(IRuntimeConfig runtimeConfig) {
122121

123122
@Bean
124123
@ConditionalOnMissingBean
125-
public IMongodConfig embeddedMongoConfiguration(EmbeddedMongoProperties embeddedProperties) throws IOException {
126-
MongodConfigBuilder builder = new MongodConfigBuilder().version(determineVersion(embeddedProperties));
124+
public MongodConfig embeddedMongoConfiguration(EmbeddedMongoProperties embeddedProperties) throws IOException {
125+
ImmutableMongodConfig.Builder builder = MongodConfig.builder().version(determineVersion(embeddedProperties));
127126
EmbeddedMongoProperties.Storage storage = embeddedProperties.getStorage();
128127
if (storage != null) {
129128
String databaseDir = storage.getDatabaseDir();
@@ -149,9 +148,11 @@ private IFeatureAwareVersion determineVersion(EmbeddedMongoProperties embeddedPr
149148
return version;
150149
}
151150
}
152-
return Versions.withFeatures(new GenericVersion(embeddedProperties.getVersion()));
151+
return Versions
152+
.withFeatures(de.flapdoodle.embed.process.distribution.Version.of(embeddedProperties.getVersion()));
153153
}
154-
return Versions.withFeatures(new GenericVersion(embeddedProperties.getVersion()),
154+
return Versions.withFeatures(
155+
de.flapdoodle.embed.process.distribution.Version.of(embeddedProperties.getVersion()),
155156
embeddedProperties.getFeatures().toArray(new Feature[0]));
156157
}
157158

@@ -189,29 +190,29 @@ private Map<String, Object> getMongoPorts(MutablePropertySources sources) {
189190

190191
@Configuration(proxyBeanMethods = false)
191192
@ConditionalOnClass(Logger.class)
192-
@ConditionalOnMissingBean(IRuntimeConfig.class)
193+
@ConditionalOnMissingBean(RuntimeConfig.class)
193194
static class RuntimeConfigConfiguration {
194195

195196
@Bean
196-
IRuntimeConfig embeddedMongoRuntimeConfig(
197+
RuntimeConfig embeddedMongoRuntimeConfig(
197198
ObjectProvider<DownloadConfigBuilderCustomizer> downloadConfigBuilderCustomizers) {
198199
Logger logger = LoggerFactory.getLogger(getClass().getPackage().getName() + ".EmbeddedMongo");
199200
ProcessOutput processOutput = new ProcessOutput(Processors.logTo(logger, Slf4jLevel.INFO),
200201
Processors.logTo(logger, Slf4jLevel.ERROR),
201202
Processors.named("[console>]", Processors.logTo(logger, Slf4jLevel.DEBUG)));
202-
return new RuntimeConfigBuilder().defaultsWithLogger(Command.MongoD, logger).processOutput(processOutput)
203+
204+
return Defaults.runtimeConfigFor(Command.MongoD, logger).processOutput(processOutput)
203205
.artifactStore(getArtifactStore(logger, downloadConfigBuilderCustomizers.orderedStream()))
204-
.daemonProcess(false).build();
206+
.isDaemonProcess(false).build();
205207
}
206208

207-
private ArtifactStoreBuilder getArtifactStore(Logger logger,
209+
private ExtractedArtifactStore getArtifactStore(Logger logger,
208210
Stream<DownloadConfigBuilderCustomizer> downloadConfigBuilderCustomizers) {
209-
DownloadConfigBuilder downloadConfigBuilder = new DownloadConfigBuilder()
210-
.defaultsForCommand(Command.MongoD);
211+
ImmutableDownloadConfig.Builder downloadConfigBuilder = Defaults.downloadConfigFor(Command.MongoD);
211212
downloadConfigBuilder.progressListener(new Slf4jProgressListener(logger));
212213
downloadConfigBuilderCustomizers.forEach((customizer) -> customizer.customize(downloadConfigBuilder));
213-
IDownloadConfig downloadConfig = downloadConfigBuilder.build();
214-
return new ExtractedArtifactStoreBuilder().defaults(Command.MongoD).download(downloadConfig);
214+
DownloadConfig downloadConfig = downloadConfigBuilder.build();
215+
return Defaults.extractedArtifactStoreFor(Command.MongoD).withDownloadConfig(downloadConfig);
215216
}
216217

217218
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfigurationTests.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
import com.mongodb.client.MongoClients;
2828
import de.flapdoodle.embed.mongo.MongodExecutable;
2929
import de.flapdoodle.embed.mongo.MongodStarter;
30-
import de.flapdoodle.embed.mongo.config.IMongodConfig;
30+
import de.flapdoodle.embed.mongo.config.MongodConfig;
3131
import de.flapdoodle.embed.mongo.config.Storage;
3232
import de.flapdoodle.embed.mongo.distribution.Feature;
3333
import de.flapdoodle.embed.mongo.distribution.Version;
34-
import de.flapdoodle.embed.process.config.IRuntimeConfig;
35-
import de.flapdoodle.embed.process.config.store.IDownloadConfig;
34+
import de.flapdoodle.embed.process.config.RuntimeConfig;
35+
import de.flapdoodle.embed.process.config.store.DownloadConfig;
3636
import org.bson.Document;
3737
import org.junit.jupiter.api.AfterEach;
3838
import org.junit.jupiter.api.Test;
@@ -143,7 +143,7 @@ void portIsAvailableInParentContext() {
143143
@Test
144144
void defaultStorageConfiguration() {
145145
load(MongoClientConfiguration.class);
146-
Storage replication = this.context.getBean(IMongodConfig.class).replication();
146+
Storage replication = this.context.getBean(MongodConfig.class).replication();
147147
assertThat(replication.getOplogSize()).isEqualTo(0);
148148
assertThat(replication.getDatabaseDir()).isNull();
149149
assertThat(replication.getReplSetName()).isNull();
@@ -161,26 +161,26 @@ void mongoWritesToCustomDatabaseDir(@TempDir Path temp) throws IOException {
161161
@Test
162162
void customOpLogSizeIsAppliedToConfiguration() {
163163
load("spring.mongodb.embedded.storage.oplogSize=1024KB");
164-
assertThat(this.context.getBean(IMongodConfig.class).replication().getOplogSize()).isEqualTo(1);
164+
assertThat(this.context.getBean(MongodConfig.class).replication().getOplogSize()).isEqualTo(1);
165165
}
166166

167167
@Test
168168
void customOpLogSizeUsesMegabytesPerDefault() {
169169
load("spring.mongodb.embedded.storage.oplogSize=10");
170-
assertThat(this.context.getBean(IMongodConfig.class).replication().getOplogSize()).isEqualTo(10);
170+
assertThat(this.context.getBean(MongodConfig.class).replication().getOplogSize()).isEqualTo(10);
171171
}
172172

173173
@Test
174174
void customReplicaSetNameIsAppliedToConfiguration() {
175175
load("spring.mongodb.embedded.storage.replSetName=testing");
176-
assertThat(this.context.getBean(IMongodConfig.class).replication().getReplSetName()).isEqualTo("testing");
176+
assertThat(this.context.getBean(MongodConfig.class).replication().getReplSetName()).isEqualTo("testing");
177177
}
178178

179179
@Test
180180
void customizeDownloadConfiguration() {
181181
load(DownloadConfigBuilderCustomizerConfiguration.class);
182-
IRuntimeConfig runtimeConfig = this.context.getBean(IRuntimeConfig.class);
183-
IDownloadConfig downloadConfig = (IDownloadConfig) new DirectFieldAccessor(runtimeConfig.getArtifactStore())
182+
RuntimeConfig runtimeConfig = this.context.getBean(RuntimeConfig.class);
183+
DownloadConfig downloadConfig = (DownloadConfig) new DirectFieldAccessor(runtimeConfig.artifactStore())
184184
.getPropertyValue("downloadConfig");
185185
assertThat(downloadConfig.getUserAgent()).isEqualTo("Test User Agent");
186186
}
@@ -265,7 +265,7 @@ DownloadConfigBuilderCustomizer testDownloadConfigBuilderCustomizer() {
265265
static class CustomMongoConfiguration {
266266

267267
@Bean(initMethod = "start", destroyMethod = "stop")
268-
MongodExecutable customMongoServer(IRuntimeConfig runtimeConfig, IMongodConfig mongodConfig) {
268+
MongodExecutable customMongoServer(RuntimeConfig runtimeConfig, MongodConfig mongodConfig) {
269269
MongodStarter mongodStarter = MongodStarter.getInstance(runtimeConfig);
270270
return mongodStarter.prepare(mongodConfig);
271271
}

spring-boot-project/spring-boot-dependencies/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ bom {
300300
]
301301
}
302302
}
303-
library("Embedded Mongo", "2.2.0") {
303+
library("Embedded Mongo", "3.0.0") {
304304
group("de.flapdoodle.embed") {
305305
modules = [
306306
"de.flapdoodle.embed.mongo"

0 commit comments

Comments
 (0)