diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java index 423226433..ed71c4a3e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java @@ -34,7 +34,8 @@ import com.mongodb.client.gridfs.model.GridFSFile; import com.mongodb.reactivestreams.client.gridfs.GridFSDownloadPublisher; /** - * Reactive {@link GridFSFile} based {@link Resource} implementation. + * Reactive {@link GridFSFile} based {@link Resource} implementation. Note that the {@link #getDownloadStream() content} + * can be consumed only once. * * @author Mark Paluch * @author Christoph Strobl @@ -63,6 +64,8 @@ public class ReactiveGridFsResource { * * @param filename filename of the absent resource. * @param downloadPublisher + * @param dataBufferFactory + * @since 3.0 */ ReactiveGridFsResource(String filename, @Nullable GridFSDownloadPublisher downloadPublisher, DataBufferFactory dataBufferFactory) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java index 0c8abe2d5..38f9d0d03 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java @@ -24,6 +24,7 @@ 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; @@ -79,6 +80,8 @@ import org.springframework.data.mongodb.core.query.Criteria; 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 org.springframework.data.mongodb.test.util.MongoVersion; +import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.mongodb.test.util.ReplicaSet; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; @@ -99,6 +102,7 @@ public class ReactiveMongoTemplateTests { @Autowired SimpleReactiveMongoDatabaseFactory factory; @Autowired ReactiveMongoTemplate template; @Autowired ConfigurableApplicationContext context; + @Rule public MongoVersionRule mongoVersion = MongoVersionRule.any(); @Before public void setUp() { @@ -1614,6 +1618,7 @@ public class ReactiveMongoTemplateTests { } @Test // DATAMONGO-2012 + @MongoVersion(asOf = "4.0") public void watchesDatabaseCorrectly() throws InterruptedException { Assumptions.assumeThat(ReplicaSet.required().runsAsReplicaSet()).isTrue(); @@ -1655,6 +1660,7 @@ public class ReactiveMongoTemplateTests { } @Test // DATAMONGO-2012, DATAMONGO-2113 + @MongoVersion(asOf = "4.0") public void resumesAtTimestampCorrectly() throws InterruptedException { Assumptions.assumeThat(ReplicaSet.required().runsAsReplicaSet()).isTrue(); @@ -1705,6 +1711,7 @@ public class ReactiveMongoTemplateTests { } @Test // DATAMONGO-2115 + @MongoVersion(asOf = "4.0") public void resumesAtBsonTimestampCorrectly() throws InterruptedException { Assumptions.assumeThat(ReplicaSet.required().runsAsReplicaSet()).isTrue(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java index c808d7f30..fcce51f50 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/SessionBoundMongoTemplateTests.java @@ -39,6 +39,7 @@ import org.bson.Document; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; +import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.mockito.Mockito; @@ -63,6 +64,7 @@ import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.core.query.Query; 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.data.mongodb.test.util.ReplicaSet; import org.springframework.data.util.Version; @@ -81,9 +83,10 @@ import com.mongodb.client.MongoDatabase; */ public class SessionBoundMongoTemplateTests { - public static @ClassRule MongoVersionRule REQUIRES_AT_LEAST_3_6_0 = MongoVersionRule.atLeast(Version.parse("3.6.0")); public static @ClassRule TestRule replSet = ReplicaSet.required(); + public @Rule MongoVersionRule REQUIRES_AT_LEAST_3_6_0 = MongoVersionRule.atLeast(Version.parse("3.6.0")); + MongoClient client; MongoTemplate template; SessionBoundMongoTemplate sessionBoundTemplate; @@ -259,6 +262,7 @@ public class SessionBoundMongoTemplateTests { } @Test // DATAMONGO-2001 + @MongoVersion(asOf = "4.0") public void countShouldWorkInTransactions() { if (!template.collectionExists(Person.class)) { @@ -283,6 +287,7 @@ public class SessionBoundMongoTemplateTests { } @Test // DATAMONGO-2012 + @MongoVersion(asOf = "4.0") public void countWithGeoInTransaction() { if (!template.collectionExists(Person.class)) { @@ -307,6 +312,7 @@ public class SessionBoundMongoTemplateTests { } @Test // DATAMONGO-2001 + @MongoVersion(asOf = "4.0") public void countShouldReturnIsolatedCount() throws InterruptedException { if (!template.collectionExists(Person.class)) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTests.java index 6b5f491ee..7c2e9cc8b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTests.java @@ -39,6 +39,7 @@ import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; +import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.springframework.data.annotation.Id; @@ -50,7 +51,10 @@ 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.MongoTestUtils; +import org.springframework.data.mongodb.test.util.MongoVersion; +import org.springframework.data.mongodb.test.util.MongoVersionRule; import org.springframework.data.mongodb.test.util.ReplicaSet; +import org.springframework.data.util.Version; import com.mongodb.client.model.changestream.ChangeStreamDocument; import com.mongodb.client.model.changestream.FullDocument; @@ -65,6 +69,7 @@ import com.mongodb.client.model.changestream.FullDocument; public class ChangeStreamTests { public static @ClassRule TestRule replSet = ReplicaSet.required(); + @Rule public MongoVersionRule mongoVersion = MongoVersionRule.atLeast(Version.parse("3.6")); static ThreadPoolExecutor executor; MongoTemplate template; @@ -161,6 +166,7 @@ public class ChangeStreamTests { } @Test // DATAMONGO-1803 + @MongoVersion(asOf = "4.0") public void useAggregationToFilterMessages() throws InterruptedException { CollectingMessageListener, User> messageListener = new CollectingMessageListener<>(); @@ -406,6 +412,7 @@ public class ChangeStreamTests { } @Test // DATAMONGO-2012, DATAMONGO-2113 + @MongoVersion(asOf = "4.0") public void resumeAtTimestampCorrectly() throws InterruptedException { CollectingMessageListener, User> messageListener1 = new CollectingMessageListener<>(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResourceUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResourceUnitTests.java index c5a8dcb14..60b2c4f2e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResourceUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResourceUnitTests.java @@ -31,6 +31,8 @@ import com.mongodb.client.gridfs.model.GridFSFile; import com.mongodb.reactivestreams.client.gridfs.GridFSDownloadPublisher; /** + * Unit tests for {@link ReactiveGridFsResource}. + * * @author Christoph Strobl */ class ReactiveGridFsResourceUnitTests { @@ -91,7 +93,6 @@ class ReactiveGridFsResourceUnitTests { } }); - } } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplateTests.java index 61cfad7a2..1d0e3aff3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplateTests.java @@ -27,7 +27,6 @@ import reactor.test.StepVerifier; import java.io.IOException; import java.io.InputStreamReader; import java.nio.ByteBuffer; -import java.util.Arrays; import org.bson.BsonObjectId; import org.bson.Document; @@ -35,7 +34,7 @@ import org.bson.types.ObjectId; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.reactivestreams.Publisher; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; @@ -58,7 +57,6 @@ import org.springframework.util.StreamUtils; import com.mongodb.client.gridfs.model.GridFSFile; import com.mongodb.internal.HexUtils; -import com.mongodb.reactivestreams.client.internal.Publishers; /** * Integration tests for {@link ReactiveGridFsTemplate}. @@ -293,10 +291,6 @@ public class ReactiveGridFsTemplateTests { String version; } - private static Publisher toPublisher(final ByteBuffer... byteBuffers) { - return Publishers.publishAndFlatten(callback -> callback.onResult(Arrays.asList(byteBuffers), null)); - } - public static String readToString(DataBuffer dataBuffer) { try { return FileCopyUtils.copyToString(new InputStreamReader(dataBuffer.asInputStream())); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java index d56b9d153..98bdc44f0 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java @@ -21,28 +21,28 @@ import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; 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.dao.OptimisticLockingFailureException; import org.springframework.data.mongodb.MongoTransactionManager; import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.repository.VersionedPerson; import org.springframework.data.mongodb.repository.query.MongoEntityInformation; 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.data.mongodb.test.util.ReplicaSet; -import org.springframework.data.util.ClassTypeInformation; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.support.TransactionTemplate; import com.mongodb.client.MongoClient; -import com.mongodb.client.MongoClients; /** * @author Christoph Strobl @@ -66,6 +66,8 @@ public class SimpleMongoRepositoryVersionedEntityTests { } } + @Rule public MongoVersionRule mongoVersion = MongoVersionRule.any(); + @Autowired // private MongoTemplate template;