From 7226623ea2201cc1a37acd4551cd02ac8574c6b4 Mon Sep 17 00:00:00 2001 From: marco76 Date: Wed, 16 Feb 2022 08:45:46 +0100 Subject: [PATCH 1/2] external open api init for blog --- backend/pom.xml | 33 +---- .../marco/example/springboot/Application.java | 1 - .../hello/HelloControllerApiImpl.java | 24 ++++ .../HelloControllerMockMvcTest.java | 1 - open-api/pom.xml | 130 ++++++++++++++++++ .../main/resources/java-angular-basic.yaml | 48 +++++++ .../src/main/resources/swagger.properties | 4 + pom.xml | 7 +- 8 files changed, 216 insertions(+), 32 deletions(-) create mode 100644 backend/src/main/java/dev/marco/example/springboot/hello/HelloControllerApiImpl.java create mode 100644 open-api/pom.xml create mode 100644 open-api/src/main/resources/java-angular-basic.yaml create mode 100644 open-api/src/main/resources/swagger.properties diff --git a/backend/pom.xml b/backend/pom.xml index 043664a..55ba4ec 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -27,6 +27,11 @@ true + + ${project.groupId} + open-api + ${project.version} + org.springframework.boot spring-boot-starter-test @@ -46,7 +51,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.4.3 + 2.6.3 dev.marco.example.springboot.Application @@ -58,32 +63,6 @@ - - - org.apache.maven.plugins - maven-dependency-plugin - 3.1.2 - - - merge - initialize - - unpack - - - - - ${project.groupId} - frontend - jar - true - ${project.build.directory}/classes/static - - - - - - diff --git a/backend/src/main/java/dev/marco/example/springboot/Application.java b/backend/src/main/java/dev/marco/example/springboot/Application.java index bd4d5f7..f3feba9 100644 --- a/backend/src/main/java/dev/marco/example/springboot/Application.java +++ b/backend/src/main/java/dev/marco/example/springboot/Application.java @@ -3,7 +3,6 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; - @SpringBootApplication public class Application { diff --git a/backend/src/main/java/dev/marco/example/springboot/hello/HelloControllerApiImpl.java b/backend/src/main/java/dev/marco/example/springboot/hello/HelloControllerApiImpl.java new file mode 100644 index 0000000..081ba63 --- /dev/null +++ b/backend/src/main/java/dev/marco/example/springboot/hello/HelloControllerApiImpl.java @@ -0,0 +1,24 @@ +package dev.marco.example.springboot.hello; + + +import dev.marco.example.api.controller.HelloOpenApi; +import dev.marco.example.api.model.Greeting; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloControllerApiImpl implements HelloOpenApi { + @Override + public ResponseEntity getGreeting() { + Greeting greeting = new Greeting(); + greeting.message("Hello from Spring Boot"); + return ResponseEntity.ok(greeting); + } + + @Override + public ResponseEntity getPersonalGreeting(String name) { + Greeting greeting = new Greeting(); + greeting.message("Hello " + name + ", enjoy Spring Boot"); + return ResponseEntity.ok(greeting); + } +} diff --git a/backend/src/test/java/dev/marco/example/springboot/HelloControllerMockMvcTest.java b/backend/src/test/java/dev/marco/example/springboot/HelloControllerMockMvcTest.java index a8509b3..249300e 100644 --- a/backend/src/test/java/dev/marco/example/springboot/HelloControllerMockMvcTest.java +++ b/backend/src/test/java/dev/marco/example/springboot/HelloControllerMockMvcTest.java @@ -28,5 +28,4 @@ public void shouldReturnOurText() throws Exception { .andDo(print()) // we log the result .andExpect(content().string(containsString(" from Spring"))); // we check that the Body of the answer contains our expectation } - } diff --git a/open-api/pom.xml b/open-api/pom.xml new file mode 100644 index 0000000..27a3198 --- /dev/null +++ b/open-api/pom.xml @@ -0,0 +1,130 @@ + + + 4.0.0 + + + dev.marco + java-angular-example + 0.1-SNAPSHOT + ../pom.xml + + + + UTF-8 + UTF-8 + + + open-api + jar + ${project.artifactId} + + + + io.springfox + springfox-boot-starter + 3.0.0 + + + + org.hibernate + hibernate-validator + 7.0.1.Final + + + + org.openapitools + jackson-databind-nullable + 0.2.0 + + + + + + + + org.openapitools + openapi-generator-maven-plugin + 5.1.0 + + + + generate + + buildApi + + ${basedir}/src/main/resources/java-angular-basic.yaml + + spring + spring-boot + + ${swagger.modelNameSuffix} + + true + false + false + true + false + false + false + + + + ApiUtil.java + + + + + + true∂ + true + true + ${swagger.modelPackage} + ${swagger.basePackage}.controller + /src/main/java + /src/main/java + true + + + + + + + + org.codehaus.mojo + properties-maven-plugin + 1.0.0 + + + initialize + + read-project-properties + + + + ${basedir}/src/main/resources/swagger.properties + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + false + + false + lib/ + true + + + ${buildNumber} + ${maven.build.timestamp} + + + + + + + diff --git a/open-api/src/main/resources/java-angular-basic.yaml b/open-api/src/main/resources/java-angular-basic.yaml new file mode 100644 index 0000000..3cc4c9a --- /dev/null +++ b/open-api/src/main/resources/java-angular-basic.yaml @@ -0,0 +1,48 @@ +openapi: 3.0.3 # version of the specification +info: + version: '1' + title: Marco.dev Angular Spring Boot Example Api + +servers: + - url: http://localhost:8080 + +paths: + /hello-open: + get: + summary: return a simple generic greeting + operationId: getGreeting + responses: + 200: + description: General greeting + content: + application/json: + schema: + $ref: '#/components/schemas/Greeting' + /hello-open/{name}: + parameters: + - in: path + name: name + schema: + type: string + required: true + description: "Name" + example: "Marco" + get: + description: return a greeting with name + operationId: getPersonalGreeting + responses: + 200: + description: Personal greeting + content: + application/json: + schema: + $ref: '#/components/schemas/Greeting' +components: + schemas: + Greeting: + type: object + properties: + message: + type: string + example: 'Hello from Spring' + default: 'Hello visitor' \ No newline at end of file diff --git a/open-api/src/main/resources/swagger.properties b/open-api/src/main/resources/swagger.properties new file mode 100644 index 0000000..d412659 --- /dev/null +++ b/open-api/src/main/resources/swagger.properties @@ -0,0 +1,4 @@ +swagger.yaml.path=src/main/resources +swagger.modelNameSuffix= +swagger.basePackage=dev.marco.example.api +swagger.modelPackage=dev.marco.example.api.model \ No newline at end of file diff --git a/pom.xml b/pom.xml index 879633c..f714866 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ 2.4.3 + open-api frontend backend @@ -22,17 +23,17 @@ org.springframework spring-context-support - 5.3.4 + 5.3.14 org.springframework.boot spring-boot-starter-web - 2.4.3 + 2.6.3 org.springframework.boot spring-boot-starter-test - 2.4.3 + 2.6.3 From e9d7013dc31326b5921069ecc2cc4ed1062bf8e4 Mon Sep 17 00:00:00 2001 From: marco76 Date: Thu, 3 Mar 2022 14:02:32 +0100 Subject: [PATCH 2/2] properties fix --- .../dev/marco/example/springboot/feature/FeatureController.java | 2 +- .../dev/marco/example/springboot/hello/HelloController.java | 2 +- backend/src/main/{java => resources}/application.properties | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename backend/src/main/{java => resources}/application.properties (100%) diff --git a/backend/src/main/java/dev/marco/example/springboot/feature/FeatureController.java b/backend/src/main/java/dev/marco/example/springboot/feature/FeatureController.java index 7f9fe8f..325fa9f 100644 --- a/backend/src/main/java/dev/marco/example/springboot/feature/FeatureController.java +++ b/backend/src/main/java/dev/marco/example/springboot/feature/FeatureController.java @@ -11,7 +11,7 @@ * The goal of this controller is to show the test of the services and some REST methods */ @RestController -@CrossOrigin(origins = {"${app.dev.frontend.local"}) +@CrossOrigin(origins = {"${app.dev.frontend.local}"}) public class FeatureController { @Autowired diff --git a/backend/src/main/java/dev/marco/example/springboot/hello/HelloController.java b/backend/src/main/java/dev/marco/example/springboot/hello/HelloController.java index f6fda40..f03791a 100644 --- a/backend/src/main/java/dev/marco/example/springboot/hello/HelloController.java +++ b/backend/src/main/java/dev/marco/example/springboot/hello/HelloController.java @@ -11,7 +11,7 @@ @RestController // we allow cors requests from our frontend environment // note the curly braces that creates an array of strings ... required by the annotation -@CrossOrigin(origins = {"${app.dev.frontend.local"}) +@CrossOrigin(origins = {"${app.dev.frontend.local}"}) public class HelloController { // simple GET response for our example purpose, we return a JSON structure diff --git a/backend/src/main/java/application.properties b/backend/src/main/resources/application.properties similarity index 100% rename from backend/src/main/java/application.properties rename to backend/src/main/resources/application.properties