DATAMONGO-2378 - Favor com.mongodb.client.MongoClient (over already deprecated com.mongodb.MongoClient) where possible.

Original pull request: #793.
This commit is contained in:
Christoph Strobl
2019-09-25 21:25:09 +02:00
committed by Mark Paluch
parent 4a012d5654
commit 565132c619
66 changed files with 415 additions and 232 deletions

View File

@@ -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 {
/**

View File

@@ -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);
}
}

View File

@@ -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<MongoClient> implements PersistenceExceptionTranslator {
private static final PersistenceExceptionTranslator DEFAULT_EXCEPTION_TRANSLATOR = new MongoExceptionTranslator();

View File

@@ -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<MongoClientOptions> {
private static final MongoClientOptions DEFAULT_MONGO_OPTIONS = MongoClientOptions.builder().build();

View File

@@ -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);
}

View File

@@ -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<MongoClient> implements DisposableBean {
/**

View File

@@ -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<ServerAddress> hosts() {
if (mongoClient instanceof MongoClient) {
return ((MongoClient) mongoClient).getServerAddressList();
}
return ((com.mongodb.client.MongoClient) mongoClient).getClusterDescription().getServerDescriptions().stream()
.map(ServerDescription::getAddress).collect(Collectors.toList());
}
}

View File

@@ -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");

View File

@@ -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);

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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");

View File

@@ -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")

View File

@@ -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;
/**

View File

@@ -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();

View File

@@ -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

View File

@@ -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();

View File

@@ -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;
/**

View File

@@ -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";

View File

@@ -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);

View File

@@ -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();

View File

@@ -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();

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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<Document> collection = client.getDatabase(DB_NAME).withReadPreference(ReadPreference.primary())
.getCollection(COLLECTION_NAME);

View File

@@ -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;

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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();

View File

@@ -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();
}

View File

@@ -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

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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.<Throwable> instanceOf(MongoCommandException.class));
MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient(), "issue");
MongoTemplate mongoTemplate = new MongoTemplate(MongoTestUtils.client(), "issue");
MongoPersistentEntityIndexCreator indexCreator = new MongoPersistentEntityIndexCreator(new MongoMappingContext(),
mongoTemplate);

View File

@@ -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

View File

@@ -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) {

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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));

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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<PersonRepository, Person, ObjectId> factory = new MongoRepositoryFactoryBean<PersonRepository, Person, ObjectId>(
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<Document> collection = mongo.getDatabase(DATABASE_NAME).getCollection("driver");
MongoCollection<Document> collection = mongo.getDatabase(DATABASE_NAME).getCollection("driver")
.withWriteConcern(writeConcern);
;
List<Person> 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<Person> 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<Person> 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<Document> types = (List<Document>) source.get("types");
return new Address(zipCode, city, new HashSet<AddressType>(readFromBasicDBList(types, AddressType.class)));
}
@@ -479,7 +475,7 @@ public class PerformanceTests {
}
}
private static <T extends Enum<T>> List<T> readFromBasicDBList(BasicDBList source, Class<T> type) {
private static <T extends Enum<T>> List<T> readFromBasicDBList(List<Document> source, Class<T> type) {
List<T> result = new ArrayList<T>(source.size());
for (Object object : source) {
@@ -488,8 +484,8 @@ public class PerformanceTests {
return result;
}
private static <T extends Enum<T>> BasicDBList toBasicDBList(Collection<T> enums) {
BasicDBList result = new BasicDBList();
private static <T extends Enum<T>> List<String> toBasicDBList(Collection<T> enums) {
List<String> 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<Document> lineItemsSource = (List<Document>) source.get("lineItems");
List<LineItem> lineItems = new ArrayList<PerformanceTests.LineItem>(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<? extends Convertible> convertibles) {
BasicDBList result = new BasicDBList();
private static List<Document> writeAll(Collection<? extends Convertible> convertibles) {
List<Document> result = new ArrayList<>();
for (Convertible convertible : convertibles) {
result.add(convertible.toDocument());
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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() {

View File

@@ -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);
}
}

View File

@@ -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"));
}
}

View File

@@ -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;
}

View File

@@ -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<Document> 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();
}

View File

@@ -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<Document> 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);
}
/**

View File

@@ -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();

View File

@@ -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");

View File

@@ -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);