From 41cdfb96aad90d9be2ea204ed5db2723293b8dfe Mon Sep 17 00:00:00 2001 From: dylan Date: Thu, 23 Jan 2025 09:19:10 +0100 Subject: [PATCH] Add support for OpenAPI code generation (phase is generate-sources) --- openapi.yml | 59 +++++++++++++++++++ pom.xml | 47 +++++++++++++++ .../controllers/HelloController.java | 14 +++++ 3 files changed, 120 insertions(+) create mode 100644 openapi.yml create mode 100644 src/main/java/ch/dlmw/swisssignchallenge/controllers/HelloController.java diff --git a/openapi.yml b/openapi.yml new file mode 100644 index 0000000..1736832 --- /dev/null +++ b/openapi.yml @@ -0,0 +1,59 @@ +openapi: 3.0.3 +info: + title: swisssign-challenge - dlmw + description: |- + This is the documentation for the SwissSign Challenge API. + termsOfService: "" + contact: + email: dylan@dlmw.ch + license: + name: GNU General Public License Version 3 + url: https://www.gnu.org/licenses/gpl-3.0.txt + version: 0.0.1 +externalDocs: + description: "" + url: "" +servers: + - url: "" +tags: + - name: hello + description: "" + +paths: + /hello: + get: + tags: + - hello + summary: Get a hello from me + operationId: getHello + responses: + 200: + description: "Hello" + content: + application/json: + schema: + $ref: "#/components/schemas/HelloResponse" + +components: + schemas: + HelloResponse: + type: object + properties: + value: + type: string + + ErrorResponse: + type: object + required: + - message + - code + properties: + message: + type: string + description: Human-readable error message + code: + type: integer + description: Machine-readable error code + details: + type: object + description: Additional error details when available \ No newline at end of file diff --git a/pom.xml b/pom.xml index 74b4e70..fef0f04 100644 --- a/pom.xml +++ b/pom.xml @@ -49,6 +49,31 @@ postgresql runtime + + jakarta.validation + jakarta.validation-api + 3.0.2 + + + jakarta.persistence + jakarta.persistence-api + + + io.swagger.core.v3 + swagger-annotations + 2.2.28 + + + org.openapitools + jackson-databind-nullable + 0.2.6 + + + io.swagger.core.v3 + swagger-models + 2.2.28 + + org.projectlombok @@ -110,6 +135,28 @@ + + org.openapitools + openapi-generator-maven-plugin + 7.11.0 + + + generate-sources + + generate + + + ${project.basedir}/openapi.yml + spring + + true + true + src/gen/java/main + + + + + diff --git a/src/main/java/ch/dlmw/swisssignchallenge/controllers/HelloController.java b/src/main/java/ch/dlmw/swisssignchallenge/controllers/HelloController.java new file mode 100644 index 0000000..6bb6aed --- /dev/null +++ b/src/main/java/ch/dlmw/swisssignchallenge/controllers/HelloController.java @@ -0,0 +1,14 @@ +package ch.dlmw.swisssignchallenge.controllers; + +import org.openapitools.api.HelloApi; +import org.openapitools.model.HelloResponse; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; + +@Controller +public class HelloController implements HelloApi { + @Override + public ResponseEntity getHello() { + return ResponseEntity.ok(new HelloResponse().value("Hello, world")); + } +}