diff --git a/pom.xml b/pom.xml index 1df3256234ca14c214d8c482949c09a33f15183f..4e06141339c4b4945d37b2e1913f280fdb8987ae 100644 --- a/pom.xml +++ b/pom.xml @@ -105,12 +105,12 @@ <dependency> <groupId>de.flapdoodle.embed</groupId> <artifactId>de.flapdoodle.embed.mongo</artifactId> - <version>1.31</version> + <version>1.40</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit-dep</artifactId> - <version>4.10</version> + <version>4.11</version> <scope>test</scope> </dependency> </dependencies> diff --git a/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java b/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java index 2ee89da3abb0e2c6e0b6754b68694e65af334d76..5f6d230fe4a26cbbb7d0a525b0bfa2fa1bd35ad5 100644 --- a/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java +++ b/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java @@ -42,19 +42,20 @@ import de.flapdoodle.embed.mongo.Command; import de.flapdoodle.embed.mongo.MongodExecutable; import de.flapdoodle.embed.mongo.MongodProcess; import de.flapdoodle.embed.mongo.MongodStarter; -import de.flapdoodle.embed.mongo.config.AbstractMongoConfig.Net; -import de.flapdoodle.embed.mongo.config.AbstractMongoConfig.Storage; -import de.flapdoodle.embed.mongo.config.AbstractMongoConfig.Timeout; import de.flapdoodle.embed.mongo.config.ArtifactStoreBuilder; import de.flapdoodle.embed.mongo.config.DownloadConfigBuilder; -import de.flapdoodle.embed.mongo.config.MongodConfig; +import de.flapdoodle.embed.mongo.config.IMongodConfig; +import de.flapdoodle.embed.mongo.config.MongodConfigBuilder; +import de.flapdoodle.embed.mongo.config.Net; import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder; +import de.flapdoodle.embed.mongo.config.Storage; +import de.flapdoodle.embed.mongo.distribution.IFeatureAwareVersion; import de.flapdoodle.embed.mongo.distribution.Version; +import de.flapdoodle.embed.mongo.distribution.Versions; import de.flapdoodle.embed.process.config.IRuntimeConfig; import de.flapdoodle.embed.process.config.io.ProcessOutput; import de.flapdoodle.embed.process.config.store.IDownloadConfig; import de.flapdoodle.embed.process.distribution.Distribution; -import de.flapdoodle.embed.process.distribution.GenericVersion; import de.flapdoodle.embed.process.distribution.IVersion; import de.flapdoodle.embed.process.exceptions.DistributionException; import de.flapdoodle.embed.process.runtime.ICommandLinePostProcessor; @@ -230,28 +231,25 @@ public class StartEmbeddedMongoMojo extends AbstractMojo { commandLinePostProcessor = new ICommandLinePostProcessor.Noop(); } - IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder() - .defaults(Command.MongoD) - .processOutput(getOutputConfig()) - .artifactStore(getArtifactStore()) - .commandLinePostProcessor(commandLinePostProcessor) - .build(); + IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder().defaults(Command.MongoD).processOutput + (getOutputConfig()).artifactStore(getArtifactStore()).commandLinePostProcessor + (commandLinePostProcessor).build(); if (randomPort) { port = PortUtils.allocateRandomPort(); } savePortToProjectProperties(); - MongodConfig mongoConfig = new MongodConfig(getVersion(), - new Net(bindIp, port, Network.localhostIsIPv6()), - new Storage(getDataDirectory(), null, 0), - new Timeout()); + IMongodConfig config = new MongodConfigBuilder().version(getVersion()).net(new Net(bindIp, port, + Network.localhostIsIPv6())).replication(new Storage(getDataDirectory(), null, 0)).build(); - executable = MongodStarter.getInstance(runtimeConfig).prepare(mongoConfig); + executable = MongodStarter.getInstance(runtimeConfig).prepare(config); } catch (UnknownHostException e) { throw new MojoExecutionException("Unable to determine if localhost is ipv6", e); } catch (DistributionException e) { throw new MojoExecutionException("Failed to download MongoDB distribution: " + e.withDistribution(), e); + } catch (IOException e) { + throw new MojoExecutionException("Unable to Config MongoDB: ", e); } try { @@ -294,21 +292,17 @@ public class StartEmbeddedMongoMojo extends AbstractMojo { case NONE: return Loggers.none(); default: - throw new MojoFailureException("Unexpected logging style encountered: \"" + logging + "\" -> " + loggingStyle); + throw new MojoFailureException("Unexpected logging style encountered: \"" + logging + "\" -> " + + loggingStyle); } } - private IArtifactStore getArtifactStore() - { - IDownloadConfig downloadConfig = new DownloadConfigBuilder() - .defaultsForCommand(Command.MongoD) - .downloadPath(downloadPath) - .build(); - IArtifactStore artifactStore = new ArtifactStoreBuilder() - .defaults(Command.MongoD) - .download(downloadConfig) - .build(); + private IArtifactStore getArtifactStore() { + IDownloadConfig downloadConfig = new DownloadConfigBuilder().defaultsForCommand(Command.MongoD).downloadPath + (downloadPath).build(); + IArtifactStore artifactStore = new ArtifactStoreBuilder().defaults(Command.MongoD).download(downloadConfig) + .build(); return artifactStore; } @@ -341,18 +335,23 @@ public class StartEmbeddedMongoMojo extends AbstractMojo { }); } - private IVersion getVersion() { + private IFeatureAwareVersion getVersion() { String versionEnumName = this.version.toUpperCase().replaceAll("\\.", "_"); if (versionEnumName.charAt(0) != 'V') { versionEnumName = "V" + versionEnumName; } - try { return Version.valueOf(versionEnumName); } catch (IllegalArgumentException e) { - getLog().warn("Unrecognised MongoDB version '" + this.version + "', this might be a new version that we don't yet know about. Attemping download anyway..."); - return new GenericVersion(this.version); + getLog().warn("Unrecognised MongoDB version '" + this.version + "', this might be a new version that we " + + "don't yet know about. Attemping download anyway..."); + return Versions.withFeatures(new IVersion() { + @Override + public String asInDownloadPath() { + return version; + } + }); } } diff --git a/src/main/java/com/github/joelittlejohn/embedmongo/StopEmbeddedMongoMojo.java b/src/main/java/com/github/joelittlejohn/embedmongo/StopEmbeddedMongoMojo.java index c8bd407cfbc3a56688997fb5f8d3442cf82e4c29..c786546f43e73dc162ce8774cacdedd9dc2e3ef8 100644 --- a/src/main/java/com/github/joelittlejohn/embedmongo/StopEmbeddedMongoMojo.java +++ b/src/main/java/com/github/joelittlejohn/embedmongo/StopEmbeddedMongoMojo.java @@ -32,10 +32,11 @@ public class StopEmbeddedMongoMojo extends AbstractMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { - Object mongod = getPluginContext().get(StartEmbeddedMongoMojo.MONGOD_CONTEXT_PROPERTY_NAME); + MongodProcess mongod = (MongodProcess)getPluginContext().get(StartEmbeddedMongoMojo + .MONGOD_CONTEXT_PROPERTY_NAME); if (mongod != null) { - ((MongodProcess) mongod).stop(); + mongod.stop(); } else { throw new MojoFailureException("No mongod process found, it appears embedmongo:start was not called"); } diff --git a/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java b/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java index e67cf2916bbe118c54b1b1ea8f639853e07d8c1c..99e1a5f2f8e0894e66ec7c1d848d0de78eec5572 100644 --- a/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java +++ b/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java @@ -15,6 +15,7 @@ */ package com.github.joelittlejohn.embedmongo.log; +import de.flapdoodle.embed.mongo.Command; import de.flapdoodle.embed.mongo.config.MongodProcessOutputConfig; import de.flapdoodle.embed.process.config.io.ProcessOutput; import de.flapdoodle.embed.process.io.NamedOutputStreamProcessor; @@ -35,7 +36,7 @@ public class Loggers { } public static ProcessOutput console() { - return MongodProcessOutputConfig.getDefaultInstance(); + return MongodProcessOutputConfig.getDefaultInstance(Command.MongoD); } public static ProcessOutput none() {