From 99cc4be41e5c6be9f8c50db63dd9589d4a38b74f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matea=20Pej=C4=8Dinovi=C4=87?= Date: Thu, 25 Nov 2021 20:09:04 +0100 Subject: [PATCH] BAEL-5032 Swagger to PDF --- .../spring-boot-swagger/pom.xml | 109 +++++++++++++++++- .../controller/UserController.java | 63 ++++++++++ .../baeldung/swagger2pdf/objects/User.java | 12 ++ 3 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java create mode 100644 spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java diff --git a/spring-boot-modules/spring-boot-swagger/pom.xml b/spring-boot-modules/spring-boot-swagger/pom.xml index 87ee5f04cb..6e91189802 100644 --- a/spring-boot-modules/spring-boot-swagger/pom.xml +++ b/spring-boot-modules/spring-boot-swagger/pom.xml @@ -25,6 +25,21 @@ springfox-boot-starter ${springfox.version} + + io.springfox + springfox-swagger2 + ${springfox-swagger2.version} + + + io.swagger.core.v3 + swagger-jaxrs2 + ${swagger-jaxrs2.version} + + + javax.ws.rs + javax.ws.rs-api + ${javax.ws.rs-api.version} + @@ -33,11 +48,103 @@ org.springframework.boot spring-boot-maven-plugin + + + + com.github.kongchen + swagger-maven-plugin + 3.1.3 + + + + false + com.baeldung.swagger2pdf.controller.UserController + /api + + DEMO REST API + A simple DEMO project for REST API documentation + v1 + + ${project.build.directory}/api + true + + + + + + package + + generate + + + + + + io.github.robwin + swagger2markup-maven-plugin + 0.9.3 + + ${project.build.directory}/api + ${generated.asciidoc.directory} + asciidoc + + + + package + + process-swagger + + + + + + org.asciidoctor + asciidoctor-maven-plugin + 2.2.1 + + + + org.asciidoctor + asciidoctorj-pdf + 1.6.0 + + + + ${project.build.outputDirectory}/../asciidoc + overview.adoc + + book + left + 2 + ${generated.asciidoc.directory} + + + + + + asciidoc-to-pdf + package + + process-asciidoc + + + pdf + ${project.build.outputDirectory}/api/pdf + + + + + + 3.0.0 + ${project.build.outputDirectory}/asciidoc + 2.10.5 + 2.1.11 + 2.1 - \ No newline at end of file + diff --git a/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java new file mode 100644 index 0000000000..380bac6f8c --- /dev/null +++ b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java @@ -0,0 +1,63 @@ +package com.baeldung.swagger2pdf.controller; + +import com.baeldung.swagger2pdf.objects.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.NonNull; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@Controller +@Api(value = "/api", description = "A controller for user management") +@RequestMapping("/user") +@ResponseStatus(HttpStatus.OK) +public class UserController { + + static List users; + + static { + users = new ArrayList<>(); + users.add(new User("Mark", "Thompson", 23)); + users.add(new User("Kate", "Jordan", 22)); + } + + @ApiOperation(value = "Retrieves all the users") + @RequestMapping(value = "/users", + method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + public List getUsers() { + return users; + } + + @ApiOperation(value = "Retrieves a user based on first name") + @RequestMapping(value = "/user", + method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + public User getUser(@NonNull @RequestParam String firstName) { + + if (firstName.isEmpty()) { + return null; + } + + return users.stream() + .filter(user -> user.getFirstName().equals(firstName)) + .findAny() + .orElse(null); + + } + + @ApiOperation(value = "Adds a user.") + @RequestMapping(value = "/user", + method = RequestMethod.POST, + produces = MediaType.APPLICATION_JSON_VALUE) + public List addUser(@NonNull @RequestBody User user) { + users.add(user); + return users; + } +} + diff --git a/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java new file mode 100644 index 0000000000..8c59cb246a --- /dev/null +++ b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java @@ -0,0 +1,12 @@ +package com.baeldung.swagger2pdf.objects; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class User { + private String firstName; + private String lastName; + private int age; +}