forked from loafle/openapi-generator-original
[jaxrs-spec] add Eclipse MicroProfile file based approach (#3901)
* [jaxrs-spec] add quarkus application server * [jaxrs-spec] add thorntail * [jaxrs-spec] add openliberty * [quarkus] update to 0.20.0 * Add helidon * Update quarkus version * Update quarkus to 0.22.0 * Update documentation * Force "useSwaggerAnnotations" to be false when quarkus, thorntail, openliberty or helidon are used
This commit is contained in:
committed by
William Cheng
parent
243589ec80
commit
d2b299860d
@@ -46,7 +46,7 @@ sidebar_label: jaxrs-cxf-cdi
|
||||
|title|a title describing the application| |OpenAPI Server|
|
||||
|useBeanValidation|Use BeanValidation API annotations| |true|
|
||||
|serverPort|The port on which the server should be started| |8080|
|
||||
|library|library template (sub-template)|<dl><dt>**<default>**</dt><dd>JAXRS</dd><dl>|<default>|
|
||||
|library|library template (sub-template)|<dl><dt>**<default>**</dt><dd>JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)</dd><dt>**quarkus**</dt><dd>Server using Quarkus</dd><dt>**thorntail**</dt><dd>Server using Thorntail</dd><dt>**openliberty**</dt><dd>Server using Open Liberty</dd><dt>**helidon**</dt><dd>Server using Helidon</dd><dl>|<default>|
|
||||
|generatePom|Whether to generate pom.xml if the file does not already exist.| |true|
|
||||
|interfaceOnly|Whether to generate only API interface stubs without the server files.| |false|
|
||||
|returnResponse|Whether generate API interface should return javax.ws.rs.core.Response instead of a deserialized entity. Only useful if interfaceOnly is true.| |false|
|
||||
|
||||
@@ -46,7 +46,7 @@ sidebar_label: jaxrs-spec
|
||||
|title|a title describing the application| |OpenAPI Server|
|
||||
|useBeanValidation|Use BeanValidation API annotations| |true|
|
||||
|serverPort|The port on which the server should be started| |8080|
|
||||
|library|library template (sub-template)|<dl><dt>**<default>**</dt><dd>JAXRS</dd><dl>|<default>|
|
||||
|library|library template (sub-template)|<dl><dt>**<default>**</dt><dd>JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)</dd><dt>**quarkus**</dt><dd>Server using Quarkus</dd><dt>**thorntail**</dt><dd>Server using Thorntail</dd><dt>**openliberty**</dt><dd>Server using Open Liberty</dd><dt>**helidon**</dt><dd>Server using Helidon</dd><dl>|<default>|
|
||||
|generatePom|Whether to generate pom.xml if the file does not already exist.| |true|
|
||||
|interfaceOnly|Whether to generate only API interface stubs without the server files.| |false|
|
||||
|returnResponse|Whether generate API interface should return javax.ws.rs.core.Response instead of a deserialized entity. Only useful if interfaceOnly is true.| |false|
|
||||
|
||||
@@ -17,19 +17,23 @@
|
||||
|
||||
package org.openapitools.codegen.languages;
|
||||
|
||||
import static org.openapitools.codegen.utils.StringUtils.camelize;
|
||||
|
||||
import io.swagger.v3.oas.models.Operation;
|
||||
import io.swagger.v3.oas.models.media.Schema;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.openapitools.codegen.*;
|
||||
import org.openapitools.codegen.CliOption;
|
||||
import org.openapitools.codegen.CodegenConstants;
|
||||
import org.openapitools.codegen.CodegenModel;
|
||||
import org.openapitools.codegen.CodegenOperation;
|
||||
import org.openapitools.codegen.SupportingFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.openapitools.codegen.utils.StringUtils.camelize;
|
||||
|
||||
public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
||||
|
||||
public static final String INTERFACE_ONLY = "interfaceOnly";
|
||||
@@ -39,6 +43,11 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
||||
public static final String JACKSON = "jackson";
|
||||
public static final String OPEN_API_SPEC_FILE_LOCATION = "openApiSpecFileLocation";
|
||||
|
||||
public static final String QUARKUS_LIBRARY = "quarkus";
|
||||
public static final String THORNTAIL_LIBRARY = "thorntail";
|
||||
public static final String OPEN_LIBERTY_LIBRARY = "openliberty";
|
||||
public static final String HELIDON_LIBRARY = "helidon";
|
||||
|
||||
private boolean interfaceOnly = false;
|
||||
private boolean returnResponse = false;
|
||||
private boolean generatePom = true;
|
||||
@@ -84,8 +93,11 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
||||
|
||||
removeOption(CodegenConstants.LIBRARY);
|
||||
CliOption library = new CliOption(CodegenConstants.LIBRARY, CodegenConstants.LIBRARY_DESC).defaultValue(DEFAULT_LIBRARY);
|
||||
Map<String, String> supportedLibraries = new LinkedHashMap<>();
|
||||
supportedLibraries.put(DEFAULT_LIBRARY, "JAXRS");
|
||||
supportedLibraries.put(DEFAULT_LIBRARY, "JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)");
|
||||
supportedLibraries.put(QUARKUS_LIBRARY, "Server using Quarkus");
|
||||
supportedLibraries.put(THORNTAIL_LIBRARY, "Server using Thorntail");
|
||||
supportedLibraries.put(OPEN_LIBERTY_LIBRARY, "Server using Open Liberty");
|
||||
supportedLibraries.put(HELIDON_LIBRARY, "Server using Helidon");
|
||||
library.setEnum(supportedLibraries);
|
||||
|
||||
cliOptions.add(library);
|
||||
@@ -113,12 +125,20 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
||||
additionalProperties.remove(RETURN_RESPONSE);
|
||||
}
|
||||
}
|
||||
if (additionalProperties.containsKey(USE_SWAGGER_ANNOTATIONS)) {
|
||||
useSwaggerAnnotations = Boolean.valueOf(additionalProperties.get(USE_SWAGGER_ANNOTATIONS).toString());
|
||||
if(QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library) || OPEN_LIBERTY_LIBRARY.equals(library)) {
|
||||
useSwaggerAnnotations = false;
|
||||
} else {
|
||||
if (additionalProperties.containsKey(USE_SWAGGER_ANNOTATIONS)) {
|
||||
useSwaggerAnnotations = Boolean.valueOf(additionalProperties.get(USE_SWAGGER_ANNOTATIONS).toString());
|
||||
}
|
||||
}
|
||||
writePropertyBack(USE_SWAGGER_ANNOTATIONS, useSwaggerAnnotations);
|
||||
if (additionalProperties.containsKey(OPEN_API_SPEC_FILE_LOCATION)) {
|
||||
openApiSpecFileLocation = additionalProperties.get(OPEN_API_SPEC_FILE_LOCATION).toString();
|
||||
} else if(QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library)) {
|
||||
openApiSpecFileLocation = "src/main/resources/META-INF/openapi.yaml";
|
||||
} else if(OPEN_LIBERTY_LIBRARY.equals(library)) {
|
||||
openApiSpecFileLocation = "src/main/webapp/META-INF/openapi.yaml";
|
||||
}
|
||||
additionalProperties.put(OPEN_API_SPEC_FILE_LOCATION, openApiSpecFileLocation);
|
||||
|
||||
@@ -154,6 +174,26 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
||||
}
|
||||
supportingFiles.add(new SupportingFile("openapi.mustache", fileFolder, fileName));
|
||||
}
|
||||
|
||||
if(QUARKUS_LIBRARY.equals(library)) {
|
||||
writeOptional(outputFolder, new SupportingFile("application.properties.mustache", "src/main/resources", "application.properties"));
|
||||
|
||||
writeOptional(outputFolder, new SupportingFile("Dockerfile.jvm.mustache", "src/main/docker", "Dockerfile.jvm"));
|
||||
writeOptional(outputFolder, new SupportingFile("Dockerfile.native.mustache", "src/main/docker", "Dockerfile.native"));
|
||||
writeOptional(outputFolder, new SupportingFile("dockerignore.mustache", "", ".dockerignore"));
|
||||
} else if(OPEN_LIBERTY_LIBRARY.equals(library)) {
|
||||
writeOptional(outputFolder, new SupportingFile("server.xml.mustache", "src/main/liberty/config", "server.xml"));
|
||||
|
||||
writeOptional(outputFolder, new SupportingFile("beans.xml.mustache", "src/main/webapp/META-INF", "beans.xml"));
|
||||
writeOptional(outputFolder, new SupportingFile("MANIFEST.MF.mustache", "src/main/webapp/META-INF", "MANIFEST.MF"));
|
||||
writeOptional(outputFolder, new SupportingFile("microprofile-config.properties.mustache", "src/main/webapp/META-INF", "microprofile-config.properties"));
|
||||
|
||||
writeOptional(outputFolder, new SupportingFile("ibm-web-ext.xml.mustache", "src/main/webapp/WEB-INF", "ibm-web-ext.xml"));
|
||||
} else if(HELIDON_LIBRARY.equals(library)) {
|
||||
writeOptional(outputFolder, new SupportingFile("logging.properties.mustache", "src/main/resources", "logging.properties"));
|
||||
writeOptional(outputFolder, new SupportingFile("microprofile-config.properties.mustache", "src/main/resources/META-INF", "microprofile-config.properties"));
|
||||
writeOptional(outputFolder, new SupportingFile("beans.xml.mustache", "src/main/webapp/META-INF", "beans.xml"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
43
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/helidon/README.mustache
vendored
Normal file
43
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/helidon/README.mustache
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# JAX-RS server with OpenAPI using Helidon
|
||||
|
||||
## Overview
|
||||
This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using an
|
||||
[OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
|
||||
|
||||
This is an example of building a OpenAPI-enabled JAX-RS server.
|
||||
This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework and
|
||||
the [Eclipse-MicroProfile-OpenAPI](https://github.com/eclipse/microprofile-open-api) addition.
|
||||
|
||||
The pom file is configured to use [Helidon](https://helidon.io/) as application server.
|
||||
|
||||
{{#interfaceOnly}}
|
||||
This project produces a jar that defines some interfaces.
|
||||
The jar can be used in combination with an other project providing the implementation.
|
||||
{{/interfaceOnly}}
|
||||
|
||||
{{^interfaceOnly}}
|
||||
To build the server, run this maven command:
|
||||
|
||||
```bash
|
||||
mvn package
|
||||
```
|
||||
|
||||
To run the server, run this maven command:
|
||||
|
||||
```bash
|
||||
mvn exec:java
|
||||
```
|
||||
|
||||
You can then call your server endpoints under:
|
||||
|
||||
```
|
||||
http://localhost:8080/
|
||||
```
|
||||
|
||||
You can access the OpenAPI specification at:
|
||||
|
||||
```
|
||||
http://localhost:8080/openapi
|
||||
```
|
||||
|
||||
{{/interfaceOnly}}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
|
||||
version="2.0"
|
||||
bean-discovery-mode="annotated">
|
||||
</beans>
|
||||
@@ -0,0 +1,24 @@
|
||||
# Example Logging Configuration File
|
||||
# For more information see $JAVA_HOME/jre/lib/logging.properties
|
||||
|
||||
# Send messages to the console
|
||||
handlers=java.util.logging.ConsoleHandler
|
||||
|
||||
# Global default logging level. Can be overriden by specific handlers and loggers
|
||||
.level=INFO
|
||||
|
||||
# Helidon Web Server has a custom log formatter that extends SimpleFormatter.
|
||||
# It replaces "!thread!" with the current thread name
|
||||
java.util.logging.ConsoleHandler.level=INFO
|
||||
java.util.logging.ConsoleHandler.formatter=io.helidon.webserver.WebServerLogFormatter
|
||||
java.util.logging.SimpleFormatter.format=%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS %4$s %3$s !thread!: %5$s%6$s%n
|
||||
|
||||
#Component specific log levels
|
||||
#io.helidon.webserver.level=INFO
|
||||
#io.helidon.config.level=INFO
|
||||
#io.helidon.security.level=INFO
|
||||
#io.helidon.microprofile.level=INFO
|
||||
#io.helidon.common.level=INFO
|
||||
#io.netty.level=INFO
|
||||
#org.glassfish.jersey.level=INFO
|
||||
#org.jboss.weld=INFO
|
||||
@@ -0,0 +1,6 @@
|
||||
# Microprofile server properties
|
||||
server.port=8080
|
||||
server.host=0.0.0.0
|
||||
|
||||
# Microprofile OpenAPI properties
|
||||
mp.openapi.scan.disable=true
|
||||
110
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/helidon/pom.mustache
vendored
Normal file
110
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/helidon/pom.mustache
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>{{groupId}}</groupId>
|
||||
<artifactId>{{artifactId}}</artifactId>
|
||||
<version>{{artifactVersion}}</version>
|
||||
|
||||
<properties>
|
||||
<mainClass>io.helidon.microprofile.server.Main</mainClass>
|
||||
<version.lib.helidon>1.2.0</version.lib.helidon>
|
||||
<version.plugin.compiler>3.8.1</version.plugin.compiler>
|
||||
<version.plugin.exec>1.6.0</version.plugin.exec>
|
||||
<version.plugin.jandex>1.0.6</version.plugin.jandex>
|
||||
<version.plugin.jar>3.0.2</version.plugin.jar>
|
||||
<version.lib.microprofile-openapi-api>1.1.2</version.lib.microprofile-openapi-api>
|
||||
<version.lib.jersey>2.29</version.lib.jersey>
|
||||
<version.lib.activation-api>1.2.0</version.lib.activation-api>
|
||||
<version.lib.junit>5.1.0</version.lib.junit>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jboss.jandex</groupId>
|
||||
<artifactId>jandex-maven-plugin</artifactId>
|
||||
<version>${version.plugin.jandex}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-index</id>
|
||||
<goals>
|
||||
<goal>jandex</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>${version.plugin.jar}</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>${mainClass}</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>${version.plugin.compiler}</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<compilerArgs>
|
||||
<arg>-Xlint:unchecked</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>exec-maven-plugin</artifactId>
|
||||
<version>${version.plugin.exec}</version>
|
||||
<configuration>
|
||||
<mainClass>${mainClass}</mainClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.helidon.microprofile.bundles</groupId>
|
||||
<artifactId>helidon-microprofile-2.2</artifactId>
|
||||
<version>${version.lib.helidon}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.microprofile.openapi</groupId>
|
||||
<artifactId>microprofile-openapi-api</artifactId>
|
||||
<version>${version.lib.microprofile-openapi-api}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.media</groupId>
|
||||
<artifactId>jersey-media-json-binding</artifactId>
|
||||
<version>${version.lib.jersey}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.activation</groupId>
|
||||
<artifactId>javax.activation-api</artifactId>
|
||||
<version>${version.lib.activation-api}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<version>${version.lib.junit}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<version>${version.lib.junit}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,2 @@
|
||||
Manifest-Version: 1.0
|
||||
Class-Path:
|
||||
@@ -0,0 +1,43 @@
|
||||
# JAX-RS server with OpenAPI using Open Liberty
|
||||
|
||||
## Overview
|
||||
This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using an
|
||||
[OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
|
||||
|
||||
This is an example of building a OpenAPI-enabled JAX-RS server.
|
||||
This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework and
|
||||
the [Eclipse-MicroProfile-OpenAPI](https://github.com/eclipse/microprofile-open-api) addition.
|
||||
|
||||
The pom file is configured to use [Open Liberty](https://openliberty.io/) as application server.
|
||||
|
||||
{{#interfaceOnly}}
|
||||
This project produces a jar that defines some interfaces.
|
||||
The jar can be used in combination with an other project providing the implementation.
|
||||
{{/interfaceOnly}}
|
||||
|
||||
{{^interfaceOnly}}
|
||||
To start the server with maven, run this command:
|
||||
|
||||
```bash
|
||||
mvn install liberty:start-server
|
||||
```
|
||||
|
||||
The OpenAPI specification is available at:
|
||||
|
||||
```
|
||||
http://localhost:9080/openapi
|
||||
```
|
||||
|
||||
A UI for this OpenAPI Specification is available at:
|
||||
|
||||
```
|
||||
http://localhost:9080/openapi/ui
|
||||
```
|
||||
|
||||
When you are done stop Open Liberty with:
|
||||
|
||||
```
|
||||
mvn liberty:stop-server
|
||||
```
|
||||
|
||||
{{/interfaceOnly}}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
|
||||
|
||||
</beans>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-ext
|
||||
xmlns="http://websphere.ibm.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
|
||||
version="1.0">
|
||||
|
||||
<reload-interval value="3"/>
|
||||
<context-root uri="book-purchase" />
|
||||
<enable-directory-browsing value="false"/>
|
||||
<enable-file-serving value="true"/>
|
||||
<enable-reloading value="true"/>
|
||||
<enable-serving-servlets-by-class-name value="false" />
|
||||
|
||||
</web-ext>
|
||||
@@ -0,0 +1 @@
|
||||
mp.openapi.scan.disable=true
|
||||
116
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/openliberty/pom.mustache
vendored
Normal file
116
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/openliberty/pom.mustache
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>net.wasdev.wlp.maven.parent</groupId>
|
||||
<artifactId>liberty-maven-app-parent</artifactId>
|
||||
<version>2.6</version>
|
||||
</parent>
|
||||
|
||||
<groupId>{{groupId}}</groupId>
|
||||
<artifactId>{{artifactId}}</artifactId>
|
||||
<version>{{artifactVersion}}</version>
|
||||
<packaging>war</packaging>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>javax</groupId>
|
||||
<artifactId>javaee-api</artifactId>
|
||||
<version>8.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.microprofile</groupId>
|
||||
<artifactId>microprofile</artifactId>
|
||||
<version>2.0.1</version>
|
||||
<type>pom</type>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>2.0.1.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>2.0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||
<version.maven-war-plugin>3.2.2</version.maven-war-plugin>
|
||||
<!-- OpenLiberty runtime -->
|
||||
<version.openliberty-runtime>19.0.0.7</version.openliberty-runtime>
|
||||
<http.port>9080</http.port>
|
||||
<https.port>9443</https.port>
|
||||
<packaging.type>usr</packaging.type>
|
||||
<app.name>${project.artifactId}</app.name>
|
||||
<package.file>${project.build.directory}/${app.name}.zip</package.file>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<finalName>{{artifactId}}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<version>1.9.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>add-source</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>add-source</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<sources>
|
||||
<source>src/gen/java</source>
|
||||
</sources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>${version.maven-war-plugin}</version>
|
||||
<configuration>
|
||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||
<packagingExcludes>pom.xml</packagingExcludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Enable liberty-maven plugin -->
|
||||
<plugin>
|
||||
<groupId>net.wasdev.wlp.maven.plugins</groupId>
|
||||
<artifactId>liberty-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<assemblyArtifact>
|
||||
<groupId>io.openliberty</groupId>
|
||||
<artifactId>openliberty-runtime</artifactId>
|
||||
<version>${version.openliberty-runtime}</version>
|
||||
<type>zip</type>
|
||||
</assemblyArtifact>
|
||||
<serverName>OpenAPIGeneratorServer</serverName>
|
||||
<stripVersion>true</stripVersion>
|
||||
<configFile>src/main/liberty/config/server.xml</configFile>
|
||||
<looseApplication>true</looseApplication>
|
||||
<packageFile>${package.file}</packageFile>
|
||||
<include>${packaging.type}</include>
|
||||
<bootstrapProperties>
|
||||
<default.http.port>${http.port}</default.http.port>
|
||||
<default.https.port>${https.port}</default.https.port>
|
||||
<app.context.root>${app.name}</app.context.root>
|
||||
</bootstrapProperties>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,19 @@
|
||||
<server description="OpenAPI Generator Server">
|
||||
<featureManager>
|
||||
<feature>cdi-2.0</feature>
|
||||
<feature>jaxrs-2.1</feature>
|
||||
<feature>mpOpenAPI-1.1</feature>
|
||||
</featureManager>
|
||||
|
||||
<applicationManager autoExpand="true" />
|
||||
<quickStartSecurity userName="admin" userPassword="adminpwd"/>
|
||||
<keyStore id="defaultKeyStore" password="mpKeystore"/>
|
||||
|
||||
<logging traceSpecification="com.ibm.ws.microprofile.health.*=all"/>
|
||||
|
||||
<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
|
||||
<httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
|
||||
|
||||
<webApplication id="{{artifactId}}" location="{{artifactId}}.war" name="{{artifactId}}" contextRoot="/"/>
|
||||
|
||||
</server>
|
||||
@@ -0,0 +1,22 @@
|
||||
####
|
||||
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
|
||||
#
|
||||
# Before building the docker image run:
|
||||
#
|
||||
# mvn package
|
||||
#
|
||||
# Then, build the image with:
|
||||
#
|
||||
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/getting-started-jvm .
|
||||
#
|
||||
# Then run the container using:
|
||||
#
|
||||
# docker run -i --rm -p 8080:8080 quarkus/getting-started-jvm
|
||||
#
|
||||
###
|
||||
FROM fabric8/java-alpine-openjdk8-jre
|
||||
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
|
||||
ENV AB_ENABLED=jmx_exporter
|
||||
COPY target/lib/* /deployments/lib/
|
||||
COPY target/*-runner.jar /deployments/app.jar
|
||||
ENTRYPOINT [ "/deployments/run-java.sh" ]
|
||||
@@ -0,0 +1,22 @@
|
||||
####
|
||||
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode
|
||||
#
|
||||
# Before building the docker image run:
|
||||
#
|
||||
# mvn package -Pnative -Dnative-image.docker-build=true
|
||||
#
|
||||
# Then, build the image with:
|
||||
#
|
||||
# docker build -f src/main/docker/Dockerfile.native -t quarkus/getting-started .
|
||||
#
|
||||
# Then run the container using:
|
||||
#
|
||||
# docker run -i --rm -p 8080:8080 quarkus/getting-started
|
||||
#
|
||||
###
|
||||
FROM registry.access.redhat.com/ubi8/ubi-minimal
|
||||
WORKDIR /work/
|
||||
COPY target/*-runner /work/application
|
||||
RUN chmod 775 /work
|
||||
EXPOSE 8080
|
||||
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
|
||||
39
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/README.mustache
vendored
Normal file
39
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/README.mustache
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
# JAX-RS server with OpenAPI using Quarkus
|
||||
|
||||
## Overview
|
||||
This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using an
|
||||
[OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
|
||||
|
||||
This is an example of building a OpenAPI-enabled JAX-RS server.
|
||||
This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework and
|
||||
the [Eclipse-MicroProfile-OpenAPI](https://github.com/eclipse/microprofile-open-api) addition.
|
||||
|
||||
The pom file is configured to use [Quarkus](https://quarkus.io/) as application server.
|
||||
|
||||
{{#interfaceOnly}}
|
||||
This project produces a jar that defines some interfaces.
|
||||
The jar can be used in combination with an other project providing the implementation.
|
||||
{{/interfaceOnly}}
|
||||
|
||||
{{^interfaceOnly}}
|
||||
To start the server in dev mode, run this maven command:
|
||||
|
||||
```bash
|
||||
mvn compile quarkus:dev
|
||||
```
|
||||
|
||||
You can then call your server endpoints under:
|
||||
|
||||
```
|
||||
http://localhost:8080/
|
||||
```
|
||||
|
||||
In dev-mode, you can open Swagger-UI at:
|
||||
|
||||
```
|
||||
http://localhost:8080/swagger-ui/
|
||||
```
|
||||
|
||||
Read more in the [Quarkus OpenAPI guide](https://quarkus.io/guides/openapi-swaggerui-guide).
|
||||
|
||||
{{/interfaceOnly}}
|
||||
@@ -0,0 +1,3 @@
|
||||
# Configuration file
|
||||
|
||||
mp.openapi.scan.disable=true
|
||||
@@ -0,0 +1,4 @@
|
||||
*
|
||||
!target/*-runner
|
||||
!target/*-runner.jar
|
||||
!target/lib/*
|
||||
138
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache
vendored
Normal file
138
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>{{groupId}}</groupId>
|
||||
<artifactId>{{artifactId}}</artifactId>
|
||||
<name>{{artifactId}}</name>
|
||||
<version>{{artifactVersion}}</version>
|
||||
<properties>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<surefire-plugin.version>2.22.0</surefire-plugin.version>
|
||||
<quarkus.version>0.22.0</quarkus.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-bom</artifactId>
|
||||
<version>${quarkus.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-resteasy</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-junit5</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-smallrye-openapi</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<version>1.9.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>add-source</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>add-source</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<sources>
|
||||
<source>src/gen/java</source>
|
||||
</sources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-maven-plugin</artifactId>
|
||||
<version>${quarkus.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>${surefire-plugin.version}</version>
|
||||
<configuration>
|
||||
<systemProperties>
|
||||
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
|
||||
</systemProperties>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>native</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>native</name>
|
||||
</property>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-maven-plugin</artifactId>
|
||||
<version>${quarkus.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>native-image</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<enableHttpUrlHandler>true</enableHttpUrlHandler>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-failsafe-plugin</artifactId>
|
||||
<version>${surefire-plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>integration-test</goal>
|
||||
<goal>verify</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<systemProperties>
|
||||
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
|
||||
</systemProperties>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
37
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/thorntail/README.mustache
vendored
Normal file
37
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/thorntail/README.mustache
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
# JAX-RS server with OpenAPI using Thorntail
|
||||
|
||||
## Overview
|
||||
This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using an
|
||||
[OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
|
||||
|
||||
This is an example of building a OpenAPI-enabled JAX-RS server.
|
||||
This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework and
|
||||
the [Eclipse-MicroProfile-OpenAPI](https://github.com/eclipse/microprofile-open-api) addition.
|
||||
|
||||
The pom file is configured to use [Thorntail](https://thorntail.io) as application server.
|
||||
|
||||
{{#interfaceOnly}}
|
||||
This project produces a jar that defines some interfaces.
|
||||
The jar can be used in combination with an other project providing the implementation.
|
||||
{{/interfaceOnly}}
|
||||
|
||||
{{^interfaceOnly}}
|
||||
To start the server with maven, run this command:
|
||||
|
||||
```bash
|
||||
mvn thorntail:run
|
||||
```
|
||||
|
||||
You can then call your server endpoints under:
|
||||
|
||||
```
|
||||
http://localhost:8080/
|
||||
```
|
||||
|
||||
The OpenAPI specification is available at:
|
||||
|
||||
```
|
||||
http://localhost:8080/openapi
|
||||
```
|
||||
|
||||
{{/interfaceOnly}}
|
||||
81
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/thorntail/pom.mustache
vendored
Normal file
81
modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/thorntail/pom.mustache
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>{{groupId}}</groupId>
|
||||
<artifactId>{{artifactId}}</artifactId>
|
||||
<name>{{artifactId}}</name>
|
||||
<version>{{artifactVersion}}</version>
|
||||
<packaging>war</packaging>
|
||||
<properties>
|
||||
<version.thorntail>2.5.0.Final</version.thorntail>
|
||||
<version.junit>4.8.1</version.junit>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.thorntail</groupId>
|
||||
<artifactId>bom-all</artifactId>
|
||||
<version>${version.thorntail}</version>
|
||||
<scope>import</scope>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.thorntail</groupId>
|
||||
<artifactId>jaxrs</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.thorntail</groupId>
|
||||
<artifactId>microprofile-openapi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>${version.junit}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<finalName>{{artifactId}}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<version>1.9.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>add-source</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>add-source</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<sources>
|
||||
<source>src/gen/java</source>
|
||||
</sources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>io.thorntail</groupId>
|
||||
<artifactId>thorntail-maven-plugin</artifactId>
|
||||
<version>${version.thorntail}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>package</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
Reference in New Issue
Block a user