From dbf43941be81b030007e29b3a009841642ad1cad Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 26 Nov 2019 15:20:57 +0100 Subject: [PATCH] DATAMONGO-765 - Polishing. Reformat code. Update ticket references. Original pull request: #806. --- .../data/mongodb/gridfs/GridFsTemplate.java | 3 +++ .../data/mongodb/gridfs/ReactiveGridFsTemplate.java | 3 +++ .../mongodb/gridfs/GridFsTemplateIntegrationTests.java | 6 +++--- .../mongodb/gridfs/ReactiveGridFsTemplateTests.java | 10 ++++++---- src/main/asciidoc/new-features.adoc | 2 ++ 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java index 617e9164c..74e398ee5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java @@ -167,12 +167,15 @@ public class GridFsTemplate extends GridFsOperationsSupport implements GridFsOpe Document sortObject = getMappedQuery(query.getSortObject()); GridFSFindIterable iterable = getGridFs().find(queryObject).sort(sortObject); + if (query.getSkip() > 0) { iterable = iterable.skip(Math.toIntExact(query.getSkip())); } + if (query.getLimit() > 0) { iterable = iterable.limit(query.getLimit()); } + return iterable; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplate.java index dd7de6ce4..48e599ca4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsTemplate.java @@ -262,12 +262,15 @@ public class ReactiveGridFsTemplate extends GridFsOperationsSupport implements R Document sortObject = getMappedQuery(query.getSortObject()); GridFSFindPublisher publisherToUse = getGridFs().find(queryObject).sort(sortObject); + if (query.getLimit() > 0) { publisherToUse = publisherToUse.limit(query.getLimit()); } + if (query.getSkip() > 0) { publisherToUse = publisherToUse.skip(Math.toIntExact(query.getSkip())); } + Integer cursorBatchSize = query.getMeta().getCursorBatchSize(); if (cursorBatchSize != null) { publisherToUse = publisherToUse.batchSize(cursorBatchSize); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java index 4d8c98c42..33bb5dd73 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java @@ -293,10 +293,10 @@ public class GridFsTemplateIntegrationTests { } } - @Test // DATAMONGO-2411 + @Test // DATAMONGO-765 public void considersSkipLimitWhenQueryingFiles() { - Stream.of( // - "a", "aa", "aaa", // + + Stream.of("a", "aa", "aaa", // "b", "bb", "bb", // "c", "cc", "ccc", // "d", "dd", "ddd") // 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 edaac16c5..065678928 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 @@ -289,17 +289,19 @@ public class ReactiveGridFsTemplateTests { .verifyComplete(); } - @Test // DATAMONGO-2411 + @Test // DATAMONGO-765 public void considersSkipLimitWhenQueryingFiles() { + DataBufferFactory bufferFactory = new DefaultDataBufferFactory(); DataBuffer buffer = bufferFactory.allocateBuffer(0); - Flux.just( // - "a", "aa", "aaa", // + Flux.just("a", "aa", "aaa", // "b", "bb", "bbb", // "c", "cc", "ccc", // "d", "dd", "ddd") // .flatMap(fileName -> operations.store(Mono.just(buffer), fileName)) // - .blockLast(); + .as(StepVerifier::create) // + .expectNextCount(12) // + .verifyComplete(); PageRequest pageRequest = PageRequest.of(2, 3, Sort.Direction.ASC, "filename"); operations.find(new Query().with(pageRequest)) // diff --git a/src/main/asciidoc/new-features.adoc b/src/main/asciidoc/new-features.adoc index 4ddf33ac3..82142252a 100644 --- a/src/main/asciidoc/new-features.adoc +++ b/src/main/asciidoc/new-features.adoc @@ -5,9 +5,11 @@ == What's New in Spring Data MongoDB 2.3 * Support for <>. +* Apply pagination when using GridFS `find(Query)`. [[new-features.2-2-0]] == What's New in Spring Data MongoDB 2.2 + * Compatibility with MongoDB 4.2 deprecating `eval`, `group` and `geoNear` Template API methods. * Extended SpEL aggregation support for MongoDB 3.4 and MongoDB 4.0 operators (see <>). * <> via `ReactiveQuerydslPredicateExecutor`.