mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-12-03 17:00:43 +00:00
Compare commits
113 Commits
update-sam
...
parser-res
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b352c2d00 | ||
|
|
991883636f | ||
|
|
3ef45f1b4d | ||
|
|
7e439fd0bd | ||
|
|
63df7ca574 | ||
|
|
98b315c137 | ||
|
|
a809c187b4 | ||
|
|
d966f1234d | ||
|
|
6fdb632fb9 | ||
|
|
c7542dea3e | ||
|
|
66dfad2b09 | ||
|
|
9e5e4b1fd4 | ||
|
|
2af194b014 | ||
|
|
65773a9024 | ||
|
|
311233d804 | ||
|
|
b444de2b5c | ||
|
|
d0327b2683 | ||
|
|
af6ab0ed0e | ||
|
|
050dcae3ab | ||
|
|
e948355127 | ||
|
|
7c57c55194 | ||
|
|
a5f638fefd | ||
|
|
0e67c3a5ad | ||
|
|
43fa1b736a | ||
|
|
304b3cbcaa | ||
|
|
d7a74849f2 | ||
|
|
c0dc9c63d0 | ||
|
|
03effd7d05 | ||
|
|
d11d008e71 | ||
|
|
b6b71cd4da | ||
|
|
6b5fd6e622 | ||
|
|
c010c89915 | ||
|
|
b05604dab7 | ||
|
|
cfe476f32d | ||
|
|
d911a71be9 | ||
|
|
046be5dba1 | ||
|
|
5eb083e5ce | ||
|
|
0903ecf85e | ||
|
|
88bc79e906 | ||
|
|
cef971cf9a | ||
|
|
8d8e3ddf16 | ||
|
|
623463a6ed | ||
|
|
43e878b421 | ||
|
|
50c6754fcc | ||
|
|
d2b8a1eeac | ||
|
|
dbc5d09da6 | ||
|
|
6e9dedba75 | ||
|
|
fc29daa6c0 | ||
|
|
db38f0f556 | ||
|
|
d5ab8f225e | ||
|
|
055687935b | ||
|
|
6bfd39f5de | ||
|
|
7f578d7444 | ||
|
|
8087f2b365 | ||
|
|
937d314e19 | ||
|
|
12fa2c0032 | ||
|
|
fa64c8e012 | ||
|
|
fbd94d5fbb | ||
|
|
4402d836bb | ||
|
|
89eea742fe | ||
|
|
eb8ce7331a | ||
|
|
4cfc8eff00 | ||
|
|
9d70de44d6 | ||
|
|
d88d588665 | ||
|
|
b57c23b121 | ||
|
|
b20c569187 | ||
|
|
49cadfec3a | ||
|
|
81cdc82af7 | ||
|
|
9ebc6308b9 | ||
|
|
fbca2b28d0 | ||
|
|
b929970db2 | ||
|
|
18ccf86a6a | ||
|
|
5997acb592 | ||
|
|
bce88c93ba | ||
|
|
a428cff3f4 | ||
|
|
959326048f | ||
|
|
1f8787e53a | ||
|
|
1b57d4b1e6 | ||
|
|
5677f5b09b | ||
|
|
05e672d856 | ||
|
|
2c67841e5c | ||
|
|
dcd89bf3c5 | ||
|
|
d2196dd727 | ||
|
|
041d36c954 | ||
|
|
c6a88eaf8e | ||
|
|
c4dad53455 | ||
|
|
a891876ea9 | ||
|
|
66ff91a687 | ||
|
|
4379a23608 | ||
|
|
f735c6e091 | ||
|
|
5ec4e4c8f1 | ||
|
|
cdef985ca7 | ||
|
|
dac1e6b7d3 | ||
|
|
894008f325 | ||
|
|
5f63385a31 | ||
|
|
13c95f1dd2 | ||
|
|
78b54b9283 | ||
|
|
0aaeb45dbe | ||
|
|
6e2b4f99ba | ||
|
|
45047b77f1 | ||
|
|
b3935922cd | ||
|
|
9b39c05563 | ||
|
|
cfe0b6fae3 | ||
|
|
6c0e7274ea | ||
|
|
5b885cd3db | ||
|
|
68c1d8970e | ||
|
|
bd8a206ebd | ||
|
|
0bfce24071 | ||
|
|
40894382fc | ||
|
|
429da9860b | ||
|
|
a0b9ecd773 | ||
|
|
2fb26c362e | ||
|
|
9981a408d1 |
24
.github/workflows/samples-java-client-jdk11.yaml
vendored
24
.github/workflows/samples-java-client-jdk11.yaml
vendored
@@ -71,6 +71,7 @@ jobs:
|
||||
- samples/client/petstore/java/microprofile-rest-client-mutiny
|
||||
- samples/client/petstore/java/microprofile-rest-client-3.0
|
||||
- samples/client/petstore/java/microprofile-rest-client-3.0-jackson
|
||||
- samples/client/petstore/java/microprofile-rest-client-3.0-jackson-mutiny
|
||||
- samples/client/petstore/java/microprofile-rest-client-3.0-jackson-with-xml
|
||||
- samples/client/petstore/java/microprofile-rest-client-3.0-mutiny
|
||||
- samples/client/petstore/java/microprofile-rest-client-with-useSingleRequestParameter
|
||||
@@ -110,6 +111,27 @@ jobs:
|
||||
path: |
|
||||
~/.m2
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
- name: Build with Maven
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
||||
- name: Cache gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
env:
|
||||
cache-name: gradle-caches
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
|
||||
|
||||
- name: Cache gradle wrapper
|
||||
uses: actions/cache@v4
|
||||
env:
|
||||
cache-name: gradle-wrapper
|
||||
with:
|
||||
path: ~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
|
||||
|
||||
- name: Build with Gradle
|
||||
working-directory: ${{ matrix.sample }}
|
||||
if: ${{ hashFiles('./gradlew') != '' }}
|
||||
run: ./gradlew build -x test
|
||||
|
||||
@@ -7,12 +7,14 @@ on:
|
||||
- samples/client/petstore/java/webclient-jakarta/**
|
||||
- samples/client/petstore/java/restclient-*/**
|
||||
- samples/client/petstore/java/webclient-useSingleRequestParameter/**
|
||||
- samples/client/others/java/restclient-enum-in-multipart/**
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/client/petstore/java/resttemplate-jakarta/**
|
||||
- samples/client/petstore/java/webclient-jakarta/**
|
||||
- samples/client/petstore/java/restclient-*/**
|
||||
- samples/client/petstore/java/webclient-useSingleRequestParameter/**
|
||||
- samples/client/others/java/restclient-enum-in-multipart/**
|
||||
jobs:
|
||||
build:
|
||||
name: Build Java Client JDK17
|
||||
@@ -30,6 +32,7 @@ jobs:
|
||||
- samples/client/petstore/java/restclient-useSingleRequestParameter
|
||||
- samples/client/petstore/java/restclient-useSingleRequestParameter-static
|
||||
- samples/client/petstore/java/webclient-useSingleRequestParameter
|
||||
- samples/client/others/java/restclient-enum-in-multipart
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
|
||||
1
.github/workflows/samples-kotlin-client.yaml
vendored
1
.github/workflows/samples-kotlin-client.yaml
vendored
@@ -65,6 +65,7 @@ jobs:
|
||||
- samples/client/echo_api/kotlin-jvm-spring-3-restclient
|
||||
- samples/client/petstore/kotlin-name-parameter-mappings
|
||||
- samples/client/others/kotlin-jvm-okhttp-parameter-tests
|
||||
- samples/client/others/kotlin-jvm-okhttp-path-comments
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
|
||||
3
.github/workflows/samples-php8.yaml
vendored
3
.github/workflows/samples-php8.yaml
vendored
@@ -6,11 +6,13 @@ on:
|
||||
- samples/server/petstore/php-symfony/SymfonyBundle-php/**
|
||||
- samples/server/petstore/php-flight/**
|
||||
- samples/server/petstore/php-laravel/**
|
||||
- samples/server/petstore/php-laravel-issue-21334/**
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/server/petstore/php-symfony/SymfonyBundle-php/**
|
||||
- samples/server/petstore/php-flight/**
|
||||
- samples/server/petstore/php-laravel/**
|
||||
- samples/server/petstore/php-laravel-issue-21334/**
|
||||
jobs:
|
||||
build:
|
||||
name: Build PHP projects
|
||||
@@ -28,6 +30,7 @@ jobs:
|
||||
- samples/server/petstore/php-symfony/SymfonyBundle-php/
|
||||
- samples/server/petstore/php-flight/
|
||||
- samples/server/petstore/php-laravel/
|
||||
- samples/server/petstore/php-laravel-issue-21334/
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup PHP with tools
|
||||
|
||||
12
.github/workflows/samples-python-petstore.yaml
vendored
12
.github/workflows/samples-python-petstore.yaml
vendored
@@ -8,6 +8,18 @@ on:
|
||||
- .github/workflows/samples-python-petstore.yaml
|
||||
|
||||
jobs:
|
||||
validate-pyproject-toml:
|
||||
name: Validate pyproject.toml
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install validator
|
||||
run: pip install 'validate-pyproject[all]'
|
||||
- name: Validate
|
||||
run: validate-pyproject samples/openapi3/client/petstore/python/pyproject.toml
|
||||
build:
|
||||
name: Test Python client
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -15,7 +15,6 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version:
|
||||
- "3.8"
|
||||
- "3.9"
|
||||
- "3.10"
|
||||
- "3.11"
|
||||
|
||||
42
.github/workflows/samples-rust.yaml
vendored
42
.github/workflows/samples-rust.yaml
vendored
@@ -26,12 +26,54 @@ jobs:
|
||||
- samples/client/others/rust/
|
||||
- samples/client/petstore/rust/
|
||||
- samples/server/petstore/rust-server/
|
||||
- samples/server/petstore/rust-server-deprecated/
|
||||
- samples/server/petstore/rust-axum/
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
|
||||
- name: Rust cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
cache-targets: false # Don't cache workspace target directories as they don't exist
|
||||
cache-directories:
|
||||
${{ matrix.sample }}/target
|
||||
workspaces: |
|
||||
${{ matrix.sample }}/output/*
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: cargo build --all-targets --all-features
|
||||
- name: Tests
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: |
|
||||
set -e
|
||||
# Skip samples/client/petstore/rust/ as it's tests are failing.
|
||||
if [[ "${{ matrix.sample }}" == "samples/client/petstore/rust/" ]]; then
|
||||
echo "Skipping tests for samples/client/petstore/rust/"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Iterate through each example and test various features
|
||||
for package in $(find . -maxdepth 1 -mindepth 1 -type d)
|
||||
do
|
||||
# Not all versions have a client example
|
||||
if test -f examples/client/main.rs; then
|
||||
cargo build --example client --features="client"
|
||||
fi
|
||||
# Not all versions have a server example
|
||||
if test -f examples/server/main.rs; then
|
||||
cargo build --example server --features="server"
|
||||
fi
|
||||
# Test the CLI works if present
|
||||
if test -f bin/cli.rs; then
|
||||
cargo build --bin ${package##*/} --features cli
|
||||
target/debug/${package##*/} --help
|
||||
fi
|
||||
cargo fmt
|
||||
cargo test
|
||||
cargo clippy
|
||||
cargo doc
|
||||
done
|
||||
|
||||
3
.github/workflows/samples-spring-jdk17.yaml
vendored
3
.github/workflows/samples-spring-jdk17.yaml
vendored
@@ -10,6 +10,7 @@ on:
|
||||
- samples/server/petstore/springboot-lombok-tostring
|
||||
- samples/server/petstore/springboot-file-delegate-optional
|
||||
- samples/server/petstore/springboot-petstore-with-api-response-examples
|
||||
- samples/server/petstore/spring-boot-oneof-sealed
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/openapi3/client/petstore/spring-cloud-3-with-optional
|
||||
@@ -19,6 +20,7 @@ on:
|
||||
- samples/server/petstore/springboot-lombok-tostring
|
||||
- samples/server/petstore/springboot-file-delegate-optional
|
||||
- samples/server/petstore/springboot-petstore-with-api-response-examples
|
||||
- samples/server/petstore/spring-boot-oneof-sealed
|
||||
jobs:
|
||||
build:
|
||||
name: Build Java Spring (JDK17)
|
||||
@@ -36,6 +38,7 @@ jobs:
|
||||
- samples/server/petstore/springboot-lombok-tostring
|
||||
- samples/server/petstore/springboot-file-delegate-optional
|
||||
- samples/server/petstore/springboot-petstore-with-api-response-examples
|
||||
- samples/server/petstore/spring-boot-oneof-sealed
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
<extension>
|
||||
<groupId>com.gradle</groupId>
|
||||
<artifactId>develocity-maven-extension</artifactId>
|
||||
<version>1.21.6</version>
|
||||
<version>1.23.2</version>
|
||||
</extension>
|
||||
<extension>
|
||||
<groupId>com.gradle</groupId>
|
||||
<artifactId>common-custom-user-data-maven-extension</artifactId>
|
||||
<version>1.12.5</version>
|
||||
<version>2.0.2</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
|
||||
22
README.md
22
README.md
@@ -6,7 +6,7 @@
|
||||
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22)
|
||||
[](./LICENSE)
|
||||
[](https://opencollective.com/openapi_generator)
|
||||
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-2wmkn4s8g-n19PJ99Y6Vei74WMUIehQA)
|
||||
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-36ucx4ybl-jYrN6euoYn6zxXNZdldoZA)
|
||||
[](https://twitter.com/oas_generator)
|
||||
[](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator)
|
||||
[](https://conan.io/center/recipes/openapi-generator)
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.14.0`):
|
||||
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.15.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)
|
||||
@@ -75,6 +75,8 @@ If you find OpenAPI Generator useful for work, please consider asking your compa
|
||||
[<img src="https://openapi-generator.tech/img/companies/dm.png" width="128" height="128">](https://www.dotcom-monitor.com/sponsoring-open-source-projects/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
[<img src="https://openapi-generator.tech/img/companies/clickit.jpg" width="128" height="128">](https://www.clickittech.com/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
[<img src="https://openapi-generator.tech/img/companies/unified_to.jpg" width="128" height="128">](https://unified.to/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
[<img src="https://openapi-generator.tech/img/companies/savetwt.jpg" width="128" height="128">](https://savetwt.com/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
|
||||
[<img src="https://openapi-generator.tech/img/companies/serpapi.png" width="128" height="128">](https://serpapi.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
|
||||
|
||||
@@ -148,8 +150,8 @@ The OpenAPI Specification has undergone 3 revisions since initial creation in 20
|
||||
|
||||
| OpenAPI Generator Version | Release Date | Notes |
|
||||
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- |
|
||||
| 7.14.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.14.0-SNAPSHOT/) | 29.05.2025 | Minor release with breaking changes (with fallback) |
|
||||
| [7.13.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.13.0) (latest stable release) | 27.04.2025 | Minor release with breaking changes (with fallback) |
|
||||
| 7.15.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.15.0-SNAPSHOT/) | 29.07.2025 | Minor release with breaking changes (with fallback) |
|
||||
| [7.14.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.14.0) (latest stable release) | 25.06.2025 | 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) |
|
||||
@@ -212,16 +214,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.13.0/openapi-generator-cli-7.13.0.jar`
|
||||
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.0.jar`
|
||||
|
||||
For **Mac/Linux** users:
|
||||
```sh
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.13.0/openapi-generator-cli-7.13.0.jar -O openapi-generator-cli.jar
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.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.13.0/openapi-generator-cli-7.13.0.jar
|
||||
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.0.jar
|
||||
```
|
||||
|
||||
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
|
||||
@@ -456,7 +458,7 @@ openapi-generator-cli version
|
||||
To use a specific version of "openapi-generator-cli"
|
||||
|
||||
```sh
|
||||
openapi-generator-cli version-manager set 7.13.0
|
||||
openapi-generator-cli version-manager set 7.14.0
|
||||
```
|
||||
|
||||
Or install it as dev-dependency:
|
||||
@@ -480,7 +482,7 @@ pip install openapi-generator-cli
|
||||
|
||||
To install a specific version
|
||||
```
|
||||
pip install openapi-generator-cli==7.13.0
|
||||
pip install openapi-generator-cli==7.14.0
|
||||
```
|
||||
|
||||
You can also install with [jdk4py](https://github.com/activeviam/jdk4py) instead of java binary. (python>=3.10 is required)
|
||||
@@ -506,7 +508,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.13.0/openapi-generator-cli-7.13.0.jar)
|
||||
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.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`
|
||||
|
||||
8
bin/configs/dart-dio-binary-response.yaml
Normal file
8
bin/configs/dart-dio-binary-response.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: dart-dio
|
||||
outputDir: samples/openapi3/client/petstore/dart-dio/binary_response
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/issue_20682.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/dart/libraries/dio
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
enumUnknownDefaultCase: "true"
|
||||
serializationLibrary: "json_serializable"
|
||||
@@ -1,6 +1,6 @@
|
||||
generatorName: dart-dio
|
||||
outputDir: samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/dart/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/dart/libraries/dio
|
||||
typeMappings:
|
||||
Client: "ModelClient"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
generatorName: dart-dio
|
||||
outputDir: samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/dart/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/dart/libraries/dio
|
||||
typeMappings:
|
||||
Client: "ModelClient"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
generatorName: dart
|
||||
outputDir: samples/openapi3/client/petstore/dart2/petstore_client_lib_fake
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/dart/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/dart2
|
||||
typeMappings:
|
||||
Client: "ModelClient"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
generatorName: java
|
||||
outputDir: samples/client/petstore/java/microprofile-rest-client-3.0-jackson-mutiny
|
||||
library: microprofile
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/Java
|
||||
additionalProperties:
|
||||
serializationLibrary: jackson
|
||||
artifactId: microprofile-rest-client-3-jackson-mutiny
|
||||
configKey: petstore
|
||||
microprofileRestClientVersion: "3.0"
|
||||
microprofileMutiny: true
|
||||
hideGenerationTimestamp: true
|
||||
@@ -10,6 +10,7 @@ parameterNameMappings:
|
||||
_type: underscoreType
|
||||
type_: typeWithUnderscore
|
||||
additionalProperties:
|
||||
defaultToEmptyContainer: "array?|array|map?"
|
||||
artifactId: petstore-okhttp-gson
|
||||
hideGenerationTimestamp: true
|
||||
useOneOfDiscriminatorLookup: true
|
||||
|
||||
7
bin/configs/java-restclient-enum-in-multipart.yaml
Normal file
7
bin/configs/java-restclient-enum-in-multipart.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
generatorName: java
|
||||
outputDir: samples/client/others/java/restclient-enum-in-multipart
|
||||
library: restclient
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_1/enum-in-multipart.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/Java
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
8
bin/configs/kotlin-jvm-okhttp-path-comments.yaml
Normal file
8
bin/configs/kotlin-jvm-okhttp-path-comments.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: kotlin
|
||||
outputDir: samples/client/others/kotlin-jvm-okhttp-path-comments
|
||||
library: jvm-okhttp4
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/kotlin/issue20618-path-comments.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
|
||||
additionalProperties:
|
||||
artifactId: kotlin-petstore-okhttp4-path-comments
|
||||
|
||||
@@ -3,9 +3,16 @@ outputDir: samples/server/petstore/kotlin-misk-config
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/kotlin-misk
|
||||
validateSpec: false
|
||||
useBeanValidation: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
moduleClassName: "PetStoreModule"
|
||||
generateStubImplClasses: true
|
||||
addModelMoshiJsonAnnotation: true
|
||||
actionPathPrefix : "samplePrefix"
|
||||
actionPathPrefix: "samplePrefix"
|
||||
actionAnnotations: "@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0);@Suppress(\"unused\")"
|
||||
actionImports: "misk.web.actions.WebAction;misk.web.interceptors.LogRequestResponse"
|
||||
actionParentClass: "WebAction"
|
||||
actionRequestContentType: "@RequestContentType"
|
||||
actionRequestContentTypePrefix: "MediaTypes"
|
||||
testingModule: "misk.web.MiskWebModule"
|
||||
|
||||
8
bin/configs/php-laravel-issue-21334.yaml
Normal file
8
bin/configs/php-laravel-issue-21334.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: php-laravel
|
||||
outputDir: samples/server/petstore/php-laravel-issue-21334
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/issue21334.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/php-laravel
|
||||
gitUserId: openapitools
|
||||
gitRepoId: petstore
|
||||
additionalProperties:
|
||||
variableNamingConvention: "original"
|
||||
@@ -6,6 +6,7 @@ library: asyncio
|
||||
additionalProperties:
|
||||
packageName: petstore_api
|
||||
mapNumberTo: float
|
||||
poetry1: true
|
||||
nameMappings:
|
||||
_type: underscore_type
|
||||
type_: type_with_underscore
|
||||
|
||||
10
bin/configs/rust-hyper-test-duplicates.yaml
Normal file
10
bin/configs/rust-hyper-test-duplicates.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
generatorName: rust
|
||||
outputDir: samples/client/petstore/rust/hyper/test-duplicates
|
||||
library: hyper
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/test_duplicates.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust
|
||||
additionalProperties:
|
||||
supportAsync: "false"
|
||||
packageName: test-duplicates-hyper
|
||||
modelNameMappings:
|
||||
Duplicatetest: another_test
|
||||
12
bin/configs/rust-reqwest-test-duplicates.yaml
Normal file
12
bin/configs/rust-reqwest-test-duplicates.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
generatorName: rust
|
||||
outputDir: samples/client/petstore/rust/reqwest/test-duplicates
|
||||
library: reqwest
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/test_duplicates.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust
|
||||
additionalProperties:
|
||||
supportAsync: false
|
||||
packageName: test-duplicates-reqwest
|
||||
enumNameMappings:
|
||||
delivered: shipped
|
||||
modelNameMappings:
|
||||
Duplicatetest: another_test
|
||||
8
bin/configs/rust-server-deprecated-multipart-v3.yaml
Normal file
8
bin/configs/rust-server-deprecated-multipart-v3.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/multipart-v3
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/multipart-v3.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: multipart-v3
|
||||
8
bin/configs/rust-server-deprecated-no-example-v3.yaml
Normal file
8
bin/configs/rust-server-deprecated-no-example-v3.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/no-example-v3
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/no-example-v3.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: no-example-v3
|
||||
8
bin/configs/rust-server-deprecated-openapi-v3.yaml
Normal file
8
bin/configs/rust-server-deprecated-openapi-v3.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/openapi-v3
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/openapi-v3.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: openapi-v3
|
||||
8
bin/configs/rust-server-deprecated-ops-v3.yaml
Normal file
8
bin/configs/rust-server-deprecated-ops-v3.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/ops-v3
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/ops-v3.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: ops-v3
|
||||
@@ -0,0 +1,9 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/petstore-with-fake-endpoints-models-for-testing
|
||||
inputSpec: modules/openapi-generator/src/test/resources/2_0/rust-server/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: petstore-with-fake-endpoints-models-for-testing
|
||||
publishRustRegistry: crates-io
|
||||
@@ -0,0 +1,8 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/ping-bearer-auth
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/ping-bearer-auth.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: ping-bearer-auth
|
||||
8
bin/configs/rust-server-deprecated-test.yaml
Normal file
8
bin/configs/rust-server-deprecated-test.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
generatorName: rust-server-deprecated
|
||||
outputDir: samples/server/petstore/rust-server-deprecated/output/rust-server-test
|
||||
inputSpec: modules/openapi-generator/src/test/resources/2_0/rust-server/rust-server-test.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
|
||||
generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: rust-server-test
|
||||
@@ -1,6 +1,6 @@
|
||||
generatorName: scala-http4s-server
|
||||
outputDir: samples/server/petstore/scala-http4s-server
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/scala-http4s-server/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/scala-http4s-server
|
||||
additionalProperties:
|
||||
artifactId: openapi-scala-http4s-server
|
||||
artifactId: openapi-scala-http4s-server
|
||||
|
||||
13
bin/configs/spring-boot-oneof-sealed.yaml
Normal file
13
bin/configs/spring-boot-oneof-sealed.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
generatorName: spring
|
||||
outputDir: samples/openapi3/server/petstore/spring-boot-oneof-sealed
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
|
||||
additionalProperties:
|
||||
groupId: org.openapitools.openapi3
|
||||
documentationProvider: springdoc
|
||||
artifactId: springboot-oneof-sealed
|
||||
snapshotVersion: "true"
|
||||
hideGenerationTimestamp: "true"
|
||||
generateBuilders: true
|
||||
useOneOfInterfaces: true
|
||||
useSealed: true
|
||||
@@ -1,6 +1,6 @@
|
||||
generatorName: typescript
|
||||
outputDir: samples/client/echo_api/typescript/build
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/echo_api.yaml
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/typescript/echo_api.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/typescript
|
||||
additionalProperties:
|
||||
artifactId: echo-api-typescript
|
||||
|
||||
@@ -401,6 +401,32 @@ or
|
||||
--import-mappings Pet=my.models.MyPet --import-mappings Order=my.models.MyOrder
|
||||
```
|
||||
|
||||
## Default Values
|
||||
|
||||
To customize the default values for containers, one can leverage the option `defaultToEmptyContainer` to customize what to initalize for array/set/map by respecting the default values in the spec
|
||||
|
||||
Set optional array and map default value to an empty container
|
||||
```
|
||||
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/output --additional-properties defaultToEmptyContainer="array?|map?"
|
||||
```
|
||||
|
||||
Set nullable array (required) default value to an empty container
|
||||
```
|
||||
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/output --additional-properties defaultToEmptyContainer="?array"
|
||||
```
|
||||
|
||||
Set nullable array (optional) default value to an empty container
|
||||
```
|
||||
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/output --additional-properties defaultToEmptyContainer="?array?"
|
||||
```
|
||||
|
||||
To simply enable this option to respect default values in the specification (basically null if not specified):
|
||||
```
|
||||
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/output --additional-properties defaultToEmptyContainer=""
|
||||
```
|
||||
|
||||
Note: not all generators support this generator's option (e.g. --additional-properties defaultToEmptyContainer="?array" in CLI) so please test to confirm. Java generators are the first to implement this feature. We welcome PRs to support this option in other generators. Related PR: https://github.com/OpenAPITools/openapi-generator/pull/21269
|
||||
|
||||
## Name Mapping
|
||||
|
||||
One can map the property name using `nameMappings` option and parameter name using `parameterNameMappings` option to something else. Consider the following schema:
|
||||
|
||||
@@ -7,7 +7,7 @@ title: "FAQ: General"
|
||||
|
||||
Yes, we use Slack.
|
||||
|
||||
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-2wmkn4s8g-n19PJ99Y6Vei74WMUIehQA)
|
||||
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-36ucx4ybl-jYrN6euoYn6zxXNZdldoZA)
|
||||
|
||||
## What is the governance structure of the OpenAPI Generator project?
|
||||
|
||||
|
||||
@@ -142,6 +142,7 @@ The following generators are available:
|
||||
* [ruby-sinatra](generators/ruby-sinatra.md)
|
||||
* [rust-axum (beta)](generators/rust-axum.md)
|
||||
* [rust-server](generators/rust-server.md)
|
||||
* [rust-server-deprecated](generators/rust-server-deprecated.md)
|
||||
* [scala-akka-http-server (beta)](generators/scala-akka-http-server.md)
|
||||
* [scala-cask](generators/scala-cask.md)
|
||||
* [scala-finch](generators/scala-finch.md)
|
||||
|
||||
@@ -44,7 +44,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|packageName|C# package name (convention: Title.Case).| |Org.OpenAPITools|
|
||||
|packageTags|Tags to identify the package| |null|
|
||||
|packageVersion|C# package version.| |1.0.0|
|
||||
|releaseNote|Release note, default to 'Minor update'.| |Minor update|
|
||||
|returnICollection|Return ICollection<T> instead of the concrete type.| |false|
|
||||
|sourceFolder|source folder for generated code| |src|
|
||||
|targetFramework|The target .NET framework version. To target multiple frameworks, use `;` as the separator, e.g. `netstandard2.1;netcoreapp3.1`|<dl><dt>**netstandard1.3**</dt><dd>.NET Standard 1.3</dd><dt>**netstandard1.4**</dt><dd>.NET Standard 1.4</dd><dt>**netstandard1.5**</dt><dd>.NET Standard 1.5</dd><dt>**netstandard1.6**</dt><dd>.NET Standard 1.6</dd><dt>**netstandard2.0**</dt><dd>.NET Standard 2.0</dd><dt>**netstandard2.1**</dt><dd>.NET Standard 2.1</dd><dt>**net47**</dt><dd>.NET Framework 4.7</dd><dt>**net48**</dt><dd>.NET Framework 4.8</dd><dt>**net8.0**</dt><dd>.NET 8.0 (End of Support 10 November 2026)</dd><dt>**net9.0**</dt><dd>.NET 9.0 (End of Support 12 May 2026)</dd></dl>|net9.0|
|
||||
|
||||
@@ -58,6 +58,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|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|
|
||||
|generateBuilders|Whether to generate builders for models| |false|
|
||||
|generateConstructorWithAllArgs|whether to generate a constructor for all arguments| |false|
|
||||
|generateGenericResponseEntity|Use a generic type for the `ResponseEntity` wrapping return values of generated API methods. If enabled, method are generated with return type ResponseEntity<?>| |false|
|
||||
|generatedConstructorWithRequiredArgs|Whether to generate constructors with required args for models| |true|
|
||||
|groupId|groupId in generated pom.xml| |org.openapitools|
|
||||
|hateoas|Use Spring HATEOAS library to allow adding HATEOAS links| |false|
|
||||
|
||||
@@ -101,7 +101,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, Spring RestClient, Spring WebClient support this option. Setting this property to "static" does the same as "true", but also makes the generated arguments class static with single parameter instantiation.| |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 native, jersey2, jersey3, okhttp-gson, microprofile, Spring RestClient, Spring WebClient support this option. Setting this property to "static" does the same as "true", but also makes the generated arguments class static with single parameter instantiation.| |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|
|
||||
|
||||
@@ -101,7 +101,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, Spring RestClient, Spring WebClient support this option. Setting this property to "static" does the same as "true", but also makes the generated arguments class static with single parameter instantiation.| |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 native, jersey2, jersey3, okhttp-gson, microprofile, Spring RestClient, Spring WebClient support this option. Setting this property to "static" does the same as "true", but also makes the generated arguments class static with single parameter instantiation.| |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|
|
||||
|
||||
@@ -18,7 +18,12 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
| Option | Description | Values | Default |
|
||||
| ------ | ----------- | ------ | ------- |
|
||||
|actionAnnotations|String Annotations for Actions separated by a semicolon(;)| |@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)|
|
||||
|actionImports|String Imports for Actions separated by a semicolon(;)| |misk.web.actions.WebAction;misk.web.interceptors.LogRequestResponse|
|
||||
|actionParentClass|Parent Class for Action| |WebAction|
|
||||
|actionPathPrefix|Prefix for action path| ||
|
||||
|actionRequestContentType|Request ContentType for Action| |@RequestContentType|
|
||||
|actionRequestContentTypePrefix|Request ContentType Prefix for Action| |MediaTypes|
|
||||
|addModelMoshiJsonAnnotation|Add a Moshi JSON adapter annotation to all model classes| |true|
|
||||
|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
|
||||
|apiSuffix|suffix for api classes| |Api|
|
||||
@@ -35,6 +40,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |null|
|
||||
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null|
|
||||
|sourceFolder|source folder for generated code| |src/main/kotlin|
|
||||
|testingModule|Testing module class| |misk.testing.MiskTestModule|
|
||||
|useBeanValidation|Use BeanValidation API annotations to validate data types| |true|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
@@ -38,7 +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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -38,7 +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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |camelCase|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|camelCase|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -38,7 +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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -37,7 +37,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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -38,7 +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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -38,7 +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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |camelCase|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|camelCase|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -43,7 +43,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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -39,7 +39,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|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |snake_case|
|
||||
|variableNamingConvention|naming convention of variable name, e.g. camelCase.|<dl><dt>**camelCase**</dt><dd>Use camelCase convention</dd><dt>**PascalCase**</dt><dd>Use PascalCase convention</dd><dt>**snake_case**</dt><dd>Use snake_case convention</dd><dt>**original**</dt><dd>Do not change the variable name</dd></dl>|snake_case|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|packageName|python package name (convention: snake_case).| |openapi_client|
|
||||
|packageUrl|python package URL.| |null|
|
||||
|packageVersion|python package version.| |1.0.0|
|
||||
|poetry1|Fallback to formatting pyproject.toml to Poetry 1.x format.| |null|
|
||||
|projectName|python project name in setup.py (e.g. petstore-api).| |null|
|
||||
|recursionLimit|Set the recursion limit. If not set, use the system default value.| |null|
|
||||
|setEnsureAsciiToFalse|When set to true, add `ensure_ascii=False` in json.dumps when creating the HTTP request body.| |false|
|
||||
|
||||
232
docs/generators/rust-server-deprecated.md
Normal file
232
docs/generators/rust-server-deprecated.md
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
title: Documentation for the rust-server-deprecated Generator
|
||||
---
|
||||
|
||||
## METADATA
|
||||
|
||||
| Property | Value | Notes |
|
||||
| -------- | ----- | ----- |
|
||||
| generator name | rust-server-deprecated | pass this to the generate command after -g |
|
||||
| generator stability | STABLE | |
|
||||
| generator type | SERVER | |
|
||||
| generator language | Rust | |
|
||||
| generator default templating engine | mustache | |
|
||||
| helpTxt | Generates a Rust Hyper/Tower server library based on hyper 0.14. Also generates a matching Hyper client library within the same crate that implements the same trait. | |
|
||||
|
||||
## CONFIG OPTIONS
|
||||
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
|
||||
|
||||
| Option | Description | Values | Default |
|
||||
| ------ | ----------- | ------ | ------- |
|
||||
|packageName|Rust crate name (convention: snake_case).| |openapi_client|
|
||||
|packageVersion|Rust crate version.| |null|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
| Type/Alias | Imports |
|
||||
| ---------- | ------- |
|
||||
|
||||
|
||||
## INSTANTIATION TYPES
|
||||
|
||||
| Type/Alias | Instantiated By |
|
||||
| ---------- | --------------- |
|
||||
|array|Vec|
|
||||
|map|std::collections::HashMap|
|
||||
|
||||
|
||||
## LANGUAGE PRIMITIVES
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>String</li>
|
||||
<li>bool</li>
|
||||
<li>char</li>
|
||||
<li>f32</li>
|
||||
<li>f64</li>
|
||||
<li>i16</li>
|
||||
<li>i32</li>
|
||||
<li>i64</li>
|
||||
<li>i8</li>
|
||||
<li>isize</li>
|
||||
<li>str</li>
|
||||
<li>u16</li>
|
||||
<li>u32</li>
|
||||
<li>u64</li>
|
||||
<li>u8</li>
|
||||
<li>usize</li>
|
||||
</ul>
|
||||
|
||||
## RESERVED WORDS
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Self</li>
|
||||
<li>abstract</li>
|
||||
<li>as</li>
|
||||
<li>async</li>
|
||||
<li>await</li>
|
||||
<li>become</li>
|
||||
<li>box</li>
|
||||
<li>break</li>
|
||||
<li>const</li>
|
||||
<li>continue</li>
|
||||
<li>crate</li>
|
||||
<li>do</li>
|
||||
<li>dyn</li>
|
||||
<li>else</li>
|
||||
<li>enum</li>
|
||||
<li>extern</li>
|
||||
<li>false</li>
|
||||
<li>final</li>
|
||||
<li>fn</li>
|
||||
<li>for</li>
|
||||
<li>if</li>
|
||||
<li>impl</li>
|
||||
<li>in</li>
|
||||
<li>let</li>
|
||||
<li>loop</li>
|
||||
<li>macro</li>
|
||||
<li>match</li>
|
||||
<li>mod</li>
|
||||
<li>move</li>
|
||||
<li>mut</li>
|
||||
<li>override</li>
|
||||
<li>priv</li>
|
||||
<li>pub</li>
|
||||
<li>ref</li>
|
||||
<li>return</li>
|
||||
<li>self</li>
|
||||
<li>static</li>
|
||||
<li>struct</li>
|
||||
<li>super</li>
|
||||
<li>trait</li>
|
||||
<li>true</li>
|
||||
<li>try</li>
|
||||
<li>type</li>
|
||||
<li>typeof</li>
|
||||
<li>unsafe</li>
|
||||
<li>unsized</li>
|
||||
<li>use</li>
|
||||
<li>virtual</li>
|
||||
<li>where</li>
|
||||
<li>while</li>
|
||||
<li>yield</li>
|
||||
</ul>
|
||||
|
||||
## FEATURE SET
|
||||
|
||||
|
||||
### Client Modification Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|BasePath|✓|ToolingExtension
|
||||
|Authorizations|✗|ToolingExtension
|
||||
|UserAgent|✗|ToolingExtension
|
||||
|MockServer|✗|ToolingExtension
|
||||
|
||||
### Data Type Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Custom|✗|OAS2,OAS3
|
||||
|Int32|✓|OAS2,OAS3
|
||||
|Int64|✓|OAS2,OAS3
|
||||
|Float|✓|OAS2,OAS3
|
||||
|Double|✓|OAS2,OAS3
|
||||
|Decimal|✓|ToolingExtension
|
||||
|String|✓|OAS2,OAS3
|
||||
|Byte|✓|OAS2,OAS3
|
||||
|Binary|✓|OAS2,OAS3
|
||||
|Boolean|✓|OAS2,OAS3
|
||||
|Date|✓|OAS2,OAS3
|
||||
|DateTime|✓|OAS2,OAS3
|
||||
|Password|✓|OAS2,OAS3
|
||||
|File|✓|OAS2
|
||||
|Uuid|✗|
|
||||
|Array|✓|OAS2,OAS3
|
||||
|Null|✗|OAS3
|
||||
|AnyType|✗|OAS2,OAS3
|
||||
|Object|✓|OAS2,OAS3
|
||||
|Maps|✓|ToolingExtension
|
||||
|CollectionFormat|✓|OAS2
|
||||
|CollectionFormatMulti|✓|OAS2
|
||||
|Enum|✓|OAS2,OAS3
|
||||
|ArrayOfEnum|✓|ToolingExtension
|
||||
|ArrayOfModel|✓|ToolingExtension
|
||||
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|
||||
|ArrayOfCollectionOfModel|✓|ToolingExtension
|
||||
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|
||||
|MapOfEnum|✓|ToolingExtension
|
||||
|MapOfModel|✓|ToolingExtension
|
||||
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|
||||
|MapOfCollectionOfModel|✓|ToolingExtension
|
||||
|MapOfCollectionOfEnum|✓|ToolingExtension
|
||||
|
||||
### Documentation Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Readme|✓|ToolingExtension
|
||||
|Model|✓|ToolingExtension
|
||||
|Api|✓|ToolingExtension
|
||||
|
||||
### Global Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Host|✓|OAS2,OAS3
|
||||
|BasePath|✓|OAS2,OAS3
|
||||
|Info|✓|OAS2,OAS3
|
||||
|Schemes|✗|OAS2,OAS3
|
||||
|PartialSchemes|✓|OAS2,OAS3
|
||||
|Consumes|✓|OAS2
|
||||
|Produces|✓|OAS2
|
||||
|ExternalDocumentation|✓|OAS2,OAS3
|
||||
|Examples|✓|OAS2,OAS3
|
||||
|XMLStructureDefinitions|✗|OAS2,OAS3
|
||||
|MultiServer|✗|OAS3
|
||||
|ParameterizedServer|✗|OAS3
|
||||
|ParameterStyling|✗|OAS3
|
||||
|Callbacks|✓|OAS3
|
||||
|LinkObjects|✗|OAS3
|
||||
|
||||
### Parameter Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Path|✓|OAS2,OAS3
|
||||
|Query|✓|OAS2,OAS3
|
||||
|Header|✓|OAS2,OAS3
|
||||
|Body|✓|OAS2
|
||||
|FormUnencoded|✓|OAS2
|
||||
|FormMultipart|✓|OAS2
|
||||
|Cookie|✗|OAS3
|
||||
|
||||
### Schema Support Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Simple|✓|OAS2,OAS3
|
||||
|Composite|✓|OAS2,OAS3
|
||||
|Polymorphism|✗|OAS2,OAS3
|
||||
|Union|✗|OAS3
|
||||
|allOf|✗|OAS2,OAS3
|
||||
|anyOf|✗|OAS3
|
||||
|oneOf|✗|OAS3
|
||||
|not|✗|OAS3
|
||||
|
||||
### Security Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|BasicAuth|✓|OAS2,OAS3
|
||||
|ApiKey|✓|OAS2,OAS3
|
||||
|OpenIDConnect|✗|OAS3
|
||||
|BearerToken|✓|OAS3
|
||||
|OAuth2_Implicit|✓|OAS2,OAS3
|
||||
|OAuth2_Password|✗|OAS2,OAS3
|
||||
|OAuth2_ClientCredentials|✗|OAS2,OAS3
|
||||
|OAuth2_AuthorizationCode|✗|OAS2,OAS3
|
||||
|SignatureAuth|✗|OAS3
|
||||
|AWSV4Signature|✗|ToolingExtension
|
||||
|
||||
### Wire Format Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|JSON|✓|OAS2,OAS3
|
||||
|XML|✓|OAS2,OAS3
|
||||
|PROTOBUF|✗|ToolingExtension
|
||||
|Custom|✓|OAS2,OAS3
|
||||
@@ -51,6 +51,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|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|
|
||||
|generateBuilders|Whether to generate builders for models| |false|
|
||||
|generateConstructorWithAllArgs|whether to generate a constructor for all arguments| |false|
|
||||
|generateGenericResponseEntity|Use a generic type for the `ResponseEntity` wrapping return values of generated API methods. If enabled, method are generated with return type ResponseEntity<?>| |false|
|
||||
|generatedConstructorWithRequiredArgs|Whether to generate constructors with required args for models| |true|
|
||||
|groupId|groupId in generated pom.xml| |org.openapitools|
|
||||
|hateoas|Use Spring HATEOAS library to allow adding HATEOAS links| |false|
|
||||
|
||||
@@ -75,20 +75,42 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Blob</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -55,19 +55,41 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -27,6 +27,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |PascalCase|
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|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|
|
||||
|importFileExtension|File extension to use with relative imports. Set it to '.js' or '.mjs' when using [ESM](https://nodejs.org/api/esm.html).| ||
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPackage|package for generated models| |null|
|
||||
@@ -65,19 +66,41 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -66,19 +66,41 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -60,20 +60,42 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Blob</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -57,19 +57,41 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -66,20 +66,42 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Blob</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -56,23 +56,45 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Buffer</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>ReadStream</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>RequestDetailedFile</li>
|
||||
<li>RequestFile</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -58,19 +58,41 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -57,20 +57,42 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Blob</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -63,19 +63,41 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Awaited</li>
|
||||
<li>Boolean</li>
|
||||
<li>Capitalize</li>
|
||||
<li>ConstructorParameters</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>Exclude</li>
|
||||
<li>Extract</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>InstanceType</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Lowercase</li>
|
||||
<li>Map</li>
|
||||
<li>NoInfer</li>
|
||||
<li>NonNullable</li>
|
||||
<li>Object</li>
|
||||
<li>Omit</li>
|
||||
<li>OmitThisParameter</li>
|
||||
<li>Parameters</li>
|
||||
<li>Partial</li>
|
||||
<li>Pick</li>
|
||||
<li>Readonly</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Record</li>
|
||||
<li>Required</li>
|
||||
<li>ReturnType</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>ThisParameterType</li>
|
||||
<li>ThisType</li>
|
||||
<li>Uncapitalize</li>
|
||||
<li>Uppercase</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
|
||||
@@ -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 7.12.0
|
||||
openapi-generator-cli version-manager set 7.14.0
|
||||
```
|
||||
<!-- /RELEASE_VERSION -->
|
||||
To install the tool as a dev dependency in your current project:
|
||||
@@ -119,18 +119,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.12.0/openapi-generator-cli-7.12.0.jar`
|
||||
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.0.jar`
|
||||
|
||||
For **Mac/Linux** users:
|
||||
|
||||
```bash
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.12.0/openapi-generator-cli-7.12.0.jar -O openapi-generator-cli.jar
|
||||
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.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.12.0/openapi-generator-cli-7.12.0.jar
|
||||
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.14.0/openapi-generator-cli-7.14.0.jar
|
||||
```
|
||||
<!-- /RELEASE_VERSION -->
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase)
|
||||
<plugin>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<version>7.12.0</version>
|
||||
<version>7.14.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.14.0-SNAPSHOT</version>
|
||||
<version>7.15.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -162,7 +162,7 @@ public class Generate extends OpenApiGeneratorCommand {
|
||||
|
||||
@Option(
|
||||
name = {"--openapi-generator-ignore-list"},
|
||||
title = ".openapi-generaotr-ignore list",
|
||||
title = ".openapi-generator-ignore list",
|
||||
description = "specifies entries in the .openapi-generator-ignore file relative/path/to/file1,relative/path/to/file2. For example: README.md,pom.xml"
|
||||
+ " You can also have multiple occurrences of this option.")
|
||||
private List<String> openapiGeneratorIgnoreList = new ArrayList<>();
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.14.0-SNAPSHOT</version>
|
||||
<version>7.15.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -97,7 +97,7 @@ task validateGoodSpec(type: org.openapitools.generator.gradle.plugin.tasks.Valid
|
||||
[source,group]
|
||||
----
|
||||
plugins {
|
||||
id "org.openapi.generator" version "7.12.0"
|
||||
id "org.openapi.generator" version "7.14.0"
|
||||
}
|
||||
----
|
||||
|
||||
@@ -113,7 +113,7 @@ buildscript {
|
||||
// url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.openapitools:openapi-generator-gradle-plugin:7.10.0"
|
||||
classpath "org.openapitools:openapi-generator-gradle-plugin:7.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -759,7 +759,7 @@ buildscript {
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.1'
|
||||
classpath('org.openapitools:openapi-generator-gradle-plugin:7.10.0') {
|
||||
classpath('org.openapitools:openapi-generator-gradle-plugin:7.14.0') {
|
||||
exclude group: 'com.google.guava'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# RELEASE_VERSION
|
||||
openApiGeneratorVersion=7.14.0-SNAPSHOT
|
||||
openApiGeneratorVersion=7.15.0-SNAPSHOT
|
||||
# /RELEASE_VERSION
|
||||
|
||||
# BEGIN placeholders
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.12.0 openApiValidate
|
||||
gradle -PopenApiGeneratorVersion=7.14.0 openApiValidate
|
||||
```
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# RELEASE_VERSION
|
||||
openApiGeneratorVersion=7.14.0-SNAPSHOT
|
||||
openApiGeneratorVersion=7.15.0-SNAPSHOT
|
||||
# /RELEASE_VERSION
|
||||
|
||||
@@ -117,6 +117,7 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
|
||||
additionalProperties.set(generate.additionalProperties)
|
||||
serverVariables.set(generate.serverVariables)
|
||||
languageSpecificPrimitives.set(generate.languageSpecificPrimitives)
|
||||
openapiGeneratorIgnoreList.set(generate.openapiGeneratorIgnoreList)
|
||||
importMappings.set(generate.importMappings)
|
||||
schemaMappings.set(generate.schemaMappings)
|
||||
inlineSchemaNameMappings.set(generate.inlineSchemaNameMappings)
|
||||
|
||||
@@ -570,4 +570,55 @@ class GenerateTaskDslTest : TestBase() {
|
||||
"Dry run results message is missing."
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `openapiGenerate should set openapiGeneratorIgnoreList option`() {
|
||||
// Arrange
|
||||
val projectFiles = mapOf(
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0.yaml")
|
||||
)
|
||||
withProject(
|
||||
"""
|
||||
plugins {
|
||||
id 'org.openapi.generator'
|
||||
}
|
||||
openApiGenerate {
|
||||
generatorName = "kotlin"
|
||||
inputSpec = file("spec.yaml").absolutePath
|
||||
outputDir = file("build/kotlin").absolutePath
|
||||
apiPackage = "org.openapitools.example.api"
|
||||
invokerPackage = "org.openapitools.example.invoker"
|
||||
modelPackage = "org.openapitools.example.model"
|
||||
configOptions = [
|
||||
dateLibrary: "java8"
|
||||
]
|
||||
openapiGeneratorIgnoreList = ["README.md"]
|
||||
}
|
||||
""".trimIndent(),
|
||||
projectFiles
|
||||
)
|
||||
|
||||
// Act
|
||||
val result = GradleRunner.create()
|
||||
.withProjectDir(temp)
|
||||
.withArguments("openApiGenerate")
|
||||
.withPluginClasspath()
|
||||
.build()
|
||||
|
||||
// Assert
|
||||
assertTrue(
|
||||
result.output.contains("Successfully generated code to"),
|
||||
"User friendly generate notice is missing."
|
||||
)
|
||||
|
||||
assertTrue(
|
||||
"README.md" !in File(temp, "build/kotlin/").list(),
|
||||
"README.md should not be generated when it is in the openapiGeneratorIgnoreList."
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
TaskOutcome.SUCCESS, result.task(":openApiGenerate")?.outcome,
|
||||
"Expected a successful run, but found ${result.task(":openApiGenerate")?.outcome}"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.12.0</version>
|
||||
<version>7.14.0</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.14.0-SNAPSHOT</version>
|
||||
<version>7.15.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.14.0-SNAPSHOT</version>
|
||||
<version>7.15.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -563,12 +563,18 @@ public class CodeGenMojo extends AbstractMojo {
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(inputSpecRootDirectory)) {
|
||||
// make sure the path can be processed correct under Windows OS
|
||||
inputSpecRootDirectory = inputSpecRootDirectory.replaceAll("\\\\", "/");
|
||||
|
||||
inputSpec = new MergedSpecBuilder(inputSpecRootDirectory, mergedFileName,
|
||||
mergedFileInfoName, mergedFileInfoDescription, mergedFileInfoVersion)
|
||||
.buildMergedSpec();
|
||||
LOGGER.info("Merge input spec would be used - {}", inputSpec);
|
||||
}
|
||||
|
||||
// make sure the path can be processed correct under Windows OS
|
||||
inputSpec = inputSpec.replaceAll("\\\\", "/");
|
||||
|
||||
File inputSpecFile = new File(inputSpec);
|
||||
|
||||
if (output == null) {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>openapi-generator-project</artifactId>
|
||||
<!-- RELEASE_VERSION -->
|
||||
<version>7.14.0-SNAPSHOT</version>
|
||||
<version>7.15.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.14.0-SNAPSHOT</version>
|
||||
<version>7.15.0-SNAPSHOT</version>
|
||||
<!-- /RELEASE_VERSION -->
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -54,6 +54,7 @@ import org.openapitools.codegen.examples.ExampleGenerator;
|
||||
import org.openapitools.codegen.languages.PhpNextgenClientCodegen;
|
||||
import org.openapitools.codegen.languages.RustAxumServerCodegen;
|
||||
import org.openapitools.codegen.languages.RustServerCodegen;
|
||||
import org.openapitools.codegen.languages.RustServerCodegenDeprecated;
|
||||
import org.openapitools.codegen.meta.FeatureSet;
|
||||
import org.openapitools.codegen.meta.GeneratorMetadata;
|
||||
import org.openapitools.codegen.meta.Stability;
|
||||
@@ -334,6 +335,12 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
// Whether to automatically hardcode params that are considered Constants by OpenAPI Spec
|
||||
@Setter protected boolean autosetConstants = false;
|
||||
|
||||
@Setter @Getter boolean arrayDefaultToEmpty, arrayNullableDefaultToEmpty, arrayOptionalNullableDefaultToEmpty, arrayOptionalDefaultToEmpty;
|
||||
@Setter @Getter boolean mapDefaultToEmpty, mapNullableDefaultToEmpty, mapOptionalNullableDefaultToEmpty, mapOptionalDefaultToEmpty;
|
||||
@Setter @Getter protected boolean defaultToEmptyContainer;
|
||||
final String DEFAULT_TO_EMPTY_CONTAINER = "defaultToEmptyContainer";
|
||||
final List EMPTY_LIST = new ArrayList();
|
||||
|
||||
@Override
|
||||
public boolean getAddSuffixToDuplicateOperationNicknames() {
|
||||
return addSuffixToDuplicateOperationNicknames;
|
||||
@@ -392,8 +399,12 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
convertPropertyToBooleanAndWriteBack(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT, this::setDisallowAdditionalPropertiesIfNotPresent);
|
||||
convertPropertyToBooleanAndWriteBack(CodegenConstants.ENUM_UNKNOWN_DEFAULT_CASE, this::setEnumUnknownDefaultCase);
|
||||
convertPropertyToBooleanAndWriteBack(CodegenConstants.AUTOSET_CONSTANTS, this::setAutosetConstants);
|
||||
}
|
||||
|
||||
if (additionalProperties.containsKey(DEFAULT_TO_EMPTY_CONTAINER) && additionalProperties.get(DEFAULT_TO_EMPTY_CONTAINER) instanceof String) {
|
||||
parseDefaultToEmptyContainer((String) additionalProperties.get(DEFAULT_TO_EMPTY_CONTAINER));
|
||||
defaultToEmptyContainer = true;
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* Preset map builder with commonly used Mustache lambdas.
|
||||
@@ -3671,7 +3682,8 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
if (ModelUtils.isComposedSchema(schema) && !this.getLegacyDiscriminatorBehavior()) {
|
||||
List<MappedModel> otherDescendants = getOneOfAnyOfDescendants(schemaName, discriminatorPropertyName, schema);
|
||||
for (MappedModel otherDescendant : otherDescendants) {
|
||||
if (!uniqueDescendants.contains(otherDescendant)) {
|
||||
// add only if the model names are not the same
|
||||
if (uniqueDescendants.stream().map(MappedModel::getModelName).noneMatch(it -> it.equals(otherDescendant.getModelName()))) {
|
||||
uniqueDescendants.add(otherDescendant);
|
||||
}
|
||||
}
|
||||
@@ -4226,6 +4238,11 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
}
|
||||
|
||||
// override defaultValue if it's not set and defaultToEmptyContainer is set
|
||||
if (p.getDefault() == null && defaultToEmptyContainer) {
|
||||
updateDefaultToEmptyContainer(property, p);
|
||||
}
|
||||
|
||||
// set the default value
|
||||
property.defaultValue = toDefaultValue(property, p);
|
||||
property.defaultValueWithParam = toDefaultValueWithParam(name, p);
|
||||
@@ -4235,6 +4252,99 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
return property;
|
||||
}
|
||||
|
||||
/**
|
||||
* update container's default to empty container according rules provided by the user.
|
||||
*
|
||||
* @param cp codegen property
|
||||
* @param p schema
|
||||
*/
|
||||
void updateDefaultToEmptyContainer(CodegenProperty cp, Schema p) {
|
||||
if (cp.isArray) {
|
||||
if (!cp.required) { // optional
|
||||
if (cp.isNullable && arrayOptionalNullableDefaultToEmpty) { // nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
} else if (!cp.isNullable && arrayOptionalDefaultToEmpty) { // non-nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
}
|
||||
} else { // required
|
||||
if (cp.isNullable && arrayNullableDefaultToEmpty) { // nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
} else if (!cp.isNullable && arrayDefaultToEmpty) { // non-nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
}
|
||||
}
|
||||
} else if (cp.isMap) {
|
||||
if (!cp.required) { // optional
|
||||
if (cp.isNullable && mapOptionalNullableDefaultToEmpty) { // nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
} else if (!cp.isNullable && mapOptionalDefaultToEmpty) { // non-nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
}
|
||||
} else { // required
|
||||
if (cp.isNullable && mapNullableDefaultToEmpty) { // nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
} else if (!cp.isNullable && mapOptionalDefaultToEmpty) { // non-nullable
|
||||
p.setDefault(EMPTY_LIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the rules for defaulting to the empty container.
|
||||
*
|
||||
* @param input a set of rules separated by `|`
|
||||
*/
|
||||
void parseDefaultToEmptyContainer(String input) {
|
||||
String[] inputs = ((String) input).split("[|]");
|
||||
String containerType;
|
||||
for (String rule: inputs) {
|
||||
if (StringUtils.isEmpty(rule)) {
|
||||
LOGGER.error("updateDefaultToEmptyContainer: Skipped empty input in `{}`.", input);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (rule.startsWith("?") && rule.endsWith("?")) { // nullable optional
|
||||
containerType = rule.substring(1, rule.length() - 1);
|
||||
if ("array".equalsIgnoreCase(containerType)) {
|
||||
arrayOptionalNullableDefaultToEmpty = true;
|
||||
} else if ("map".equalsIgnoreCase(containerType)) {
|
||||
mapOptionalNullableDefaultToEmpty = true;
|
||||
} else {
|
||||
LOGGER.error("Skipped invalid container type `{}` in `{}`.", containerType, input);
|
||||
}
|
||||
} else if (rule.startsWith("?")) { // nullable (required)
|
||||
containerType = rule.substring(1, rule.length());
|
||||
if ("array".equalsIgnoreCase(containerType)) {
|
||||
arrayNullableDefaultToEmpty = true;
|
||||
} else if ("map".equalsIgnoreCase(containerType)) {
|
||||
mapNullableDefaultToEmpty = true;
|
||||
} else {
|
||||
LOGGER.error("Skipped invalid container type `{}` in `{}`.", containerType, input);
|
||||
}
|
||||
} else if (rule.endsWith("?")) { // optional
|
||||
containerType = rule.substring(0, rule.length()-1);
|
||||
if ("array".equalsIgnoreCase(containerType)) {
|
||||
arrayOptionalDefaultToEmpty = true;
|
||||
} else if ("map".equalsIgnoreCase(containerType)) {
|
||||
mapOptionalDefaultToEmpty = true;
|
||||
} else {
|
||||
LOGGER.error("Skipped invalid container type `{}` in the rule `{}`.", containerType, input);
|
||||
}
|
||||
} else { // required
|
||||
containerType = rule;
|
||||
if ("array".equalsIgnoreCase(containerType)) {
|
||||
arrayDefaultToEmpty = true;
|
||||
} else if ("map".equalsIgnoreCase(containerType)) {
|
||||
mapDefaultToEmpty = true;
|
||||
} else {
|
||||
LOGGER.error("Skipped invalid container type `{}` in the rule `{}`.", containerType, input);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update property for array(list) container
|
||||
*
|
||||
@@ -5220,7 +5330,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
parameterSchema = unaliasSchema(parameter.getSchema());
|
||||
parameterModelName = getParameterDataType(parameter, parameterSchema);
|
||||
CodegenProperty prop;
|
||||
if (this instanceof RustServerCodegen) {
|
||||
if (this instanceof RustServerCodegen || this instanceof RustServerCodegenDeprecated) {
|
||||
// for rust server, we need to do something special as it uses
|
||||
// $ref (e.g. #components/schemas/Pet) to determine whether it's a model
|
||||
prop = fromProperty(parameter.getName(), parameterSchema, false);
|
||||
|
||||
@@ -418,18 +418,7 @@ public class InlineModelResolver {
|
||||
if (schema.getAllOf().size() == 1) {
|
||||
// handle earlier in this function when looping through properties
|
||||
} else if (schema.getAllOf().size() > 1) {
|
||||
// Check if there is only one "non metadata" schema.
|
||||
// For example, there may be an `description` only schema that is used to override the descrption.
|
||||
// In these cases, we can simply discard those schemas.
|
||||
List<Schema> nonMetadataOnlySchemas = (List<Schema>) schema.getAllOf().stream()
|
||||
.filter(v -> ModelUtils.isMetadataOnlySchema((Schema) v))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (nonMetadataOnlySchemas.size() == 1) {
|
||||
schema.setAllOf(nonMetadataOnlySchemas);
|
||||
} else {
|
||||
LOGGER.warn("allOf schema `{}` containing multiple types (not model) is not supported at the moment.", schema.getName());
|
||||
}
|
||||
LOGGER.warn("allOf schema `{}` containing multiple types (not model) is not supported at the moment.", schema.getName());
|
||||
} else {
|
||||
LOGGER.error("allOf schema `{}` contains no items.", schema.getName());
|
||||
}
|
||||
|
||||
@@ -851,6 +851,52 @@ public class OpenAPINormalizer {
|
||||
}
|
||||
}
|
||||
|
||||
protected void refactorAllOfWithMetadataOnlySchemas(Schema schema) {
|
||||
if (schema.getAllOf() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if there are metadata schemas.
|
||||
// For example, there may be an `description` only schema that is used to override the descrption.
|
||||
List<Schema> nonMetadataOnlySchemas = new ArrayList<>();
|
||||
List<Schema> metadataOnlySchemas = new ArrayList<>();
|
||||
|
||||
for (Object s: schema.getAllOf()) {
|
||||
if (s instanceof Schema) {
|
||||
if (ModelUtils.isMetadataOnlySchema((Schema) s)) {
|
||||
metadataOnlySchemas.add((Schema) s);
|
||||
} else {
|
||||
nonMetadataOnlySchemas.add((Schema) s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ReferenceNumber:
|
||||
// allOf:
|
||||
// - $ref: '#/components/schemas/IEAN8'
|
||||
// - description: Product Ref
|
||||
// - example: IEAN1234
|
||||
//
|
||||
// becomes the following after the following code block
|
||||
//
|
||||
// ReferenceNumber:
|
||||
// allOf:
|
||||
// - $ref: '#/components/schemas/IEAN8'
|
||||
// description: Product Ref
|
||||
// example: IEAN1234
|
||||
//
|
||||
// which can be further processed by the generator
|
||||
if (nonMetadataOnlySchemas.size() > 0) {
|
||||
// keep the non metadata schema(s)
|
||||
schema.setAllOf(nonMetadataOnlySchemas);
|
||||
|
||||
// copy metadata to the allOf schema
|
||||
for (Schema metadataOnlySchema: metadataOnlySchemas) {
|
||||
ModelUtils.copyMetadata(metadataOnlySchema, schema);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove unsupported schemas (e.g. if, then) from allOf.
|
||||
*
|
||||
@@ -882,6 +928,8 @@ public class OpenAPINormalizer {
|
||||
protected Schema normalizeAllOf(Schema schema, Set<Schema> visitedSchemas) {
|
||||
removeUnsupportedSchemasFromAllOf(schema);
|
||||
|
||||
refactorAllOfWithMetadataOnlySchemas(schema);
|
||||
|
||||
if (schema.getAllOf() == null) {
|
||||
return schema;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
package org.openapitools.codegen.languages;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.samskivert.mustache.Mustache;
|
||||
@@ -1240,7 +1242,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
if (schema.getDefault() instanceof ArrayNode) { // array of default values
|
||||
ArrayNode _default = (ArrayNode) schema.getDefault();
|
||||
if (_default.isEmpty()) { // e.g. default: []
|
||||
return getDefaultCollectionType(schema);
|
||||
return getDefaultCollectionType(schema, "");
|
||||
}
|
||||
|
||||
List<String> final_values = _values;
|
||||
@@ -1253,6 +1255,11 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
_default.forEach((element) -> {
|
||||
final_values.add(String.valueOf(element));
|
||||
});
|
||||
|
||||
if (_default != null && _default.isEmpty() && defaultToEmptyContainer) {
|
||||
// e.g. [] with the option defaultToEmptyContainer enabled
|
||||
return getDefaultCollectionType(schema, "");
|
||||
}
|
||||
} else { // single value
|
||||
_values = java.util.Collections.singletonList(String.valueOf(schema.getDefault()));
|
||||
}
|
||||
@@ -1306,7 +1313,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
public String toDefaultValue(CodegenProperty cp, Schema schema) {
|
||||
schema = ModelUtils.getReferencedSchema(this.openAPI, schema);
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
if (schema.getDefault() == null) {
|
||||
if (defaultToEmptyContainer) {
|
||||
// if default to empty container option is set, respect the default values provided in the spec
|
||||
return toArrayDefaultValue(cp, schema);
|
||||
} else if (schema.getDefault() == null) {
|
||||
// nullable or containerDefaultToNull set to true
|
||||
if (cp.isNullable || containerDefaultToNull) {
|
||||
return null;
|
||||
@@ -1323,6 +1333,16 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
return null;
|
||||
}
|
||||
|
||||
if (defaultToEmptyContainer) {
|
||||
// respect the default values provided in the spec when the option is enabled
|
||||
if (schema.getDefault() != null) {
|
||||
return String.format(Locale.ROOT, "new %s<>()",
|
||||
instantiationTypes().getOrDefault("map", "HashMap"));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// nullable or containerDefaultToNull set to true
|
||||
if (cp.isNullable || containerDefaultToNull) {
|
||||
return null;
|
||||
@@ -1399,7 +1419,74 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
return null;
|
||||
} else if (ModelUtils.isObjectSchema(schema)) {
|
||||
if (schema.getDefault() != null) {
|
||||
return super.toDefaultValue(schema);
|
||||
try {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append("new " + cp.datatypeWithEnum + "()");
|
||||
Map<String, Schema> propertySchemas = schema.getProperties();
|
||||
if(propertySchemas != null) {
|
||||
// With `parseOptions.setResolve(true)`, objects with 1 key-value pair are LinkedHashMap and objects with more than 1 are ObjectNode
|
||||
// When not set, objects of any size are ObjectNode
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
ObjectNode objectNode;
|
||||
if(!(schema.getDefault() instanceof ObjectNode)) {
|
||||
objectNode = objectMapper.valueToTree(schema.getDefault());
|
||||
} else {
|
||||
objectNode = (ObjectNode) schema.getDefault();
|
||||
|
||||
}
|
||||
Set<Map.Entry<String, JsonNode>> defaultProperties = objectNode.properties();
|
||||
for (Map.Entry<String, JsonNode> defaultProperty : defaultProperties) {
|
||||
String key = defaultProperty.getKey();
|
||||
JsonNode value = defaultProperty.getValue();
|
||||
Schema propertySchema = propertySchemas.get(key);
|
||||
if (!value.isValueNode() || propertySchema == null) { //Skip complex objects for now
|
||||
continue;
|
||||
}
|
||||
|
||||
String defaultPropertyExpression = null;
|
||||
if(ModelUtils.isLongSchema(propertySchema)) {
|
||||
defaultPropertyExpression = value.asText()+"l";
|
||||
} else if(ModelUtils.isIntegerSchema(propertySchema)) {
|
||||
defaultPropertyExpression = value.asText();
|
||||
} else if(ModelUtils.isDoubleSchema(propertySchema)) {
|
||||
defaultPropertyExpression = value.asText()+"d";
|
||||
} else if(ModelUtils.isFloatSchema(propertySchema)) {
|
||||
defaultPropertyExpression = value.asText()+"f";
|
||||
} else if(ModelUtils.isNumberSchema(propertySchema)) {
|
||||
defaultPropertyExpression = "new java.math.BigDecimal(\"" + value.asText() + "\")";
|
||||
} else if(ModelUtils.isURISchema(propertySchema)) {
|
||||
defaultPropertyExpression = "java.net.URI.create(\"" + escapeText(value.asText()) + "\")";
|
||||
} else if(ModelUtils.isDateSchema(propertySchema)) {
|
||||
if("java8".equals(getDateLibrary())) {
|
||||
defaultPropertyExpression = String.format(Locale.ROOT, "java.time.LocalDate.parse(\"%s\")", value.asText());
|
||||
}
|
||||
} else if(ModelUtils.isDateTimeSchema(propertySchema)) {
|
||||
if("java8".equals(getDateLibrary())) {
|
||||
defaultPropertyExpression = String.format(Locale.ROOT, "java.time.OffsetDateTime.parse(\"%s\", %s)",
|
||||
value.asText(),
|
||||
"java.time.format.DateTimeFormatter.ISO_ZONED_DATE_TIME.withZone(java.time.ZoneId.systemDefault())");
|
||||
}
|
||||
} else if(ModelUtils.isUUIDSchema(propertySchema)) {
|
||||
defaultPropertyExpression = "java.util.UUID.fromString(\"" + value.asText() + "\")";
|
||||
} else if(ModelUtils.isStringSchema(propertySchema)) {
|
||||
defaultPropertyExpression = "\"" + value.asText() + "\"";
|
||||
} else if(ModelUtils.isBooleanSchema(propertySchema)) {
|
||||
defaultPropertyExpression = value.asText();
|
||||
}
|
||||
if(defaultPropertyExpression != null) {
|
||||
stringBuilder
|
||||
// .append(System.lineSeparator())
|
||||
.append(".")
|
||||
.append(toVarName(key))
|
||||
.append("(").append(defaultPropertyExpression).append(")");
|
||||
}
|
||||
}
|
||||
}
|
||||
return stringBuilder.toString();
|
||||
} catch (ClassCastException e) {
|
||||
LOGGER.error("Can't resolve default value: "+schema.getDefault(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
} else if (ModelUtils.isComposedSchema(schema)) {
|
||||
@@ -1418,12 +1505,31 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
|
||||
private String getDefaultCollectionType(Schema schema, String defaultValues) {
|
||||
String arrayFormat = "new %s<>(Arrays.asList(%s))";
|
||||
|
||||
if (defaultToEmptyContainer) {
|
||||
// respect the default value in the spec
|
||||
if (defaultValues == null) { // default value not provided
|
||||
return null;
|
||||
} else if (defaultValues.isEmpty()) { // e.g. [] to indicates empty container
|
||||
arrayFormat = "new %s<>()";
|
||||
return getDefaultCollectionType(arrayFormat, defaultValues, ModelUtils.isSet(schema));
|
||||
} else { // default value not empty
|
||||
return getDefaultCollectionType(arrayFormat, defaultValues, ModelUtils.isSet(schema));
|
||||
}
|
||||
}
|
||||
|
||||
if (defaultValues == null || defaultValues.isEmpty()) {
|
||||
// default to empty container even though default value is null
|
||||
// to respect default values provided in the spec, set the option `defaultToEmptyContainer` properly
|
||||
defaultValues = "";
|
||||
arrayFormat = "new %s<>()";
|
||||
}
|
||||
|
||||
if (ModelUtils.isSet(schema)) {
|
||||
return getDefaultCollectionType(arrayFormat, defaultValues, ModelUtils.isSet(schema));
|
||||
}
|
||||
|
||||
private String getDefaultCollectionType(String arrayFormat, String defaultValues, boolean isSet) {
|
||||
if (isSet) {
|
||||
return String.format(Locale.ROOT, arrayFormat,
|
||||
instantiationTypes().getOrDefault("set", "LinkedHashSet"), defaultValues);
|
||||
}
|
||||
|
||||
@@ -572,7 +572,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
||||
if (value.isEmpty()) {
|
||||
modified = "EMPTY";
|
||||
} else {
|
||||
modified = value;
|
||||
modified = value.replaceAll("-", "_");
|
||||
modified = sanitizeKotlinSpecificNames(modified);
|
||||
}
|
||||
|
||||
|
||||
@@ -149,6 +149,10 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
||||
cliOptions.add(new CliOption(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC));
|
||||
cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC));
|
||||
cliOptions.add(new CliOption(VARIABLE_NAMING_CONVENTION, "naming convention of variable name, e.g. camelCase.")
|
||||
.addEnum("camelCase", "Use camelCase convention")
|
||||
.addEnum("PascalCase", "Use PascalCase convention")
|
||||
.addEnum("snake_case", "Use snake_case convention")
|
||||
.addEnum("original", "Do not change the variable name")
|
||||
.defaultValue("snake_case"));
|
||||
cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, "The main namespace to use for all classes. e.g. Yay\\Pets"));
|
||||
cliOptions.add(new CliOption(PACKAGE_NAME, "The main package name for classes. e.g. GeneratedPetstore"));
|
||||
@@ -451,6 +455,8 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
||||
name = camelize(name, LOWERCASE_FIRST_LETTER);
|
||||
} else if ("PascalCase".equals(variableNamingConvention)) {
|
||||
name = camelize(name, UPPERCASE_FIRST_CHAR);
|
||||
} else if ("original".equals(variableNamingConvention)) {
|
||||
// return the name as it is
|
||||
} else { // default to snake case
|
||||
// return the name in underscore style
|
||||
// PhoneNumber => phone_number
|
||||
|
||||
@@ -1061,6 +1061,8 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
}
|
||||
|
||||
public String toEnumVariableName(String name, String datatype) {
|
||||
name = name.replace(".", "_DOT_");
|
||||
|
||||
if ("int".equals(datatype)) {
|
||||
return "NUMBER_" + name.replace("-", "MINUS_");
|
||||
}
|
||||
|
||||
@@ -1593,6 +1593,8 @@ public abstract class AbstractPythonPydanticV1Codegen extends DefaultCodegen imp
|
||||
}
|
||||
|
||||
public String toEnumVariableName(String name, String datatype) {
|
||||
name = name.replace(".", "_DOT_");
|
||||
|
||||
if ("int".equals(datatype)) {
|
||||
return "NUMBER_" + name.replace("-", "MINUS_");
|
||||
}
|
||||
|
||||
@@ -183,8 +183,8 @@ public abstract class AbstractRustCodegen extends DefaultCodegen implements Code
|
||||
throw new IllegalArgumentException("Unknown CasingType");
|
||||
}
|
||||
|
||||
// Replace hyphens with underscores
|
||||
name = name.replaceAll("-", "_");
|
||||
// Replace hyphens and periods with underscores
|
||||
name = name.replaceAll("[\\.\\-]", "_");
|
||||
|
||||
// Apply special character escapes, e.g. "@type" => "At_type"
|
||||
// Remove the trailing underscore if necessary
|
||||
@@ -346,6 +346,10 @@ public abstract class AbstractRustCodegen extends DefaultCodegen implements Code
|
||||
|
||||
@Override
|
||||
public String toModelName(String name) {
|
||||
if (modelNameMapping.containsKey(name)) {
|
||||
return modelNameMapping.get(name);
|
||||
}
|
||||
|
||||
return sanitizeIdentifier(addModelNamePrefixAndSuffix(name), CasingType.CAMEL_CASE, "model", "model", false);
|
||||
}
|
||||
|
||||
|
||||
@@ -304,6 +304,14 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
// Typescript reserved words
|
||||
"abstract", "await", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double", "else", "enum", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "let", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with", "yield"));
|
||||
|
||||
Set<String> utilityTypes = new HashSet<>(Arrays.asList(
|
||||
"Awaited","Partial","Required","Readonly","Record","Pick","Omit","Exclude","Extract","NonNullable",
|
||||
"Parameters","ConstructorParameters","ReturnType","InstanceType","NoInfer","ThisParameterType",
|
||||
"OmitThisParameter","ThisType","Uppercase","Lowercase","Capitalize","Uncapitalize")
|
||||
);
|
||||
defaultIncludes = new HashSet<>();
|
||||
defaultIncludes.addAll(utilityTypes);
|
||||
|
||||
languageSpecificPrimitives = new HashSet<>(Arrays.asList(
|
||||
"string",
|
||||
"String",
|
||||
@@ -325,6 +333,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
"object",
|
||||
"Set"
|
||||
));
|
||||
languageSpecificPrimitives.addAll(utilityTypes);
|
||||
|
||||
languageGenericTypes = new HashSet<>(Collections.singletonList(
|
||||
"Array"
|
||||
@@ -805,7 +814,8 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
return openAPIType;
|
||||
} else if (typeMapping.containsKey(openAPIType)) {
|
||||
type = typeMapping.get(openAPIType);
|
||||
if (languageSpecificPrimitives.contains(type)) {
|
||||
String typeWithoutGeneric = typeWithoutGeneric(type);
|
||||
if (languageSpecificPrimitives.contains(typeWithoutGeneric)) {
|
||||
return type;
|
||||
}
|
||||
} else {
|
||||
@@ -1157,6 +1167,16 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
}).distinct().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean needToImport(String type) {
|
||||
return super.needToImport(typeWithoutGeneric(type));
|
||||
}
|
||||
|
||||
private String typeWithoutGeneric(String type) {
|
||||
int genericIndex = type.indexOf("<");
|
||||
return genericIndex == -1 ? type : type.substring(0, genericIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeneratorLanguage generatorLanguage() {
|
||||
return GeneratorLanguage.TYPESCRIPT;
|
||||
|
||||
@@ -134,7 +134,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
||||
private SortingMethod modelPropertySorting = SortingMethod.DEFAULT;
|
||||
|
||||
protected boolean caseInsensitiveResponseHeaders = Boolean.FALSE;
|
||||
protected String releaseNote = "Minor update";
|
||||
@Setter protected String licenseId;
|
||||
@Setter protected String packageTags;
|
||||
@Setter protected boolean useOneOfDiscriminatorLookup = false; // use oneOf discriminator's mapping for model lookup
|
||||
@@ -213,10 +212,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
||||
CodegenConstants.LICENSE_ID_DESC,
|
||||
this.licenseId);
|
||||
|
||||
addOption(CodegenConstants.RELEASE_NOTE,
|
||||
CodegenConstants.RELEASE_NOTE_DESC,
|
||||
this.releaseNote);
|
||||
|
||||
addOption(CodegenConstants.PACKAGE_TAGS,
|
||||
CodegenConstants.PACKAGE_TAGS_DESC,
|
||||
this.packageTags);
|
||||
@@ -1293,11 +1288,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
||||
this.caseInsensitiveResponseHeaders = caseInsensitiveResponseHeaders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReleaseNote(String releaseNote) {
|
||||
this.releaseNote = releaseNote;
|
||||
}
|
||||
|
||||
public boolean getUseOneOfDiscriminatorLookup() {
|
||||
return this.useOneOfDiscriminatorLookup;
|
||||
}
|
||||
|
||||
@@ -387,6 +387,10 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
||||
|| ModelUtils.isFileSchema(p) || ModelUtils.isUUIDSchema(p)
|
||||
|| languageSpecificPrimitives.contains(openAPIType)) {
|
||||
return toModelName(openAPIType);
|
||||
} else if (ModelUtils.isObjectSchema(p)) {
|
||||
return "std::shared_ptr<Object>";
|
||||
} else if(typeMapping.containsKey(super.getSchemaType(p))) {
|
||||
return openAPIType;
|
||||
}
|
||||
|
||||
return "std::shared_ptr<" + openAPIType + ">";
|
||||
|
||||
@@ -670,6 +670,17 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
|
||||
op.imports.remove("Uint8List");
|
||||
}
|
||||
|
||||
if (SERIALIZATION_LIBRARY_JSON_SERIALIZABLE.equals(library)) {
|
||||
// built_value serialization uses Uint8List for all MultipartFile types
|
||||
// in json_serialization, MultipartFile is used as the file parameter type, but
|
||||
// MultipartFile isn't readable, instead we convert this to a Uin8List
|
||||
if (op.isResponseFile) {
|
||||
op.imports.add("Uint8List");
|
||||
op.returnType = "Uint8List";
|
||||
op.returnBaseType = "Uint8List";
|
||||
}
|
||||
}
|
||||
|
||||
resultImports.addAll(rewriteImports(op.imports, false));
|
||||
|
||||
if (SERIALIZATION_LIBRARY_BUILT_VALUE.equals(library)) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user