diff --git a/spring-boot-modules/spring-boot-springdoc/pom.xml b/spring-boot-modules/spring-boot-springdoc/pom.xml
index 9212e56c5a..fd8a9e71ae 100644
--- a/spring-boot-modules/spring-boot-springdoc/pom.xml
+++ b/spring-boot-modules/spring-boot-springdoc/pom.xml
@@ -17,8 +17,8 @@
-
1.8
+ 1.2.32
@@ -26,6 +26,14 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ com.h2database
+ h2
+
org.springframework.boot
@@ -36,24 +44,13 @@
org.springdoc
- springdoc-openapi-core
- 1.1.49
-
-
- io.github.classgraph
- classgraph
-
-
+ springdoc-openapi-ui
+ ${springdoc.version}
org.springdoc
- springdoc-openapi-ui
- 1.1.49
-
-
- io.github.classgraph
- classgraph
- 4.8.44
+ springdoc-openapi-data-rest
+ ${springdoc.version}
diff --git a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/controller/BookController.java b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/controller/BookController.java
index 4d7d9e3d85..05f8c5a946 100644
--- a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/controller/BookController.java
+++ b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/controller/BookController.java
@@ -6,6 +6,8 @@ import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -41,6 +43,11 @@ public class BookController {
return repository.getBooks();
}
+ @GetMapping("/filter")
+ public Page filterBooks(Pageable pageable) {
+ return repository.getBooks(pageable);
+ }
+
@PutMapping("/{id}")
@ResponseStatus(HttpStatus.OK)
public Book updateBook(@PathVariable("id") final String id, @RequestBody final Book book) {
diff --git a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/repository/BookRepository.java b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/repository/BookRepository.java
index 4040ba28c2..0e3636d084 100644
--- a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/repository/BookRepository.java
+++ b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/springdoc/repository/BookRepository.java
@@ -1,13 +1,14 @@
package com.baeldung.springdoc.repository;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
+import com.baeldung.springdoc.model.Book;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
-import com.baeldung.springdoc.model.Book;
+import java.util.*;
+
+import static java.util.stream.Collectors.toList;
@Repository
public class BookRepository {
@@ -25,4 +26,11 @@ public class BookRepository {
public Collection getBooks() {
return books.values();
}
+
+ public Page getBooks(Pageable pageable) {
+ int toSkip = pageable.getPageSize() * pageable.getPageNumber();
+ List result = books.values().stream().skip(toSkip).limit(pageable.getPageSize()).collect(toList());
+
+ return new PageImpl<>(result, pageable, books.size());
+ }
}
diff --git a/spring-boot-modules/spring-boot-springdoc/src/main/resources/application.properties b/spring-boot-modules/spring-boot-springdoc/src/main/resources/application.properties
index f03e90feb6..45378e610b 100644
--- a/spring-boot-modules/spring-boot-springdoc/src/main/resources/application.properties
+++ b/spring-boot-modules/spring-boot-springdoc/src/main/resources/application.properties
@@ -3,3 +3,6 @@ springdoc.swagger-ui.path=/swagger-ui-custom.html
# custom path for api docs
springdoc.api-docs.path=/api-docs
+
+# H2 Related Configurations
+spring.datasource.url=jdbc:h2:mem:springdoc
\ No newline at end of file