diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java index 99e5c786d..bed47de65 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java @@ -42,8 +42,10 @@ import com.mongodb.MongoClient; * @author Mark Paluch * @see MongoConfigurationSupport * @see AbstractMongoClientConfiguration + * @deprecated since 2.2 in favor of {@link AbstractMongoClientConfiguration}. */ @Configuration +@Deprecated public abstract class AbstractMongoConfiguration extends MongoConfigurationSupport { /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoAdmin.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoAdmin.java index eca8d2581..e48c33680 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoAdmin.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoAdmin.java @@ -34,14 +34,29 @@ import com.mongodb.client.MongoDatabase; @ManagedResource(description = "Mongo Admin Operations") public class MongoAdmin implements MongoAdminOperations { - private final MongoClient mongoClient; + private final Object mongoClient; + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link MongoAdmin(com.mongodb.client.MongoClient)}. + */ + @Deprecated public MongoAdmin(MongoClient mongoClient) { Assert.notNull(mongoClient, "MongoClient must not be null!"); this.mongoClient = mongoClient; } + /** + * @param client the underlying {@link com.mongodb.client.MongoClient} used for data access. + * @since 2.2 + */ + public MongoAdmin(com.mongodb.client.MongoClient client) { + + Assert.notNull(client, "Client must not be null!"); + this.mongoClient = client; + } + /* (non-Javadoc) * @see org.springframework.data.mongodb.core.core.MongoAdminOperations#dropDatabase(java.lang.String) */ @@ -73,6 +88,11 @@ public class MongoAdmin implements MongoAdminOperations { } MongoDatabase getDB(String databaseName) { - return mongoClient.getDatabase(databaseName); + + if (mongoClient instanceof MongoClient) { + return ((MongoClient) mongoClient).getDatabase(databaseName); + } + + return ((com.mongodb.client.MongoClient) mongoClient).getDatabase(databaseName); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientFactoryBean.java index 09dc2fd52..fccb8c025 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientFactoryBean.java @@ -38,7 +38,11 @@ import com.mongodb.ServerAddress; * @author Christoph Strobl * @author Mark Paluch * @since 1.7 + * @deprecated since 2.2 - There is no replacement for this {@link org.springframework.beans.factory.FactoryBean} at + * this time. However moving forward the {@link org.springframework.beans.factory.FactoryBean} will be + * suitable to provide instances of {@link com.mongodb.client.MongoClient}. */ +@Deprecated public class MongoClientFactoryBean extends AbstractFactoryBean implements PersistenceExceptionTranslator { private static final PersistenceExceptionTranslator DEFAULT_EXCEPTION_TRANSLATOR = new MongoExceptionTranslator(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientOptionsFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientOptionsFactoryBean.java index 249815ccf..84c394188 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientOptionsFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientOptionsFactoryBean.java @@ -37,7 +37,11 @@ import com.mongodb.WriteConcern; * @author Oliver Gierke * @author Mark Paluch * @since 1.7 + * @deprecated since 2.2 - There is no replacement for this {@link org.springframework.beans.factory.FactoryBean}. + * However moving forward there will be a dedicated factory bean for {@link com.mongodb.MongoClientSettings} + * replacing {@link MongoClientOptions}. */ +@Deprecated public class MongoClientOptionsFactoryBean extends AbstractFactoryBean { private static final MongoClientOptions DEFAULT_MONGO_OPTIONS = MongoClientOptions.builder().build(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 409b84f5d..79e1d603a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -216,7 +216,9 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, * * @param mongoClient must not be {@literal null}. * @param databaseName must not be {@literal null} or empty. + * @deprecated since 2.2 in favor of {@link #MongoTemplate(com.mongodb.client.MongoClient, String)}. */ + @Deprecated public MongoTemplate(MongoClient mongoClient, String databaseName) { this(new SimpleMongoDbFactory(mongoClient, databaseName), (MongoConverter) null); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java index 720adaf17..4ed67a9c4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleMongoDbFactory.java @@ -21,9 +21,7 @@ import com.mongodb.ClientSessionOptions; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; -import com.mongodb.WriteConcern; import com.mongodb.client.ClientSession; -import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; /** @@ -35,7 +33,9 @@ import com.mongodb.client.MongoDatabase; * @author Christoph Strobl * @author George Moraitis * @author Mark Paluch + * @deprecated since 2.2 in favor of {@link SimpleMongoClientDbFactory}. */ +@Deprecated public class SimpleMongoDbFactory extends MongoDbFactorySupport implements DisposableBean { /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AbstractMonitor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AbstractMonitor.java index a3bb3a2df..0ff082926 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AbstractMonitor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AbstractMonitor.java @@ -15,10 +15,15 @@ */ package org.springframework.data.mongodb.monitor; +import java.util.List; +import java.util.stream.Collectors; + import org.bson.Document; import com.mongodb.MongoClient; +import com.mongodb.ServerAddress; import com.mongodb.client.MongoDatabase; +import com.mongodb.connection.ServerDescription; /** * Base class to encapsulate common configuration settings when connecting to a database @@ -29,21 +34,54 @@ import com.mongodb.client.MongoDatabase; */ public abstract class AbstractMonitor { - private final MongoClient mongoClient; + private final Object mongoClient; + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #AbstractMonitor(com.mongodb.client.MongoClient)} + */ + @Deprecated protected AbstractMonitor(MongoClient mongoClient) { this.mongoClient = mongoClient; } + /** + * @param mongoClient + * @since 2.2 + */ + protected AbstractMonitor(com.mongodb.client.MongoClient mongoClient) { + this.mongoClient = mongoClient; + } + public Document getServerStatus() { return getDb("admin").runCommand(new Document("serverStatus", 1).append("rangeDeleter", 1).append("repl", 1)); } public MongoDatabase getDb(String databaseName) { - return mongoClient.getDatabase(databaseName); + + if (mongoClient instanceof MongoClient) { + return ((MongoClient) mongoClient).getDatabase(databaseName); + } + + return ((com.mongodb.client.MongoClient) mongoClient).getDatabase(databaseName); } protected MongoClient getMongoClient() { - return mongoClient; + + if (mongoClient instanceof MongoClient) { + return (MongoClient) mongoClient; + } + + throw new IllegalStateException("A com.mongodb.MongoClient is required but was com.mongodb.client.MongoClient"); + } + + protected List hosts() { + + if (mongoClient instanceof MongoClient) { + return ((MongoClient) mongoClient).getServerAddressList(); + } + + return ((com.mongodb.client.MongoClient) mongoClient).getClusterDescription().getServerDescriptions().stream() + .map(ServerDescription::getAddress).collect(Collectors.toList()); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AssertMetrics.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AssertMetrics.java index 83e05cc96..85bad3e70 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AssertMetrics.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/AssertMetrics.java @@ -32,10 +32,25 @@ import com.mongodb.Mongo; @ManagedResource(description = "Assertion Metrics") public class AssertMetrics extends AbstractMonitor { + /** + * + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #AssertMetrics(com.mongodb.client.MongoClient)} + */ + @Deprecated public AssertMetrics(MongoClient mongoClient) { super(mongoClient); } + /** + * + * @param mongoClient + * @since 2.2 + */ + public AssertMetrics(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Regular") public int getRegular() { return getBtree("regular"); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BackgroundFlushingMetrics.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BackgroundFlushingMetrics.java index dc3dd7bc3..ba7da4db3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BackgroundFlushingMetrics.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BackgroundFlushingMetrics.java @@ -32,10 +32,23 @@ import com.mongodb.MongoClient; @ManagedResource(description = "Background Flushing Metrics") public class BackgroundFlushingMetrics extends AbstractMonitor { + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #BackgroundFlushingMetrics(com.mongodb.client.MongoClient)} + */ + @Deprecated public BackgroundFlushingMetrics(MongoClient mongoClient) { super(mongoClient); } + /** + * @param mongoClient + * @since 2.2 + */ + public BackgroundFlushingMetrics(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Flushes") public int getFlushes() { return getFlushingData("flushes", java.lang.Integer.class); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BtreeIndexCounters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BtreeIndexCounters.java index 8d72c21f5..0bdb4e86e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BtreeIndexCounters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/BtreeIndexCounters.java @@ -30,10 +30,23 @@ import com.mongodb.MongoClient; @ManagedResource(description = "Btree Metrics") public class BtreeIndexCounters extends AbstractMonitor { + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #BtreeIndexCounters(com.mongodb.client.MongoClient)} + */ + @Deprecated public BtreeIndexCounters(MongoClient mongoClient) { super(mongoClient); } + /** + * @param mongoClient + * @since 2.2 + */ + public BtreeIndexCounters(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.GAUGE, displayName = "Accesses") public int getAccesses() { return getBtree("accesses"); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ConnectionMetrics.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ConnectionMetrics.java index cdde95093..88502cb17 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ConnectionMetrics.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ConnectionMetrics.java @@ -30,10 +30,24 @@ import com.mongodb.MongoClient; @ManagedResource(description = "Connection metrics") public class ConnectionMetrics extends AbstractMonitor { + /** + * + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #ConnectionMetrics(com.mongodb.client.MongoClient)} + */ + @Deprecated public ConnectionMetrics(MongoClient mongoClient) { super(mongoClient); } + /** + * @param mongoClient + * @since 2.2 + */ + public ConnectionMetrics(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.GAUGE, displayName = "Current Connections") public int getCurrent() { return getConnectionData("current", java.lang.Integer.class); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/GlobalLockMetrics.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/GlobalLockMetrics.java index 8e185673c..239ed9f00 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/GlobalLockMetrics.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/GlobalLockMetrics.java @@ -31,10 +31,23 @@ import com.mongodb.MongoClient; @ManagedResource(description = "Global Lock Metrics") public class GlobalLockMetrics extends AbstractMonitor { + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #GlobalLockMetrics(com.mongodb.client.MongoClient)} + */ + @Deprecated public GlobalLockMetrics(MongoClient mongoClient) { super(mongoClient); } + /** + * @param mongoClient + * @since 2.2 + */ + public GlobalLockMetrics(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Total time") public double getTotalTime() { return getGlobalLockData("totalTime", java.lang.Double.class); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/MemoryMetrics.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/MemoryMetrics.java index 8349a2b9a..cde524252 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/MemoryMetrics.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/MemoryMetrics.java @@ -30,10 +30,23 @@ import com.mongodb.MongoClient; @ManagedResource(description = "Memory Metrics") public class MemoryMetrics extends AbstractMonitor { + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #MemoryMetrics(com.mongodb.client.MongoClient)} + */ + @Deprecated public MemoryMetrics(MongoClient mongoClient) { super(mongoClient); } + /** + * @param mongoClient + * @since 2.2 + */ + public MemoryMetrics(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Memory address size") public int getBits() { return getMemData("bits", java.lang.Integer.class); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/OperationCounters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/OperationCounters.java index 86c005c63..3ef8f069c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/OperationCounters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/OperationCounters.java @@ -31,10 +31,23 @@ import com.mongodb.MongoClient; @ManagedResource(description = "Operation Counters") public class OperationCounters extends AbstractMonitor { + /** + * @param mongoClient + * @deprecated since 2.2 in favor of {@link #OperationCounters(com.mongodb.client.MongoClient)} + */ + @Deprecated public OperationCounters(MongoClient mongoClient) { super(mongoClient); } + /** + * @param mongoClient + * @since 2.2 + */ + public OperationCounters(com.mongodb.client.MongoClient mongoClient) { + super(mongoClient); + } + @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Insert operation count") public int getInsertCount() { return getOpCounter("insert"); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java index 43911aa1b..3ab17bcd4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java @@ -23,6 +23,7 @@ import org.springframework.jmx.export.annotation.ManagedResource; import org.springframework.jmx.support.MetricType; import com.mongodb.MongoClient; +import org.springframework.util.StringUtils; /** * Expose basic server information via JMX @@ -51,7 +52,7 @@ public class ServerInfo extends AbstractMonitor { * UnknownHostException is not necessary anymore, but clients could have * called this method in a try..catch(UnknownHostException) already */ - return getMongoClient().getAddress().getHost(); + return StringUtils.collectionToDelimitedString(hosts(), ";"); } @ManagedMetric(displayName = "Uptime Estimate") diff --git a/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java b/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java index ba2435712..5226cf1e9 100644 --- a/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java +++ b/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java @@ -1,3 +1,4 @@ + /* * Copyright 2014-2019 the original author or authors. * @@ -13,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; -import com.mongodb.Mongo; import com.mongodb.MongoClient; /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/SessionAwareMethodInterceptorUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/SessionAwareMethodInterceptorUnitTests.java index 0310c4084..cd221cb03 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/SessionAwareMethodInterceptorUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/SessionAwareMethodInterceptorUnitTests.java @@ -16,7 +16,7 @@ package org.springframework.data.mongodb; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.mockito.Mockito.any; @@ -34,7 +34,7 @@ import org.springframework.data.mongodb.SessionAwareMethodInterceptor.MethodCach import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.ClassUtils; -import com.mongodb.MongoClient; +import com.mongodb.MongoClientSettings; import com.mongodb.client.ClientSession; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -138,7 +138,7 @@ public class SessionAwareMethodInterceptorUnitTests { MongoDatabase otherDb = mock(MongoDatabase.class); when(targetDatabase.withCodecRegistry(any())).thenReturn(otherDb); - MongoDatabase target = database.withCodecRegistry(MongoClient.getDefaultCodecRegistry()); + MongoDatabase target = database.withCodecRegistry(MongoClientSettings.getDefaultCodecRegistry()); assertThat(target).isInstanceOf(Proxy.class).isNotSameAs(database).isNotSameAs(targetDatabase); target.drop(); @@ -152,7 +152,7 @@ public class SessionAwareMethodInterceptorUnitTests { MongoCollection otherCollection = mock(MongoCollection.class); when(targetCollection.withCodecRegistry(any())).thenReturn(otherCollection); - MongoCollection target = collection.withCodecRegistry(MongoClient.getDefaultCodecRegistry()); + MongoCollection target = collection.withCodecRegistry(MongoClientSettings.getDefaultCodecRegistry()); assertThat(target).isInstanceOf(Proxy.class).isNotSameAs(collection).isNotSameAs(targetCollection); target.drop(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java index 77a95a22e..1e386988a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java @@ -38,11 +38,12 @@ import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.stereotype.Repository; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * Integration tests for auditing via Java config. @@ -65,7 +66,7 @@ public class AuditingViaJavaConfigRepositoriesTests { @Configuration @EnableMongoAuditing(auditorAwareRef = "auditorProvider") @EnableMongoRepositories(basePackageClasses = AuditablePersonRepository.class, considerNestedRepositories = true) - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override protected String getDatabaseName() { @@ -74,7 +75,7 @@ public class AuditingViaJavaConfigRepositoriesTests { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Bean @@ -197,11 +198,11 @@ public class AuditingViaJavaConfigRepositoriesTests { @Configuration @EnableMongoAuditing - static class SimpleConfig extends AbstractMongoConfiguration { + static class SimpleConfig extends AbstractMongoClientConfiguration { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java index 5caf63988..95b19958e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java @@ -29,10 +29,11 @@ import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.data.mongodb.MongoDbFactory; +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; import org.springframework.data.mongodb.core.SimpleMongoDbFactory; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.util.ReflectionTestUtils; -import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.MongoURI; import com.mongodb.WriteConcern; @@ -59,7 +60,7 @@ public class MongoDbFactoryParserIntegrationTests { @Test // DATAMONGO-2199 public void testWriteConcern() throws Exception { - SimpleMongoDbFactory dbFactory = new SimpleMongoDbFactory(new MongoClient("localhost"), "database"); + SimpleMongoClientDbFactory dbFactory = new SimpleMongoClientDbFactory(MongoTestUtils.client(), "database"); dbFactory.setWriteConcern(WriteConcern.ACKNOWLEDGED); dbFactory.getDb(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java index 39e595c50..5fd906c65 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java @@ -40,7 +40,7 @@ import org.springframework.data.util.Version; import org.springframework.test.util.ReflectionTestUtils; import com.mongodb.ClientSessionOptions; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; import com.mongodb.client.ClientSession; /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultScriptOperationsTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultScriptOperationsTests.java index 918f6d933..ea1f178ef 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultScriptOperationsTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultScriptOperationsTests.java @@ -32,12 +32,13 @@ import org.springframework.dao.UncategorizedDataAccessException; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.script.ExecutableMongoScript; import org.springframework.data.mongodb.core.script.NamedMongoScript; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.util.Version; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * Integration tests for {@link DefaultScriptOperations}. @@ -59,14 +60,13 @@ public class DefaultScriptOperationsTests { @Bean public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Bean public MongoTemplate template() throws Exception { return new MongoTemplate(mongoClient(), DB_NAME); } - } static final String JAVASCRIPT_COLLECTION_NAME = "system.js"; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupportTests.java index 9aff5442e..d2ebb4883 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupportTests.java @@ -43,8 +43,7 @@ import org.springframework.data.mongodb.core.index.GeospatialIndex; import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.NearQuery; - -import com.mongodb.MongoClient; +import org.springframework.data.mongodb.test.util.MongoTestUtils; /** * Integration tests for {@link ExecutableFindOperationSupport}. @@ -67,7 +66,8 @@ public class ExecutableFindOperationSupportTests { @Before public void setUp() { - template = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "ExecutableFindOperationSupportTests")); + template = new MongoTemplate( + new SimpleMongoClientDbFactory(MongoTestUtils.client(), "ExecutableFindOperationSupportTests")); template.dropCollection(STAR_WARS); template.dropCollection(STAR_WARS_PLANETS); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableRemoveOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableRemoveOperationSupportTests.java index f350e3263..b12cdacf5 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableRemoveOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableRemoveOperationSupportTests.java @@ -27,8 +27,8 @@ import org.junit.Before; import org.junit.Test; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Field; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; import com.mongodb.client.result.DeleteResult; /** @@ -48,7 +48,8 @@ public class ExecutableRemoveOperationSupportTests { @Before public void setUp() { - template = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "ExecutableRemoveOperationSupportTests")); + template = new MongoTemplate( + new SimpleMongoClientDbFactory(MongoTestUtils.client(), "ExecutableRemoveOperationSupportTests")); template.dropCollection(STAR_WARS); han = new Person(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableUpdateOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableUpdateOperationSupportTests.java index 55c9ff37e..4310ca64e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableUpdateOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableUpdateOperationSupportTests.java @@ -30,8 +30,8 @@ import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; import com.mongodb.client.result.UpdateResult; /** @@ -51,7 +51,8 @@ public class ExecutableUpdateOperationSupportTests { @Before public void setUp() { - template = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "ExecutableUpdateOperationSupportTests")); + template = new MongoTemplate( + new SimpleMongoClientDbFactory(MongoTestUtils.client(), "ExecutableUpdateOperationSupportTests")); template.dropCollection(STAR_WARS); han = new Person(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateCollationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateCollationTests.java index 6c4edbc35..70bf70777 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateCollationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateCollationTests.java @@ -27,15 +27,16 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.query.Collation; import org.springframework.data.mongodb.core.query.Collation.Alternate; import org.springframework.data.mongodb.core.query.Collation.ComparisonLevel; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.util.Version; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * @author Christoph Strobl @@ -48,11 +49,11 @@ public class MongoTemplateCollationTests { public static final String COLLECTION_NAME = "collation-1"; @Configuration - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateDbRefTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateDbRefTests.java index 73be20536..ad7d9a823 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateDbRefTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateDbRefTests.java @@ -28,15 +28,14 @@ import java.util.List; import org.bson.types.ObjectId; import org.junit.Before; import org.junit.Test; - import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.convert.LazyLoadingProxy; import org.springframework.data.mongodb.core.convert.LazyLoadingTestUtils; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.MongoId; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; import com.mongodb.client.model.Filters; /** @@ -53,7 +52,7 @@ public class MongoTemplateDbRefTests { @Before public void setUp() { - template = new MongoTemplate(new MongoClient(), "mongo-template-dbref-tests"); + template = new MongoTemplate(MongoTestUtils.client(), "mongo-template-dbref-tests"); template.dropCollection(RefCycleLoadingIntoDifferentTypeRoot.class); template.dropCollection(RefCycleLoadingIntoDifferentTypeIntermediate.class); @@ -65,7 +64,7 @@ public class MongoTemplateDbRefTests { template.dropCollection(WithListRefToAnotherDb.class); template.dropCollection(WithLazyListRefToAnotherDb.class); - otherDbTemplate = new MongoTemplate(new MongoClient(), "mongo-template-dbref-tests-other-db"); + otherDbTemplate = new MongoTemplate(MongoTestUtils.client(), "mongo-template-dbref-tests-other-db"); otherDbTemplate.dropCollection(JustSomeType.class); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTransactionTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTransactionTests.java index 5c533423e..92654379a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTransactionTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTransactionTests.java @@ -39,7 +39,7 @@ import org.springframework.data.annotation.Id; import org.springframework.data.domain.Persistable; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.MongoTransactionManager; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.test.util.AfterTransactionAssertion; import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; @@ -52,8 +52,8 @@ import org.springframework.test.context.transaction.AfterTransaction; import org.springframework.test.context.transaction.BeforeTransaction; import org.springframework.transaction.annotation.Transactional; -import com.mongodb.MongoClient; import com.mongodb.ReadPreference; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.model.Filters; @@ -73,7 +73,7 @@ public class MongoTemplateTransactionTests { static final String COLLECTION_NAME = "assassins"; @Configuration - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Bean public MongoClient mongoClient() { @@ -109,7 +109,7 @@ public class MongoTemplateTransactionTests { } @AfterTransaction - public void verifyDbState() { + public void verifyDbState() { MongoCollection collection = client.getDatabase(DB_NAME).withReadPreference(ReadPreference.primary()) .getCollection(COLLECTION_NAME); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateUnitTests.java index 2190cb334..eed5cbd9d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateUnitTests.java @@ -88,7 +88,6 @@ import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.CollectionUtils; import com.mongodb.DB; -import com.mongodb.MongoClient; import com.mongodb.MongoException; import com.mongodb.MongoNamespace; import com.mongodb.ReadPreference; @@ -97,6 +96,7 @@ import com.mongodb.client.AggregateIterable; import com.mongodb.client.DistinctIterable; import com.mongodb.client.FindIterable; import com.mongodb.client.MapReduceIterable; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateValidationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateValidationTests.java index 342e96392..d0b68acf2 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateValidationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateValidationTests.java @@ -32,16 +32,18 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import org.springframework.data.mongodb.core.CollectionOptions.ValidationOptions; import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.util.Version; import org.springframework.lang.Nullable; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; import com.mongodb.client.model.ValidationAction; import com.mongodb.client.model.ValidationLevel; @@ -61,11 +63,11 @@ public class MongoTemplateValidationTests { static final String COLLECTION_NAME = "validation-1"; @Configuration - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/NoExplicitIdTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/NoExplicitIdTests.java index b2b1078f1..19a373068 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/NoExplicitIdTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/NoExplicitIdTests.java @@ -25,16 +25,16 @@ import java.util.Optional; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * Integration tests for DATAMONGO-1289. @@ -48,7 +48,7 @@ public class NoExplicitIdTests { @Configuration @EnableMongoRepositories(considerNestedRepositories = true) - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override protected String getDatabaseName() { @@ -57,7 +57,7 @@ public class NoExplicitIdTests { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonExampleAppConfig.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonExampleAppConfig.java index c3817e54a..c5cbb7bea 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonExampleAppConfig.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonExampleAppConfig.java @@ -17,15 +17,16 @@ package org.springframework.data.mongodb.core; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; @Configuration public class PersonExampleAppConfig { @Bean public MongoClient mongoClient() { - return new MongoClient("localhost"); + return MongoTestUtils.client(); } @Bean diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/QueryByExampleTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/QueryByExampleTests.java index ae899d070..615534000 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/QueryByExampleTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/QueryByExampleTests.java @@ -32,8 +32,7 @@ import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.UntypedExampleMatcher; - -import com.mongodb.MongoClient; +import org.springframework.data.mongodb.test.util.MongoTestUtils; /** * Integration tests for Query-by-example. @@ -50,7 +49,7 @@ public class QueryByExampleTests { @Before public void setUp() { - operations = new MongoTemplate(new MongoClient(), "query-by-example"); + operations = new MongoTemplate(MongoTestUtils.client(), "query-by-example"); operations.remove(new Query(), Person.class); p1 = new Person(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java index 0f94853ec..efaece8d2 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java @@ -48,8 +48,8 @@ import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.NearQuery; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; import com.mongodb.reactivestreams.client.MongoClients; /** @@ -70,7 +70,8 @@ public class ReactiveFindOperationSupportTests { @Before public void setUp() { - blocking = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "ExecutableFindOperationSupportTests")); + blocking = new MongoTemplate( + new SimpleMongoClientDbFactory(MongoTestUtils.client(), "ExecutableFindOperationSupportTests")); recreateCollection(STAR_WARS, false); insertObjects(); @@ -161,8 +162,7 @@ public class ReactiveFindOperationSupportTests { public void findAllByWithCollectionUsingMappingInformation() { template.query(Jedi.class).inCollection(STAR_WARS).matching(query(where("name").is("luke"))).all() - .as(StepVerifier::create) - .consumeNextWith(it -> assertThat(it).isInstanceOf(Jedi.class)) // + .as(StepVerifier::create).consumeNextWith(it -> assertThat(it).isInstanceOf(Jedi.class)) // .verifyComplete(); } @@ -170,8 +170,7 @@ public class ReactiveFindOperationSupportTests { public void findAllByWithCollection() { template.query(Human.class).inCollection(STAR_WARS).matching(query(where("firstname").is("luke"))).all() - .as(StepVerifier::create) - .expectNextCount(1) // + .as(StepVerifier::create).expectNextCount(1) // .verifyComplete(); } @@ -179,8 +178,7 @@ public class ReactiveFindOperationSupportTests { public void findAllByWithProjection() { template.query(Person.class).as(Jedi.class).matching(query(where("firstname").is("luke"))).all() - .as(StepVerifier::create) - .consumeNextWith(it -> assertThat(it).isInstanceOf(Jedi.class)) // + .as(StepVerifier::create).consumeNextWith(it -> assertThat(it).isInstanceOf(Jedi.class)) // .verifyComplete(); } @@ -188,8 +186,7 @@ public class ReactiveFindOperationSupportTests { public void findAllByWithClosedInterfaceProjection() { template.query(Person.class).as(PersonProjection.class).matching(query(where("firstname").is("luke"))).all() - .as(StepVerifier::create) - .consumeNextWith(it -> { + .as(StepVerifier::create).consumeNextWith(it -> { assertThat(it).isInstanceOf(PersonProjection.class); assertThat(it.getFirstname()).isEqualTo("luke"); @@ -410,8 +407,7 @@ public class ReactiveFindOperationSupportTests { public void countShouldReturnNrOfElementsMatchingQuery() { template.query(Person.class).matching(query(where("firstname").is(luke.getFirstname()))).count() - .as(StepVerifier::create) - .expectNext(1L) // + .as(StepVerifier::create).expectNext(1L) // .verifyComplete(); } @@ -432,8 +428,7 @@ public class ReactiveFindOperationSupportTests { public void existsShouldReturnTrueIfAtLeastOneElementMatchesQuery() { template.query(Person.class).matching(query(where("firstname").is(luke.getFirstname()))).exists() - .as(StepVerifier::create) - .expectNext(true) // + .as(StepVerifier::create).expectNext(true) // .verifyComplete(); } @@ -449,8 +444,7 @@ public class ReactiveFindOperationSupportTests { public void distinctReturnsEmptyListIfNoMatchFound() { template.query(Person.class).distinct("actually-not-property-in-use").as(String.class).all() - .as(StepVerifier::create) - .verifyComplete(); + .as(StepVerifier::create).verifyComplete(); } @Test // DATAMONGO-1761 @@ -596,8 +590,7 @@ public class ReactiveFindOperationSupportTests { blocking.save(luke); template.query(Object.class).inCollection(STAR_WARS).distinct("father").as(Jedi.class).all() - .as(StepVerifier::create) - .expectNext(new Jedi("anakin")) // + .as(StepVerifier::create).expectNext(new Jedi("anakin")) // .verifyComplete(); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupportTests.java index 8a5ef3566..16daea720 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupportTests.java @@ -26,8 +26,8 @@ import org.junit.Before; import org.junit.Test; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Field; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; import com.mongodb.reactivestreams.client.MongoClients; /** @@ -47,7 +47,8 @@ public class ReactiveRemoveOperationSupportTests { @Before public void setUp() { - blocking = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "ExecutableRemoveOperationSupportTests")); + blocking = new MongoTemplate( + new SimpleMongoClientDbFactory(MongoTestUtils.client(), "ExecutableRemoveOperationSupportTests")); blocking.dropCollection(STAR_WARS); han = new Person(); @@ -83,8 +84,8 @@ public class ReactiveRemoveOperationSupportTests { public void removeAllMatchingWithAlternateDomainTypeAndCollection() { template.remove(Jedi.class).inCollection(STAR_WARS).matching(query(where("name").is("luke"))).all() - .as(StepVerifier::create) - .consumeNextWith(actual -> assertThat(actual.getDeletedCount()).isEqualTo(1L)).verifyComplete(); + .as(StepVerifier::create).consumeNextWith(actual -> assertThat(actual.getDeletedCount()).isEqualTo(1L)) + .verifyComplete(); } @Test // DATAMONGO-1719 diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveUpdateOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveUpdateOperationSupportTests.java index 18c1deb3f..9b385014f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveUpdateOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveUpdateOperationSupportTests.java @@ -20,6 +20,7 @@ import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; import lombok.Data; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import reactor.test.StepVerifier; import org.bson.BsonString; @@ -50,7 +51,7 @@ public class ReactiveUpdateOperationSupportTests { @Before public void setUp() { - blocking = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "ExecutableUpdateOperationSupportTests")); + blocking = new MongoTemplate(new SimpleMongoClientDbFactory(MongoTestUtils.client(), "ExecutableUpdateOperationSupportTests")); blocking.dropCollection(STAR_WARS); han = new Person(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java index 92978ce46..954c0f905 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java @@ -43,7 +43,6 @@ import org.junit.Ignore; import org.junit.Test; import org.junit.rules.TestRule; import org.mockito.Mockito; - import org.springframework.aop.Advisor; import org.springframework.aop.framework.Advised; import org.springframework.dao.DataAccessException; @@ -71,8 +70,8 @@ import org.springframework.data.util.Version; import org.springframework.test.util.ReflectionTestUtils; import com.mongodb.ClientSessionOptions; -import com.mongodb.MongoClient; import com.mongodb.client.ClientSession; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -98,7 +97,7 @@ public class SessionBoundMongoTemplateTests { client = MongoTestUtils.replSetClient(); - MongoDbFactory factory = new SimpleMongoDbFactory(client, "session-bound-mongo-template-tests") { + MongoDbFactory factory = new SimpleMongoClientDbFactory(client, "session-bound-mongo-template-tests") { @Override public MongoDatabase getDb() throws DataAccessException { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateUnitTests.java index c79c2b5bc..08f1660bf 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateUnitTests.java @@ -31,7 +31,6 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.MongoDbFactory; @@ -46,12 +45,12 @@ import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; -import com.mongodb.MongoClient; import com.mongodb.client.AggregateIterable; import com.mongodb.client.ClientSession; import com.mongodb.client.DistinctIterable; import com.mongodb.client.FindIterable; import com.mongodb.client.MapReduceIterable; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; @@ -125,7 +124,7 @@ public class SessionBoundMongoTemplateUnitTests { when(cursor.hasNext()).thenReturn(false); when(findIterable.projection(any())).thenReturn(findIterable); - factory = new SimpleMongoDbFactory(client, "foo"); + factory = new SimpleMongoClientDbFactory(client, "foo"); this.mappingContext = new MongoMappingContext(); this.converter = new MappingMongoConverter(new DefaultDbRefResolver(factory), mappingContext); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java index dc87ab633..d9191b996 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SimpleMongoDbFactoryUnitTests.java @@ -26,14 +26,13 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - import org.springframework.aop.framework.AopProxyUtils; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.test.util.ReflectionTestUtils; -import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.ClientSession; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; /** @@ -64,9 +63,9 @@ public class SimpleMongoDbFactoryUnitTests { @Test // DATADOC-254 @SuppressWarnings("deprecation") public void allowsDatabaseNames() { - new SimpleMongoDbFactory(mongo, "foo-bar"); - new SimpleMongoDbFactory(mongo, "foo_bar"); - new SimpleMongoDbFactory(mongo, "foo01231bar"); + new SimpleMongoClientDbFactory(mongo, "foo-bar"); + new SimpleMongoClientDbFactory(mongo, "foo_bar"); + new SimpleMongoClientDbFactory(mongo, "foo01231bar"); } @Test // DATADOC-295 @@ -93,7 +92,7 @@ public class SimpleMongoDbFactoryUnitTests { when(mongo.getDatabase("foo")).thenReturn(database); - MongoDbFactory factory = new SimpleMongoDbFactory(mongo, "foo"); + MongoDbFactory factory = new SimpleMongoClientDbFactory(mongo, "foo"); MongoDbFactory wrapped = factory.withSession(clientSession).withSession(clientSession); InvocationHandler invocationHandler = Proxy.getInvocationHandler(wrapped.getDb()); @@ -105,7 +104,7 @@ public class SimpleMongoDbFactoryUnitTests { } private void rejectsDatabaseName(String databaseName) { - assertThatThrownBy(() -> new SimpleMongoDbFactory(mongo, databaseName)) + assertThatThrownBy(() -> new SimpleMongoClientDbFactory(mongo, databaseName)) .isInstanceOf(IllegalArgumentException.class); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/TestMongoConfiguration.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/TestMongoConfiguration.java index 5a3225fce..6a36b3488 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/TestMongoConfiguration.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/TestMongoConfiguration.java @@ -21,13 +21,14 @@ import java.util.List; import org.springframework.context.annotation.Bean; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.CustomConversions; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.convert.MongoCustomConversions; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; -public class TestMongoConfiguration extends AbstractMongoConfiguration { +public class TestMongoConfiguration extends AbstractMongoClientConfiguration { @Override public String getDatabaseName() { @@ -37,7 +38,7 @@ public class TestMongoConfiguration extends AbstractMongoConfiguration { @Override @Bean public MongoClient mongoClient() { - return new MongoClient("127.0.0.1", 27017); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/auditing/MongoTemplateAuditingTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/auditing/MongoTemplateAuditingTests.java index 5fcd868d0..ff7b3ab26 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/auditing/MongoTemplateAuditingTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/auditing/MongoTemplateAuditingTests.java @@ -27,15 +27,17 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.annotation.Version; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import org.springframework.data.mongodb.config.EnableMongoAuditing; import org.springframework.data.mongodb.core.KAuditableVersionedEntity; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * @author Christoph Strobl @@ -45,11 +47,11 @@ public class MongoTemplateAuditingTests { @Configuration @EnableMongoAuditing - static class Conf extends AbstractMongoConfiguration { + static class Conf extends AbstractMongoClientConfiguration { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java index 652dad9ed..21c41443a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java @@ -16,7 +16,7 @@ package org.springframework.data.mongodb.core.convert; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.mockito.Mockito.any; @@ -32,11 +32,12 @@ import org.junit.Before; import org.junit.Test; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.MongoDbFactory; -import org.springframework.data.mongodb.core.SimpleMongoDbFactory; +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; /** * Integration tests for {@link MappingMongoConverter}. @@ -54,10 +55,10 @@ public class MappingMongoConverterTests { @Before public void setUp() { - client = new MongoClient(); - client.dropDatabase("mapping-converter-tests"); + client = MongoClients.create(); + client.getDatabase("mapping-converter-tests").drop(); - MongoDbFactory factory = new SimpleMongoDbFactory(client, "mapping-converter-tests"); + MongoDbFactory factory = new SimpleMongoClientDbFactory(client, "mapping-converter-tests"); dbRefResolver = spy(new DefaultDbRefResolver(factory)); mappingContext = new MongoMappingContext(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java index fdb95ad3f..a96489eda 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java @@ -34,17 +34,18 @@ import org.springframework.data.geo.GeoResults; import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; import org.springframework.data.geo.Polygon; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.TestEntities; import org.springframework.data.mongodb.core.Venue; import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; import com.mongodb.WriteConcern; +import com.mongodb.client.MongoClient; /** * @author Christoph Strobl @@ -55,7 +56,7 @@ import com.mongodb.WriteConcern; public abstract class AbstractGeoSpatialTests { @Configuration - static class TestConfig extends AbstractMongoConfiguration { + static class TestConfig extends AbstractMongoClientConfiguration { @Override protected String getDatabaseName() { @@ -64,7 +65,7 @@ public abstract class AbstractGeoSpatialTests { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java index b2e780fc2..7350b84a4 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java @@ -37,7 +37,7 @@ import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.geo.GeoResults; import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.CollectionCallback; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.index.GeoSpatialIndexType; @@ -47,12 +47,13 @@ import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.test.util.BasicDbListBuilder; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; import com.mongodb.MongoException; import com.mongodb.WriteConcern; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; /** @@ -64,7 +65,7 @@ import com.mongodb.client.MongoCollection; public class GeoJsonTests { @Configuration - static class TestConfig extends AbstractMongoConfiguration { + static class TestConfig extends AbstractMongoClientConfiguration { @Override protected String getDatabaseName() { @@ -73,7 +74,7 @@ public class GeoJsonTests { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/IndexingIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/IndexingIntegrationTests.java index e2c8fe522..8be30857e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/IndexingIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/IndexingIntegrationTests.java @@ -38,6 +38,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.MongoCollectionUtils; import org.springframework.data.mongodb.MongoDbFactory; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; @@ -46,11 +47,12 @@ import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * Integration tests for index handling. @@ -69,11 +71,11 @@ public class IndexingIntegrationTests { @Autowired ConfigurableApplicationContext context; @Configuration - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreatorIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreatorIntegrationTests.java index c1a61e543..b5f2d01c2 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreatorIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreatorIntegrationTests.java @@ -27,7 +27,6 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.RuleChain; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.dao.DataIntegrityViolationException; @@ -39,12 +38,12 @@ import org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexRes import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.test.util.CleanMongoDB; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.util.Version; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; import com.mongodb.MongoCommandException; /** @@ -99,7 +98,7 @@ public class MongoPersistentEntityIndexCreatorIntegrationTests { expectedException.expectMessage("lastname"); expectedException.expectCause(IsInstanceOf. instanceOf(MongoCommandException.class)); - MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient(), "issue"); + MongoTemplate mongoTemplate = new MongoTemplate(MongoTestUtils.client(), "issue"); MongoPersistentEntityIndexCreator indexCreator = new MongoPersistentEntityIndexCreator(new MongoMappingContext(), mongoTemplate); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java index 44df7f475..03ee8c696 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java @@ -16,13 +16,13 @@ package org.springframework.data.mongodb.core.mapping; import org.springframework.context.annotation.Bean; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.mapping.event.LoggingEventListener; +import org.springframework.data.mongodb.test.util.MongoTestUtils; -import com.mongodb.Mongo; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; -public class GeoIndexedAppConfig extends AbstractMongoConfiguration { +public class GeoIndexedAppConfig extends AbstractMongoClientConfiguration { public static String GEO_DB = "database"; public static String GEO_COLLECTION = "geolocation"; @@ -35,7 +35,7 @@ public class GeoIndexedAppConfig extends AbstractMongoConfiguration { @Override @Bean public MongoClient mongoClient() { - return new MongoClient("127.0.0.1"); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedTests.java index e6419ca07..bf4fc5cfe 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedTests.java @@ -17,7 +17,6 @@ package org.springframework.data.mongodb.core.mapping; import static org.assertj.core.api.Assertions.*; -import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; @@ -31,11 +30,12 @@ import org.springframework.context.ApplicationContext; import org.springframework.dao.DataAccessException; import org.springframework.data.mongodb.core.CollectionCallback; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; import com.mongodb.MongoException; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -55,18 +55,18 @@ public class GeoIndexedTests { @Autowired MongoMappingContext mappingContext; @Before - public void setUp() throws Exception { + public void setUp() { cleanDb(); } @After - public void cleanUp() throws Exception { + public void cleanUp() { cleanDb(); } - private void cleanDb() throws UnknownHostException { + private void cleanDb() { - MongoClient mongo = new MongoClient(); + MongoClient mongo = MongoTestUtils.client(); MongoDatabase db = mongo.getDatabase(GeoIndexedAppConfig.GEO_DB); for (String coll : collectionsToDrop) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java index f489e18f4..04c998d13 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java @@ -20,6 +20,7 @@ import static org.springframework.data.mongodb.core.DocumentTestUtils.*; import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; +import com.mongodb.client.MongoClients; import lombok.AllArgsConstructor; import lombok.Data; @@ -33,7 +34,6 @@ import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; - import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.annotation.Id; @@ -47,8 +47,8 @@ import org.springframework.data.mongodb.repository.query.MongoEntityInformation; import org.springframework.data.mongodb.repository.support.MongoRepositoryFactory; import org.springframework.data.mongodb.repository.support.QuerydslMongoPredicateExecutor; -import com.mongodb.MongoClient; import com.mongodb.WriteConcern; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; /** @@ -75,7 +75,7 @@ public class ApplicationContextEventTests { @BeforeClass public static void beforeClass() { - mongo = new MongoClient(); + mongo = MongoClients.create(); } @AfterClass diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java index 565711eb5..e0aadffce 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java @@ -17,12 +17,14 @@ package org.springframework.data.mongodb.core.mapping.event; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import org.springframework.data.mongodb.test.util.MongoTestUtils; @Configuration -public class ApplicationContextEventTestsAppConfig extends AbstractMongoConfiguration { +public class ApplicationContextEventTestsAppConfig extends AbstractMongoClientConfiguration { @Override public String getDatabaseName() { @@ -32,7 +34,7 @@ public class ApplicationContextEventTestsAppConfig extends AbstractMongoConfigur @Override @Bean public MongoClient mongoClient() { - return new MongoClient("127.0.0.1"); + return MongoTestUtils.client(); } @Bean diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerTests.java index 9274a940b..a27200787 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerTests.java @@ -37,8 +37,10 @@ import org.springframework.dao.DataAccessException; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; import org.springframework.data.mongodb.core.SimpleMongoDbFactory; import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.ReplicaSet; import org.springframework.test.annotation.IfProfileValue; import org.springframework.util.ErrorHandler; @@ -71,7 +73,7 @@ public class DefaultMessageListenerContainerTests { @Before public void setUp() { - dbFactory = new SimpleMongoDbFactory(new MongoClient(), DATABASE_NAME); + dbFactory = new SimpleMongoClientDbFactory(MongoTestUtils.client(), DATABASE_NAME); template = new MongoTemplate(dbFactory); template.dropCollection(COLLECTION_NAME); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/TailableCursorTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/TailableCursorTests.java index 9e41f7e17..3ee84d5e6 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/TailableCursorTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/TailableCursorTests.java @@ -40,6 +40,7 @@ import org.springframework.data.mongodb.core.messaging.Message.MessageProperties import org.springframework.data.mongodb.core.messaging.TailableCursorRequest.TailableCursorRequestOptions; import com.mongodb.MongoClient; +import org.springframework.data.mongodb.test.util.MongoTestUtils; /** * Integration test for subscribing to a capped {@link com.mongodb.client.MongoCollection} inside the @@ -68,7 +69,7 @@ public class TailableCursorTests { @Before public void setUp() { - template = new MongoTemplate(new MongoClient(), "tailable-cursor-tests"); + template = new MongoTemplate(MongoTestUtils.client(), "tailable-cursor-tests"); template.dropCollection(User.class); template.createCollection(User.class, CollectionOptions.empty().capped().maxDocuments(10000).size(10000)); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaTests.java index a16edf506..93855a08b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaTests.java @@ -19,6 +19,7 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; +import com.mongodb.client.MongoClients; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -33,7 +34,7 @@ import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.util.Base64Utils; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * Integration tests for {@link Criteria} usage as part of a {@link Query}. @@ -58,7 +59,7 @@ public class CriteriaTests { @Before public void setUp() { - client = new MongoClient(); + client = MongoClients.create(); ops = new MongoTemplate(client, "criteria-tests"); ops.dropCollection(DocumentWithBitmask.class); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/MongoJsonSchemaTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/MongoJsonSchemaTests.java index 920b985d1..d5b259eeb 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/MongoJsonSchemaTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/MongoJsonSchemaTests.java @@ -29,18 +29,19 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.CollectionOptions; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.MongoJsonSchemaMapper; import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.validation.Validator; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.util.Version; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.CreateCollectionOptions; import com.mongodb.client.model.ValidationAction; @@ -59,11 +60,11 @@ public class MongoJsonSchemaTests { public static @ClassRule MongoVersionRule REQUIRES_AT_LEAST_3_6_0 = MongoVersionRule.atLeast(Version.parse("3.6.0")); @Configuration - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java index 3fa4bf582..27c2ecd68 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java @@ -60,7 +60,7 @@ public class MongoMonitorIntegrationTests { } assertThat(hostName).isNotNull(); - assertThat(hostName).isEqualTo("127.0.0.1"); + assertThat(hostName).isEqualTo("127.0.0.1:27017"); } @Test diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java index 6eff8b3d6..6d877de3a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java @@ -23,8 +23,6 @@ import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; -import com.mongodb.client.FindIterable; -import com.mongodb.client.model.CreateCollectionOptions; import org.bson.Document; import org.bson.types.ObjectId; import org.junit.Before; @@ -32,7 +30,7 @@ import org.junit.Test; import org.springframework.core.Constants; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.SimpleMongoDbFactory; +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver; import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter; @@ -43,15 +41,13 @@ import org.springframework.util.Assert; import org.springframework.util.StopWatch; import org.springframework.util.StringUtils; -import com.mongodb.BasicDBList; -import com.mongodb.BasicDBObject; -import com.mongodb.DBCollection; -import com.mongodb.DBCursor; -import com.mongodb.DBObject; -import com.mongodb.MongoClient; import com.mongodb.WriteConcern; +import com.mongodb.client.FindIterable; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.CreateCollectionOptions; /** * Test class to execute performance tests for plain MongoDB driver usage, {@link MongoTemplate} and the repositories @@ -80,16 +76,16 @@ public class PerformanceTests { @Before public void setUp() throws Exception { - this.mongo = new MongoClient(); + this.mongo = MongoClients.create(); - SimpleMongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(this.mongo, DATABASE_NAME); + SimpleMongoClientDbFactory mongoDbFactory = new SimpleMongoClientDbFactory(this.mongo, DATABASE_NAME); MongoMappingContext context = new MongoMappingContext(); context.setInitialEntitySet(Collections.singleton(Person.class)); context.afterPropertiesSet(); this.converter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory), context); - this.operations = new MongoTemplate(new SimpleMongoDbFactory(this.mongo, DATABASE_NAME), converter); + this.operations = new MongoTemplate(new SimpleMongoClientDbFactory(this.mongo, DATABASE_NAME), converter); MongoRepositoryFactoryBean factory = new MongoRepositoryFactoryBean( PersonRepository.class); @@ -106,11 +102,11 @@ public class PerformanceTests { public void doWithWriteConcern(String constantName, WriteConcern concern) { writeHeadline("WriteConcern: " + constantName); System.out.println(String.format("Writing %s objects using plain driver took %sms", NUMBER_OF_PERSONS, - writingObjectsUsingPlainDriver(NUMBER_OF_PERSONS))); + writingObjectsUsingPlainDriver(NUMBER_OF_PERSONS, concern))); System.out.println(String.format("Writing %s objects using template took %sms", NUMBER_OF_PERSONS, - writingObjectsUsingMongoTemplate(NUMBER_OF_PERSONS))); + writingObjectsUsingMongoTemplate(NUMBER_OF_PERSONS, concern))); System.out.println(String.format("Writing %s objects using repository took %sms", NUMBER_OF_PERSONS, - writingObjectsUsingRepositories(NUMBER_OF_PERSONS))); + writingObjectsUsingRepositories(NUMBER_OF_PERSONS, concern))); writeFooter(); } }); @@ -174,13 +170,10 @@ public class PerformanceTests { @Test public void writeAndRead() throws Exception { - - mongo.setWriteConcern(WriteConcern.ACKNOWLEDGED); - - readsAndWrites(NUMBER_OF_PERSONS, ITERATIONS); + readsAndWrites(NUMBER_OF_PERSONS, ITERATIONS, WriteConcern.ACKNOWLEDGED); } - private void readsAndWrites(int numberOfPersons, int iterations) { + private void readsAndWrites(int numberOfPersons, int iterations, WriteConcern writeConcern) { Statistics statistics = new Statistics("Reading " + numberOfPersons + " - After %s iterations"); @@ -188,9 +181,11 @@ public class PerformanceTests { setupCollections(); - statistics.registerTime(Api.DRIVER, Mode.WRITE, writingObjectsUsingPlainDriver(numberOfPersons)); - statistics.registerTime(Api.TEMPLATE, Mode.WRITE, writingObjectsUsingMongoTemplate(numberOfPersons)); - statistics.registerTime(Api.REPOSITORY, Mode.WRITE, writingObjectsUsingRepositories(numberOfPersons)); + statistics.registerTime(Api.DRIVER, Mode.WRITE, writingObjectsUsingPlainDriver(numberOfPersons, writeConcern)); + statistics.registerTime(Api.TEMPLATE, Mode.WRITE, + writingObjectsUsingMongoTemplate(numberOfPersons, writeConcern)); + statistics.registerTime(Api.REPOSITORY, Mode.WRITE, + writingObjectsUsingRepositories(numberOfPersons, writeConcern)); statistics.registerTime(Api.DRIVER, Mode.READ, readingUsingPlainDriver()); statistics.registerTime(Api.TEMPLATE, Mode.READ, readingUsingTemplate()); @@ -240,8 +235,6 @@ public class PerformanceTests { } WriteConcern writeConcern = (WriteConcern) constants.asObject(constantName); - mongo.setWriteConcern(writeConcern); - setupCollections(); callback.doWithWriteConcern(constantName, writeConcern); @@ -276,9 +269,11 @@ public class PerformanceTests { return document; } - private long writingObjectsUsingPlainDriver(int numberOfPersons) { + private long writingObjectsUsingPlainDriver(int numberOfPersons, WriteConcern writeConcern) { - MongoCollection collection = mongo.getDatabase(DATABASE_NAME).getCollection("driver"); + MongoCollection collection = mongo.getDatabase(DATABASE_NAME).getCollection("driver") + .withWriteConcern(writeConcern); + ; List persons = getPersonObjects(numberOfPersons); executeWatched(() -> persons.stream().map(Person::toDocument).map(it -> { @@ -290,7 +285,7 @@ public class PerformanceTests { return watch.getLastTaskTimeMillis(); } - private long writingObjectsUsingRepositories(int numberOfPersons) { + private long writingObjectsUsingRepositories(int numberOfPersons, WriteConcern writeConcern) { List persons = getPersonObjects(numberOfPersons); @@ -299,9 +294,10 @@ public class PerformanceTests { return watch.getLastTaskTimeMillis(); } - private long writingObjectsUsingMongoTemplate(int numberOfPersons) { + private long writingObjectsUsingMongoTemplate(int numberOfPersons, WriteConcern writeConcern) { List persons = getPersonObjects(numberOfPersons); + operations.setWriteConcern(writeConcern); executeWatched(() -> persons.stream()// .peek(it -> operations.save(it, "template"))// @@ -465,7 +461,7 @@ public class PerformanceTests { public static Address from(Document source) { String zipCode = (String) source.get("zipCode"); String city = (String) source.get("city"); - BasicDBList types = (BasicDBList) source.get("types"); + List types = (List) source.get("types"); return new Address(zipCode, city, new HashSet(readFromBasicDBList(types, AddressType.class))); } @@ -479,7 +475,7 @@ public class PerformanceTests { } } - private static > List readFromBasicDBList(BasicDBList source, Class type) { + private static > List readFromBasicDBList(List source, Class type) { List result = new ArrayList(source.size()); for (Object object : source) { @@ -488,8 +484,8 @@ public class PerformanceTests { return result; } - private static > BasicDBList toBasicDBList(Collection enums) { - BasicDBList result = new BasicDBList(); + private static > List toBasicDBList(Collection enums) { + List result = new ArrayList<>(); for (T element : enums) { result.add(element.toString()); } @@ -522,7 +518,7 @@ public class PerformanceTests { public static Order from(Document source) { - BasicDBList lineItemsSource = (BasicDBList) source.get("lineItems"); + List lineItemsSource = (List) source.get("lineItems"); List lineItems = new ArrayList(lineItemsSource.size()); for (Object lineItemSource : lineItemsSource) { lineItems.add(LineItem.from((Document) lineItemSource)); @@ -628,8 +624,8 @@ public class PerformanceTests { Document toDocument(); } - private static BasicDBList writeAll(Collection convertibles) { - BasicDBList result = new BasicDBList(); + private static List writeAll(Collection convertibles) { + List result = new ArrayList<>(); for (Convertible convertible : convertibles) { result.add(convertible.toDocument()); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ComplexIdRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ComplexIdRepositoryIntegrationTests.java index 07bccd127..ae7062dc3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ComplexIdRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ComplexIdRepositoryIntegrationTests.java @@ -26,18 +26,18 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersion; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * @author Christoph Strobl @@ -52,7 +52,7 @@ public class ComplexIdRepositoryIntegrationTests { @Configuration @EnableMongoRepositories - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Override protected String getDatabaseName() { @@ -61,7 +61,7 @@ public class ComplexIdRepositoryIntegrationTests { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/MongoRepositoryTextSearchIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/MongoRepositoryTextSearchIntegrationTests.java index b1bf524fc..25ff2e9dd 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/MongoRepositoryTextSearchIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/MongoRepositoryTextSearchIntegrationTests.java @@ -25,7 +25,6 @@ import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.annotation.Id; import org.springframework.data.domain.Page; @@ -33,13 +32,14 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.index.TextIndexDefinition.TextIndexDefinitionBuilder; import org.springframework.data.mongodb.core.index.TextIndexed; import org.springframework.data.mongodb.core.mapping.TextScore; import org.springframework.data.mongodb.core.query.TextCriteria; import org.springframework.data.mongodb.repository.support.MongoRepositoryFactory; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.util.Version; import org.springframework.test.context.ContextConfiguration; @@ -47,7 +47,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.ClassUtils; import org.springframework.util.ObjectUtils; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * Integration tests for text searches on repository. @@ -194,7 +194,7 @@ public class MongoRepositoryTextSearchIntegrationTests { } @org.springframework.context.annotation.Configuration - public static class Configuration extends AbstractMongoConfiguration { + public static class Configuration extends AbstractMongoClientConfiguration { @Override protected String getDatabaseName() { @@ -203,7 +203,7 @@ public class MongoRepositoryTextSearchIntegrationTests { @Override public MongoClient mongoClient() { - return new MongoClient(); + return MongoTestUtils.client(); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepositoryTransactionalTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepositoryTransactionalTests.java index 63dca213a..ac8b475d1 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepositoryTransactionalTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepositoryTransactionalTests.java @@ -29,14 +29,13 @@ import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.RuleChain; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.domain.Persistable; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.MongoTransactionManager; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.data.mongodb.test.util.AfterTransactionAssertion; @@ -52,9 +51,9 @@ import org.springframework.test.context.transaction.AfterTransaction; import org.springframework.test.context.transaction.BeforeTransaction; import org.springframework.transaction.annotation.Transactional; -import com.mongodb.MongoClient; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.model.Filters; @@ -74,7 +73,7 @@ public class PersonRepositoryTransactionalTests { @Configuration @EnableMongoRepositories - static class Config extends AbstractMongoConfiguration { + static class Config extends AbstractMongoClientConfiguration { @Bean public MongoClient mongoClient() { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/MongoTemplateProducer.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/MongoTemplateProducer.java index a763d5631..c0164b0ef 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/MongoTemplateProducer.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/MongoTemplateProducer.java @@ -21,9 +21,11 @@ import javax.enterprise.inject.Produces; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; import org.springframework.data.mongodb.core.SimpleMongoDbFactory; import com.mongodb.MongoClient; +import org.springframework.data.mongodb.test.util.MongoTestUtils; /** * Simple component exposing a {@link MongoOperations} instance as CDI bean. @@ -36,7 +38,7 @@ class MongoTemplateProducer { @ApplicationScoped public MongoOperations createMongoTemplate() { - MongoDbFactory factory = new SimpleMongoDbFactory(new MongoClient(), "database"); + MongoDbFactory factory = new SimpleMongoClientDbFactory(MongoTestUtils.client(), "database"); return new MongoTemplate(factory); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java index 62f7072cb..efccbdebc 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java @@ -23,8 +23,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; import org.springframework.data.mongodb.core.SimpleMongoDbFactory; import org.springframework.data.mongodb.repository.PersonRepository; +import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -45,7 +47,7 @@ public class MongoRepositoriesRegistrarIntegrationTests { @Bean public MongoOperations mongoTemplate() throws Exception { - return new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "database")); + return new MongoTemplate(new SimpleMongoClientDbFactory(MongoTestUtils.client(), "database")); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDB.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDB.java index 3f46d6092..f2f7b21bc 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDB.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDB.java @@ -34,7 +34,8 @@ import org.springframework.util.StringUtils; import com.mongodb.DB; import com.mongodb.DBCollection; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -87,7 +88,7 @@ public class CleanMongoDB implements TestRule { * @throws UnknownHostException */ public CleanMongoDB(String host, int port) throws UnknownHostException { - this(new MongoClient(host, port)); + this(MongoTestUtils.client(host, port)); } /** @@ -289,7 +290,7 @@ public class CleanMongoDB implements TestRule { return false; } - client.dropDatabase(dbName); + client.getDatabase(dbName).drop(); LOGGER.debug("Dropping DB '{}'. ", dbName); return true; } @@ -360,7 +361,7 @@ public class CleanMongoDB implements TestRule { boolean isInternal = false; if (client == null) { - client = new MongoClient(); + client = MongoClients.create(); isInternal = true; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDBTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDBTests.java index 83438316c..b209bd05e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDBTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/CleanMongoDBTests.java @@ -29,11 +29,10 @@ import org.junit.runner.RunWith; import org.junit.runners.model.Statement; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - import org.springframework.data.mongodb.test.util.CleanMongoDB.Struct; -import com.mongodb.MongoClient; import com.mongodb.client.ListDatabasesIterable; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -54,7 +53,7 @@ public class CleanMongoDBTests { private @Mock MongoClient mongoClientMock; // Some Mock DBs - private @Mock MongoDatabase db1mock, db2mock; + private @Mock MongoDatabase db1mock, db2mock, admin; private @Mock MongoCollection db1collection1mock, db1collection2mock, db2collection1mock; @SuppressWarnings({ "serial", "unchecked" }) @@ -93,7 +92,7 @@ public class CleanMongoDBTests { cleaner.apply(baseStatementMock, descriptionMock).evaluate(); - verify(mongoClientMock, never()).dropDatabase(eq("admin")); + verify(admin, never()).drop(); } @Test @@ -104,7 +103,7 @@ public class CleanMongoDBTests { cleaner.apply(baseStatementMock, descriptionMock).evaluate(); - verify(mongoClientMock, never()).dropDatabase(eq("db1")); + verify(db1mock, never()).drop(); } @Test @@ -114,8 +113,8 @@ public class CleanMongoDBTests { cleaner.apply(baseStatementMock, descriptionMock).evaluate(); - verify(mongoClientMock, times(1)).dropDatabase(eq("db1")); - verify(mongoClientMock, times(1)).dropDatabase(eq("db2")); + verify(db1mock).drop(); + verify(db2mock).drop(); } @Test @@ -126,8 +125,8 @@ public class CleanMongoDBTests { cleaner.apply(baseStatementMock, descriptionMock).evaluate(); - verify(mongoClientMock, times(1)).dropDatabase(eq("db2")); - verify(mongoClientMock, never()).dropDatabase(eq("db1")); + verify(db2mock).drop(); + verify(db1mock, never()).drop(); } @Test @@ -137,9 +136,9 @@ public class CleanMongoDBTests { cleaner.apply(baseStatementMock, descriptionMock).evaluate(); - verify(mongoClientMock, never()).dropDatabase(eq("db1")); - verify(mongoClientMock, never()).dropDatabase(eq("db2")); - verify(mongoClientMock, never()).dropDatabase(eq("admin")); + verify(db1mock, never()).drop(); + verify(db2mock, never()).drop(); + verify(admin, never()).drop(); } @Test @@ -187,9 +186,9 @@ public class CleanMongoDBTests { cleaner.apply(baseStatementMock, descriptionMock).evaluate(); - verify(mongoClientMock, never()).dropDatabase(eq("db1")); - verify(mongoClientMock, never()).dropDatabase(eq("db2")); - verify(mongoClientMock, never()).dropDatabase(eq("admin")); + verify(db1mock, never()).drop(); + verify(db2mock, never()).drop(); + verify(admin, never()).drop(); verify(db1collection1mock, times(1)).dropIndexes(); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java index cf0b4b011..a2585d21c 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java @@ -15,6 +15,7 @@ */ package org.springframework.data.mongodb.test.util; +import com.mongodb.client.MongoClient; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -22,7 +23,6 @@ import java.time.Duration; import org.bson.Document; -import com.mongodb.MongoClientURI; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.client.MongoCollection; @@ -35,8 +35,17 @@ import com.mongodb.reactivestreams.client.Success; */ public class MongoTestUtils { + + private static final String CONNECTION_STRING_PATTERN = "mongodb://%s:%s/"; public static final String CONNECTION_STRING = "mongodb://localhost:27017/?replicaSet=rs0"; // &readPreference=primary&w=majority + public static MongoClient client() { + return client("localhost", 27017); + } + + public static MongoClient client(String host, int port) { + return com.mongodb.client.MongoClients.create(String.format(CONNECTION_STRING_PATTERN, host, port)); + } /** * Create a {@link com.mongodb.client.MongoCollection} if it does not exist, or drop and recreate it if it does. * @@ -45,7 +54,7 @@ public class MongoTestUtils { * @param client must not be {@literal null}. */ public static MongoCollection createOrReplaceCollection(String dbName, String collectionName, - com.mongodb.MongoClient client) { + com.mongodb.client.MongoClient client) { MongoDatabase database = client.getDatabase(dbName).withWriteConcern(WriteConcern.MAJORITY) .withReadPreference(ReadPreference.primary()); @@ -149,9 +158,8 @@ public class MongoTestUtils { * * @return new instance of {@link com.mongodb.MongoClient}. */ - public static com.mongodb.MongoClient replSetClient() { - - return new com.mongodb.MongoClient(new MongoClientURI(CONNECTION_STRING)); + public static com.mongodb.client.MongoClient replSetClient() { + return com.mongodb.client.MongoClients.create(CONNECTION_STRING); } /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoVersionRule.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoVersionRule.java index 3f460e0b4..607296f4f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoVersionRule.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoVersionRule.java @@ -27,7 +27,7 @@ import org.junit.runners.model.Statement; import org.springframework.data.util.Version; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; /** @@ -128,7 +128,6 @@ public class MongoVersionRule implements TestRule { Version maxVersion = MongoVersionRule.this.maxVersion.equals(ANY) ? DEFAULT_HIGH : MongoVersionRule.this.maxVersion; - if (description.getAnnotation(MongoVersion.class) != null) { MongoVersion version = description.getAnnotation(MongoVersion.class); if (version != null) { @@ -176,8 +175,7 @@ public class MongoVersionRule implements TestRule { try { - MongoClient client; - client = new MongoClient(host, port); + MongoClient client = MongoTestUtils.client(host, port); MongoDatabase database = client.getDatabase("test"); Document result = database.runCommand(new Document("buildInfo", 1)); client.close(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReplicaSet.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReplicaSet.java index f0c497907..01f282f6a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReplicaSet.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReplicaSet.java @@ -25,7 +25,7 @@ import org.junit.runner.Description; import org.junit.runners.model.Statement; import org.springframework.test.annotation.IfProfileValue; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; /** * {@link TestRule} evaluating if MongoDB Server is running with {@code --replSet} flag. @@ -94,7 +94,7 @@ public class ReplicaSet implements TestRule { if (runsAsReplicaSet.get() == null) { - try (MongoClient client = new MongoClient()) { + try (MongoClient client = MongoTestUtils.client()) { boolean tmp = client.getDatabase("admin").runCommand(new Document("getCmdLineOpts", "1")) .get("argv", List.class).contains("--replSet"); diff --git a/src/main/asciidoc/reference/mongodb.adoc b/src/main/asciidoc/reference/mongodb.adoc index 5613fb10f..aa234b6f0 100644 --- a/src/main/asciidoc/reference/mongodb.adoc +++ b/src/main/asciidoc/reference/mongodb.adoc @@ -120,7 +120,7 @@ import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Query; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClients; public class MongoApp { @@ -128,7 +128,7 @@ public class MongoApp { public static void main(String[] args) throws Exception { - MongoOperations mongoOps = new MongoTemplate(new MongoClient(), "database"); + MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "database"); mongoOps.insert(new Person("Joe", 34)); log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class)); @@ -591,7 +591,7 @@ import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.SimpleMongoDbFactory; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClients; public class MongoApp { @@ -599,7 +599,7 @@ public class MongoApp { public static void main(String[] args) { - MongoOperations mongoOps = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "database")); + MongoOperations mongoOps = new MongoTemplate(new SimpleMongoClientDbFactory(MongoClients.create(), "database")); Person p = new Person("Joe", 34);