diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 84bae2002..0f9f8c49c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -50,7 +50,7 @@ jobs: cache: 'maven' - name: Build with Maven - run: mvn '-Dorg.slf4j.simpleLogger.log.org.openapitools=off' -B formatter:validate impsort:check verify --file pom.xml + run: mvn '-Dorg.slf4j.simpleLogger.log.org.openapitools=off' -B formatter:validate impsort:check install --file pom.xml build_reactive: name: Build - RESTEasy Reactive @@ -79,4 +79,4 @@ jobs: cache: 'maven' - name: Build with Maven - run: mvn -Presteasy-reactive '-Dorg.slf4j.simpleLogger.log.org.openapitools=off' -B formatter:validate impsort:check verify --file pom.xml + run: mvn -Presteasy-reactive '-Dorg.slf4j.simpleLogger.log.org.openapitools=off' -B formatter:validate impsort:check install --file pom.xml diff --git a/server/integration-tests/codestarts/pom.xml b/server/integration-tests/codestarts/pom.xml new file mode 100644 index 000000000..c4d0df180 --- /dev/null +++ b/server/integration-tests/codestarts/pom.xml @@ -0,0 +1,109 @@ + + + + quarkus-openapi-generator-server-integration-tests-parent + io.quarkiverse.openapi.generator + 3.0.0-lts-SNAPSHOT + ../pom.xml + + 4.0.0 + + quarkus-openapi-generator-server-integration-tests-codestarts + Quarkus - Openapi Generator - Server - Integration Tests - Codestarts + + + + io.quarkiverse.openapi.generator + quarkus-openapi-generator-server + ${project.version} + + + io.quarkus + quarkus-devtools-testing + test + + + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus.version} + + + maven-surefire-plugin + ${version.surefire.plugin} + + + org.jboss.logmanager.LogManager + ${maven.home} + ${settings.localRepository} + + + + + maven-failsafe-plugin + ${failsafe-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + ${settings.localRepository} + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + -parameters + + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + copy-resources + generate-resources + + copy-resources + + + ${project.build.outputDirectory} + + + + ${project.basedir}/../runtime/src/main/codestarts/quarkus/openapi-generator-codestart/java + + false + + + + + + + + io.quarkus + quarkus-maven-plugin + + + + build + generate-code + + + + + + + diff --git a/server/integration-tests/codestarts/src/main/resources/application.properties b/server/integration-tests/codestarts/src/main/resources/application.properties new file mode 100755 index 000000000..e69de29bb diff --git a/server/integration-tests/codestarts/src/test/java/io/quarkiverse/openapi/server/generator/it/QuarkusOpenAPIGeneratorServerCodestartsTest.java b/server/integration-tests/codestarts/src/test/java/io/quarkiverse/openapi/server/generator/it/QuarkusOpenAPIGeneratorServerCodestartsTest.java new file mode 100644 index 000000000..d9a480c1b --- /dev/null +++ b/server/integration-tests/codestarts/src/test/java/io/quarkiverse/openapi/server/generator/it/QuarkusOpenAPIGeneratorServerCodestartsTest.java @@ -0,0 +1,27 @@ +package io.quarkiverse.openapi.server.generator.it; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog; +import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest; + +public class QuarkusOpenAPIGeneratorServerCodestartsTest { + + @RegisterExtension + public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder() + .languages(QuarkusCodestartCatalog.Language.JAVA) + .setupStandaloneExtensionTest("io.quarkiverse.openapi.generator:quarkus-openapi-generator-server").build(); + + @Test + void testContent() throws Throwable { + codestartTest + .assertThatGeneratedFile(QuarkusCodestartCatalog.Language.JAVA, "src/main/resources/application.properties") + .content() + .contains("quarkus.openapi.generator.spec=openapi.yml"); + codestartTest + .assertThatGeneratedFile(QuarkusCodestartCatalog.Language.JAVA, "src/main/resources/openapi/openapi.yml") + .content() + .contains("title: Generated API"); + } +} diff --git a/server/integration-tests/pom.xml b/server/integration-tests/pom.xml index f6762173a..02004766a 100755 --- a/server/integration-tests/pom.xml +++ b/server/integration-tests/pom.xml @@ -16,6 +16,7 @@ reactive resteasy + codestarts - \ No newline at end of file + diff --git a/server/runtime/pom.xml b/server/runtime/pom.xml index cdd310530..29905bd9c 100755 --- a/server/runtime/pom.xml +++ b/server/runtime/pom.xml @@ -60,6 +60,26 @@ + + maven-jar-plugin + + + generate-codestart-jar + generate-resources + + jar + + + ${project.basedir}/src/main + + codestarts/** + + codestarts + true + + + + diff --git a/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/codestart.yml b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/codestart.yml new file mode 100644 index 000000000..edb0f3322 --- /dev/null +++ b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/codestart.yml @@ -0,0 +1,13 @@ +name: openapi-generator-server-codestart +ref: openapi-generator-server +type: code +tags: extension-codestart +metadata: + title: OpenAPI Generator Server + description: This codestart generates a simple API with OpenAPI documentation. + related-guide-section: https://docs.quarkiverse.io/quarkus-openapi-generator/dev/server.html +language: + base: + dependencies: + - io.quarkus:quarkus-resteasy + - io.quarkus:quarkus-smallrye-openapi \ No newline at end of file diff --git a/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/README.tpl.qute.md b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/README.tpl.qute.md new file mode 100644 index 000000000..0d8dc1409 --- /dev/null +++ b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/README.tpl.qute.md @@ -0,0 +1,24 @@ +{#include readme-header /} + +## Requirements + +If you do not have added the `io.quarkus:quarkus-smallrye-openapi` extension in your project, add it first: + +### SmallRye OpenAPI: + +Quarkus CLI: + +```bash +quarkus ext add io.quarkus:quarkus-smallrye-openapi +``` + +Maven: +```bash +./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-smallrye-openapi" +``` + +Gradle: + +```bash +./gradlew addExtension --extensions="io.quarkus:quarkus-smallrye-openapi" +``` \ No newline at end of file diff --git a/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/src/main/resources/application.yml b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/src/main/resources/application.yml new file mode 100644 index 000000000..ea7674128 --- /dev/null +++ b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/src/main/resources/application.yml @@ -0,0 +1,5 @@ +quarkus: + openapi: + generator: + spec: + openapi.yml \ No newline at end of file diff --git a/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/src/main/resources/openapi/openapi.yml b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/src/main/resources/openapi/openapi.yml new file mode 100644 index 000000000..707eca341 --- /dev/null +++ b/server/runtime/src/main/codestarts/quarkus/openapi-generator-server-codestart/java/src/main/resources/openapi/openapi.yml @@ -0,0 +1,42 @@ +openapi: 3.0.3 +info: + title: Generated API + version: "1.0" +paths: + /pets: + get: + responses: + 200: + description: OK + content: + application/json: { } + post: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + responses: + 200: + description: OK + content: + application/json: { } + delete: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + responses: + 200: + description: OK + content: + application/json: { } +components: + schemas: + Pet: + properties: + description: + type: string + name: + type: string \ No newline at end of file diff --git a/server/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/server/runtime/src/main/resources/META-INF/quarkus-extension.yaml new file mode 100644 index 000000000..fce904e16 --- /dev/null +++ b/server/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -0,0 +1,19 @@ +name: "OpenAPI Generator - REST Server Generator" +description: "Provides personalized code generation to get started in a Server project " +artifact: ${project.groupId}:${project.artifactId}:${project.version} +metadata: + keywords: + - "openapi" + - "openapi-generator-server" + - "rest" + - "server" + categories: + - "web" + guide: "https://docs.quarkiverse.io/quarkus-openapi-generator/dev/index.html" + icon-url: "https://raw.githubusercontent.com/quarkiverse/quarkus-openapi-generator/main/docs/modules/ROOT/assets/images/openapi.svg" + status: "preview" + codestart: + name: "openapi-generator-server" + languages: + - "java" + artifact: "io.quarkiverse.openapi.generator:quarkus-openapi-generator-server:codestarts:jar:${project.version}" \ No newline at end of file