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 01/10] 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; +} From 2a3501237cb22243274fe51973fa58664baf8f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matea=20Pej=C4=8Dinovi=C4=87?= Date: Thu, 25 Nov 2021 20:16:02 +0100 Subject: [PATCH 02/10] BAEL-5032 added lombok as dependency --- spring-boot-modules/spring-boot-swagger/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-boot-modules/spring-boot-swagger/pom.xml b/spring-boot-modules/spring-boot-swagger/pom.xml index 6e91189802..41f41a92b9 100644 --- a/spring-boot-modules/spring-boot-swagger/pom.xml +++ b/spring-boot-modules/spring-boot-swagger/pom.xml @@ -40,6 +40,11 @@ javax.ws.rs-api ${javax.ws.rs-api.version} + + org.projectlombok + lombok + ${lombok.version} + @@ -145,6 +150,7 @@ 2.10.5 2.1.11 2.1 + 1.18.22 From 9ab2a1ab0f5e5845f43f76b0d6473c85fe9916a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matea=20Pej=C4=8Dinovi=C4=87?= Date: Sun, 28 Nov 2021 18:03:38 +0100 Subject: [PATCH 03/10] BAEL-5253 moving the tests to other module --- .../core-java-string-algorithms-3/pom.xml | 9 ++- .../StringFirstCharacterUppercase.java | 2 +- .../controller/UserController.java | 63 ------------------- .../baeldung/swagger2pdf/objects/User.java | 12 ---- 4 files changed, 8 insertions(+), 78 deletions(-) rename core-java-modules/{core-java-string-algorithms-2 => core-java-string-algorithms-3}/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java (100%) delete mode 100644 spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java delete mode 100644 spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java diff --git a/core-java-modules/core-java-string-algorithms-3/pom.xml b/core-java-modules/core-java-string-algorithms-3/pom.xml index 6700e9ba95..180d75cc61 100644 --- a/core-java-modules/core-java-string-algorithms-3/pom.xml +++ b/core-java-modules/core-java-string-algorithms-3/pom.xml @@ -24,6 +24,11 @@ commons-validator ${validator.version} + + com.google.guava + guava + ${guava.version} + @@ -49,8 +54,8 @@ - 28.1-jre + 31.0.1-jre 1.7 - \ No newline at end of file + diff --git a/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java similarity index 100% rename from core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java rename to core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java index 0d9d3b6431..f9edd005dc 100644 --- a/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java +++ b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java @@ -1,9 +1,9 @@ package com.baeldung.isuppercase; -import com.google.common.base.Ascii; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; +import com.google.common.base.Ascii; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.matchesPattern; 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 deleted file mode 100644 index 380bac6f8c..0000000000 --- a/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java +++ /dev/null @@ -1,63 +0,0 @@ -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 deleted file mode 100644 index 8c59cb246a..0000000000 --- a/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java +++ /dev/null @@ -1,12 +0,0 @@ -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; -} From f5b596784f1673ce21173063b0d5dc81f759b7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matea=20Pej=C4=8Dinovi=C4=87?= Date: Sun, 28 Nov 2021 18:14:42 +0100 Subject: [PATCH 04/10] renaming the test class --- ...ppercase.java => StringFirstCharacterUppercaseUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/{StringFirstCharacterUppercase.java => StringFirstCharacterUppercaseUnitTest.java} (94%) diff --git a/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java similarity index 94% rename from core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java rename to core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java index f9edd005dc..6803285ca2 100644 --- a/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercase.java +++ b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java @@ -9,7 +9,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.matchesPattern; @TestInstance(TestInstance.Lifecycle.PER_CLASS) -public class StringFirstCharacterUppercase { +public class StringFirstCharacterUppercaseUnitTest { @Test public void givenString_whenCheckingWithCharacterIsUpperCase_thenStringCapitalized() { From 0c7a0bcb8db0e851f8ac22e7b2680d38381e54aa Mon Sep 17 00:00:00 2001 From: Teica Date: Mon, 29 Nov 2021 21:02:40 +0100 Subject: [PATCH 05/10] Update pom.xml --- .../spring-boot-swagger/pom.xml | 113 ------------------ 1 file changed, 113 deletions(-) diff --git a/spring-boot-modules/spring-boot-swagger/pom.xml b/spring-boot-modules/spring-boot-swagger/pom.xml index 41f41a92b9..d6b62bce3c 100644 --- a/spring-boot-modules/spring-boot-swagger/pom.xml +++ b/spring-boot-modules/spring-boot-swagger/pom.xml @@ -25,26 +25,6 @@ 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} - - - org.projectlombok - lombok - ${lombok.version} - @@ -53,104 +33,11 @@ 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 - 1.18.22 From d9b41d973700f64d3752c84393a02f211b0262b0 Mon Sep 17 00:00:00 2001 From: Teica Date: Mon, 29 Nov 2021 21:03:28 +0100 Subject: [PATCH 06/10] Update pom.xml From 3cf650f4ebeb9101b6b3085bd02beedb61ea7f7c Mon Sep 17 00:00:00 2001 From: Teica Date: Mon, 29 Nov 2021 21:04:08 +0100 Subject: [PATCH 07/10] Update pom.xml From c215f719592286fbe8ab4b702e0013dcd987a41c Mon Sep 17 00:00:00 2001 From: Teica Date: Mon, 29 Nov 2021 21:05:29 +0100 Subject: [PATCH 08/10] Delete pom.xml --- .../spring-boot-swagger/pom.xml | 43 ------------------- 1 file changed, 43 deletions(-) delete mode 100644 spring-boot-modules/spring-boot-swagger/pom.xml diff --git a/spring-boot-modules/spring-boot-swagger/pom.xml b/spring-boot-modules/spring-boot-swagger/pom.xml deleted file mode 100644 index d6b62bce3c..0000000000 --- a/spring-boot-modules/spring-boot-swagger/pom.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - 4.0.0 - spring-boot-swagger - 0.1.0-SNAPSHOT - spring-boot-swagger - jar - Module For Spring Boot Swagger - - - com.baeldung.spring-boot-modules - spring-boot-modules - 1.0.0-SNAPSHOT - - - - - org.springframework.boot - spring-boot-starter-web - - - io.springfox - springfox-boot-starter - ${springfox.version} - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - 3.0.0 - - - From 3bcedb6eda3bf64e592d5e5a7c8762b57e72c76a Mon Sep 17 00:00:00 2001 From: Teica Date: Mon, 29 Nov 2021 21:07:36 +0100 Subject: [PATCH 09/10] Create pom.xml --- .../spring-boot-swagger/pom.xml | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spring-boot-modules/spring-boot-swagger/pom.xml diff --git a/spring-boot-modules/spring-boot-swagger/pom.xml b/spring-boot-modules/spring-boot-swagger/pom.xml new file mode 100644 index 0000000000..d6b62bce3c --- /dev/null +++ b/spring-boot-modules/spring-boot-swagger/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + spring-boot-swagger + 0.1.0-SNAPSHOT + spring-boot-swagger + jar + Module For Spring Boot Swagger + + + com.baeldung.spring-boot-modules + spring-boot-modules + 1.0.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + io.springfox + springfox-boot-starter + ${springfox.version} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + 3.0.0 + + + From 87b64245adda9d690c00b6ca842a73a8180728f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matea=20Pej=C4=8Dinovi=C4=87?= Date: Wed, 1 Dec 2021 21:28:24 +0100 Subject: [PATCH 10/10] removed Hamcrest --- .../isuppercase/StringFirstCharacterUppercaseUnitTest.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java index 6803285ca2..ede31a3649 100644 --- a/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/isuppercase/StringFirstCharacterUppercaseUnitTest.java @@ -5,9 +5,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import com.google.common.base.Ascii; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.matchesPattern; - @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class StringFirstCharacterUppercaseUnitTest { @@ -21,7 +18,7 @@ public class StringFirstCharacterUppercaseUnitTest { public void givenString_whenCheckingWithRegex_thenStringCapitalized() { String example = "Katie"; String regEx = "[A-Z]\\w*"; - assertThat(example, matchesPattern(regEx)); + Assertions.assertTrue(example.matches(regEx)); } @Test