DATAMONGO-2461 - Polishing.

Extend Javadoc. Reformat code. Reduce log level to info. Refactor resource disposal to use Store.CloseableResource.

Original pull request: #831.
This commit is contained in:
Mark Paluch
2020-02-05 10:01:06 +01:00
parent 993018feb1
commit 0b77906a83
88 changed files with 280 additions and 271 deletions

View File

@@ -24,7 +24,6 @@ env:
- MONGO_VERSION=4.2.0
- MONGO_VERSION=4.0.14
- MONGO_VERSION=3.6.16
- MONGO_VERSION=3.4.23
global:
- PROFILE=ci

View File

@@ -16,7 +16,7 @@
package org.springframework.data.mongodb;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import reactor.core.publisher.Mono;
@@ -27,6 +27,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.transaction.reactive.TransactionSynchronizationManager;
import org.springframework.transaction.reactive.TransactionalOperator;
import org.springframework.transaction.support.DefaultTransactionDefinition;

View File

@@ -18,7 +18,6 @@ package org.springframework.data.mongodb;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -32,6 +31,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -42,8 +42,8 @@ import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoServerCondition;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.reactive.TransactionalOperator;
@@ -57,7 +57,7 @@ import com.mongodb.reactivestreams.client.MongoClient;
* @author Mark Paluch
* @author Christoph Strobl
*/
@ExtendWith({ MongoServerCondition.class, MongoClientExtension.class })
@ExtendWith(MongoClientExtension.class)
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
@EnableIfReplicaSetAvailable
@DisabledIfSystemProperty(named = "user.name", matches = "jenkins")

View File

@@ -33,7 +33,6 @@ import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
/**

View File

@@ -20,18 +20,17 @@ import static org.assertj.core.api.AssertionsForInterfaceTypes.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.SimpleReactiveMongoDatabaseFactory;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
/**
* Integration tests for {@link AbstractReactiveMongoConfiguration}.

View File

@@ -51,8 +51,7 @@ public class MongoClientNamespaceTests {
public void clientWithJustHostAndPort() {
assertThat(ctx.containsBean("client-with-just-host-port")).isTrue();
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-just-host-port",
MongoClientFactoryBean.class);
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-just-host-port", MongoClientFactoryBean.class);
assertThat(getField(factoryBean, "host")).isEqualTo("127.0.0.1");
assertThat(getField(factoryBean, "port")).isEqualTo(27017);
@@ -66,8 +65,7 @@ public class MongoClientNamespaceTests {
public void clientWithConnectionString() {
assertThat(ctx.containsBean("client-with-connection-string")).isTrue();
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-connection-string",
MongoClientFactoryBean.class);
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-connection-string", MongoClientFactoryBean.class);
assertThat(getField(factoryBean, "host")).isNull();
assertThat(getField(factoryBean, "port")).isNull();
@@ -82,8 +80,7 @@ public class MongoClientNamespaceTests {
public void clientWithReplicaSet() {
assertThat(ctx.containsBean("client-with-replica-set")).isTrue();
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-replica-set",
MongoClientFactoryBean.class);
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-replica-set", MongoClientFactoryBean.class);
assertThat(getField(factoryBean, "host")).isNull();
assertThat(getField(factoryBean, "port")).isNull();
@@ -112,8 +109,7 @@ public class MongoClientNamespaceTests {
public void clientWithClusterSettings() {
assertThat(ctx.containsBean("client-with-cluster-settings")).isTrue();
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-cluster-settings",
MongoClientFactoryBean.class);
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-cluster-settings", MongoClientFactoryBean.class);
MongoClientSettings settings = (MongoClientSettings) getField(factoryBean, "mongoClientSettings");
@@ -146,8 +142,7 @@ public class MongoClientNamespaceTests {
public void clientWithUUidSettings() {
assertThat(ctx.containsBean("client-with-uuid-settings")).isTrue();
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-uuid-settings",
MongoClientFactoryBean.class);
MongoClientFactoryBean factoryBean = ctx.getBean("&client-with-uuid-settings", MongoClientFactoryBean.class);
MongoClientSettings settings = (MongoClientSettings) getField(factoryBean, "mongoClientSettings");
assertThat(settings.getUuidRepresentation()).isEqualTo(UuidRepresentation.STANDARD);

View File

@@ -17,9 +17,9 @@ package org.springframework.data.mongodb.config;
import static org.assertj.core.api.Assertions.*;
import com.mongodb.client.MongoClient;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConstructorArgumentValues;
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
@@ -36,6 +36,7 @@ import org.springframework.test.util.ReflectionTestUtils;
import com.mongodb.ConnectionString;
import com.mongodb.WriteConcern;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
/**
@@ -59,9 +60,8 @@ public class MongoDbFactoryParserIntegrationTests {
@Test // DATAMONGO-2199
public void testWriteConcern() throws Exception {
try(MongoClient client = MongoTestUtils.client()) {
SimpleMongoClientDatabaseFactory dbFactory = new SimpleMongoClientDatabaseFactory(client,
"database");
try (MongoClient client = MongoTestUtils.client()) {
SimpleMongoClientDatabaseFactory dbFactory = new SimpleMongoClientDatabaseFactory(client, "database");
dbFactory.setWriteConcern(WriteConcern.ACKNOWLEDGED);
dbFactory.getMongoDatabase();

View File

@@ -22,11 +22,11 @@ import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.MongoClientSettings;
import org.bson.Document;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.data.mongodb.core.MongoClientFactoryBean;
@@ -35,6 +35,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.util.ReflectionTestUtils;
import com.mongodb.MongoClientSettings;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoClient;

View File

@@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.*;
import java.util.List;
import com.mongodb.client.MongoClient;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@@ -33,6 +32,7 @@ import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.ClassPathResource;
import com.mongodb.client.MongoClient;
/**
* Integration tests for {@link MongoClientParser}.

View File

@@ -29,6 +29,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
@@ -45,6 +46,7 @@ import com.mongodb.client.MongoClient;
*/
@ExtendWith({ MongoClientExtension.class })
@EnableIfReplicaSetAvailable
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public class ClientSessionTests {
private static final String DB_NAME = "client-session-tests";

View File

@@ -28,6 +28,7 @@ import org.bson.Document;
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.domain.Sort.Direction;
@@ -45,7 +46,6 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoCollection;
/**
@@ -146,7 +146,8 @@ public class DefaultReactiveIndexOperationsTests {
indexOps.getIndexInfo().filter(this.indexByName("partial-with-criteria")).as(StepVerifier::create) //
.consumeNextWith(indexInfo -> {
assertThat(Document.parse(indexInfo.getPartialFilterExpression())).isEqualTo(Document.parse("{ \"q-t-y\" : { \"$gte\" : 10 } }"));
assertThat(Document.parse(indexInfo.getPartialFilterExpression()))
.isEqualTo(Document.parse("{ \"q-t-y\" : { \"$gte\" : 10 } }"));
}) //
.verifyComplete();
}
@@ -163,7 +164,8 @@ public class DefaultReactiveIndexOperationsTests {
indexOps.getIndexInfo().filter(this.indexByName("partial-with-mapped-criteria")).as(StepVerifier::create) //
.consumeNextWith(indexInfo -> {
assertThat(Document.parse(indexInfo.getPartialFilterExpression())).isEqualTo(Document.parse("{ \"qty\" : { \"$gte\" : 10 } }"));
assertThat(Document.parse(indexInfo.getPartialFilterExpression()))
.isEqualTo(Document.parse("{ \"qty\" : { \"$gte\" : 10 } }"));
}).verifyComplete();
}
@@ -179,7 +181,8 @@ public class DefaultReactiveIndexOperationsTests {
indexOps.getIndexInfo().filter(this.indexByName("partial-with-dbo")).as(StepVerifier::create) //
.consumeNextWith(indexInfo -> {
assertThat(Document.parse(indexInfo.getPartialFilterExpression())).isEqualTo(Document.parse("{ \"qty\" : { \"$gte\" : 10 } }"));
assertThat(Document.parse(indexInfo.getPartialFilterExpression()))
.isEqualTo(Document.parse("{ \"qty\" : { \"$gte\" : 10 } }"));
}) //
.verifyComplete();
@@ -201,7 +204,8 @@ public class DefaultReactiveIndexOperationsTests {
indexOps.getIndexInfo().filter(this.indexByName("partial-with-inheritance")).as(StepVerifier::create) //
.consumeNextWith(indexInfo -> {
assertThat(Document.parse(indexInfo.getPartialFilterExpression())).isEqualTo(Document.parse("{ \"a_g_e\" : { \"$gte\" : 10 } }"));
assertThat(Document.parse(indexInfo.getPartialFilterExpression()))
.isEqualTo(Document.parse("{ \"a_g_e\" : { \"$gte\" : 10 } }"));
}) //
.verifyComplete();
}

View File

@@ -23,6 +23,7 @@ import org.bson.Document;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -34,9 +35,9 @@ import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import com.mongodb.client.MongoClient;
import org.springframework.test.context.junit.jupiter.SpringExtension;
/**
* Integration tests for {@link DefaultScriptOperations}.
@@ -45,7 +46,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
* @author Oliver Gierke
* @since 1.7
*/
@ExtendWith({MongoClientExtension.class, SpringExtension.class})
@ExtendWith({ MongoClientExtension.class, SpringExtension.class })
@EnableIfMongoServerVersion(isLessThan = "4.1.0")
@ContextConfiguration
public class DefaultScriptOperationsTests {

View File

@@ -20,7 +20,6 @@ import static org.springframework.data.mongodb.core.query.Criteria.*;
import static org.springframework.data.mongodb.core.query.Query.*;
import static org.springframework.data.mongodb.core.query.Update.*;
import com.mongodb.MongoClientSettings;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -46,6 +45,7 @@ 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.ConfigurableApplicationContext;
import org.springframework.core.convert.converter.Converter;

View File

@@ -39,6 +39,7 @@ import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.MongoTransactionManager;
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.data.mongodb.test.util.AfterTransactionAssertion;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.ReplSetClient;
@@ -60,6 +61,7 @@ import com.mongodb.client.model.Filters;
*/
@ExtendWith({ MongoClientExtension.class, SpringExtension.class })
@EnableIfReplicaSetAvailable
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
@ContextConfiguration
@Transactional(transactionManager = "txManager")
public class MongoTemplateTransactionTests {

View File

@@ -19,7 +19,6 @@ import static org.mockito.Mockito.*;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
import static org.springframework.data.mongodb.test.util.Assertions.*;
import com.mongodb.MongoClientSettings;
import lombok.Data;
import java.math.BigInteger;
@@ -47,6 +46,7 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
@@ -97,6 +97,7 @@ import org.springframework.lang.Nullable;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.CollectionUtils;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoException;
import com.mongodb.MongoNamespace;
import com.mongodb.ReadPreference;
@@ -164,7 +165,8 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
when(db.runCommand(any(), any(Class.class))).thenReturn(commandResultDocument);
when(collection.find(any(org.bson.Document.class), any(Class.class))).thenReturn(findIterable);
when(collection.mapReduce(any(), any(), eq(Document.class))).thenReturn(mapReduceIterable);
when(collection.countDocuments(any(Bson.class), any(CountOptions.class))).thenReturn(1L); // TODO: MongoDB 4 - fix me
when(collection.countDocuments(any(Bson.class), any(CountOptions.class))).thenReturn(1L); // TODO: MongoDB 4 - fix
// me
when(collection.getNamespace()).thenReturn(new MongoNamespace("db.mock-collection"));
when(collection.aggregate(any(List.class), any())).thenReturn(aggregateIterable);
when(collection.withReadPreference(any())).thenReturn(collection);

View File

@@ -27,6 +27,7 @@ import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.mongodb.core.aggregation.AggregationUpdate;
@@ -41,7 +42,6 @@ import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoServerCondition;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import com.mongodb.client.MongoClient;
@@ -50,7 +50,7 @@ import com.mongodb.client.MongoCollection;
/**
* @author Christoph Strobl
*/
@ExtendWith({ MongoClientExtension.class, MongoServerCondition.class })
@ExtendWith({ MongoClientExtension.class })
class MongoTemplateUpdateTests {
static final String DB_NAME = "update-test";

View File

@@ -34,7 +34,8 @@ public class PersonExample {
@Autowired private MongoOperations mongoOps;
public static void main(String[] args) {
AbstractApplicationContext applicationContext = new AnnotationConfigApplicationContext(PersonExampleAppConfig.class);
AbstractApplicationContext applicationContext = new AnnotationConfigApplicationContext(
PersonExampleAppConfig.class);
PersonExample example = applicationContext.getBean(PersonExample.class);
example.doWork();
applicationContext.close();

View File

@@ -23,8 +23,7 @@ public class PersonWithVersionPropertyOfTypeInteger {
String firstName;
int age;
@Version
Integer version;
@Version Integer version;
@Override
public String toString() {

View File

@@ -27,7 +27,7 @@ public class PersonWithVersionPropertyOfTypeLong {
@Override
public String toString() {
return "PersonWithVersionPropertyOfTypeLong [id=" + id + ", firstName=" + firstName + ", age=" + age
+ ", version=" + version + "]";
return "PersonWithVersionPropertyOfTypeLong [id=" + id + ", firstName=" + firstName + ", age=" + age + ", version="
+ version + "]";
}
}

View File

@@ -21,19 +21,20 @@ import static org.springframework.data.mongodb.core.query.Query.*;
import java.util.concurrent.TimeUnit;
import com.mongodb.MongoClientSettings;
import org.bson.Document;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate.QueryCursorPreparer;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Collation;
import org.springframework.data.mongodb.core.query.Query;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.FindIterable;
/**
@@ -91,16 +92,16 @@ public class QueryCursorPreparerUnitTests {
}
// TODO
// @Test // DATAMONGO-957
// public void doesNotApplyMetaWhenEmpty() {
//
// Query query = query(where("foo").is("bar"));
// query.setMeta(new Meta());
//
// prepare(query);
//
// verify(cursor, never()).modifiers(any(Document.class));
// }
// @Test // DATAMONGO-957
// public void doesNotApplyMetaWhenEmpty() {
//
// Query query = query(where("foo").is("bar"));
// query.setMeta(new Meta());
//
// prepare(query);
//
// verify(cursor, never()).modifiers(any(Document.class));
// }
// @Test // DATAMONGO-957
// public void appliesMaxScanCorrectly() {
@@ -130,14 +131,14 @@ public class QueryCursorPreparerUnitTests {
}
// TODO
// @Test // DATAMONGO-957
// public void appliesSnapshotCorrectly() {
//
// Query query = query(where("foo").is("bar")).useSnapshot();
// prepare(query);
//
// verify(cursor).snapshot(true);
// }
// @Test // DATAMONGO-957
// public void appliesSnapshotCorrectly() {
//
// Query query = query(where("foo").is("bar")).useSnapshot();
// prepare(query);
//
// verify(cursor).snapshot(true);
// }
@Test // DATAMONGO-1480
public void appliesNoCursorTimeoutCorrectly() {

View File

@@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.mongodb.core.query.Criteria.*;
import lombok.SneakyThrows;
import org.springframework.data.mongodb.test.util.ReplSetClient;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;
@@ -34,10 +33,12 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.data.mongodb.test.util.ReplSetClient;
import com.mongodb.reactivestreams.client.MongoClient;
@@ -104,6 +105,7 @@ public class ReactiveChangeStreamOperationSupportTests {
}
@Test // DATAMONGO-1803
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public void changeStreamEventsShouldBeConvertedCorrectly() throws InterruptedException {
BlockingQueue<ChangeStreamEvent<Person>> documents = new LinkedBlockingQueue<>(100);

View File

@@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
@@ -135,6 +136,7 @@ public class ReactiveClientSessionTests {
}
@Test // DATAMONGO-2001
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public void countInTransactionShouldReturnCount() {
ClientSession session = Mono

View File

@@ -24,7 +24,6 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Wither;
import org.junit.Rule;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -52,6 +51,7 @@ import org.bson.types.ObjectId;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

View File

@@ -33,6 +33,7 @@ import org.reactivestreams.Publisher;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
@@ -50,6 +51,7 @@ import com.mongodb.reactivestreams.client.MongoClient;
*/
@ExtendWith(MongoClientExtension.class)
@EnableIfReplicaSetAvailable
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public class ReactiveMongoTemplateTransactionTests {
static final String DATABASE_NAME = "reactive-template-tx-tests";

View File

@@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
import com.mongodb.MongoClientSettings;
import lombok.Data;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -46,6 +45,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.reactivestreams.Publisher;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.StaticApplicationContext;
@@ -77,6 +77,7 @@ import org.springframework.lang.Nullable;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.CollectionUtils;
import com.mongodb.MongoClientSettings;
import com.mongodb.ReadPreference;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;

View File

@@ -111,7 +111,8 @@ public class ReactiveSessionBoundMongoTemplateUnitTests {
when(collection.deleteMany(any(ClientSession.class), any(), any())).thenReturn(resultPublisher);
when(collection.insertOne(any(ClientSession.class), any(Document.class))).thenReturn(resultPublisher);
when(collection.aggregate(any(ClientSession.class), anyList(), any(Class.class))).thenReturn(aggregatePublisher);
when(collection.countDocuments(any(ClientSession.class), any(), any(CountOptions.class))).thenReturn(resultPublisher);
when(collection.countDocuments(any(ClientSession.class), any(), any(CountOptions.class)))
.thenReturn(resultPublisher);
when(collection.drop(any(ClientSession.class))).thenReturn(resultPublisher);
when(collection.findOneAndUpdate(any(ClientSession.class), any(), any(Bson.class), any()))
.thenReturn(resultPublisher);

View File

@@ -66,13 +66,12 @@ public class FacetOperationUnitTests {
@Test(expected = IllegalArgumentException.class) // DATAMONGO-1552
public void shouldRejectNonExistingFields() {
FacetOperation facetOperation = new FacetOperation()
.and(project("price"), //
bucket("price") //
.withBoundaries(0, 150, 200, 300, 400) //
.withDefaultBucket("Other") //
.andOutputCount().as("count") //
.andOutput("title").push().as("titles")) //
FacetOperation facetOperation = new FacetOperation().and(project("price"), //
bucket("price") //
.withBoundaries(0, 150, 200, 300, 400) //
.withDefaultBucket("Other") //
.andOutputCount().as("count") //
.andOutput("title").push().as("titles")) //
.as("categorizedByPrice");
Document agg = facetOperation.toDocument(Aggregation.DEFAULT_CONTEXT);
@@ -87,18 +86,16 @@ public class FacetOperationUnitTests {
@Test // DATAMONGO-1552
public void shouldHonorProjectedFields() {
FacetOperation facetOperation = new FacetOperation()
.and(project("price").and("title").as("name"), //
bucketAuto("price", 5) //
.andOutput("name").push().as("titles")) //
FacetOperation facetOperation = new FacetOperation().and(project("price").and("title").as("name"), //
bucketAuto("price", 5) //
.andOutput("name").push().as("titles")) //
.as("categorizedByPrice");
Document agg = facetOperation.toDocument(Aggregation.DEFAULT_CONTEXT);
assertThat(agg).isEqualTo(Document.parse("{ $facet: { categorizedByPrice: ["
+ "{ $project: { price: 1, name: \"$title\" } }, "
+ "{ $bucketAuto: { buckets: 5, groupBy: \"$price\", "
+ "output: { titles: { $push: \"$name\" } } } } ] } }"));
+ "{ $project: { price: 1, name: \"$title\" } }, " + "{ $bucketAuto: { buckets: 5, groupBy: \"$price\", "
+ "output: { titles: { $push: \"$name\" } } } } ] } }"));
}
@Test // DATAMONGO-1553

View File

@@ -108,8 +108,9 @@ public class GeoNearOperationUnitTests {
NearQuery query = NearQuery.near(10.0, 20.0);
assertThat(new GeoNearOperation(query, "distance").useIndex("index-1").toPipelineStages(Aggregation.DEFAULT_CONTEXT))
.containsExactly($geoNear().near(10.0, 20.0).key("index-1").doc());
assertThat(
new GeoNearOperation(query, "distance").useIndex("index-1").toPipelineStages(Aggregation.DEFAULT_CONTEXT))
.containsExactly($geoNear().near(10.0, 20.0).key("index-1").doc());
}
@Test // DATAMONGO-2264

View File

@@ -67,10 +67,9 @@ public class ObjectOperatorsUnitTests {
@Test // DATAMONGO-2053
public void mergeMixed() {
assertThat(
ObjectOperators.valueOf("kettricken").mergeWithValuesOf(EXPRESSION).mergeWithValuesOf("verity")
.toDocument(Aggregation.DEFAULT_CONTEXT)).isEqualTo(
Document.parse("{ $mergeObjects: [ \"$kettricken\", " + EXPRESSION_STRING + ", \"$verity\" ] } "));
assertThat(ObjectOperators.valueOf("kettricken").mergeWithValuesOf(EXPRESSION).mergeWithValuesOf("verity")
.toDocument(Aggregation.DEFAULT_CONTEXT)).isEqualTo(
Document.parse("{ $mergeObjects: [ \"$kettricken\", " + EXPRESSION_STRING + ", \"$verity\" ] } "));
}
@Test // DATAMONGO-2053

View File

@@ -86,12 +86,10 @@ public class ReactiveAggregationUnitTests {
@Test // DATAMONGO-1646
public void errorsOnExplainUsage() {
assertThatIllegalArgumentException().isThrownBy(() -> template
.aggregate(newAggregation(Product.class, //
project("name", "netPrice")) //
.withOptions(AggregationOptions.builder().explain(true).build()),
INPUT_COLLECTION, TagCount.class)
.subscribe());
assertThatIllegalArgumentException().isThrownBy(() -> template.aggregate(newAggregation(Product.class, //
project("name", "netPrice")) //
.withOptions(AggregationOptions.builder().explain(true).build()),
INPUT_COLLECTION, TagCount.class).subscribe());
}
@Test // DATAMONGO-1646, DATAMONGO-1311
@@ -111,10 +109,9 @@ public class ReactiveAggregationUnitTests {
@Test // DATAMONGO-1646
public void appliesCollationCorrectlyWhenPresent() {
template.aggregate(
newAggregation(Product.class, //
project("name", "netPrice")) //
.withOptions(AggregationOptions.builder().collation(Collation.of("en_US")).build()),
template.aggregate(newAggregation(Product.class, //
project("name", "netPrice")) //
.withOptions(AggregationOptions.builder().collation(Collation.of("en_US")).build()),
INPUT_COLLECTION, TagCount.class).subscribe();
verify(publisher).collation(eq(com.mongodb.client.model.Collation.builder().locale("en_US").build()));
@@ -134,13 +131,10 @@ public class ReactiveAggregationUnitTests {
@Test // DATAMONGO-1646
public void appliesDiskUsageCorrectly() {
template
.aggregate(
newAggregation(Product.class, //
project("name", "netPrice")) //
.withOptions(AggregationOptions.builder().allowDiskUse(true).build()),
INPUT_COLLECTION, TagCount.class)
.subscribe();
template.aggregate(newAggregation(Product.class, //
project("name", "netPrice")) //
.withOptions(AggregationOptions.builder().allowDiskUse(true).build()),
INPUT_COLLECTION, TagCount.class).subscribe();
verify(publisher).allowDiskUse(eq(true));
}

View File

@@ -15,14 +15,14 @@
*/
package org.springframework.data.mongodb.core.aggregation;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Thomas Darimont
* @author Christoph Strobl

View File

@@ -16,8 +16,7 @@
package org.springframework.data.mongodb.core.convert;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Arrays;
@@ -32,6 +31,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.DocumentTestUtils;

View File

@@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.mongodb.core.DocumentTestUtils.*;
import com.mongodb.DBObject;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
@@ -42,6 +41,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.ConversionNotSupportedException;
import org.springframework.beans.factory.annotation.Value;
@@ -80,6 +80,7 @@ import org.springframework.test.util.ReflectionTestUtils;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBRef;
/**

View File

@@ -28,8 +28,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.model.Filters;
import org.bson.conversions.Bson;
import org.bson.types.Code;
import org.bson.types.ObjectId;
@@ -38,6 +36,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.annotation.Id;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
@@ -60,6 +59,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.model.Filters;
/**
* Unit tests for {@link QueryMapper}.
@@ -180,7 +181,8 @@ public class QueryMapperUnitTests {
@Test // DATAMONGO-373
void handlesNativelyBuiltQueryCorrectly() {
Bson query = new BasicDBObject(Filters.or(new BasicDBObject("foo", "bar")).toBsonDocument(org.bson.Document.class, MongoClientSettings.getDefaultCodecRegistry()));
Bson query = new BasicDBObject(Filters.or(new BasicDBObject("foo", "bar")).toBsonDocument(org.bson.Document.class,
MongoClientSettings.getDefaultCodecRegistry()));
mapper.getMappedObject(query, Optional.empty());
}

View File

@@ -52,8 +52,8 @@ public class GeoJsonModuleUnitTests {
}
@Test // DATAMONGO-1181
public void shouldDeserializeGeoJsonLineStringCorrectly() throws JsonParseException, JsonMappingException,
IOException {
public void shouldDeserializeGeoJsonLineStringCorrectly()
throws JsonParseException, JsonMappingException, IOException {
String json = "{ \"type\": \"LineString\", \"coordinates\": [ [10.0, 20.0], [30.0, 40.0], [50.0, 60.0] ]}";
@@ -62,8 +62,8 @@ public class GeoJsonModuleUnitTests {
}
@Test // DATAMONGO-1181
public void shouldDeserializeGeoJsonMultiPointCorrectly() throws JsonParseException, JsonMappingException,
IOException {
public void shouldDeserializeGeoJsonMultiPointCorrectly()
throws JsonParseException, JsonMappingException, IOException {
String json = "{ \"type\": \"MultiPoint\", \"coordinates\": [ [10.0, 20.0], [30.0, 40.0], [50.0, 60.0] ]}";
@@ -73,8 +73,8 @@ public class GeoJsonModuleUnitTests {
@Test // DATAMONGO-1181
@SuppressWarnings("unchecked")
public void shouldDeserializeGeoJsonMultiLineStringCorrectly() throws JsonParseException, JsonMappingException,
IOException {
public void shouldDeserializeGeoJsonMultiLineStringCorrectly()
throws JsonParseException, JsonMappingException, IOException {
String json = "{ \"type\": \"MultiLineString\", \"coordinates\": [ [ [10.0, 20.0], [30.0, 40.0] ], [ [50.0, 60.0] , [70.0, 80.0] ] ]}";
@@ -92,8 +92,8 @@ public class GeoJsonModuleUnitTests {
}
@Test // DATAMONGO-1181
public void shouldDeserializeGeoJsonMultiPolygonCorrectly() throws JsonParseException, JsonMappingException,
IOException {
public void shouldDeserializeGeoJsonMultiPolygonCorrectly()
throws JsonParseException, JsonMappingException, IOException {
String json = "{ \"type\": \"Polygon\", \"coordinates\": ["
+ "[[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],"

View File

@@ -25,13 +25,11 @@ import java.util.Arrays;
import java.util.List;
import org.assertj.core.data.Percentage;
import org.junit.After;
import org.junit.Before;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.DataAccessException;
@@ -52,10 +50,8 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.test.util.BasicDbListBuilder;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
@@ -66,7 +62,7 @@ import com.mongodb.client.MongoCollection;
* @author Christoph Strobl
* @author Mark Paluch
*/
@ExtendWith({MongoClientExtension.class, SpringExtension.class})
@ExtendWith({ MongoClientExtension.class, SpringExtension.class })
@ContextConfiguration
public class GeoJsonTests {

View File

@@ -22,7 +22,6 @@ import static org.springframework.data.mongodb.core.query.Query.*;
import java.util.List;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.data.domain.Sort.Direction;

View File

@@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.*;
import java.util.Arrays;
import java.util.List;
import com.mongodb.client.MongoClient;
import org.hamcrest.core.IsInstanceOf;
import org.junit.ClassRule;
import org.junit.Rule;
@@ -28,6 +27,7 @@ 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;
@@ -46,6 +46,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.MongoCommandException;
import com.mongodb.client.MongoClient;
/**
* Integration tests for {@link MongoPersistentEntityIndexCreator}.
@@ -99,7 +100,7 @@ public class MongoPersistentEntityIndexCreatorIntegrationTests {
expectedException.expectMessage("lastname");
expectedException.expectCause(IsInstanceOf.<Throwable> instanceOf(MongoCommandException.class));
try(MongoClient client = MongoTestUtils.client()) {
try (MongoClient client = MongoTestUtils.client()) {
MongoTemplate mongoTemplate = new MongoTemplate(client, "issue");
MongoPersistentEntityIndexCreator indexCreator = new MongoPersistentEntityIndexCreator(new MongoMappingContext(),

View File

@@ -659,7 +659,8 @@ public class MongoPersistentEntityIndexResolverUnitTests {
assertThat(indexDefinitions).hasSize(2);
assertIndexPathAndCollection(new String[] { "firstname", "lastname" }, "repeatedCompoundIndex",
indexDefinitions.get(0));
assertIndexPathAndCollection(new String[] { "address.city", "address.street" }, "repeatedCompoundIndex", indexDefinitions.get(1));
assertIndexPathAndCollection(new String[] { "address.city", "address.street" }, "repeatedCompoundIndex",
indexDefinitions.get(1));
}
@Document("CompoundIndexOnLevelOne")

View File

@@ -6,9 +6,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class SampleEntity {
@Id
String id;
@Id String id;
@Indexed
String prop;
@Indexed String prop;
}

View File

@@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.*;
import java.util.List;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,8 +30,6 @@ import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Language;
import org.springframework.data.mongodb.core.query.Collation;
import org.springframework.data.mongodb.test.util.MongoVersionRule;
import org.springframework.data.util.Version;
import com.mongodb.WriteConcern;

View File

@@ -16,7 +16,6 @@
package org.springframework.data.mongodb.core.mapping;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>

View File

@@ -20,8 +20,7 @@ package org.springframework.data.mongodb.core.mapping;
*/
public class Address implements Comparable<Address> {
@SuppressWarnings("unused")
private String id;
@SuppressWarnings("unused") private String id;
private String[] lines;
private String city;
private String provinceOrState;

View File

@@ -19,7 +19,8 @@ import com.querydsl.core.annotations.QuerySupertype;
/**
* {@link QuerySupertype} is necessary for Querydsl 2.2.0-beta4 to compile the query classes directly. Can be removed as
* soon as <a href="https://bugs.launchpad.net/querydsl/+bug/776219">https://bugs.launchpad.net/querydsl/+bug/776219</a> is fixed.
* soon as <a href="https://bugs.launchpad.net/querydsl/+bug/776219">https://bugs.launchpad.net/querydsl/+bug/776219</a>
* is fixed.
*
* @see <a href="https://bugs.launchpad.net/querydsl/+bug/776219">https://bugs.launchpad.net/querydsl/+bug/776219</a>
* @author Jon Brisbin

View File

@@ -24,10 +24,8 @@ import org.springframework.data.mongodb.core.index.Indexed;
@Document("foobar")
public class CustomCollectionWithIndex {
@Id
private String id;
@Indexed
private String name;
@Id private String id;
@Indexed private String name;
public CustomCollectionWithIndex(String name) {
this.name = name;

View File

@@ -24,10 +24,8 @@ import org.springframework.data.mongodb.core.index.Indexed;
@Document
public class DetectedCollectionWithIndex {
@Id
private String id;
@Indexed
private String name;
@Id private String id;
@Indexed private String name;
public DetectedCollectionWithIndex(String name) {
this.name = name;

View File

@@ -16,8 +16,8 @@
package org.springframework.data.mongodb.core.mapping;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
@@ -25,10 +25,8 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class GeneratedId {
@Id
private ObjectId id;
@SuppressWarnings("unused")
private String name;
@Id private ObjectId id;
@SuppressWarnings("unused") private String name;
public GeneratedId(String name) {
this.name = name;

View File

@@ -66,7 +66,7 @@ public class GeoIndexedTests {
private void cleanDb() {
try(MongoClient mongo = MongoTestUtils.client()) {
try (MongoClient mongo = MongoTestUtils.client()) {
MongoDatabase db = mongo.getDatabase(GeoIndexedAppConfig.GEO_DB);

View File

@@ -16,9 +16,9 @@
package org.springframework.data.mongodb.core.mapping;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
@@ -26,10 +26,8 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document("geolocation")
public class GeoLocation {
@Id
private ObjectId id;
@GeoSpatialIndexed
private double[] location;
@Id private ObjectId id;
@GeoSpatialIndexed private double[] location;
public GeoLocation(double[] location) {
this.location = location;

View File

@@ -16,7 +16,6 @@
package org.springframework.data.mongodb.core.mapping;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>

View File

@@ -22,14 +22,11 @@ import org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity.
@RunWith(MockitoJUnitRunner.class)
public class MongoPersistentPropertyComparatorUnitTests {
@Mock
MongoPersistentProperty firstName;
@Mock MongoPersistentProperty firstName;
@Mock
MongoPersistentProperty lastName;
@Mock MongoPersistentProperty lastName;
@Mock
MongoPersistentProperty ssn;
@Mock MongoPersistentProperty ssn;
@Test
public void ordersPropertiesCorrectly() {

View File

@@ -23,8 +23,6 @@ import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
@@ -33,18 +31,13 @@ import org.springframework.data.mongodb.core.mapping.Document;
@CompoundIndexes({ @CompoundIndex(name = "age_idx", def = "{'lastName': 1, 'age': -1}") })
public class Person<T extends Address> {
@Id
private String id;
@Indexed(unique = true)
private Integer ssn;
@Id private String id;
@Indexed(unique = true) private Integer ssn;
private String firstName;
@Indexed
private String lastName;
@Indexed private String lastName;
private Integer age;
@Transient
private Integer accountTotal;
@DBRef
private List<Account> accounts;
@Transient private Integer accountTotal;
@DBRef private List<Account> accounts;
private T address;
public Person(Integer ssn) {

View File

@@ -23,8 +23,7 @@ import org.springframework.data.annotation.Id;
@Document("person1")
public class PersonCustomCollection1 extends BasePerson {
@Id
private String id;
@Id private String id;
public PersonCustomCollection1(Integer ssn, String firstName, String lastName) {
super(ssn, firstName, lastName);

View File

@@ -23,8 +23,7 @@ import org.springframework.data.annotation.Id;
@Document("person2")
public class PersonCustomCollection2 extends BasePerson {
@Id
private String id;
@Id private String id;
public PersonCustomCollection2(Integer ssn, String firstName, String lastName) {
super(ssn, firstName, lastName);

View File

@@ -18,7 +18,6 @@ package org.springframework.data.mongodb.core.mapping;
import java.util.Map;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>

View File

@@ -16,8 +16,8 @@
package org.springframework.data.mongodb.core.mapping;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
@@ -25,11 +25,9 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class PersonNullProperties extends BasePerson {
@Id
private ObjectId id;
@Id private ObjectId id;
public PersonNullProperties() {
}
public PersonNullProperties() {}
public ObjectId getId() {
return id;

View File

@@ -15,7 +15,6 @@
*/
package org.springframework.data.mongodb.core.mapping;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
*/

View File

@@ -16,7 +16,6 @@
package org.springframework.data.mongodb.core.mapping;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
@@ -24,8 +23,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class PrimitiveId {
@Id
int id;
@Id int id;
String text;
public PrimitiveId(Integer id) {

View File

@@ -28,10 +28,11 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.annotation.Id;

View File

@@ -26,11 +26,9 @@ import javax.validation.constraints.Size;
*/
public class User {
@Size(min = 10)
private String name;
@Size(min = 10) private String name;
@Min(18)
private Integer age;
@Min(18) private Integer age;
public User(String name, Integer age) {
this.name = name;

View File

@@ -48,6 +48,7 @@ import org.springframework.data.mongodb.core.messaging.Message.MessageProperties
import org.springframework.data.mongodb.core.messaging.SubscriptionUtils.*;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoVersion;
@@ -387,6 +388,7 @@ public class ChangeStreamTests {
}
@Test // DATAMONGO-1803
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public void readsFullDocumentForUpdateWhenNotMappedToDomainTypeButLookupSpecified() throws InterruptedException {
CollectingMessageListener<ChangeStreamDocument<Document>, Document> messageListener = new CollectingMessageListener<>();

View File

@@ -30,10 +30,11 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.mongodb.core.MongoExceptionTranslator;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions;
import org.springframework.data.mongodb.core.messaging.Task.State;
import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions;
import org.springframework.util.ErrorHandler;
import com.mongodb.ServerAddress;

View File

@@ -27,13 +27,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import org.bson.Document;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.core.task.SimpleAsyncTaskExecutor;
import org.springframework.dao.DataAccessException;
import org.springframework.data.annotation.Id;
@@ -42,10 +39,10 @@ import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.MongoServerCondition;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.util.ErrorHandler;
import com.mongodb.client.MongoClient;
@@ -58,7 +55,7 @@ import com.mongodb.client.model.changestream.ChangeStreamDocument;
*
* @author Christoph Strobl
*/
@ExtendWith({MongoClientExtension.class, MongoServerCondition.class})
@ExtendWith({ MongoClientExtension.class, MongoServerCondition.class })
public class DefaultMessageListenerContainerTests {
public static final String DATABASE_NAME = "change-stream-events";
@@ -93,6 +90,7 @@ public class DefaultMessageListenerContainerTests {
@Test // DATAMONGO-1803
@EnableIfReplicaSetAvailable
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public void shouldCollectMappedChangeStreamMessagesCorrectly() throws InterruptedException {
MessageListenerContainer container = new DefaultMessageListenerContainer(template);
@@ -355,6 +353,7 @@ public class DefaultMessageListenerContainerTests {
@Test // DATAMONGO-2012
@EnableIfReplicaSetAvailable
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
public void databaseLevelWatch() throws InterruptedException {
MessageListenerContainer container = new DefaultMessageListenerContainer(template);

View File

@@ -19,7 +19,6 @@ 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;
@@ -31,6 +30,7 @@ import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;

View File

@@ -24,7 +24,6 @@ import java.util.List;
import org.bson.Document;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -38,8 +37,6 @@ import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.data.mongodb.core.mapping.Language;
import org.springframework.data.mongodb.core.mapping.TextScore;
import org.springframework.data.mongodb.core.query.TextQueryTests.FullTextDoc.FullTextDocBuilder;
import org.springframework.data.mongodb.test.util.MongoVersionRule;
import org.springframework.data.util.Version;
/**
* @author Christoph Strobl
@@ -201,8 +198,8 @@ public class TextQueryTests extends AbstractIntegrationTests {
initWithDefaultDocuments();
// page 1
List<FullTextDoc> result = template
.find(new TextQuery("bake coffee cake").sortByScore().with(PageRequest.of(0, 2)), FullTextDoc.class);
List<FullTextDoc> result = template.find(new TextQuery("bake coffee cake").sortByScore().with(PageRequest.of(0, 2)),
FullTextDoc.class);
assertThat(result).hasSize(2);
assertThat(result).containsExactly(BAKE, COFFEE);

View File

@@ -479,8 +479,7 @@ public class UpdateTests {
@Test // DATAMONGO-1777, DATAMONGO-2198
public void toStringConsidersIsolated() {
assertThat(new Update().set("key", "value").isolated().toString())
.contains("\"$isolated\"");
assertThat(new Update().set("key", "value").isolated().toString()).contains("\"$isolated\"");
}
@Test // DATAMONGO-1778

View File

@@ -18,6 +18,7 @@ package org.springframework.data.mongodb.core.schema;
import static org.springframework.data.domain.Range.from;
import static org.springframework.data.domain.Range.Bound.*;
import static org.springframework.data.mongodb.core.schema.JsonSchemaObject.*;
import static org.springframework.data.mongodb.core.schema.JsonSchemaObject.array;
import static org.springframework.data.mongodb.core.schema.JsonSchemaObject.of;
import static org.springframework.data.mongodb.test.util.Assertions.*;
@@ -31,6 +32,7 @@ import java.util.Set;
import org.bson.Document;
import org.junit.Test;
import org.springframework.data.domain.Range;
import org.springframework.data.domain.Range.*;

View File

@@ -27,8 +27,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document
public abstract class Contact {
@Id
protected String id;
@Id protected String id;
public Contact() {
this.id = new ObjectId().toString();

View File

@@ -15,8 +15,6 @@
*/
package org.springframework.data.mongodb.repository;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* Simple repository interface managing {@link Contact}s.
*

View File

@@ -16,7 +16,6 @@
package org.springframework.data.mongodb.repository;
/**
*
* @author Oliver Gierke
*/
public interface Credentials {

View File

@@ -20,7 +20,6 @@ import lombok.Value;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.springframework.data.annotation.Id;

View File

@@ -37,6 +37,7 @@ 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;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
import org.springframework.data.mongodb.test.util.ReplSetClient;
@@ -59,6 +60,7 @@ import com.mongodb.client.model.Filters;
*/
@ExtendWith({ MongoClientExtension.class, SpringExtension.class })
@EnableIfReplicaSetAvailable
@EnableIfMongoServerVersion(isGreaterThanEqual = "4.0")
@Transactional(transactionManager = "txManager")
public class PersonRepositoryTransactionalTests {

View File

@@ -18,6 +18,7 @@ package org.springframework.data.mongodb.repository.config;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -29,8 +30,6 @@ import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.reactivestreams.client.MongoClients;
/**
* Integration tests for {@link ReactiveMongoRepositoriesRegistrar}.
*

View File

@@ -16,9 +16,7 @@
package org.springframework.data.mongodb.repository.query;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.lang.reflect.Method;
@@ -35,6 +33,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;

View File

@@ -16,9 +16,7 @@
package org.springframework.data.mongodb.repository.query;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import reactor.core.publisher.Flux;
@@ -34,6 +32,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.reactivestreams.Publisher;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Range;

View File

@@ -216,8 +216,8 @@ public class ReactiveStringBasedMongoQueryUnitTests {
ReactiveStringBasedMongoQuery mongoQuery = createQueryForMethod("findByLastnameAsBinary", byte[].class);
org.springframework.data.mongodb.core.query.Query query = mongoQuery.createQuery(accesor);
org.springframework.data.mongodb.core.query.Query reference = new BasicQuery("{'lastname' : { '$binary' : '"
+ Base64Utils.encodeToString(binaryData) + "', '$type' : '" + 0 + "'}}");
org.springframework.data.mongodb.core.query.Query reference = new BasicQuery(
"{'lastname' : { '$binary' : '" + Base64Utils.encodeToString(binaryData) + "', '$type' : '" + 0 + "'}}");
assertThat(query.getQueryObject().toJson()).isEqualTo(reference.getQueryObject().toJson());
}

View File

@@ -16,7 +16,7 @@
package org.springframework.data.mongodb.repository.support;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import static org.mockito.Mockito.anyString;
@@ -28,6 +28,7 @@ import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.index.IndexDefinition;
import org.springframework.data.mongodb.core.index.IndexOperations;

View File

@@ -272,14 +272,12 @@ public class QuerydslRepositorySupportTests {
.isEqualTo("find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}})");
query = query.orderBy(p.firstname.asc());
assertThat(StringUtils.trimAllWhitespace(query.toString()))
.isEqualTo(
"find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}}).sort({\"firstname\":1})");
assertThat(StringUtils.trimAllWhitespace(query.toString())).isEqualTo(
"find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}}).sort({\"firstname\":1})");
query = query.offset(1).limit(5);
assertThat(StringUtils.trimAllWhitespace(query.toString()))
.isEqualTo(
"find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}}).sort({\"firstname\":1}).skip(1).limit(5)");
assertThat(StringUtils.trimAllWhitespace(query.toString())).isEqualTo(
"find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}}).sort({\"firstname\":1}).skip(1).limit(5)");
}
@Data

View File

@@ -15,7 +15,6 @@
*/
package org.springframework.data.mongodb.repository.support;
import org.springframework.data.mongodb.core.query.BasicQuery;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -39,6 +38,7 @@ import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory;
import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.repository.Address;
import org.springframework.data.mongodb.repository.Person;
import org.springframework.data.mongodb.repository.QAddress;
@@ -52,7 +52,6 @@ import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.MongoException;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoDatabase;
/**

View File

@@ -16,7 +16,7 @@
package org.springframework.data.mongodb.repository.support;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import org.junit.Before;
@@ -25,6 +25,7 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;

View File

@@ -32,7 +32,7 @@
package org.springframework.data.mongodb.repository.support;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import reactor.core.publisher.Flux;
@@ -44,6 +44,7 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;

View File

@@ -23,6 +23,7 @@ import reactor.test.StepVerifier;
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.dao.OptimisticLockingFailureException;
@@ -36,7 +37,6 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
/**
* @author Mark Paluch

View File

@@ -21,12 +21,22 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.extension.ExtendWith;
/**
* Marks a field or method as to be autowired by JUnit's dependency injection facilities for injection of a MongoDB
* client instance. Depends on {@link MongoClientExtension}.
*
* @author Christoph Strobl
* @see com.mongodb.client.MongoClient
* @see com.mongodb.reactivestreams.client.MongoClient
* @see ReplSetClient
* @see MongoClientExtension
*/
@Target({ ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ExtendWith(MongoClientExtension.class)
public @interface Client {
}

View File

@@ -25,6 +25,10 @@ import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.extension.ExtendWith;
/**
* {@code @EnableIfMongoServerVersion} is used to signal that the annotated test class or test method is only
* <em>enabled</em> if the value of the specified version boundaries {@link #isGreaterThanEqual()} and
* {@link #isLessThan()} match the connected MongoDB server version.
*
* @author Christoph Strobl
* @since 3.0
*/

View File

@@ -25,8 +25,8 @@ import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.extension.ExtendWith;
/**
* {@link EnableIfReplicaSetAvailable} marks a specific test class or method to be only executed against a server running in
* replicaSet mode. Intended to be used along with {@link MongoServerCondition}.
* {@link EnableIfReplicaSetAvailable} marks a specific test class or method to be only executed against a server
* running in replicaSet mode. Intended to be used along with {@link MongoServerCondition}.
*
* @author Christoph Strobl
* @since 3.0

View File

@@ -19,7 +19,6 @@ import static org.junit.platform.commons.util.AnnotationUtils.*;
import static org.junit.platform.commons.util.ReflectionUtils.*;
import java.io.Closeable;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.function.Predicate;
@@ -37,10 +36,17 @@ import org.junit.platform.commons.util.ExceptionUtils;
import org.junit.platform.commons.util.ReflectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ClassUtils;
import com.mongodb.client.MongoClient;
/**
* JUnit {@link Extension} providing parameter resolution for synchronous and reactive MongoDB client instances.
*
* @author Christoph Strobl
* @see Client
* @see ReplSetClient
*/
public class MongoClientExtension implements Extension, BeforeAllCallback, AfterAllCallback, ParameterResolver {
@@ -53,9 +59,7 @@ public class MongoClientExtension implements Extension, BeforeAllCallback, After
private static final String REACTIVE_REPLSET_KEY = "mongo.client.replset.reactive";
@Override
public void afterAll(ExtensionContext extensionContext) throws Exception {
closeClients(extensionContext);
}
public void afterAll(ExtensionContext extensionContext) throws Exception {}
@Override
public void beforeAll(ExtensionContext context) throws Exception {
@@ -91,29 +95,29 @@ public class MongoClientExtension implements Extension, BeforeAllCallback, After
LOGGER.debug("Obtaining sync client from store.");
return store.getOrComputeIfAbsent(replSet ? SYNC_REPLSET_KEY : SYNC_KEY, it -> syncClient(replSet),
com.mongodb.client.MongoClient.class);
SyncClientHolder.class).client;
}
if (ClassUtils.isAssignable(com.mongodb.reactivestreams.client.MongoClient.class, type)) {
LOGGER.debug("Obtaining reactive client from store.");
return store.getOrComputeIfAbsent(replSet ? REACTIVE_REPLSET_KEY : REACTIVE_KEY, key -> reactiveClient(replSet),
com.mongodb.reactivestreams.client.MongoClient.class);
ReactiveClientHolder.class).client;
}
throw new IllegalStateException("Damn - something went wrong.");
}
private com.mongodb.reactivestreams.client.MongoClient reactiveClient(boolean replSet) {
private ReactiveClientHolder reactiveClient(boolean replSet) {
LOGGER.debug("Creating new reactive {}client.", replSet ? "replica set " : "");
return replSet ? MongoTestUtils.reactiveReplSetClient() : MongoTestUtils.reactiveClient();
return new ReactiveClientHolder(replSet ? MongoTestUtils.reactiveReplSetClient() : MongoTestUtils.reactiveClient());
}
private com.mongodb.client.MongoClient syncClient(boolean replSet) {
private SyncClientHolder syncClient(boolean replSet) {
LOGGER.debug("Creating new sync {}client.", replSet ? "replica set " : "");
return replSet ? MongoTestUtils.replSetClient() : MongoTestUtils.client();
return new SyncClientHolder(replSet ? MongoTestUtils.replSetClient() : MongoTestUtils.client());
}
private void assertValidFieldCandidate(Field field) {
@@ -133,29 +137,11 @@ public class MongoClientExtension implements Extension, BeforeAllCallback, After
}
}
private void closeClients(ExtensionContext extensionContext) {
Store store = extensionContext.getStore(NAMESPACE);
closeClient(store, SYNC_KEY);
closeClient(store, SYNC_REPLSET_KEY);
closeClient(store, REACTIVE_KEY);
closeClient(store, REACTIVE_REPLSET_KEY);
}
private void closeClient(Store store, String key) {
Closeable client = store.remove(key, Closeable.class);
if (client != null) {
LOGGER.debug("Closing {} {}client.", key.contains("reactive") ? "reactive" : "sync",
key.contains("replset") ? "replset " : "");
try {
client.close();
} catch (IOException e) {
// so what?
}
}
}
@@ -173,4 +159,41 @@ public class MongoClientExtension implements Extension, BeforeAllCallback, After
boolean replSet = parameterContext.getParameter().getAnnotation(ReplSetClient.class) != null;
return getMongoClient(parameterType, extensionContext, replSet);
}
static class SyncClientHolder implements Store.CloseableResource {
final MongoClient client;
public SyncClientHolder(MongoClient client) {
this.client = client;
}
@Override
public void close() {
try {
client.close();
} catch (RuntimeException e) {
// so what?
}
}
}
static class ReactiveClientHolder implements Store.CloseableResource {
final com.mongodb.reactivestreams.client.MongoClient client;
public ReactiveClientHolder(com.mongodb.reactivestreams.client.MongoClient client) {
this.client = client;
}
@Override
public void close() {
try {
client.close();
} catch (RuntimeException e) {
// so what?
}
}
}
}

View File

@@ -22,7 +22,14 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Marks a field or method as to be autowired by JUnit's dependency injection facilities for injection of a MongoDB
* client instance connected to a replica set. Depends on {@link MongoClientExtension}.
*
* @author Christoph Strobl
* @see com.mongodb.client.MongoClient
* @see com.mongodb.reactivestreams.client.MongoClient
* @see Client
* @see MongoClientExtension
*/
@Target({ ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -12,7 +12,7 @@
-->
<logger name="org.springframework.data.mongodb.core" level="error"/>
<logger name="org.springframework.data.mongodb.test.util" level="debug"/>
<logger name="org.springframework.data.mongodb.test.util" level="info"/>
<root level="error">
<appender-ref ref="console" />