forked from loafle/openapi-generator-original
Compare commits
109 Commits
8.0.x
...
devhl-labs
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da9ef216a0 | ||
|
|
2bc0e5f745 | ||
|
|
2f54a2fb11 | ||
|
|
e914c4098b | ||
|
|
e4112c5aca | ||
|
|
f54b0e25a4 | ||
|
|
42d98e2526 | ||
|
|
f40f72cea8 | ||
|
|
8678ee8a1f | ||
|
|
fb1c2f3483 | ||
|
|
c733bb69a2 | ||
|
|
b228133a20 | ||
|
|
1776c000ed | ||
|
|
0643f526af | ||
|
|
5b96e85fd5 | ||
|
|
4ed8c70a92 | ||
|
|
abd19dd253 | ||
|
|
be618ec168 | ||
|
|
7510e6bbf8 | ||
|
|
1518237c25 | ||
|
|
4238f17322 | ||
|
|
dfc381c22f | ||
|
|
082382cc1e | ||
|
|
85763cdb08 | ||
|
|
e69fb86957 | ||
|
|
9579122945 | ||
|
|
d6780e7d43 | ||
|
|
4330b2f46d | ||
|
|
aae3ab3154 | ||
|
|
fe381e2199 | ||
|
|
f13a11b53c | ||
|
|
2b40a2c058 | ||
|
|
69cce249f6 | ||
|
|
7a7c8c19ab | ||
|
|
0f294a5129 | ||
|
|
ae069e6840 | ||
|
|
deb007b976 | ||
|
|
87704b28c0 | ||
|
|
b3f74c7c4f | ||
|
|
eda4547f15 | ||
|
|
cc98333d87 | ||
|
|
c2472b03b6 | ||
|
|
91da2fd240 | ||
|
|
6bdc452f92 | ||
|
|
fc8b7d92c8 | ||
|
|
df2b4210c9 | ||
|
|
fd62e3897b | ||
|
|
0a5c99739a | ||
|
|
bb831dad9a | ||
|
|
172fafe674 | ||
|
|
fbe6c11903 | ||
|
|
caeb83c845 | ||
|
|
ba1d7255d0 | ||
|
|
a6a75e3501 | ||
|
|
cd02426648 | ||
|
|
024bbb7784 | ||
|
|
be09f8a868 | ||
|
|
38ebf0bb4e | ||
|
|
05c10934ce | ||
|
|
daf52229e3 | ||
|
|
8f7354a2a2 | ||
|
|
2bf2d9bb56 | ||
|
|
b8001323f6 | ||
|
|
58dd0305ce | ||
|
|
d55525fbc4 | ||
|
|
8af3ff2828 | ||
|
|
e70a9564e0 | ||
|
|
d340e15f1a | ||
|
|
03d8c30183 | ||
|
|
2107e9ef8f | ||
|
|
fdd2dc9651 | ||
|
|
d1b9f9284a | ||
|
|
5166765724 | ||
|
|
ad8a7d2a3c | ||
|
|
6da3dc5c10 | ||
|
|
07baddfe12 | ||
|
|
ad7acc30eb | ||
|
|
4b493358a8 | ||
|
|
aea536027c | ||
|
|
908eddea0b | ||
|
|
539aab05a7 | ||
|
|
edc60db531 | ||
|
|
b803af5ddf | ||
|
|
f8a5051d9c | ||
|
|
eff3e6df53 | ||
|
|
ffd03b7e51 | ||
|
|
25936b4198 | ||
|
|
8f1d59fb0a | ||
|
|
af94bde2ce | ||
|
|
2c2d6905cb | ||
|
|
aa7c62abb7 | ||
|
|
aaeed0f5bd | ||
|
|
2bc4a16af3 | ||
|
|
4c163fe4b0 | ||
|
|
e0f12e9bf4 | ||
|
|
484b87f22a | ||
|
|
7f551bb9a0 | ||
|
|
4874a0bce7 | ||
|
|
4bf8e4a6ff | ||
|
|
28a902352c | ||
|
|
9a18fc1857 | ||
|
|
5d48d224d9 | ||
|
|
753502c255 | ||
|
|
16b28118cc | ||
|
|
d12cc0b63a | ||
|
|
f082a35d2e | ||
|
|
755b2efee4 | ||
|
|
2958107a6a | ||
|
|
42e8f762ac |
11
.github/CODEOWNERS
vendored
11
.github/CODEOWNERS
vendored
@@ -12,22 +12,11 @@ modules/openapi-generator-core/**/* @OpenAPITools/generator-core-team
|
||||
# No need for auto-generated subdirectories (reduces noise)
|
||||
docs/ @OpenAPITools/generator-core-team
|
||||
|
||||
## Individual interests
|
||||
.github/**/* @jimschubert
|
||||
scripts/**/* @jimschubert
|
||||
website/**/* @jimschubert
|
||||
bin/ci/**/* @jimschubert
|
||||
|
||||
## Build related
|
||||
CI/**/* @OpenAPITools/build
|
||||
.mvn/**/* @OpenAPITools/build
|
||||
bin/utils/**/* @OpenAPITools/build
|
||||
|
||||
## Module-specific
|
||||
modules/openapi-generator-cli/**/* @jimschubert
|
||||
modules/openapi-generator-gradle-plugin/**/* @jimschubert
|
||||
modules/openapi-generator-maven-plugin/**/* @jimschubert
|
||||
|
||||
# cpp-qt-client technical committee
|
||||
modules/openapi-generator/src/main/resources/cpp-qt-client/**/* @ravinikam
|
||||
samples/client/petstore/cpp-qt/**/* @ravinikam
|
||||
|
||||
11
.github/workflows/samples-cpp-qt-client.yaml
vendored
11
.github/workflows/samples-cpp-qt-client.yaml
vendored
@@ -3,10 +3,10 @@ name: Samples cpp qt client
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "samples/client/petstore/cpp-qt/**"
|
||||
- "samples/client/petstore/cpp-qt*/**"
|
||||
pull_request:
|
||||
paths:
|
||||
- "samples/client/petstore/cpp-qt/**"
|
||||
- "samples/client/petstore/cpp-qt*/**"
|
||||
|
||||
env:
|
||||
GRADLE_VERSION: 6.9
|
||||
@@ -16,6 +16,9 @@ jobs:
|
||||
name: Build cpp qt client
|
||||
strategy:
|
||||
matrix:
|
||||
sample:
|
||||
- samples/client/petstore/cpp-qt
|
||||
- samples/client/petstore/cpp-qt-addDownloadProgress
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macOS-latest
|
||||
@@ -29,5 +32,5 @@ jobs:
|
||||
version: "6.7.1"
|
||||
target: "desktop"
|
||||
- name: Build
|
||||
working-directory: "samples/client/petstore/cpp-qt"
|
||||
run: cmake . && cmake --build .
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: cmake . && cmake --build . --verbose
|
||||
|
||||
@@ -10,7 +10,7 @@ on:
|
||||
paths:
|
||||
- samples/client/petstore/java/resttemplate-jakarta/**
|
||||
- samples/client/petstore/java/webclient-jakarta/**
|
||||
- samples/client/petstore/java/restclient-*/**
|
||||
- samples/client/petstore/java/restclient-*/**
|
||||
jobs:
|
||||
build:
|
||||
name: Build Java Client JDK17
|
||||
@@ -25,6 +25,7 @@ jobs:
|
||||
- samples/client/petstore/java/restclient
|
||||
- samples/client/petstore/java/restclient-nullable-arrays
|
||||
- samples/client/petstore/java/restclient-swagger2
|
||||
- samples/client/petstore/java/restclient-useSingleRequestParameter
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
|
||||
@@ -5,10 +5,12 @@ on:
|
||||
paths:
|
||||
- samples/client/petstore/java-helidon-client/v3/**
|
||||
- samples/server/petstore/java-helidon-server/v3/**
|
||||
- samples/server/others/java-helidon-server/v3/**
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/client/petstore/java-helidon-client/v3/**
|
||||
- samples/server/petstore/java-helidon-server/v3/**
|
||||
- samples/server/others/java-helidon-server/v3/**
|
||||
jobs:
|
||||
build:
|
||||
name: Build Java Helidon
|
||||
@@ -21,6 +23,7 @@ jobs:
|
||||
- samples/client/petstore/java-helidon-client/v3/se
|
||||
- samples/server/petstore/java-helidon-server/v3/mp
|
||||
- samples/server/petstore/java-helidon-server/v3/se
|
||||
- samples/server/others/java-helidon-server/v3/mp-format-test
|
||||
version: [17]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -5,10 +5,12 @@ on:
|
||||
paths:
|
||||
- samples/client/petstore/java-helidon-client/v4/**
|
||||
- samples/server/petstore/java-helidon-server/v4/**
|
||||
- samples/server/others/java-helidon-server/v4/**
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/client/petstore/java-helidon-client/v4/**
|
||||
- samples/server/petstore/java-helidon-server/v4/**
|
||||
- samples/server/others/java-helidon-server/v4/**
|
||||
jobs:
|
||||
build:
|
||||
name: Build Java Helidon
|
||||
@@ -18,7 +20,11 @@ jobs:
|
||||
matrix:
|
||||
sample:
|
||||
- samples/client/petstore/java-helidon-client/v4/mp
|
||||
- samples/client/petstore/java-helidon-client/v4/se
|
||||
- samples/server/petstore/java-helidon-server/v4/mp
|
||||
- samples/server/petstore/java-helidon-server/v4/se
|
||||
- samples/server/petstore/java-helidon-server/v4/se-uac
|
||||
- samples/server/others/java-helidon-server/v4/mp-format-test
|
||||
version: [21]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
6
.github/workflows/samples-jdk21.yaml
vendored
6
.github/workflows/samples-jdk21.yaml
vendored
@@ -4,14 +4,18 @@ on:
|
||||
paths:
|
||||
# clients
|
||||
- samples/client/petstore/java-helidon-client/v4/mp/**
|
||||
- samples/client/petstore/java-helidon-client/v4/se/**
|
||||
# servers
|
||||
- samples/server/petstore/java-helidon-server/v4/mp/**
|
||||
- samples/server/petstore/java-helidon-server/v4/se/**
|
||||
pull_request:
|
||||
paths:
|
||||
# clients
|
||||
- samples/client/petstore/java-helidon-client/v4/mp/**
|
||||
- samples/client/petstore/java-helidon-client/v4/se/**
|
||||
# servers
|
||||
- samples/server/petstore/java-helidon-server/v4/mp/**
|
||||
- samples/server/petstore/java-helidon-server/v4/se/**
|
||||
jobs:
|
||||
build:
|
||||
name: Build with JDK21
|
||||
@@ -22,8 +26,10 @@ jobs:
|
||||
sample:
|
||||
# clients
|
||||
- samples/client/petstore/java-helidon-client/v4/mp/
|
||||
- samples/client/petstore/java-helidon-client/v4/se/
|
||||
# servers
|
||||
- samples/server/petstore/java-helidon-server/v4/mp/
|
||||
- samples/server/petstore/java-helidon-server/v4/se/
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
|
||||
@@ -30,7 +30,6 @@ jobs:
|
||||
# server
|
||||
- samples/server/petstore/kotlin-springboot-3
|
||||
- samples/server/petstore/kotlin-springboot-delegate-nodefaults
|
||||
- samples/server/petstore/kotlin-springboot-request
|
||||
- samples/server/petstore/kotlin-springboot-request-cookie
|
||||
- samples/server/petstore/kotlin-server/javalin
|
||||
- samples/server/petstore/kotlin-server/javalin-6
|
||||
|
||||
@@ -3,11 +3,11 @@ name: Samples Kotlin WireMock
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- samples/server/petstore/kotlin-wiremock/**
|
||||
- samples/server/petstore/kotlin-wiremock*/**
|
||||
- samples/server/echo_api/kotlin-wiremock/**
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/server/petstore/kotlin-wiremock/**
|
||||
- samples/server/petstore/kotlin-wiremock*/**
|
||||
- samples/server/echo_api/kotlin-wiremock/**
|
||||
|
||||
jobs:
|
||||
@@ -19,6 +19,7 @@ jobs:
|
||||
matrix:
|
||||
sample:
|
||||
- samples/server/petstore/kotlin-wiremock
|
||||
- samples/server/petstore/kotlin-wiremock-responses
|
||||
- samples/server/echo_api/kotlin-wiremock
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
2
.github/workflows/samples-rust.yaml
vendored
2
.github/workflows/samples-rust.yaml
vendored
@@ -34,4 +34,4 @@ jobs:
|
||||
toolchain: stable
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: cargo build
|
||||
run: cargo build --all-targets --all-features
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
.mvn/.gradle-enterprise/
|
||||
.mvn/.develocity/
|
||||
.scannerwork/
|
||||
.vscode
|
||||
*.iml
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
|
||||
<!-- Common gradle-enterprise.xml configuration for Maven shared between CI agents and developers building locally.
|
||||
<!-- Common develocity.xml configuration for Maven shared between CI agents and developers building locally.
|
||||
|
||||
The build cache credentials required for CI builds to write to the remote build cache are read from environment variables.
|
||||
Possibly, the credentials are configured in Jenkins via Credentials plugin (https://plugins.jenkins.io/credentials/) and
|
||||
@@ -9,24 +9,24 @@
|
||||
|
||||
Note: In the XML configuration below, you need to adjust
|
||||
|
||||
- the server url of your Gradle Enterprise server
|
||||
- the server url of your Develocity server
|
||||
- the name of the environment variable that reveals the build is running in a CI environment
|
||||
- the names of the environment variables holding the build cache credentials
|
||||
|
||||
to the specifics of your CI server settings. -->
|
||||
|
||||
<gradleEnterprise
|
||||
xmlns="https://www.gradle.com/gradle-enterprise-maven" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://www.gradle.com/gradle-enterprise-maven https://www.gradle.com/schema/gradle-enterprise-maven.xsd">
|
||||
<develocity
|
||||
xmlns="https://www.gradle.com/develocity-maven" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://www.gradle.com/develocity-maven https://www.gradle.com/schema/develocity-maven.xsd">
|
||||
<server>
|
||||
<url>https://ge.openapi-generator.tech/</url> <!-- adjust to your GE server -->
|
||||
<allowUntrusted>false</allowUntrusted> <!-- ensure a trusted certificate is configured -->
|
||||
<url>https://ge.openapi-generator.tech/</url>
|
||||
<allowUntrusted>false</allowUntrusted>
|
||||
</server>
|
||||
<buildScan>
|
||||
<captureGoalInputFiles>true</captureGoalInputFiles>
|
||||
<backgroundBuildScanUpload>#{isFalse(env['CI'])}</backgroundBuildScanUpload> <!-- adjust to your CI provider -->
|
||||
<publish>ALWAYS</publish>
|
||||
<publishIfAuthenticated>true</publishIfAuthenticated>
|
||||
<publishing>
|
||||
<onlyIf>authenticated</onlyIf>
|
||||
</publishing>
|
||||
<obfuscation>
|
||||
<!-- Use a redacted value.-->
|
||||
<ipAddresses>#{{'0.0.0.0'}}</ipAddresses>
|
||||
@@ -42,4 +42,4 @@
|
||||
<storeEnabled>#{isTrue(env['CI']) and isTrue(env['GRADLE_ENTERPRISE_ACCESS_KEY'])}</storeEnabled>
|
||||
</remote>
|
||||
</buildCache>
|
||||
</gradleEnterprise>
|
||||
</develocity>
|
||||
@@ -2,8 +2,8 @@
|
||||
<extensions>
|
||||
<extension>
|
||||
<groupId>com.gradle</groupId>
|
||||
<artifactId>gradle-enterprise-maven-extension</artifactId>
|
||||
<version>1.20.1</version>
|
||||
<artifactId>develocity-maven-extension</artifactId>
|
||||
<version>1.21.6</version>
|
||||
</extension>
|
||||
<extension>
|
||||
<groupId>com.gradle</groupId>
|
||||
|
||||
66
README.md
66
README.md
@@ -15,7 +15,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.8.0`):
|
||||
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.9.0`):
|
||||
[](https://app.travis-ci.com/github/OpenAPITools/openapi-generator/builds)
|
||||
[](https://circleci.com/gh/OpenAPITools/openapi-generator)
|
||||
[](https://ci.appveyor.com/project/WilliamCheng/openapi-generator)
|
||||
@@ -71,7 +71,7 @@ If you find OpenAPI Generator useful for work, please consider asking your compa
|
||||
[<img src="https://openapi-generator.tech/img/companies/designli.jpg" width="128" height="128">](https://designli.co?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
[<img src="https://openapi-generator.tech/img/companies/itm.png" width="128" height="128">](https://opensource.muenchen.de?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
[<img src="https://openapi-generator.tech/img/companies/kong.png" width="128" height="128">](https://konghq.com/products/kong-konnect?utm_medium=referral&utm_source=github&utm_campaign=platform&utm_content=openapi-generator)
|
||||
|
||||
[<img src="https://openapi-generator.tech/img/companies/route4me.png" width="128" height="128">](https://route4me.com/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
|
||||
#### Thank you GoDaddy for sponsoring the domain names, Linode for sponsoring the VPS, Checkly for sponsoring the API monitoring and Gradle for sponsoring Develocity
|
||||
|
||||
@@ -128,8 +128,8 @@ The OpenAPI Specification has undergone 3 revisions since initial creation in 20
|
||||
|
||||
| OpenAPI Generator Version | Release Date | Notes |
|
||||
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- |
|
||||
| 7.8.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.8.0-SNAPSHOT/) | 09.08.2024 | Minor release with breaking changes (with fallback) |
|
||||
| [7.7.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.7.0) (latest stable release) | 02.07.2024 | Minor release with breaking changes (with fallback) |
|
||||
| 7.9.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.9.0-SNAPSHOT/) | 23.09.2024 | Minor release with breaking changes (with fallback) |
|
||||
| [7.8.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.8.0) (latest stable release) | 19.08.2024 | Minor release with breaking changes (with fallback) |
|
||||
| [6.6.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.6.0) | 11.05.2023 | Minor release with breaking changes (with fallback) |
|
||||
| [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) | 31.01.2022 | Minor release with breaking changes (with fallback) |
|
||||
| [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) |
|
||||
@@ -192,16 +192,16 @@ See the different versions of the [openapi-generator-cli](https://search.maven.o
|
||||
<!-- RELEASE_VERSION -->
|
||||
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 11 runtime at a minimum):
|
||||
|
||||
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.7.0/openapi-generator-cli-7.7.0.jar`
|
||||
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar`
|
||||
|
||||
For **Mac/Linux** users:
|
||||
```sh
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.7.0/openapi-generator-cli-7.7.0.jar -O openapi-generator-cli.jar
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar -O openapi-generator-cli.jar
|
||||
```
|
||||
|
||||
For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
|
||||
```
|
||||
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.7.0/openapi-generator-cli-7.7.0.jar
|
||||
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar
|
||||
```
|
||||
|
||||
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
|
||||
@@ -436,7 +436,7 @@ openapi-generator-cli version
|
||||
To use a specific version of "openapi-generator-cli"
|
||||
|
||||
```sh
|
||||
openapi-generator-cli version-manager set 7.0.1
|
||||
openapi-generator-cli version-manager set 7.8.0
|
||||
```
|
||||
|
||||
Or install it as dev-dependency:
|
||||
@@ -445,6 +445,43 @@ Or install it as dev-dependency:
|
||||
npm install @openapitools/openapi-generator-cli -D
|
||||
```
|
||||
<!-- /RELEASE_VERSION -->
|
||||
|
||||
#### Use locally built JAR
|
||||
In order to use a locally built jar of the generator CLI, you can copy the jar from your local build (i.e. if you were to `build` this repository it would be in `~/openapi-generator/modules/openapi-generator-cli/target/openapi-generator-cli.jar`) into `./node_modules/@openapitools/openapi-generator-cli/versions/` and change the `version` in the `openapitools.json` file to the base name of the jar file.
|
||||
E.g.:
|
||||
```sh
|
||||
cd openapi-generator
|
||||
./mvnw clean package
|
||||
cp ./modules/openapi-generator-cli/target/openapi-generator-cli.jar /your/project/node_modules/@openapitools/openapi-generator-cli/versions/my-local-snapshot.jar
|
||||
```
|
||||
and then:
|
||||
```json
|
||||
{
|
||||
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
|
||||
"spaces": 2,
|
||||
"generator-cli": {
|
||||
"version": "my-local-snapshot",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Use nightly `SNAPSHOT` build
|
||||
Change your `openapitools.json` to:
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json",
|
||||
"spaces": 2,
|
||||
"generator-cli": {
|
||||
"version": "7.9.0-20240829.123431-22",
|
||||
"repository": {
|
||||
"downloadUrl": "https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.9.0-SNAPSHOT/openapi-generator-cli-${versionName}.jar"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
(example is with a snapshot of `7.9.0`, please change the `version` and `downloadUrl` accordingly)
|
||||
|
||||
## [2 - Getting Started](#table-of-contents)
|
||||
|
||||
To generate a PHP client for [petstore.yaml](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml), please run the following
|
||||
@@ -460,7 +497,7 @@ java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generat
|
||||
(if you're on Windows, replace the last command with `java -jar modules\openapi-generator-cli\target\openapi-generator-cli.jar generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g php -o c:\temp\php_api_client`)
|
||||
|
||||
<!-- RELEASE_VERSION -->
|
||||
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.0.1/openapi-generator-cli-7.0.1.jar)
|
||||
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar)
|
||||
<!-- /RELEASE_VERSION -->
|
||||
|
||||
To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate`
|
||||
@@ -576,9 +613,9 @@ Please refer to [online.md](docs/online.md) on how to run and use the `openapi-g
|
||||
|
||||
### [3.4 - License information on Generated Code](#table-of-contents)
|
||||
|
||||
The OpenAPI Generator project is intended as a benefit for users of the Open API Specification. The project itself has the [License](#license) as specified. In addition, please understand the following points:
|
||||
The OpenAPI Generator project is intended as a benefit for users of the Open API Specification. The project itself has the [License](#7---license) as specified. In addition, please understand the following points:
|
||||
|
||||
* The templates included with this project are subject to the [License](#license).
|
||||
* The templates included with this project are subject to the [License](#7---license).
|
||||
* Generated code is intentionally _not_ subject to the parent project license
|
||||
|
||||
When code is generated from this project, it shall be considered **AS IS** and owned by the user of the software. There are no warranties--expressed or implied--for generated code. You can do what you wish with it, and once generated, the code is your responsibility and subject to the licensing terms that you deem appropriate.
|
||||
@@ -632,6 +669,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
|
||||
- [codecentric AG](https://www.codecentric.de/)
|
||||
- [CoinAPI](https://www.coinapi.io/)
|
||||
- [Commencis](https://www.commencis.com/)
|
||||
- [ConfigCat](https://configcat.com/)
|
||||
- [cronn GmbH](https://www.cronn.de/)
|
||||
- [Crossover Health](https://crossoverhealth.com/)
|
||||
- [Cupix](https://www.cupix.com/)
|
||||
@@ -942,7 +980,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
|
||||
|
||||
What's the design philosophy or principle behind OpenAPI Generator?
|
||||
|
||||
We focus on developer experience. The generators should produce code, config, documentation, and more that are easily understandable and consumable by users. We focused on simple use cases to start with (bottom-up approach). Since then the project and the community have grown a lot: 300k weekly downloads via NPM CLI wrapper, 20M downloads via openapi-generator-cli docker image just to highlight a few. We've gradually supported more features (e.g. oneOf, anyOf introduced in OpenAPI 3.0) in various generators and we will continue this approach to deliver something based on our understanding of user demand and what they want, and continue to add support of new features introduced in OpenAPI specification (such as v3.1 and future versions of the OpenAPI specification).
|
||||
We focus on developer experience. The generators should produce code, config, documentation, and more that are easily understandable and consumable by users. We focused on simple use cases to start with (bottom-up approach). Since then the project and the community have grown a lot: 600k weekly downloads via NPM CLI wrapper, 30M downloads via openapi-generator-cli docker image just to highlight a few. We've gradually supported more features (e.g. oneOf, anyOf introduced in OpenAPI 3.0) in various generators and we will continue this approach to deliver something based on our understanding of user demand and what they want, and continue to add support of new features introduced in OpenAPI specification (such as v3.1 and future versions of the OpenAPI specification).
|
||||
|
||||
### [6.1 - OpenAPI Generator Core Team](#table-of-contents)
|
||||
|
||||
@@ -1191,7 +1229,7 @@ If you want to join the committee, please kindly apply by sending an email to te
|
||||
| JMeter | @kannkyo (2021/01) |
|
||||
| Jetbrains HTTP Client | @jlengrand (2023/01) |
|
||||
| Julia | @tanmaykm (2023/01) |
|
||||
| Kotlin | @jimschubert (2017/09) [:heart:](https://www.patreon.com/jimschubert), @dr4ke616 (2018/08) @karismann (2019/03) @Zomzog (2019/04) @andrewemery (2019/10) @4brunu (2019/11) @yutaka0m (2020/03) @stefankoppier (2022/06) |
|
||||
| Kotlin | @dr4ke616 (2018/08) @karismann (2019/03) @Zomzog (2019/04) @andrewemery (2019/10) @4brunu (2019/11) @yutaka0m (2020/03) @stefankoppier (2022/06) |
|
||||
| Lua | @daurnimator (2017/08) |
|
||||
| N4JS | @mmews-n4 (2023/03) |
|
||||
| Nim | |
|
||||
@@ -1205,7 +1243,7 @@ If you want to join the committee, please kindly apply by sending an email to te
|
||||
| R | @Ramanth (2019/07) @saigiridhar21 (2019/07) |
|
||||
| Ruby | @cliffano (2017/07) @zlx (2017/09) @autopp (2019/02) |
|
||||
| Rust | @frol (2017/07) @farcaller (2017/08) @richardwhiuk (2019/07) @paladinzh (2020/05) @jacob-pro (2022/10) |
|
||||
| Scala | @clasnake (2017/07), @jimschubert (2017/09) [:heart:](https://www.patreon.com/jimschubert), @shijinkui (2018/01), @ramzimaalej (2018/03), @chameleon82 (2020/03), @Bouillie (2020/04) @fish86 (2023/06) |
|
||||
| Scala | @clasnake (2017/07), @shijinkui (2018/01), @ramzimaalej (2018/03), @chameleon82 (2020/03), @Bouillie (2020/04) @fish86 (2023/06) |
|
||||
| Swift | @jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @4brunu (2019/11) @dydus0x14 (2023/06) |
|
||||
| TypeScript | @TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @topce (2018/10) @akehir (2019/07) @petejohansonxo (2019/11) @amakhrov (2020/02) @davidgamero (2022/03) @mkusaka (2022/04) |
|
||||
| Xojo | @Topheee (2023/04) |
|
||||
|
||||
9
bin/configs/cpp-qt-client-addDownloadProgress.yaml
Normal file
9
bin/configs/cpp-qt-client-addDownloadProgress.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
generatorName: cpp-qt-client
|
||||
outputDir: samples/client/petstore/cpp-qt-addDownloadProgress
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/cpp-qt/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/cpp-qt-client
|
||||
additionalProperties:
|
||||
packageName: CppQtPetstoreClient
|
||||
cppNamespace: test_namespace
|
||||
modelNamePrefix: PFX
|
||||
addDownloadProgress: true
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net47
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net47
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net47
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -13,5 +13,6 @@ additionalProperties:
|
||||
targetFramework: net47
|
||||
skipFormModel: false
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
inlineSchemaOptions:
|
||||
RESOLVE_INLINE_ENUMS: true
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net47
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -9,3 +9,4 @@ additionalProperties:
|
||||
useDateTimeForDate: true
|
||||
targetFramework: net47
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -12,3 +12,4 @@ additionalProperties:
|
||||
equatable: true
|
||||
targetFramework: net47
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net48
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net48
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net48
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -13,5 +13,6 @@ additionalProperties:
|
||||
targetFramework: net48
|
||||
skipFormModel: false
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
inlineSchemaOptions:
|
||||
RESOLVE_INLINE_ENUMS: true
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: false
|
||||
equatable: true
|
||||
targetFramework: net48
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -9,3 +9,4 @@ additionalProperties:
|
||||
useDateTimeForDate: true
|
||||
targetFramework: net48
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -12,3 +12,4 @@ additionalProperties:
|
||||
equatable: true
|
||||
targetFramework: net48
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: true
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: true
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: true
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -13,5 +13,6 @@ additionalProperties:
|
||||
targetFramework: net8.0
|
||||
skipFormModel: false
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
inlineSchemaOptions:
|
||||
RESOLVE_INLINE_ENUMS: true
|
||||
|
||||
@@ -12,3 +12,4 @@ additionalProperties:
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -12,3 +12,4 @@ additionalProperties:
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,5 @@ additionalProperties:
|
||||
nullableReferenceTypes: true
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -9,3 +9,4 @@ additionalProperties:
|
||||
useDateTimeForDate: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -12,3 +12,4 @@ additionalProperties:
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -11,3 +11,4 @@ additionalProperties:
|
||||
targetFramework: netstandard2.0
|
||||
equatable: true
|
||||
modelPropertySorting: alphabetical
|
||||
operationParameterSorting: alphabetical
|
||||
|
||||
@@ -15,6 +15,7 @@ additionalProperties:
|
||||
packageName: petstore
|
||||
disallowAdditionalPropertiesIfNotPresent: false
|
||||
generateInterfaces: true
|
||||
useDefaultValuesForRequiredVars: "true"
|
||||
enumNameMappings:
|
||||
delivered: SHIPPED
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ library: mp
|
||||
outputDir: samples/client/petstore/java-helidon-client/v4/mp
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.8
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-client-mp
|
||||
hideGenerationTimestamp: "true"
|
||||
configureAuth: "false"
|
||||
|
||||
14
bin/configs/java-helidon-client-se_4.yaml
Normal file
14
bin/configs/java-helidon-client-se_4.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
generatorName: java-helidon-client
|
||||
library: se
|
||||
outputDir: samples/client/petstore/java-helidon-client/v4/se
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-client-se
|
||||
hideGenerationTimestamp: "true"
|
||||
configureAuth: "false"
|
||||
build: "all"
|
||||
test: "spock"
|
||||
requiredPropertiesInConstructor: "false"
|
||||
visitable: "true"
|
||||
fullProject: "true"
|
||||
10
bin/configs/java-helidon-server-mp_3_format_test.yaml
Normal file
10
bin/configs/java-helidon-server-mp_3_format_test.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
generatorName: java-helidon-server
|
||||
library: mp
|
||||
outputDir: samples/server/others/java-helidon-server/v3/mp-format-test
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/helidon/format-test.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/server
|
||||
additionalProperties:
|
||||
helidonVersion: 3.2.7
|
||||
artifactId: format-helidon-server-mp
|
||||
hideGenerationTimestamp: "true"
|
||||
fullProject: "true"
|
||||
@@ -4,7 +4,7 @@ outputDir: samples/server/petstore/java-helidon-server/v4/mp
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/server
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.8
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-server-mp
|
||||
hideGenerationTimestamp: "true"
|
||||
build: "all"
|
||||
|
||||
10
bin/configs/java-helidon-server-mp_4_format_test.yaml
Normal file
10
bin/configs/java-helidon-server-mp_4_format_test.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
generatorName: java-helidon-server
|
||||
library: mp
|
||||
outputDir: samples/server/others/java-helidon-server/v4/mp-format-test
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/helidon/format-test.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/server
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: format-helidon-server-mp
|
||||
hideGenerationTimestamp: "true"
|
||||
fullProject: "true"
|
||||
@@ -0,0 +1,13 @@
|
||||
generatorName: java-helidon-server
|
||||
library: se
|
||||
outputDir: samples/server/petstore/java-helidon-server/v4/se-uac-group-by-file-path
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/server
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-server-se
|
||||
hideGenerationTimestamp: "true"
|
||||
fullProject: "true"
|
||||
useAbstractClass: "true"
|
||||
generatorVersion: "stable"
|
||||
x-helidon-groupBy: first-path-segment
|
||||
12
bin/configs/java-helidon-server-se_4-uac.yaml
Normal file
12
bin/configs/java-helidon-server-se_4-uac.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
generatorName: java-helidon-server
|
||||
library: se
|
||||
outputDir: samples/server/petstore/java-helidon-server/v4/se-uac
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/server
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-server-se
|
||||
hideGenerationTimestamp: "true"
|
||||
fullProject: "true"
|
||||
useAbstractClass: "true"
|
||||
generatorVersion: "stable"
|
||||
12
bin/configs/java-helidon-server-se_4.yaml
Normal file
12
bin/configs/java-helidon-server-se_4.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
generatorName: java-helidon-server
|
||||
library: se
|
||||
outputDir: samples/server/petstore/java-helidon-server/v4/se
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/server
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-server-se
|
||||
hideGenerationTimestamp: "true"
|
||||
fullProject: "true"
|
||||
x-helidon-useOptional: "true"
|
||||
generatorVersion: "stable"
|
||||
@@ -11,3 +11,4 @@ additionalProperties:
|
||||
useOneOfDiscriminatorLookup: true
|
||||
disallowAdditionalPropertiesIfNotPresent: false
|
||||
gradleProperties: "\n# JVM arguments\norg.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m\n# set timeout\norg.gradle.daemon.idletimeout=3600000\n# show all warnings\norg.gradle.warning.mode=all"
|
||||
failOnUnknownProperties: true
|
||||
@@ -12,3 +12,4 @@ additionalProperties:
|
||||
useOneOfDiscriminatorLookup: true
|
||||
disallowAdditionalPropertiesIfNotPresent: false
|
||||
gradleProperties: "\n# JVM arguments\norg.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m\n# set timeout\norg.gradle.daemon.idletimeout=3600000\n# show all warnings\norg.gradle.warning.mode=all"
|
||||
failOnUnknownProperties: true
|
||||
@@ -0,0 +1,9 @@
|
||||
generatorName: java
|
||||
outputDir: samples/client/petstore/java/restclient-useSingleRequestParameter
|
||||
library: restclient
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/Java
|
||||
additionalProperties:
|
||||
artifactId: singleparam-restclient
|
||||
hideGenerationTimestamp: "true"
|
||||
useSingleRequestParameter: true
|
||||
4
bin/configs/k6-basic-auth.yaml
Normal file
4
bin/configs/k6-basic-auth.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
generatorName: k6
|
||||
outputDir: samples/client/others/k6/basicAuth
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/k6/basic_auth.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/k6
|
||||
4
bin/configs/k6-bearer-auth.yaml
Normal file
4
bin/configs/k6-bearer-auth.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
generatorName: k6
|
||||
outputDir: samples/client/others/k6/bearerAuth
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/k6/bearer_auth.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/k6
|
||||
@@ -1,9 +0,0 @@
|
||||
generatorName: kotlin-spring
|
||||
outputDir: samples/server/petstore/kotlin-springboot-request
|
||||
library: spring-boot
|
||||
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/kotlin-spring
|
||||
additionalProperties:
|
||||
appendRequestToHandler: true
|
||||
interfaceOnly: true
|
||||
useSpringBoot3: true
|
||||
4
bin/configs/kotlin-wiremock-responses.yaml
Normal file
4
bin/configs/kotlin-wiremock-responses.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
generatorName: kotlin-wiremock
|
||||
outputDir: samples/server/petstore/kotlin-wiremock-responses
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/kotlin/issue7193-responses.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/kotlin-wiremock
|
||||
7
bin/configs/php-nextgen-echo-api-streaming.yaml
Normal file
7
bin/configs/php-nextgen-echo-api-streaming.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
generatorName: php-nextgen
|
||||
outputDir: samples/client/echo_api/php-nextgen-streaming
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/echo_api.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/php-nextgen
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
supportStreaming: true
|
||||
@@ -2,6 +2,9 @@ generatorName: python-pydantic-v1
|
||||
outputDir: samples/openapi3/client/petstore/python-pydantic-v1
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/python-pydantic-v1
|
||||
gitHost: GIT_HOST
|
||||
gitUserId: GIT_USER_ID
|
||||
gitRepoId: GIT_REPO_ID
|
||||
additionalProperties:
|
||||
packageName: petstore_api
|
||||
useOneOfDiscriminatorLookup: "true"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
generatorName: typescript-axios
|
||||
outputDir: samples/client/petstore/typescript-axios/builds/with-interfaces-and-with-single-request-param
|
||||
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/typescript-axios
|
||||
additionalProperties:
|
||||
withInterfaces: "true"
|
||||
useSingleRequestParameter: "true"
|
||||
@@ -0,0 +1,10 @@
|
||||
generatorName: typescript
|
||||
outputDir: samples/openapi3/client/petstore/typescript/builds/deno_object_params
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/typescript
|
||||
additionalProperties:
|
||||
platform: deno
|
||||
npmName: ts-petstore-client
|
||||
useObjectParameters: true
|
||||
projectName: ts-petstore-client
|
||||
moduleName: petstore
|
||||
9
bin/configs/typescript-consolidated-explode-query.yaml
Normal file
9
bin/configs/typescript-consolidated-explode-query.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
generatorName: typescript
|
||||
outputDir: samples/openapi3/client/petstore/typescript/builds/explode-query
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/snakecase-discriminator.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/typescript
|
||||
additionalProperties:
|
||||
platform: node
|
||||
npmName: ts-petstore-client
|
||||
projectName: ts-petstore-client
|
||||
moduleName: petstore
|
||||
6
bin/configs/typescript-fetch-validation-attributes.yaml
Normal file
6
bin/configs/typescript-fetch-validation-attributes.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
generatorName: typescript-fetch
|
||||
outputDir: samples/client/petstore/typescript-fetch/builds/validation-attributes
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/typescript-fetch/validation-attributes.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/typescript-fetch
|
||||
additionalProperties:
|
||||
validationAttributes: true
|
||||
@@ -107,6 +107,7 @@ declare -a xml_files=(
|
||||
"${root}/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md"
|
||||
"${root}/README.md"
|
||||
"${root}/docs/installation.md"
|
||||
"${root}/docs/plugins.md"
|
||||
"${root}/website/src/pages/index.js"
|
||||
)
|
||||
|
||||
|
||||
@@ -15,12 +15,11 @@ codegen="${cli}/target/openapi-generator-cli.jar"
|
||||
commands="config-help,generate,batch,help,list,meta,validate,version"
|
||||
|
||||
if [ $# == 0 ]; then
|
||||
echo "No command specified. Available commands:"
|
||||
for i in $(echo $commands | sed "s/,/ /g")
|
||||
do
|
||||
echo " $i"
|
||||
done
|
||||
exit
|
||||
echo "No command specified. Available commands:"
|
||||
for i in $(echo $commands | sed "s/,/ /g"); do
|
||||
echo " $i"
|
||||
done
|
||||
exit
|
||||
fi
|
||||
|
||||
# if CLI jar exists, check $1 against completions available in the CLI
|
||||
|
||||
@@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
| Option | Description | Values | Default |
|
||||
| ------ | ----------- | ------ | ------- |
|
||||
|addDownloadProgress|Add support for Qt download progress| |false|
|
||||
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|
||||
|contentCompression|Enable Compressed Content Encoding for requests and responses| |false|
|
||||
|cppNamespace|C++ namespace (convention: name::space::for::api).| |OpenAPI|
|
||||
|
||||
@@ -31,11 +31,11 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|library|HTTP library template (sub-template) to use|<dl><dt>**generichost**</dt><dd>HttpClient with Generic Host dependency injection (https://docs.microsoft.com/en-us/dotnet/core/extensions/generic-host) (Experimental. Subject to breaking changes without notice.)</dd><dt>**httpclient**</dt><dd>HttpClient (https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient) (Experimental. Subject to breaking changes without notice.)</dd><dt>**unityWebRequest**</dt><dd>UnityWebRequest (...) (Experimental. Subject to breaking changes without notice.)</dd><dt>**restsharp**</dt><dd>RestSharp (https://github.com/restsharp/RestSharp)</dd></dl>|restsharp|
|
||||
|licenseId|The identifier of the license| |null|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |PascalCase|
|
||||
|modelPropertySorting|One of legacy, alphabetical, default (only `generichost` library supports this option).| |legacy|
|
||||
|modelPropertySorting|One of legacy, alphabetical, default.| |default|
|
||||
|netCoreProjectFile|Use the new format (.NET Core) for .NET project files (.csproj).| |false|
|
||||
|nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.| |false|
|
||||
|nullableReferenceTypes|Use nullable annotations in the project. Only supported on C# 8 / ASP.NET Core 3.1 or newer. Starting in .NET 6.0 the default is true.| |false|
|
||||
|operationParameterSorting|One of legacy, alphabetical, default (only `generichost` library supports this option).| |legacy|
|
||||
|operationParameterSorting|One of legacy, alphabetical, default.| |default|
|
||||
|optionalAssemblyInfo|Generate AssemblyInfo.cs.| |true|
|
||||
|optionalEmitDefaultValues|Set DataMember's EmitDefaultValue.| |false|
|
||||
|optionalMethodArgument|C# Optional method argument, e.g. void square(int x=10) (.net 4.0+ only).| |true|
|
||||
|
||||
@@ -29,6 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|packageVersion|Go package version.| |1.0.0|
|
||||
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|
||||
|structPrefix|whether to prefix struct with the class name. e.g. DeletePetOpts => PetApiDeletePetOpts| |false|
|
||||
|useDefaultValuesForRequiredVars|Use default values for required variables when available| |false|
|
||||
|useOneOfDiscriminatorLookup|Use the discriminator's mapping in oneOf to speed up the model lookup. IMPORTANT: Validation (e.g. one and only one match in oneOf's schemas) will be skipped.| |false|
|
||||
|withAWSV4Signature|whether to include AWS v4 signature support| |false|
|
||||
|withGoMod|Generate go.mod and go.sum| |true|
|
||||
|
||||
@@ -65,6 +65,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|
||||
|useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false|
|
||||
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
|
||||
|x-helidon-groupBy|Selects how to group operations into APIs|<dl><dt>**tags**</dt><dd>Use the 'tags' settings on each operation</dd><dt>**first-path-segment**</dt><dd>Use the first segment of the path</dd></dl>|tags|
|
||||
|x-helidon-useOptional|Wrap optional parameters in an Optional (Helidon 4 and later)| |true|
|
||||
|
||||
## SUPPORTED VENDOR EXTENSIONS
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|
||||
|useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false|
|
||||
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
|
||||
|x-helidon-groupBy|Selects how to group operations into APIs|<dl><dt>**tags**</dt><dd>Use the 'tags' settings on each operation</dd><dt>**first-path-segment**</dt><dd>Use the first segment of the path</dd></dl>|tags|
|
||||
|x-helidon-useOptional|Wrap optional parameters in an Optional (Helidon 4 and later)| |true|
|
||||
|
||||
## SUPPORTED VENDOR EXTENSIONS
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|errorObjectType|Error Object type. (This option is for okhttp-gson only)| |null|
|
||||
|failOnUnknownProperties|Fail Jackson de-serialization on unknown properties| |false|
|
||||
|generateBuilders|Whether to generate builders for models| |false|
|
||||
|generateClientAsBean|For resttemplate, configure whether to create `ApiClient.java` and Apis clients as bean (with `@Component` annotation).| |false|
|
||||
|generateConstructorWithAllArgs|whether to generate a constructor for all arguments| |false|
|
||||
@@ -98,7 +99,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|useRuntimeException|Use RuntimeException instead of Exception. Only jersey2, jersey3, okhttp-gson, vertx, microprofile support this option.| |false|
|
||||
|useRxJava2|Whether to use the RxJava2 adapter with the retrofit2 library. IMPORTANT: This option has been deprecated.| |false|
|
||||
|useRxJava3|Whether to use the RxJava3 adapter with the retrofit2 library. IMPORTANT: This option has been deprecated.| |false|
|
||||
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter. ONLY jersey2, jersey3, okhttp-gson, microprofile support this option.| |false|
|
||||
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter. ONLY jersey2, jersey3, okhttp-gson, microprofile, Spring RestClient support this option.| |false|
|
||||
|webclientBlockingOperations|Making all WebClient operations blocking(sync). Note that if on operation 'x-webclient-blocking: false' then such operation won't be sync| |false|
|
||||
|withAWSV4Signature|whether to include AWS v4 signature support (only available for okhttp-gson library)| |false|
|
||||
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
|
||||
|
||||
@@ -49,6 +49,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|errorObjectType|Error Object type. (This option is for okhttp-gson only)| |null|
|
||||
|failOnUnknownProperties|Fail Jackson de-serialization on unknown properties| |false|
|
||||
|generateBuilders|Whether to generate builders for models| |false|
|
||||
|generateClientAsBean|For resttemplate, configure whether to create `ApiClient.java` and Apis clients as bean (with `@Component` annotation).| |false|
|
||||
|generateConstructorWithAllArgs|whether to generate a constructor for all arguments| |false|
|
||||
@@ -98,7 +99,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|useRuntimeException|Use RuntimeException instead of Exception. Only jersey2, jersey3, okhttp-gson, vertx, microprofile support this option.| |false|
|
||||
|useRxJava2|Whether to use the RxJava2 adapter with the retrofit2 library. IMPORTANT: This option has been deprecated.| |false|
|
||||
|useRxJava3|Whether to use the RxJava3 adapter with the retrofit2 library. IMPORTANT: This option has been deprecated.| |false|
|
||||
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter. ONLY jersey2, jersey3, okhttp-gson, microprofile support this option.| |false|
|
||||
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter. ONLY jersey2, jersey3, okhttp-gson, microprofile, Spring RestClient support this option.| |false|
|
||||
|webclientBlockingOperations|Making all WebClient operations blocking(sync). Note that if on operation 'x-webclient-blocking: false' then such operation won't be sync| |false|
|
||||
|withAWSV4Signature|whether to include AWS v4 signature support (only available for okhttp-gson library)| |false|
|
||||
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
|
||||
|
||||
@@ -22,7 +22,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|annotationLibrary|Select the complementary documentation annotation library.|<dl><dt>**none**</dt><dd>Do not annotate Model and Api with complementary annotations.</dd><dt>**swagger1**</dt><dd>Annotate Model and Api using the Swagger Annotations 1.x library.</dd><dt>**swagger2**</dt><dd>Annotate Model and Api using the Swagger Annotations 2.x library.</dd></dl>|swagger2|
|
||||
|apiPackage|api package for generated code| |org.openapitools.api|
|
||||
|apiSuffix|suffix for api classes| |Api|
|
||||
|appendRequestToHandler|Append ServerHttpRequest to handler method for getting request stuff| |false|
|
||||
|artifactId|Generated artifact id (name of jar).| |openapi-spring|
|
||||
|artifactVersion|Generated artifact's package version.| |1.0.0|
|
||||
|basePackage|base package (invokerPackage) for generated code| |org.openapitools|
|
||||
|
||||
@@ -38,6 +38,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|
||||
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|
||||
|srcBasePath|The directory to serve as source root.| |null|
|
||||
|supportStreaming|Support streaming endpoint| |false|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
@@ -44,6 +44,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|supportsES6|Generate code that conforms to ES6.| |false|
|
||||
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter.| |true|
|
||||
|useSquareBracketsInArrayNames|Setting this property to true will add brackets to array attribute names, e.g. my_values[].| |false|
|
||||
|validationAttributes|Setting this property to true will generate the validation attributes of model properties.| |false|
|
||||
|withInterfaces|Setting this property to true will generate interfaces next to the default class implementations.| |false|
|
||||
|withoutRuntimeChecks|Setting this property to true will remove any runtime checks on the request and response payloads. Payloads will be casted to their expected types.| |false|
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ npm install @openapitools/openapi-generator-cli -g
|
||||
To install a specific version of the tool, pass the version during installation:
|
||||
<!-- RELEASE_VERSION -->
|
||||
```bash
|
||||
openapi-generator-cli version-manager set 5.3.0
|
||||
openapi-generator-cli version-manager set 7.8.0
|
||||
```
|
||||
<!-- /RELEASE_VERSION -->
|
||||
To install the tool as a dev dependency in your current project:
|
||||
@@ -103,18 +103,18 @@ docker run --rm \
|
||||
<!-- RELEASE_VERSION -->
|
||||
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 11 runtime at a minimum):
|
||||
|
||||
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.7.0/openapi-generator-cli-7.7.0.jar`
|
||||
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar`
|
||||
|
||||
For **Mac/Linux** users:
|
||||
|
||||
```bash
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.7.0/openapi-generator-cli-7.7.0.jar -O openapi-generator-cli.jar
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar -O openapi-generator-cli.jar
|
||||
```
|
||||
|
||||
For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.7.0/openapi-generator-cli-7.7.0.jar
|
||||
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar
|
||||
```
|
||||
<!-- /RELEASE_VERSION -->
|
||||
|
||||
|
||||
@@ -11,13 +11,12 @@ A Maven plugin to support the OpenAPI generator project
|
||||
|
||||
Add to your `build->plugins` section (default phase is `generate-sources` phase)
|
||||
|
||||
<!-- RELEASE_VERSION -->
|
||||
```xml
|
||||
<plugin>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>6.6.0</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<version>7.8.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
@@ -34,6 +33,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase)
|
||||
</executions>
|
||||
</plugin>
|
||||
```
|
||||
<!-- /RELEASE_VERSION -->
|
||||
|
||||
Followed by:
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -62,14 +62,14 @@ public class WorkflowSettingsTest {
|
||||
.withGlobalProperty("second", "2nd")
|
||||
.build();
|
||||
|
||||
Map<String, String> properties = modified.getGlobalProperties();
|
||||
assertEquals(properties.size(), 2, "System Properties map should allow mutation when invoked via copy constructor");
|
||||
assertEquals(properties.getOrDefault("first", ""), "1st");
|
||||
assertEquals(properties.getOrDefault("second", ""), "2nd");
|
||||
Map<String, String> globalProperties = modified.getGlobalProperties();
|
||||
assertEquals(globalProperties.size(), 2, "System Properties map should allow mutation when invoked via copy constructor");
|
||||
assertEquals(globalProperties.getOrDefault("first", ""), "1st");
|
||||
assertEquals(globalProperties.getOrDefault("second", ""), "2nd");
|
||||
}
|
||||
|
||||
private void assertOnChangesToDefaults(WorkflowSettings defaults) {
|
||||
WorkflowSettings settings = WorkflowSettings.newBuilder()
|
||||
private void assertOnChangesToDefaults(WorkflowSettings defaultSettings) {
|
||||
WorkflowSettings newSettings = WorkflowSettings.newBuilder()
|
||||
.withOutputDir("output")
|
||||
.withVerbose(true)
|
||||
.withSkipOverwrite(true)
|
||||
@@ -81,32 +81,32 @@ public class WorkflowSettingsTest {
|
||||
.withStrictSpecBehavior(false)
|
||||
.build();
|
||||
|
||||
assertNotEquals(defaults.getOutputDir(), settings.getOutputDir());
|
||||
assertEquals(settings.getOutputDir(), Paths.get("output").toAbsolutePath().toString());
|
||||
assertNotEquals(defaultSettings.getOutputDir(), newSettings.getOutputDir());
|
||||
assertEquals(newSettings.getOutputDir(), Paths.get("output").toAbsolutePath().toString());
|
||||
|
||||
assertNotEquals(defaults.isVerbose(), settings.isVerbose());
|
||||
assertTrue(settings.isVerbose());
|
||||
assertNotEquals(defaultSettings.isVerbose(), newSettings.isVerbose());
|
||||
assertTrue(newSettings.isVerbose());
|
||||
|
||||
assertNotEquals(defaults.isSkipOverwrite(), settings.isSkipOverwrite());
|
||||
assertTrue(settings.isSkipOverwrite());
|
||||
assertNotEquals(defaultSettings.isSkipOverwrite(), newSettings.isSkipOverwrite());
|
||||
assertTrue(newSettings.isSkipOverwrite());
|
||||
|
||||
assertNotEquals(defaults.isRemoveOperationIdPrefix(), settings.isRemoveOperationIdPrefix());
|
||||
assertTrue(settings.isRemoveOperationIdPrefix());
|
||||
assertNotEquals(defaultSettings.isRemoveOperationIdPrefix(), newSettings.isRemoveOperationIdPrefix());
|
||||
assertTrue(newSettings.isRemoveOperationIdPrefix());
|
||||
|
||||
assertNotEquals(defaults.isLogToStderr(), settings.isLogToStderr());
|
||||
assertTrue(settings.isLogToStderr());
|
||||
assertNotEquals(defaultSettings.isLogToStderr(), newSettings.isLogToStderr());
|
||||
assertTrue(newSettings.isLogToStderr());
|
||||
|
||||
assertNotEquals(defaults.isValidateSpec(), settings.isValidateSpec());
|
||||
assertFalse(settings.isValidateSpec());
|
||||
assertNotEquals(defaultSettings.isValidateSpec(), newSettings.isValidateSpec());
|
||||
assertFalse(newSettings.isValidateSpec());
|
||||
|
||||
assertNotEquals(defaults.isEnablePostProcessFile(), settings.isEnablePostProcessFile());
|
||||
assertTrue(settings.isEnablePostProcessFile());
|
||||
assertNotEquals(defaultSettings.isEnablePostProcessFile(), newSettings.isEnablePostProcessFile());
|
||||
assertTrue(newSettings.isEnablePostProcessFile());
|
||||
|
||||
assertNotEquals(defaults.isEnableMinimalUpdate(), settings.isEnableMinimalUpdate());
|
||||
assertTrue(settings.isEnableMinimalUpdate());
|
||||
assertNotEquals(defaultSettings.isEnableMinimalUpdate(), newSettings.isEnableMinimalUpdate());
|
||||
assertTrue(newSettings.isEnableMinimalUpdate());
|
||||
|
||||
assertNotEquals(defaults.isStrictSpecBehavior(), settings.isStrictSpecBehavior());
|
||||
assertFalse(settings.isStrictSpecBehavior());
|
||||
assertNotEquals(defaultSettings.isStrictSpecBehavior(), newSettings.isStrictSpecBehavior());
|
||||
assertFalse(newSettings.isStrictSpecBehavior());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -97,7 +97,7 @@ task validateGoodSpec(type: org.openapitools.generator.gradle.plugin.tasks.Valid
|
||||
[source,group]
|
||||
----
|
||||
plugins {
|
||||
id "org.openapi.generator" version "7.7.0"
|
||||
id "org.openapi.generator" version "7.8.0"
|
||||
}
|
||||
----
|
||||
|
||||
@@ -113,7 +113,7 @@ buildscript {
|
||||
// url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.openapitools:openapi-generator-gradle-plugin:7.7.0"
|
||||
classpath "org.openapitools:openapi-generator-gradle-plugin:7.8.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -759,7 +759,7 @@ buildscript {
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.1'
|
||||
classpath('org.openapitools:openapi-generator-gradle-plugin:7.7.0') {
|
||||
classpath('org.openapitools:openapi-generator-gradle-plugin:7.8.0') {
|
||||
exclude group: 'com.google.guava'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# RELEASE_VERSION
|
||||
openApiGeneratorVersion=7.8.0-SNAPSHOT
|
||||
openApiGeneratorVersion=7.9.0-SNAPSHOT
|
||||
# /RELEASE_VERSION
|
||||
|
||||
# BEGIN placeholders
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -19,5 +19,5 @@ gradle generateGoWithInvalidSpec # expected outcome: BUILD FAILED
|
||||
The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example:
|
||||
|
||||
```bash
|
||||
gradle -PopenApiGeneratorVersion=7.7.0 openApiValidate
|
||||
gradle -PopenApiGeneratorVersion=7.8.0 openApiValidate
|
||||
```
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# RELEASE_VERSION
|
||||
openApiGeneratorVersion=7.8.0-SNAPSHOT
|
||||
openApiGeneratorVersion=7.9.0-SNAPSHOT
|
||||
# /RELEASE_VERSION
|
||||
|
||||
@@ -12,7 +12,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase)
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.7.0</version>
|
||||
<version>7.8.0</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -1,198 +0,0 @@
|
||||
<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/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>sample-project</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>sample-project</name>
|
||||
<url>https://maven.apache.org</url>
|
||||
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- activate the plugin -->
|
||||
<plugin>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>5.3.1-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
<id>camel-server</id>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<!-- specify the swagger yaml -->
|
||||
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
|
||||
|
||||
<!-- target to generate java client code -->
|
||||
<generatorName>camel</generatorName>
|
||||
|
||||
<!-- hint: if you want to generate java server code, e.g. based on Spring Boot,
|
||||
you can use the following target: <generatorName>spring</generatorName> -->
|
||||
|
||||
<!-- pass any necessary config options -->
|
||||
<configOptions>
|
||||
<camelRestBindingMode>auto</camelRestBindingMode>
|
||||
<useBeanValidation>true</useBeanValidation>
|
||||
<performBeanValidation>true</performBeanValidation>
|
||||
<camelDataformatProperties>json.out.disableFeatures=WRITE_DATES_AS_TIMESTAMPS</camelDataformatProperties>
|
||||
<withXml>true</withXml>
|
||||
<jackson>true</jackson>
|
||||
<camelUseDefaultValidationErrorProcessor>true</camelUseDefaultValidationErrorProcessor>
|
||||
<!--
|
||||
Define bean validation error processor
|
||||
<camelUseDefaultValidationErrorProcessor>false</camelUseDefaultValidationErrorProcessor>
|
||||
<camelValidationErrorProcessor>errorProcessorBeanName</camelValidationErrorProcessor>
|
||||
-->
|
||||
<camelRestClientRequestValidation>true</camelRestClientRequestValidation>
|
||||
<camelSecurityDefinitions>true</camelSecurityDefinitions>
|
||||
</configOptions>
|
||||
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<proc>none</proc>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>sonatype-snapshots</id>
|
||||
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-bom</artifactId>
|
||||
<version>3.13.0</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.camel.springboot</groupId>
|
||||
<artifactId>camel-spring-boot-bom</artifactId>
|
||||
<version>3.13.0</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.camel.springboot</groupId>
|
||||
<artifactId>camel-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.camel.springboot</groupId>
|
||||
<artifactId>camel-servlet-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>jackson-databind-nullable</artifactId>
|
||||
<version>0.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
<version>1.6.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger.core.v3</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
<version>2.1.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
<version>2.15.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jdk8</artifactId>
|
||||
<version>2.15.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-jackson</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-jacksonxml</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-jaxb</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-direct</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-bean-validator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>com.mashape.unirest</groupId>
|
||||
<artifactId>unirest-java</artifactId>
|
||||
<version>1.4.9</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.camel</groupId>
|
||||
<artifactId>camel-test-spring-junit5</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
<swagger-annotations-version>1.5.8</swagger-annotations-version>
|
||||
|
||||
<spring-boot-starter-web.version>2.2.1.RELEASE</spring-boot-starter-web.version>
|
||||
<springfox-version>2.8.0</springfox-version>
|
||||
</properties>
|
||||
</project>
|
||||
@@ -13,7 +13,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -23,6 +23,7 @@ import io.swagger.v3.parser.core.models.AuthorizationValue;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Setter
|
||||
@@ -31,6 +32,8 @@ public class GeneratorInput {
|
||||
@Getter private Map<String, String> options;
|
||||
private String openAPIUrl;
|
||||
@Getter private AuthorizationValue authorizationValue;
|
||||
//FILTER=operationId:updatePet
|
||||
@Getter private List<String> openapiNormalizer;
|
||||
|
||||
@ApiModelProperty(example = "https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml")
|
||||
public String getOpenAPIUrl() {
|
||||
|
||||
@@ -118,6 +118,7 @@ public class Generator {
|
||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "The OpenAPI specification supplied was not valid");
|
||||
}
|
||||
|
||||
|
||||
// do not use opts.getOptions().get("outputFolder") as the input can contain ../../
|
||||
// to access other folders in the server
|
||||
String destPath = language + "-" + type.getTypeName();
|
||||
@@ -140,6 +141,16 @@ public class Generator {
|
||||
codegenConfig.additionalProperties().put("openAPI", openapi);
|
||||
}
|
||||
|
||||
if(opts.getOpenapiNormalizer() != null && !opts.getOpenapiNormalizer().isEmpty()){
|
||||
for(String rule: opts.getOpenapiNormalizer()){
|
||||
String[] ruleOperands = rule.split("=");
|
||||
if(ruleOperands.length != 2) {
|
||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "In rule: " + rule + "the operands were not provided in the form of <Rule>=<Value>");
|
||||
}
|
||||
codegenConfig.openapiNormalizer().put(ruleOperands[0],ruleOperands[1]);
|
||||
}
|
||||
}
|
||||
|
||||
codegenConfig.setOutputDir(outputFolder);
|
||||
|
||||
clientOptInput.config(codegenConfig);
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import static org.hamcrest.Matchers.hasItem;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
@@ -133,4 +134,32 @@ public class GenApiControllerTest {
|
||||
.content("{\"openAPIUrl\": \"" + invalidOpenAPIUrl + "\"}"))
|
||||
.andExpect(status().isBadRequest());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generateWithOpenAPINormalizer() throws Exception {
|
||||
String withOpenAPINormalizer = "{\"openAPIUrl\":\"https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml\",\"openapiNormalizer\":[\"FILTER=operationId:updatePet\"],\"options\":{},\"spec\":{}}";
|
||||
String withoutOpenAPINormalizer = "{\"openAPIUrl\":\"https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml\",\"options\":{},\"spec\":{}}";
|
||||
|
||||
String responseOfNormalized = mockMvc.perform(post("http://test.com:1234/api/gen/clients/java")
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(withOpenAPINormalizer))
|
||||
.andExpect(status().isOk()).andReturn().getResponse().getContentAsString();
|
||||
String codeOfNormalized = new ObjectMapper().readValue(responseOfNormalized, ResponseCode.class).getCode();
|
||||
Long lengthOfNormalized = Long.parseLong(mockMvc.perform(get("http://test.com:1234/api/gen/download/" + codeOfNormalized))
|
||||
.andExpect(content().contentType("application/zip"))
|
||||
.andExpect(status().isOk()).andReturn().getResponse().getHeader("Content-Length"));
|
||||
|
||||
String responseOfNotNormalized = mockMvc.perform(post("http://test.com:1234/api/gen/clients/java")
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(withoutOpenAPINormalizer))
|
||||
.andExpect(status().isOk()).andReturn().getResponse().getContentAsString();
|
||||
|
||||
String codeOfNotNormalized = new ObjectMapper().readValue(responseOfNotNormalized, ResponseCode.class).getCode();
|
||||
Long lengthOfNotNormalized = Long.parseLong(mockMvc.perform(get("http://test.com:1234/api/gen/download/" + codeOfNotNormalized))
|
||||
.andExpect(content().contentType("application/zip"))
|
||||
.andExpect(status().isOk()).andReturn().getResponse().getHeader("Content-Length"));
|
||||
|
||||
Assert.isTrue(lengthOfNormalized <= lengthOfNotNormalized,"Using the normalizer should result in a smaller or equal file size");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.8.0-SNAPSHOT</version>
|
||||
<version>7.9.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -410,7 +410,7 @@ public class CodegenConstants {
|
||||
|
||||
public static final String UNSUPPORTED_V310_SPEC_MSG =
|
||||
"Generation using 3.1.0 specs is in development and is not officially supported yet. " +
|
||||
"If you would like to expedite development, please consider woking on the open issues in the 3.1.0 project: https://github.com/orgs/OpenAPITools/projects/4/views/1 " +
|
||||
"If you would like to expedite development, please consider working on the open issues in the 3.1.0 project: https://github.com/orgs/OpenAPITools/projects/4/views/1 " +
|
||||
"and reach out to our team on Slack at https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g";
|
||||
|
||||
public static final String ENUM_UNKNOWN_DEFAULT_CASE = "enumUnknownDefaultCase";
|
||||
@@ -451,4 +451,6 @@ public class CodegenConstants {
|
||||
public static final String MAX_ATTEMPTS_FOR_RETRY = "maxAttemptsForRetry";
|
||||
|
||||
public static final String WAIT_TIME_OF_THREAD = "waitTimeMillis";
|
||||
|
||||
public static final String USE_DEFAULT_VALUES_FOR_REQUIRED_VARS = "useDefaultValuesForRequiredVars";
|
||||
}
|
||||
|
||||
@@ -31,7 +31,8 @@ public class CodegenOperation {
|
||||
isResponseBinary = false, isResponseFile = false, isResponseOptional = false, hasReference = false, defaultReturnType = false,
|
||||
isRestfulIndex, isRestfulShow, isRestfulCreate, isRestfulUpdate, isRestfulDestroy,
|
||||
isRestful, isDeprecated, isCallbackRequest, uniqueItems, hasDefaultResponse = false, hasConstantParams = false,
|
||||
hasErrorResponseObject; // if 4xx, 5xx responses have at least one error object defined
|
||||
hasErrorResponseObject, // if 4xx, 5xx responses have at least one error object defined
|
||||
hasSingleParam = false; // if the operation has only one parameter;
|
||||
public CodegenProperty returnProperty;
|
||||
public String path, operationId, returnType, returnFormat, httpMethod, returnBaseType,
|
||||
returnContainer, summary, unescapedNotes, notes, baseName, defaultResponse;
|
||||
@@ -351,6 +352,7 @@ public class CodegenOperation {
|
||||
sb.append(", hasReference=").append(hasReference);
|
||||
sb.append(", hasDefaultResponse=").append(hasDefaultResponse);
|
||||
sb.append(", hasErrorResponseObject=").append(hasErrorResponseObject);
|
||||
sb.append(", hasSingleParam=").append(hasSingleParam);
|
||||
sb.append(", isRestfulIndex=").append(isRestfulIndex);
|
||||
sb.append(", isRestfulShow=").append(isRestfulShow);
|
||||
sb.append(", isRestfulCreate=").append(isRestfulCreate);
|
||||
@@ -431,6 +433,7 @@ public class CodegenOperation {
|
||||
hasReference == that.hasReference &&
|
||||
hasDefaultResponse == that.hasDefaultResponse &&
|
||||
hasErrorResponseObject == that.hasErrorResponseObject &&
|
||||
hasSingleParam == that.hasSingleParam &&
|
||||
isRestfulIndex == that.isRestfulIndex &&
|
||||
isRestfulShow == that.isRestfulShow &&
|
||||
isRestfulCreate == that.isRestfulCreate &&
|
||||
@@ -500,6 +503,6 @@ public class CodegenOperation {
|
||||
pathParams, queryParams, headerParams, formParams, cookieParams, requiredParams, returnProperty, optionalParams,
|
||||
authMethods, tags, responses, callbacks, imports, examples, requestBodyExamples, externalDocs,
|
||||
vendorExtensions, nickname, operationIdOriginal, operationIdLowerCase, operationIdCamelCase,
|
||||
operationIdSnakeCase, hasErrorResponseObject, requiredAndNotNullableParams, notNullableParams, constantParams);
|
||||
operationIdSnakeCase, hasErrorResponseObject, hasSingleParam, requiredAndNotNullableParams, notNullableParams, constantParams);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,6 +243,8 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
|
||||
private boolean hasDiscriminatorWithNonEmptyMapping;
|
||||
private CodegenComposedSchemas composedSchemas = null;
|
||||
private boolean hasMultipleTypes = false;
|
||||
/** true if the property's baseName != name, e.g. baseName = '_prop.value', name = 'propValue' after sanitization */
|
||||
private boolean hasSanitizedName = false;
|
||||
private Map<String, CodegenProperty> requiredVarsMap;
|
||||
private String ref;
|
||||
private boolean schemaIsFromAdditionalProperties;
|
||||
@@ -843,6 +845,12 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
|
||||
this.hasMultipleTypes = hasMultipleTypes;
|
||||
}
|
||||
|
||||
public boolean getHasSanitizedName() {
|
||||
return hasSanitizedName;
|
||||
}
|
||||
|
||||
public void setHasSanitizedName(boolean hasSanitizedName) { this.hasSanitizedName = hasSanitizedName; }
|
||||
|
||||
@Override
|
||||
public boolean getIsUuid() {
|
||||
return isUuid;
|
||||
@@ -1061,6 +1069,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
|
||||
sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping);
|
||||
sb.append(", composedSchemas=").append(composedSchemas);
|
||||
sb.append(", hasMultipleTypes=").append(hasMultipleTypes);
|
||||
sb.append(", hasSanitizedName=").append(hasSanitizedName);
|
||||
sb.append(", requiredVarsMap=").append(requiredVarsMap);
|
||||
sb.append(", ref=").append(ref);
|
||||
sb.append(", schemaIsFromAdditionalProperties=").append(schemaIsFromAdditionalProperties);
|
||||
@@ -1129,6 +1138,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
|
||||
isNull == that.isNull &&
|
||||
isVoid == that.isVoid &&
|
||||
hasMultipleTypes == that.getHasMultipleTypes() &&
|
||||
hasSanitizedName == that.getHasSanitizedName() &&
|
||||
hasDiscriminatorWithNonEmptyMapping == that.hasDiscriminatorWithNonEmptyMapping &&
|
||||
isBooleanSchemaTrue == that.getIsBooleanSchemaTrue() &&
|
||||
isBooleanSchemaFalse == that.getIsBooleanSchemaFalse() &&
|
||||
@@ -1207,7 +1217,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
|
||||
vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInPascalCase, nameInCamelCase,
|
||||
nameInSnakeCase, enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName,
|
||||
xmlNamespace, isXmlWrapped, isNull, isVoid, additionalPropertiesIsAnyType, hasVars, hasRequired,
|
||||
hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes, requiredVarsMap,
|
||||
hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes, hasSanitizedName, requiredVarsMap,
|
||||
ref, uniqueItemsBoolean, schemaIsFromAdditionalProperties, isBooleanSchemaTrue, isBooleanSchemaFalse,
|
||||
format, dependentRequired, contains);
|
||||
}
|
||||
|
||||
@@ -3092,16 +3092,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
|
||||
if (sortModelPropertiesByRequiredFlag) {
|
||||
Comparator<CodegenProperty> comparator = new Comparator<CodegenProperty>() {
|
||||
@Override
|
||||
public int compare(CodegenProperty one, CodegenProperty another) {
|
||||
if (one.required == another.required) return 0;
|
||||
else if (one.required) return -1;
|
||||
else return 1;
|
||||
}
|
||||
};
|
||||
Collections.sort(m.vars, comparator);
|
||||
Collections.sort(m.allVars, comparator);
|
||||
SortModelPropertiesByRequiredFlag(m);
|
||||
}
|
||||
|
||||
// post process model properties
|
||||
@@ -3120,6 +3111,19 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
return m;
|
||||
}
|
||||
|
||||
protected void SortModelPropertiesByRequiredFlag(CodegenModel model) {
|
||||
Comparator<CodegenProperty> comparator = new Comparator<CodegenProperty>() {
|
||||
@Override
|
||||
public int compare(CodegenProperty one, CodegenProperty another) {
|
||||
if (one.required == another.required) return 0;
|
||||
else if (one.required) return -1;
|
||||
else return 1;
|
||||
}
|
||||
};
|
||||
Collections.sort(model.vars, comparator);
|
||||
Collections.sort(model.allVars, comparator);
|
||||
}
|
||||
|
||||
protected void setAddProps(Schema schema, IJsonSchemaValidationProperties property) {
|
||||
if (schema.equals(new Schema())) {
|
||||
// if we are trying to set additionalProperties on an empty schema stop recursing
|
||||
@@ -3880,6 +3884,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
property.name = toVarName(name);
|
||||
property.baseName = name;
|
||||
property.setHasSanitizedName(!property.baseName.equals(property.name));
|
||||
if (ModelUtils.getType(p) == null) {
|
||||
property.openApiType = getSchemaType(p);
|
||||
} else {
|
||||
@@ -4441,21 +4446,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
// store the original operationId for plug-in
|
||||
op.operationIdOriginal = operation.getOperationId();
|
||||
|
||||
String operationId = getOrGenerateOperationId(operation, path, httpMethod);
|
||||
// remove prefix in operationId
|
||||
if (removeOperationIdPrefix) {
|
||||
// The prefix is everything before the removeOperationIdPrefixCount occurrence of removeOperationIdPrefixDelimiter
|
||||
String[] components = operationId.split("[" + removeOperationIdPrefixDelimiter + "]");
|
||||
if (components.length > 1) {
|
||||
// If removeOperationIdPrefixCount is -1 or bigger that the number of occurrences, uses the last one
|
||||
int component_number = removeOperationIdPrefixCount == -1 ? components.length - 1 : removeOperationIdPrefixCount;
|
||||
component_number = Math.min(component_number, components.length - 1);
|
||||
// Reconstruct the operationId from its split elements and the delimiter
|
||||
operationId = String.join(removeOperationIdPrefixDelimiter, Arrays.copyOfRange(components, component_number, components.length));
|
||||
}
|
||||
}
|
||||
operationId = removeNonNameElementToCamelCase(operationId);
|
||||
op.operationId = getOrGenerateOperationId(operation, path, httpMethod);
|
||||
|
||||
if (isStrictSpecBehavior() && !path.startsWith("/")) {
|
||||
// modifies an operation.path to strictly conform to OpenAPI Spec
|
||||
@@ -4464,11 +4455,6 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
op.path = path;
|
||||
}
|
||||
|
||||
if (operationIdNameMapping.containsKey(operationId)) {
|
||||
op.operationId = operationIdNameMapping.get(operationId);
|
||||
} else {
|
||||
op.operationId = toOperationId(operationId);
|
||||
}
|
||||
op.summary = escapeText(operation.getSummary());
|
||||
op.unescapedNotes = operation.getDescription();
|
||||
op.notes = escapeText(operation.getDescription());
|
||||
@@ -4729,17 +4715,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
// move "required" parameters in front of "optional" parameters
|
||||
if (sortParamsByRequiredFlag) {
|
||||
Collections.sort(allParams, new Comparator<CodegenParameter>() {
|
||||
@Override
|
||||
public int compare(CodegenParameter one, CodegenParameter another) {
|
||||
if (one.required == another.required)
|
||||
return 0;
|
||||
else if (one.required)
|
||||
return -1;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
SortParametersByRequiredFlag(allParams);
|
||||
}
|
||||
|
||||
op.allParams = allParams;
|
||||
@@ -4762,6 +4738,9 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
op.hasRequiredParams = op.requiredParams.size() > 0;
|
||||
|
||||
// check if the operation has only a single parameter
|
||||
op.hasSingleParam = op.allParams.size() == 1;
|
||||
|
||||
// set Restful Flag
|
||||
op.isRestfulShow = op.isRestfulShow();
|
||||
op.isRestfulIndex = op.isRestfulIndex();
|
||||
@@ -4773,6 +4752,20 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
return op;
|
||||
}
|
||||
|
||||
public void SortParametersByRequiredFlag(List<CodegenParameter> parameters) {
|
||||
Collections.sort(parameters, new Comparator<CodegenParameter>() {
|
||||
@Override
|
||||
public int compare(CodegenParameter one, CodegenParameter another) {
|
||||
if (one.required == another.required)
|
||||
return 0;
|
||||
else if (one.required)
|
||||
return -1;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isParameterNameUnique(CodegenParameter p, List<CodegenParameter> parameters) {
|
||||
for (CodegenParameter parameter : parameters) {
|
||||
if (System.identityHashCode(p) == System.identityHashCode(parameter)) {
|
||||
@@ -5591,7 +5584,26 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
operationId = sanitizeName(builder.toString());
|
||||
LOGGER.warn("Empty operationId found for path: {} {}. Renamed to auto-generated operationId: {}", httpMethod, path, operationId);
|
||||
}
|
||||
return operationId;
|
||||
|
||||
// remove prefix in operationId
|
||||
if (removeOperationIdPrefix) {
|
||||
// The prefix is everything before the removeOperationIdPrefixCount occurrence of removeOperationIdPrefixDelimiter
|
||||
String[] components = operationId.split("[" + removeOperationIdPrefixDelimiter + "]");
|
||||
if (components.length > 1) {
|
||||
// If removeOperationIdPrefixCount is -1 or bigger that the number of occurrences, uses the last one
|
||||
int component_number = removeOperationIdPrefixCount == -1 ? components.length - 1 : removeOperationIdPrefixCount;
|
||||
component_number = Math.min(component_number, components.length - 1);
|
||||
// Reconstruct the operationId from its split elements and the delimiter
|
||||
operationId = String.join(removeOperationIdPrefixDelimiter, Arrays.copyOfRange(components, component_number, components.length));
|
||||
}
|
||||
}
|
||||
operationId = removeNonNameElementToCamelCase(operationId);
|
||||
|
||||
if (operationIdNameMapping.containsKey(operationId)) {
|
||||
return operationIdNameMapping.get(operationId);
|
||||
} else {
|
||||
return toOperationId(operationId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user