forked from loafle/openapi-generator-original
Merge remote-tracking branch 'origin/master' into 3.3.x
This commit is contained in:
commit
8be06bc22d
15
.gitignore
vendored
15
.gitignore
vendored
@ -93,21 +93,6 @@ samples/client/petstore/java/jersey2-java6/project/
|
|||||||
samples/client/petstore/java/jersey2-java8/project/
|
samples/client/petstore/java/jersey2-java8/project/
|
||||||
samples/client/petstore/java/jersey2/project/
|
samples/client/petstore/java/jersey2/project/
|
||||||
|
|
||||||
#PHP
|
|
||||||
samples/client/petstore/php/OpenAPIToolsClient-php/composer.lock
|
|
||||||
samples/client/petstore/php/OpenAPIToolsClient-php/vendor/
|
|
||||||
samples/client/petstore/silex/SwaggerServer/composer.lock
|
|
||||||
samples/client/petstore/silex/SwaggerServer/venodr/
|
|
||||||
**/vendor/
|
|
||||||
**/composer.lock
|
|
||||||
|
|
||||||
#PHP-Symfony
|
|
||||||
samples/server/petstore/php-symfony/SymfonyBundle-php/Tests/cache/
|
|
||||||
samples/server/petstore/php-symfony/SymfonyBundle-php/Tests/logs/
|
|
||||||
|
|
||||||
#PHP-laravel
|
|
||||||
samples/server/petstore/php-laravel/node_modules
|
|
||||||
|
|
||||||
# Perl
|
# Perl
|
||||||
samples/client/petstore/perl/deep_module_test/
|
samples/client/petstore/perl/deep_module_test/
|
||||||
|
|
||||||
|
36
.hub.cli.dockerfile
Normal file
36
.hub.cli.dockerfile
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
## The builder labeled image acts as a transient container which is meant to
|
||||||
|
## hold all non-artifact code.
|
||||||
|
##
|
||||||
|
## You can build _just_ this part with:
|
||||||
|
## docker --target builder -t container-name:builder -f .hub.cli.dockerfile .
|
||||||
|
FROM jimschubert/8-jdk-alpine-mvn:1.0 as builder
|
||||||
|
|
||||||
|
RUN set -x && \
|
||||||
|
apk add --no-cache bash
|
||||||
|
|
||||||
|
ENV GEN_DIR /opt/openapi-generator
|
||||||
|
WORKDIR ${GEN_DIR}
|
||||||
|
COPY . ${GEN_DIR}
|
||||||
|
|
||||||
|
# Pre-compile openapi-generator-cli
|
||||||
|
RUN mvn -am -pl "modules/openapi-generator-cli" package
|
||||||
|
|
||||||
|
## The final (release) image
|
||||||
|
## The resulting container here only needs the target jar
|
||||||
|
## and ca-certificates (to be able to query HTTPS hosted specs)
|
||||||
|
FROM openjdk:8-jre-alpine
|
||||||
|
|
||||||
|
ENV GEN_DIR /opt/openapi-generator
|
||||||
|
|
||||||
|
RUN apk --no-cache add ca-certificates bash
|
||||||
|
RUN mkdir -p ${GEN_DIR}/modules/openapi-generator-cli/target
|
||||||
|
|
||||||
|
WORKDIR ${GEN_DIR}/modules/openapi-generator-cli/target
|
||||||
|
|
||||||
|
COPY --from=builder ${GEN_DIR}/modules/openapi-generator-cli/target/openapi-generator-cli.jar ${GEN_DIR}/modules/openapi-generator-cli/target/openapi-generator-cli.jar
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
|
||||||
|
CMD ["help"]
|
35
.hub.online.dockerfile
Normal file
35
.hub.online.dockerfile
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
## The builder labeled image acts as a transient container which is meant to
|
||||||
|
## hold all non-artifact code.
|
||||||
|
##
|
||||||
|
## You can build _just_ this part with:
|
||||||
|
## docker --target builder -t container-name:builder -f .hub.online.dockerfile .
|
||||||
|
FROM jimschubert/8-jdk-alpine-mvn:1.0 as builder
|
||||||
|
|
||||||
|
RUN set -x && \
|
||||||
|
apk add --no-cache bash
|
||||||
|
|
||||||
|
ENV GEN_DIR /opt/openapi-generator
|
||||||
|
WORKDIR ${GEN_DIR}
|
||||||
|
COPY . ${GEN_DIR}
|
||||||
|
|
||||||
|
# Pre-compile openapi-generator-online
|
||||||
|
RUN mvn -am -pl "modules/openapi-generator-online" package
|
||||||
|
|
||||||
|
## The final (release) image
|
||||||
|
## The resulting container here only needs the target jar
|
||||||
|
FROM openjdk:8-jre-alpine
|
||||||
|
|
||||||
|
ENV GEN_DIR /opt/openapi-generator
|
||||||
|
ENV TARGET_DIR /generator
|
||||||
|
|
||||||
|
RUN mkdir -p ${TARGET_DIR}
|
||||||
|
|
||||||
|
WORKDIR ${TARGET_DIR}
|
||||||
|
|
||||||
|
COPY --from=builder ${GEN_DIR}/modules/openapi-generator-online/target/openapi-generator-*.jar ${TARGET_DIR}/openapi-generator-online.jar
|
||||||
|
|
||||||
|
ENV GENERATOR_HOST=http://localhost
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
CMD ["java", "-jar", "/generator/openapi-generator-online.jar"]
|
@ -31,6 +31,8 @@ cache:
|
|||||||
- $HOME/.cargo
|
- $HOME/.cargo
|
||||||
- $HOME/.stack
|
- $HOME/.stack
|
||||||
- $HOME/samples/server/petstore/cpp-pistache/pistache
|
- $HOME/samples/server/petstore/cpp-pistache/pistache
|
||||||
|
- $HOME/.npm
|
||||||
|
- $HOME/.rvm/gems/ruby-2.4.1
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
@ -57,7 +59,7 @@ before_install:
|
|||||||
- gem install bundler
|
- gem install bundler
|
||||||
- npm install -g typescript
|
- npm install -g typescript
|
||||||
- npm install -g npm
|
- npm install -g npm
|
||||||
- npm install -g elm
|
- npm install -g elm@0.18.0-exp5
|
||||||
- npm config set registry http://registry.npmjs.org/
|
- npm config set registry http://registry.npmjs.org/
|
||||||
# set python 3.6.3 as default
|
# set python 3.6.3 as default
|
||||||
- source ~/virtualenv/python3.6/bin/activate
|
- source ~/virtualenv/python3.6/bin/activate
|
||||||
|
@ -28,7 +28,7 @@ public class ApiClientTest {
|
|||||||
assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00")));
|
assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00")));
|
||||||
|
|
||||||
// custom date format: without milli-seconds, custom time zone
|
// custom date format: without milli-seconds, custom time zone
|
||||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
|
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX", Locale.ROOT);
|
||||||
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
||||||
apiClient.setDateFormat(format);
|
apiClient.setDateFormat(format);
|
||||||
dateStr = "2015-11-07T13:49:09+10:00";
|
dateStr = "2015-11-07T13:49:09+10:00";
|
||||||
|
@ -28,7 +28,7 @@ public class ApiClientTest {
|
|||||||
assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00")));
|
assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00")));
|
||||||
|
|
||||||
// custom date format: without milli-seconds, custom time zone
|
// custom date format: without milli-seconds, custom time zone
|
||||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
|
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX", Locale.ROOT);
|
||||||
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
||||||
apiClient.setDateFormat(format);
|
apiClient.setDateFormat(format);
|
||||||
dateStr = "2015-11-07T13:49:09+10:00";
|
dateStr = "2015-11-07T13:49:09+10:00";
|
||||||
|
@ -12,6 +12,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
import okio.ByteString;
|
import okio.ByteString;
|
||||||
@ -46,7 +47,7 @@ public class JSONTest {
|
|||||||
assertEquals(json.deserialize("\"2015-11-07T03:49:09.356" + getCurrentTimezoneOffset() + "\"", java.sql.Date.class).toString(), date.toString());
|
assertEquals(json.deserialize("\"2015-11-07T03:49:09.356" + getCurrentTimezoneOffset() + "\"", java.sql.Date.class).toString(), date.toString());
|
||||||
|
|
||||||
// custom date format: without day
|
// custom date format: without day
|
||||||
DateFormat format = new SimpleDateFormat("yyyy-MM");
|
DateFormat format = new SimpleDateFormat("yyyy-MM", Locale.ROOT);
|
||||||
apiClient.setSqlDateFormat(format);
|
apiClient.setSqlDateFormat(format);
|
||||||
String dateStr = "\"2015-11\"";
|
String dateStr = "\"2015-11\"";
|
||||||
assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09Z\"", java.sql.Date.class)));
|
assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09Z\"", java.sql.Date.class)));
|
||||||
@ -79,7 +80,7 @@ public class JSONTest {
|
|||||||
assertEquals(utcDate, json.serialize(date));
|
assertEquals(utcDate, json.serialize(date));
|
||||||
|
|
||||||
// custom datetime format: without milli-seconds, custom time zone
|
// custom datetime format: without milli-seconds, custom time zone
|
||||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
|
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX", Locale.ROOT);
|
||||||
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
||||||
apiClient.setDateFormat(format);
|
apiClient.setDateFormat(format);
|
||||||
|
|
||||||
@ -190,10 +191,10 @@ public class JSONTest {
|
|||||||
public static String getCurrentTimezoneOffset() {
|
public static String getCurrentTimezoneOffset() {
|
||||||
|
|
||||||
TimeZone tz = TimeZone.getDefault();
|
TimeZone tz = TimeZone.getDefault();
|
||||||
Calendar cal = GregorianCalendar.getInstance(tz);
|
Calendar cal = GregorianCalendar.getInstance(tz, Locale.ROOT);
|
||||||
int offsetInMillis = tz.getOffset(cal.getTimeInMillis());
|
int offsetInMillis = tz.getOffset(cal.getTimeInMillis());
|
||||||
|
|
||||||
String offset = String.format("%02d:%02d", Math.abs(offsetInMillis / 3600000), Math.abs((offsetInMillis / 60000) % 60));
|
String offset = String.format(Locale.ROOT,"%02d:%02d", Math.abs(offsetInMillis / 3600000), Math.abs((offsetInMillis / 60000) % 60));
|
||||||
offset = (offsetInMillis >= 0 ? "+" : "-") + offset;
|
offset = (offsetInMillis >= 0 ? "+" : "-") + offset;
|
||||||
|
|
||||||
return offset;
|
return offset;
|
||||||
|
@ -34,7 +34,7 @@ public class ApiClientTest {
|
|||||||
assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00")));
|
assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00")));
|
||||||
|
|
||||||
// custom date format: without milli-seconds, custom time zone
|
// custom date format: without milli-seconds, custom time zone
|
||||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
|
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX", Locale.ROOT);
|
||||||
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
format.setTimeZone(TimeZone.getTimeZone("GMT+10"));
|
||||||
apiClient.setDateFormat(format);
|
apiClient.setDateFormat(format);
|
||||||
dateStr = "2015-11-07T13:49:09+10:00";
|
dateStr = "2015-11-07T13:49:09+10:00";
|
||||||
|
22
README.md
22
README.md
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`3.2.2`): [](https://travis-ci.org/OpenAPITools/openapi-generator)
|
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`3.2.3`): [](https://travis-ci.org/OpenAPITools/openapi-generator)
|
||||||
[](https://circleci.com/gh/OpenAPITools/openapi-generator)
|
[](https://circleci.com/gh/OpenAPITools/openapi-generator)
|
||||||
[](https://app.shippable.com/github/OpenAPITools/openapi-generator)
|
[](https://app.shippable.com/github/OpenAPITools/openapi-generator)
|
||||||
[](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu)
|
[](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu)
|
||||||
@ -84,8 +84,8 @@ OpenAPI Generator Version | Release Date | Notes
|
|||||||
---------------------------- | ------------ | -----
|
---------------------------- | ------------ | -----
|
||||||
4.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.0.0-SNAPSHOT/)| TBD | Major release with breaking changes (no fallback)
|
4.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.0.0-SNAPSHOT/)| TBD | Major release with breaking changes (no fallback)
|
||||||
3.3.0 (upcoming minor release)| TBD | Minor release (breaking changes with fallbacks)
|
3.3.0 (upcoming minor release)| TBD | Minor release (breaking changes with fallbacks)
|
||||||
3.2.2 (current master, upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/3.2.2-SNAPSHOT/)| TBD | Bugfix release
|
3.2.3 (current master, upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/3.2.3-SNAPSHOT/)| TBD | Bugfix release
|
||||||
[3.2.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v3.2.1) (latest stable release) | 14.08.2018 | Bugfix release
|
[3.2.2](https://github.com/OpenAPITools/openapi-generator/releases/tag/v3.2.2) (latest stable release) | 22.08.2018 | Bugfix release
|
||||||
|
|
||||||
OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0
|
OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0
|
||||||
|
|
||||||
@ -141,16 +141,16 @@ See the different versions of the [openapi-generator-cli](https://mvnrepository.
|
|||||||
|
|
||||||
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 8 runtime at a minimum):
|
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 8 runtime at a minimum):
|
||||||
|
|
||||||
JAR location: `http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.2.1/openapi-generator-cli-3.2.1.jar`
|
JAR location: `http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.2.2/openapi-generator-cli-3.2.2.jar`
|
||||||
|
|
||||||
For **Mac/Linux** users:
|
For **Mac/Linux** users:
|
||||||
```sh
|
```sh
|
||||||
wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.2.1/openapi-generator-cli-3.2.1.jar -O openapi-generator-cli.jar
|
wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.2.2/openapi-generator-cli-3.2.2.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.
|
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 http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.2.1/openapi-generator-cli-3.2.1.jar
|
Invoke-WebRequest -OutFile openapi-generator-cli.jar http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.2.2/openapi-generator-cli-3.2.2.jar
|
||||||
```
|
```
|
||||||
|
|
||||||
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
|
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
|
||||||
@ -163,7 +163,7 @@ export PATH=${JAVA_HOME}/bin:$PATH
|
|||||||
|
|
||||||
### Launcher Script
|
### Launcher Script
|
||||||
|
|
||||||
One downside to manual jar downloads is that you don't keep up-to-date with the latest released version. We have a Bash launcher script at [bin/utils/openapi-generator.cli.sh](./bin/utils/openapi-generator.cli.sh) which resolves this issue.
|
One downside to manual jar downloads is that you don't keep up-to-date with the latest released version. We have a Bash launcher script at [bin/utils/openapi-generator.cli.sh](./bin/utils/openapi-generator-cli.sh) which resolves this issue.
|
||||||
|
|
||||||
To install the launcher script, copy the contents of the script to a location on your path and make the script executable.
|
To install the launcher script, copy the contents of the script to a location on your path and make the script executable.
|
||||||
|
|
||||||
@ -406,13 +406,14 @@ SYNOPSIS
|
|||||||
[--invoker-package <invoker package>]
|
[--invoker-package <invoker package>]
|
||||||
[(-l <language> | --lang <language>)]
|
[(-l <language> | --lang <language>)]
|
||||||
[--language-specific-primitives <language specific primitives>...]
|
[--language-specific-primitives <language specific primitives>...]
|
||||||
[--library <library>] [--model-name-prefix <model name prefix>]
|
[--library <library>] [--log-to-stderr]
|
||||||
|
[--model-name-prefix <model name prefix>]
|
||||||
[--model-name-suffix <model name suffix>]
|
[--model-name-suffix <model name suffix>]
|
||||||
[--model-package <model package>]
|
[--model-package <model package>]
|
||||||
[(-o <output directory> | --output <output directory>)]
|
[(-o <output directory> | --output <output directory>)]
|
||||||
[--release-note <release note>] [--remove-operation-id-prefix]
|
[--release-note <release note>] [--remove-operation-id-prefix]
|
||||||
[--reserved-words-mappings <reserved word mappings>...]
|
[--reserved-words-mappings <reserved word mappings>...]
|
||||||
[(-s | --skip-overwrite)]
|
[(-s | --skip-overwrite)] [--skip-validate-spec]
|
||||||
[(-t <template directory> | --template-dir <template directory>)]
|
[(-t <template directory> | --template-dir <template directory>)]
|
||||||
[--type-mappings <type mappings>...] [(-v | --verbose)]
|
[--type-mappings <type mappings>...] [(-v | --verbose)]
|
||||||
|
|
||||||
@ -472,6 +473,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
|
|||||||
- [Raiffeisen Schweiz Genossenschaft](https://www.raiffeisen.ch)
|
- [Raiffeisen Schweiz Genossenschaft](https://www.raiffeisen.ch)
|
||||||
- [RepreZen API Studio](https://www.reprezen.com/swagger-openapi-code-generation-api-first-microservices-enterprise-development)
|
- [RepreZen API Studio](https://www.reprezen.com/swagger-openapi-code-generation-api-first-microservices-enterprise-development)
|
||||||
- [REST United](https://restunited.com)
|
- [REST United](https://restunited.com)
|
||||||
|
- [Suva](https://www.suva.ch/)
|
||||||
- [Telstra](https://dev.telstra.com)
|
- [Telstra](https://dev.telstra.com)
|
||||||
- [unblu inc.](https://www.unblu.com/)
|
- [unblu inc.](https://www.unblu.com/)
|
||||||
|
|
||||||
@ -482,7 +484,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
|
|||||||
- 2018/05/15 - [REST API仕様からAPIクライアントやスタブサーバを自動生成する「OpenAPI Generator」オープンソースで公開。Swagger Codegenからのフォーク](https://www.publickey1.jp/blog/18/rest_apiapiopenapi_generatorswagger_generator.html) by [Publickey](https://www.publickey1.jp)
|
- 2018/05/15 - [REST API仕様からAPIクライアントやスタブサーバを自動生成する「OpenAPI Generator」オープンソースで公開。Swagger Codegenからのフォーク](https://www.publickey1.jp/blog/18/rest_apiapiopenapi_generatorswagger_generator.html) by [Publickey](https://www.publickey1.jp)
|
||||||
- 2018/06/08 - [Swagger Codegen is now OpenAPI Generator](https://angular.schule/blog/2018-06-swagger-codegen-is-now-openapi-generator) by [JohannesHoppe](https://github.com/JohannesHoppe)
|
- 2018/06/08 - [Swagger Codegen is now OpenAPI Generator](https://angular.schule/blog/2018-06-swagger-codegen-is-now-openapi-generator) by [JohannesHoppe](https://github.com/JohannesHoppe)
|
||||||
- 2018/06/21 - [Connect your JHipster apps to the world of APIs with OpenAPI and gRPC](https://fr.slideshare.net/chbornet/jhipster-conf-2018-connect-your-jhipster-apps-to-the-world-of-apis-with-openapi-and-grpc) by [Christophe Bornet](https://github.com/cbornet) at [JHipster Conf 2018](https://jhipster-conf.github.io/)
|
- 2018/06/21 - [Connect your JHipster apps to the world of APIs with OpenAPI and gRPC](https://fr.slideshare.net/chbornet/jhipster-conf-2018-connect-your-jhipster-apps-to-the-world-of-apis-with-openapi-and-grpc) by [Christophe Bornet](https://github.com/cbornet) at [JHipster Conf 2018](https://jhipster-conf.github.io/)
|
||||||
- 2018/06/27 - [Lessons Learned from Leading an Open-Source Project Supporting 30+ Programming Languages](https://speakerdeck.com/wing328/lessons-learned-from-leading-an-open-source-project-supporting-30-plus-programming-languages) - [William Cheng](https://github.com/wing328) at [LinuxCon + ContainerCon + CloudOpen China 2018](https://www.lfasiallc.com/events/lc3-2018/)
|
- 2018/06/27 - [Lessons Learned from Leading an Open-Source Project Supporting 30+ Programming Languages](https://speakerdeck.com/wing328/lessons-learned-from-leading-an-open-source-project-supporting-30-plus-programming-languages) - [William Cheng](https://github.com/wing328) at [LinuxCon + ContainerCon + CloudOpen China 2018](http://bit.ly/2waDKKX)
|
||||||
- 2018/07/19 - [OpenAPI Generator Contribution Quickstart - RingCentral Go SDK](https://medium.com/ringcentral-developers/openapi-generator-for-go-contribution-quickstart-8cc72bf37b53) by [John Wang](https://github.com/grokify)
|
- 2018/07/19 - [OpenAPI Generator Contribution Quickstart - RingCentral Go SDK](https://medium.com/ringcentral-developers/openapi-generator-for-go-contribution-quickstart-8cc72bf37b53) by [John Wang](https://github.com/grokify)
|
||||||
|
|
||||||
## [6 - About Us](#table-of-contents)
|
## [6 - About Us](#table-of-contents)
|
||||||
|
@ -27,6 +27,6 @@ fi
|
|||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
ags="generate -t modules/openapi-generator/src/main/resources/php-silex -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g php-silex -o samples/server/petstore-security-test/silex $@"
|
ags="generate -t modules/openapi-generator/src/main/resources/php-silex -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g php-silex -o samples/server/petstore-security-test/silex/SwaggerServer $@"
|
||||||
|
|
||||||
java $JAVA_OPTS -jar $executable $ags
|
java $JAVA_OPTS -jar $executable $ags
|
||||||
|
@ -10,7 +10,7 @@ echo "Please press CTRL+C to stop or the script will continue in 5 seconds."
|
|||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# LIST OF SCRIPTS:
|
# LIST OF SCRIPTS:
|
||||||
./bin/ruby-petstore.sh > /dev/null 2>&1
|
./bin/ruby-client-petstore.sh > /dev/null 2>&1
|
||||||
./bin/java-petstore-all.sh > /dev/null 2>&1
|
./bin/java-petstore-all.sh > /dev/null 2>&1
|
||||||
./bin/java-jaxrs-petstore-server-all.sh > /dev/null 2>&1
|
./bin/java-jaxrs-petstore-server-all.sh > /dev/null 2>&1
|
||||||
./bin/spring-all-pestore.sh > /dev/null 2>&1
|
./bin/spring-all-pestore.sh > /dev/null 2>&1
|
||||||
|
@ -35,6 +35,8 @@ These names can be anything you like. If you are building a client for the white
|
|||||||
|
|
||||||
**NOTE** Convention is to use kebab casing for names passed to `-n`. Example, `scala-finatra` would become `ScalaFinatraGenerator`.
|
**NOTE** Convention is to use kebab casing for names passed to `-n`. Example, `scala-finatra` would become `ScalaFinatraGenerator`.
|
||||||
|
|
||||||
|
#### Use your new generator with the CLI
|
||||||
|
|
||||||
To compile your library, enter the `out/generators/my-codegen` directory, run `mvn package` and execute the generator:
|
To compile your library, enter the `out/generators/my-codegen` directory, run `mvn package` and execute the generator:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -50,11 +52,59 @@ Note the `my-codegen` is an option for `-g` now, and you can use the usual argum
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
java -cp out/codegens/customCodegen/target/my-codegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar \
|
java -cp out/codegens/customCodegen/target/my-codegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar \
|
||||||
io.openapitools.codegen.OpenAPIGenerator generate -g my-codegen \
|
org.openapitools.codegen.OpenAPIGenerator generate -g my-codegen \
|
||||||
-i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml \
|
-i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml \
|
||||||
-o ./out/myClient
|
-o ./out/myClient
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For Windows users:
|
||||||
|
```
|
||||||
|
java -cp out/codegens/customCodegen/target/my-codegen-openapi-generator-1.0.0.jar;modules/openapi-generator-cli/target/openapi-generator-cli.jar \
|
||||||
|
org.openapitools.codegen.OpenAPIGenerator generate -g my-codegen \
|
||||||
|
-i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml \
|
||||||
|
-o ./out/myClient
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Use your new generator with the maven plugin
|
||||||
|
|
||||||
|
Install your library to your local maven repository by running:
|
||||||
|
|
||||||
|
```
|
||||||
|
mvn clean install -f out/generators/my-codegen
|
||||||
|
```
|
||||||
|
|
||||||
|
This will install `org.openapitools:my-codegen-openapi-generator:1.0.0` to your local maven repository.
|
||||||
|
|
||||||
|
You can use this as additional dependency of the `openapi-generator-maven-plugin` plugin and use `my-codegen` as `generatorName` value:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.openapitools</groupId>
|
||||||
|
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||||
|
<version>${openapi-generator-version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>generate-client-code</id>
|
||||||
|
<goals>
|
||||||
|
<goal>generate</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<generatorName>my-codegen</generatorName>
|
||||||
|
<!-- other configuration ... -->
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openapitools</groupId>
|
||||||
|
<artifactId>my-codegen-openapi-generator</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
```
|
||||||
|
|
||||||
|
If you publish your artifact to a distant maven repository, do not forget to add this repository as `pluginRepository` for your project.
|
||||||
|
|
||||||
### Selective generation
|
### Selective generation
|
||||||
You may not want to generate *all* models in your project. Likewise you may want just one or two apis to be written. If that's the case, you can use system properties to control the output:
|
You may not want to generate *all* models in your project. Likewise you may want just one or two apis to be written. If that's the case, you can use system properties to control the output:
|
||||||
@ -106,6 +156,14 @@ java -Dapis -DmodelTests=false {opts}
|
|||||||
|
|
||||||
When using selective generation, _only_ the templates needed for the specific generation will be used.
|
When using selective generation, _only_ the templates needed for the specific generation will be used.
|
||||||
|
|
||||||
|
To skip models defined as the form parameters in "requestBody", please use `skipFormModel` (default to false) (this option is introduced at v3.2.2)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
java -DskipFormModel=true
|
||||||
|
```
|
||||||
|
|
||||||
|
This option will be helpful to skip model generation due to the form parameter, which is defined differently in OAS3 as there's no form parameter in OAS3
|
||||||
|
|
||||||
### Ignore file format
|
### Ignore file format
|
||||||
|
|
||||||
OpenAPI Generator supports a `.openapi-generator-ignore` file, similar to `.gitignore` or `.dockerignore` you're probably already familiar with.
|
OpenAPI Generator supports a `.openapi-generator-ignore` file, similar to `.gitignore` or `.dockerignore` you're probably already familiar with.
|
||||||
|
@ -24,6 +24,8 @@ import io.airlift.airline.ParseOptionMissingException;
|
|||||||
import io.airlift.airline.ParseOptionMissingValueException;
|
import io.airlift.airline.ParseOptionMissingValueException;
|
||||||
import org.openapitools.codegen.cmd.*;
|
import org.openapitools.codegen.cmd.*;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User: lanwen Date: 24.03.15 Time: 17:56
|
* User: lanwen Date: 24.03.15 Time: 17:56
|
||||||
* <p>
|
* <p>
|
||||||
@ -40,6 +42,7 @@ public class OpenAPIGenerator {
|
|||||||
Cli.<Runnable>builder("openapi-generator-cli")
|
Cli.<Runnable>builder("openapi-generator-cli")
|
||||||
.withDescription(
|
.withDescription(
|
||||||
String.format(
|
String.format(
|
||||||
|
Locale.ROOT,
|
||||||
"OpenAPI generator CLI (version %s).",
|
"OpenAPI generator CLI (version %s).",
|
||||||
version))
|
version))
|
||||||
.withDefaultCommand(ListGenerators.class)
|
.withDefaultCommand(ListGenerators.class)
|
||||||
@ -69,10 +72,10 @@ public class OpenAPIGenerator {
|
|||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
} catch (ParseArgumentsUnexpectedException e) {
|
} catch (ParseArgumentsUnexpectedException e) {
|
||||||
System.err.printf("[error] %s%n%nSee 'openapi-generator-cli help' for usage.%n", e.getMessage());
|
System.err.printf(Locale.ROOT,"[error] %s%n%nSee 'openapi-generator-cli help' for usage.%n", e.getMessage());
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
} catch (ParseOptionMissingException | ParseOptionMissingValueException e) {
|
} catch (ParseOptionMissingException | ParseOptionMissingValueException e) {
|
||||||
System.err.printf("[error] %s%n", e.getMessage());
|
System.err.printf(Locale.ROOT,"[error] %s%n", e.getMessage());
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.cmd;
|
package org.openapitools.codegen.cmd;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.LoggerContext;
|
||||||
|
import ch.qos.logback.core.spi.FilterAttachable;
|
||||||
import io.airlift.airline.Command;
|
import io.airlift.airline.Command;
|
||||||
import io.airlift.airline.Option;
|
import io.airlift.airline.Option;
|
||||||
import org.openapitools.codegen.ClientOptInput;
|
import org.openapitools.codegen.ClientOptInput;
|
||||||
@ -32,6 +34,7 @@ import static org.apache.commons.lang3.StringUtils.isNotEmpty;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User: lanwen Date: 24.03.15 Time: 20:22
|
* User: lanwen Date: 24.03.15 Time: 20:22
|
||||||
@ -199,8 +202,23 @@ public class Generate implements Runnable {
|
|||||||
description = "Skips the default behavior of validating an input specification.")
|
description = "Skips the default behavior of validating an input specification.")
|
||||||
private Boolean skipValidateSpec;
|
private Boolean skipValidateSpec;
|
||||||
|
|
||||||
|
@Option(name = {"--log-to-stderr"},
|
||||||
|
title = "Log to STDERR",
|
||||||
|
description = "write all log messages (not just errors) to STDOUT."
|
||||||
|
+ " Useful for piping the JSON output of debug options (e.g. `-DdebugOperations`) to an external parser directly while testing a generator.")
|
||||||
|
private Boolean logToStderr;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (logToStderr != null) {
|
||||||
|
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||||
|
Stream.of(Logger.ROOT_LOGGER_NAME, "io.swagger", "org.openapitools")
|
||||||
|
.map(lc::getLogger)
|
||||||
|
.peek(logger -> logger.detachAppender("STDOUT"))
|
||||||
|
.reduce((logger, next) -> logger.getName().equals(Logger.ROOT_LOGGER_NAME) ? logger : next)
|
||||||
|
.map(root -> root.getAppender("STDERR"))
|
||||||
|
.ifPresent(FilterAttachable::clearAllFilters);
|
||||||
|
}
|
||||||
|
|
||||||
// attempt to read from config file
|
// attempt to read from config file
|
||||||
CodegenConfigurator configurator = CodegenConfigurator.fromFile(configFile);
|
CodegenConfigurator configurator = CodegenConfigurator.fromFile(configFile);
|
||||||
|
@ -21,6 +21,8 @@ import ch.lambdaj.collection.LambdaIterable;
|
|||||||
import io.airlift.airline.Command;
|
import io.airlift.airline.Command;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import static ch.lambdaj.Lambda.on;
|
import static ch.lambdaj.Lambda.on;
|
||||||
import static ch.lambdaj.collection.LambdaCollections.with;
|
import static ch.lambdaj.collection.LambdaCollections.with;
|
||||||
import static java.util.ServiceLoader.load;
|
import static java.util.ServiceLoader.load;
|
||||||
@ -34,6 +36,6 @@ public class Langs implements Runnable {
|
|||||||
public void run() {
|
public void run() {
|
||||||
LambdaIterable<String> langs =
|
LambdaIterable<String> langs =
|
||||||
with(load(CodegenConfig.class)).extract(on(CodegenConfig.class).getName());
|
with(load(CodegenConfig.class)).extract(on(CodegenConfig.class).getName());
|
||||||
System.out.printf("Available languages (generators): %s%n", langs);
|
System.out.printf(Locale.ROOT, "Available languages (generators): %s%n", langs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import org.openapitools.codegen.CodegenType;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
// NOTE: List can later have subcommands such as list languages, list types, list frameworks, etc.
|
// NOTE: List can later have subcommands such as list languages, list types, list frameworks, etc.
|
||||||
@Command(name = "list", description = "Lists the available generators")
|
@Command(name = "list", description = "Lists the available generators")
|
||||||
@ -53,6 +54,6 @@ public class ListGenerators implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.printf("%s%n", sb.toString());
|
System.out.printf(Locale.ROOT,"%s%n", sb.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
This document describes the gradle plugin for OpenAPI Generator.
|
This document describes the gradle plugin for OpenAPI Generator.
|
||||||
|
|
||||||
|
This gradle plugin offers a declarative DSL via _extensions_ (these are Gradle project extensions).
|
||||||
|
These map almost fully 1:1 with the options you'd pass to the CLI or Maven plugin. The plugin maps the extensions to a task of the same name to provide a clean API. If you're interested in the extension/task mapping concept from a high-level, you can https://docs.gradle.org/current/userguide/custom_plugins.html#sec:mapping_extension_properties_to_task_properties[check out Gradle's docs].
|
||||||
|
|
||||||
== Tasks
|
== Tasks
|
||||||
|
|
||||||
Tasks are listed under the "OpenAPI Tools" tasks heading.
|
Tasks are listed under the "OpenAPI Tools" tasks heading.
|
||||||
@ -24,6 +27,17 @@ Tasks are listed under the "OpenAPI Tools" tasks heading.
|
|||||||
|Validates an Open API 2.0 or 3.x specification document.
|
|Validates an Open API 2.0 or 3.x specification document.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
The plugin implements the above tasks as project extensions of the same name. If you'd like to declare
|
||||||
|
these tasks as dependencies to other tasks (using `dependsOn`), you'll need a task reference. e.g.:
|
||||||
|
|
||||||
|
```
|
||||||
|
compileJava.dependsOn tasks.openApiGenerate
|
||||||
|
```
|
||||||
|
====
|
||||||
|
|
||||||
== Plugin Setup
|
== Plugin Setup
|
||||||
|
|
||||||
[source,groovy]
|
[source,groovy]
|
||||||
@ -34,7 +48,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "org.openapitools:openapi-generator-gradle-plugin:3.2.1"
|
classpath "org.openapitools:openapi-generator-gradle-plugin:3.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,3 +469,65 @@ Run with --stacktrace option to get the stack trace. Run with --info or --debug
|
|||||||
----
|
----
|
||||||
$ ./gradlew openApiValidate --input=/Users/jim/projects/openapi-generator/modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
$ ./gradlew openApiValidate --input=/Users/jim/projects/openapi-generator/modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||||
----
|
----
|
||||||
|
|
||||||
|
=== Generate multiple sources
|
||||||
|
|
||||||
|
If you want to perform multiple generation tasks, you'd want to create a task that inherits from the `GenerateTask`.
|
||||||
|
Examples can be found in https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-gradle-plugin/samples/local-spec/build.gradle[samples/local-spec/build.gradle].
|
||||||
|
|
||||||
|
You can define any number of generator tasks; the generated code does _not_ need to be a JVM language.
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
task buildGoClient(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
|
||||||
|
generatorName = "go"
|
||||||
|
inputSpec = "$rootDir/petstore-v3.0.yaml".toString()
|
||||||
|
additionalProperties = [
|
||||||
|
packageName: "petstore"
|
||||||
|
]
|
||||||
|
outputDir = "$buildDir/go".toString()
|
||||||
|
configOptions = [
|
||||||
|
dateLibrary: "threetenp"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
task buildKotlinClient(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
|
||||||
|
generatorName = "kotlin"
|
||||||
|
inputSpec = "$rootDir/petstore-v3.0.yaml".toString()
|
||||||
|
outputDir = "$buildDir/kotlin".toString()
|
||||||
|
apiPackage = "org.openapitools.example.api"
|
||||||
|
invokerPackage = "org.openapitools.example.invoker"
|
||||||
|
modelPackage = "org.openapitools.example.model"
|
||||||
|
configOptions = [
|
||||||
|
dateLibrary: "java8"
|
||||||
|
]
|
||||||
|
systemProperties = [
|
||||||
|
modelDocs: "false"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
To execute your specs, you'd then do:
|
||||||
|
|
||||||
|
```
|
||||||
|
./gradlew buildGoClient buildKotlinClient
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to simplify the execution, you could create a new task with `dependsOn`.
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
task codegen(dependsOn: ['buildGoClient', 'buildKotlinClient'])
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, if you're generating the code on compile, you can add these as a dependency to `compileJava` or any other existing task.
|
||||||
|
You can also mix the default task `openApiGenerate` with custom tasks:
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
compileJava.dependsOn buildKotlinClient, tasks.openApiGenerate
|
||||||
|
```
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
`openApiGenerate` is a project extension _and_ a task. If you want to use this in `dependsOn`,
|
||||||
|
you need a task reference or instance. One way to do this is to access it as `tasks.openApiGenerate`.
|
||||||
|
|
||||||
|
You can run `gradle tasks --debug` to see this registration.
|
||||||
|
====
|
||||||
|
@ -17,5 +17,5 @@ gradle generateGoWithInvalidSpec
|
|||||||
The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example:
|
The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gradle -PopenApiGeneratorVersion=3.2.1 openApiValidate
|
gradle -PopenApiGeneratorVersion=3.2.2 openApiValidate
|
||||||
```
|
```
|
||||||
|
@ -1 +1 @@
|
|||||||
openApiGeneratorVersion=3.2.1
|
openApiGeneratorVersion=3.2.2
|
||||||
|
@ -11,7 +11,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase)
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.openapitools</groupId>
|
<groupId>org.openapitools</groupId>
|
||||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.2.2</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<goals>
|
<goals>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.openapitools</groupId>
|
<groupId>org.openapitools</groupId>
|
||||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.2.2</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<goals>
|
<goals>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.openapitools</groupId>
|
<groupId>org.openapitools</groupId>
|
||||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.2.2</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<goals>
|
<goals>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.openapitools</groupId>
|
<groupId>org.openapitools</groupId>
|
||||||
<artifactId>openapi-generator-maven-plugin</artifactId>
|
<artifactId>openapi-generator-maven-plugin</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.2.2</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<goals>
|
<goals>
|
||||||
|
@ -19,11 +19,16 @@ package org.openapitools.codegen.online.service;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import io.swagger.parser.OpenAPIParser;
|
import io.swagger.parser.OpenAPIParser;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.parser.core.models.ParseOptions;
|
|
||||||
import org.openapitools.codegen.*;
|
|
||||||
import io.swagger.v3.parser.core.models.AuthorizationValue;
|
|
||||||
import io.swagger.v3.core.util.Json;
|
import io.swagger.v3.core.util.Json;
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.parser.core.models.AuthorizationValue;
|
||||||
|
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||||
|
import org.openapitools.codegen.CliOption;
|
||||||
|
import org.openapitools.codegen.ClientOptInput;
|
||||||
|
import org.openapitools.codegen.ClientOpts;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenConfigLoader;
|
||||||
|
import org.openapitools.codegen.DefaultGenerator;
|
||||||
import org.openapitools.codegen.online.model.GeneratorInput;
|
import org.openapitools.codegen.online.model.GeneratorInput;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -34,6 +39,7 @@ import java.io.File;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class Generator {
|
public class Generator {
|
||||||
@ -44,7 +50,7 @@ public class Generator {
|
|||||||
try {
|
try {
|
||||||
config = CodegenConfigLoader.forName(language);
|
config = CodegenConfigLoader.forName(language);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, String.format("Unsupported target %s supplied. %s",
|
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, String.format(Locale.ROOT,"Unsupported target %s supplied. %s",
|
||||||
language, e));
|
language, e));
|
||||||
}
|
}
|
||||||
Map<String, CliOption> map = new LinkedHashMap<>();
|
Map<String, CliOption> map = new LinkedHashMap<>();
|
||||||
@ -77,7 +83,7 @@ public class Generator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String generate(String language, GeneratorInput opts, Type type) {
|
private static String generate(String language, GeneratorInput opts, Type type) {
|
||||||
LOGGER.debug(String.format("generate %s for %s", type.getTypeName(), language));
|
LOGGER.debug(String.format(Locale.ROOT,"generate %s for %s", type.getTypeName(), language));
|
||||||
if (opts == null) {
|
if (opts == null) {
|
||||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "No options were supplied");
|
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "No options were supplied");
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.OpenAPI;
|
|||||||
import io.swagger.v3.oas.models.Operation;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.security.SecurityScheme;
|
import io.swagger.v3.oas.models.security.SecurityScheme;
|
||||||
|
import io.swagger.v3.oas.models.servers.Server;
|
||||||
|
import io.swagger.v3.oas.models.servers.ServerVariable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -113,6 +115,10 @@ public interface CodegenConfig {
|
|||||||
|
|
||||||
List<CodegenSecurity> fromSecurity(Map<String, SecurityScheme> schemas);
|
List<CodegenSecurity> fromSecurity(Map<String, SecurityScheme> schemas);
|
||||||
|
|
||||||
|
List<CodegenServer> fromServers(List<Server> servers);
|
||||||
|
|
||||||
|
List<CodegenServerVariable> fromServerVariables(Map<String, ServerVariable> variables);
|
||||||
|
|
||||||
Set<String> defaultIncludes();
|
Set<String> defaultIncludes();
|
||||||
|
|
||||||
Map<String, String> typeMapping();
|
Map<String, String> typeMapping();
|
||||||
|
@ -31,6 +31,7 @@ public class CodegenConstants {
|
|||||||
public static final String API_TESTS = "apiTests";
|
public static final String API_TESTS = "apiTests";
|
||||||
public static final String API_DOCS = "apiDocs";
|
public static final String API_DOCS = "apiDocs";
|
||||||
public static final String WITH_XML = "withXml";
|
public static final String WITH_XML = "withXml";
|
||||||
|
public static final String SKIP_FORM_MODEL = "skipFormModel";
|
||||||
/* /end System Properties */
|
/* /end System Properties */
|
||||||
|
|
||||||
public static final String API_PACKAGE = "apiPackage";
|
public static final String API_PACKAGE = "apiPackage";
|
||||||
|
@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.ExternalDocumentation;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -76,7 +77,7 @@ public class CodegenModel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s(%s)", name, classname);
|
return String.format(Locale.ROOT, "%s(%s)", name, classname);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,6 +25,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -196,7 +197,7 @@ public class CodegenOperation {
|
|||||||
* @return true if act as Restful update method, false otherwise
|
* @return true if act as Restful update method, false otherwise
|
||||||
*/
|
*/
|
||||||
public boolean isRestfulUpdate() {
|
public boolean isRestfulUpdate() {
|
||||||
return Arrays.asList("PUT", "PATCH").contains(httpMethod.toUpperCase()) && isMemberPath();
|
return Arrays.asList("PUT", "PATCH").contains(httpMethod.toUpperCase(Locale.ROOT)) && isMemberPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -205,7 +206,7 @@ public class CodegenOperation {
|
|||||||
* @return true request method is PUT, PATCH or POST; false otherwise
|
* @return true request method is PUT, PATCH or POST; false otherwise
|
||||||
*/
|
*/
|
||||||
public boolean isBodyAllowed() {
|
public boolean isBodyAllowed() {
|
||||||
return Arrays.asList("PUT", "PATCH", "POST").contains(httpMethod.toUpperCase());
|
return Arrays.asList("PUT", "PATCH", "POST").contains(httpMethod.toUpperCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -232,7 +233,7 @@ public class CodegenOperation {
|
|||||||
* @return the substring
|
* @return the substring
|
||||||
*/
|
*/
|
||||||
private String pathWithoutBaseName() {
|
private String pathWithoutBaseName() {
|
||||||
return baseName != null ? path.replace("/" + baseName.toLowerCase(), "") : path;
|
return baseName != null ? path.replace("/" + baseName.toLowerCase(Locale.ROOT), "") : path;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -248,7 +249,7 @@ public class CodegenOperation {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s(%s)", baseName, path);
|
return String.format(Locale.ROOT, "%s(%s)", baseName, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -59,7 +59,9 @@ public class CodegenProperty implements Cloneable {
|
|||||||
public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBinary, isFile, isBoolean, isDate, isDateTime, isUuid;
|
public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBinary, isFile, isBoolean, isDate, isDateTime, isUuid;
|
||||||
public boolean isListContainer, isMapContainer;
|
public boolean isListContainer, isMapContainer;
|
||||||
public boolean isEnum;
|
public boolean isEnum;
|
||||||
public boolean isReadOnly = false;
|
public boolean isReadOnly;
|
||||||
|
public boolean isWriteOnly;
|
||||||
|
public boolean isNullable;
|
||||||
public List<String> _enum;
|
public List<String> _enum;
|
||||||
public Map<String, Object> allowableValues;
|
public Map<String, Object> allowableValues;
|
||||||
public CodegenProperty items;
|
public CodegenProperty items;
|
||||||
@ -437,6 +439,8 @@ public class CodegenProperty implements Cloneable {
|
|||||||
result = prime * result + ((isNotContainer ? 13:31));
|
result = prime * result + ((isNotContainer ? 13:31));
|
||||||
result = prime * result + ((isPrimitiveType ? 13:31));
|
result = prime * result + ((isPrimitiveType ? 13:31));
|
||||||
result = prime * result + ((isReadOnly ? 13:31));
|
result = prime * result + ((isReadOnly ? 13:31));
|
||||||
|
result = prime * result + ((isWriteOnly ? 13:31));
|
||||||
|
result = prime * result + ((isNullable ? 13:31));
|
||||||
result = prime * result + ((items == null) ? 0 : items.hashCode());
|
result = prime * result + ((items == null) ? 0 : items.hashCode());
|
||||||
result = prime * result + ((mostInnerItems == null) ? 0 : mostInnerItems.hashCode());
|
result = prime * result + ((mostInnerItems == null) ? 0 : mostInnerItems.hashCode());
|
||||||
result = prime * result + ((jsonSchema == null) ? 0 : jsonSchema.hashCode());
|
result = prime * result + ((jsonSchema == null) ? 0 : jsonSchema.hashCode());
|
||||||
@ -587,6 +591,12 @@ public class CodegenProperty implements Cloneable {
|
|||||||
if (this.isReadOnly != other.isReadOnly) {
|
if (this.isReadOnly != other.isReadOnly) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (this.isWriteOnly != other.isWriteOnly) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.isNullable != other.isNullable) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (this._enum != other._enum && (this._enum == null || !this._enum.equals(other._enum))) {
|
if (this._enum != other._enum && (this._enum == null || !this._enum.equals(other._enum))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -769,6 +779,8 @@ public class CodegenProperty implements Cloneable {
|
|||||||
", isMapContainer=" + isMapContainer +
|
", isMapContainer=" + isMapContainer +
|
||||||
", isEnum=" + isEnum +
|
", isEnum=" + isEnum +
|
||||||
", isReadOnly=" + isReadOnly +
|
", isReadOnly=" + isReadOnly +
|
||||||
|
", isWriteOnly=" + isWriteOnly+
|
||||||
|
", isNullable=" + isNullable +
|
||||||
", _enum=" + _enum +
|
", _enum=" + _enum +
|
||||||
", allowableValues=" + allowableValues +
|
", allowableValues=" + allowableValues +
|
||||||
", items=" + items +
|
", items=" + items +
|
||||||
|
@ -20,6 +20,7 @@ package org.openapitools.codegen;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class CodegenResponse {
|
public class CodegenResponse {
|
||||||
@ -47,7 +48,7 @@ public class CodegenResponse {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s(%s)", code, containerType);
|
return String.format(Locale.ROOT, "%s(%s)", code, containerType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.security.Scopes;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class CodegenSecurity {
|
public class CodegenSecurity {
|
||||||
@ -38,7 +39,7 @@ public class CodegenSecurity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s(%s)", name, type);
|
return String.format(Locale.ROOT, "%s(%s)", name, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
package org.openapitools.codegen;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class CodegenServer {
|
||||||
|
public String url;
|
||||||
|
public String description;
|
||||||
|
public List<CodegenServerVariable> variables;
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package org.openapitools.codegen;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class CodegenServerVariable {
|
||||||
|
public String name;
|
||||||
|
public String defaultValue;
|
||||||
|
public String description;
|
||||||
|
public List<String> enumValues;
|
||||||
|
}
|
@ -21,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
|
|||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public enum CodegenType {
|
public enum CodegenType {
|
||||||
@ -30,7 +31,7 @@ public enum CodegenType {
|
|||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public static CodegenType forValue(String value) {
|
public static CodegenType forValue(String value) {
|
||||||
return names.get(value.toLowerCase());
|
return names.get(value.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonValue
|
@JsonValue
|
||||||
|
@ -43,6 +43,8 @@ import io.swagger.v3.oas.models.responses.ApiResponses;
|
|||||||
import io.swagger.v3.oas.models.security.OAuthFlow;
|
import io.swagger.v3.oas.models.security.OAuthFlow;
|
||||||
import io.swagger.v3.oas.models.security.OAuthFlows;
|
import io.swagger.v3.oas.models.security.OAuthFlows;
|
||||||
import io.swagger.v3.oas.models.security.SecurityScheme;
|
import io.swagger.v3.oas.models.security.SecurityScheme;
|
||||||
|
import io.swagger.v3.oas.models.servers.Server;
|
||||||
|
import io.swagger.v3.oas.models.servers.ServerVariable;
|
||||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||||
|
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
@ -64,7 +66,9 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -72,7 +76,6 @@ import java.util.TreeSet;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
public class DefaultCodegen implements CodegenConfig {
|
public class DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class);
|
||||||
@ -182,7 +185,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
.get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString()));
|
.get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.DOCEXTENSION)){
|
if (additionalProperties.containsKey(CodegenConstants.DOCEXTENSION)) {
|
||||||
this.setDocExtension(String.valueOf(additionalProperties
|
this.setDocExtension(String.valueOf(additionalProperties
|
||||||
.get(CodegenConstants.DOCEXTENSION).toString()));
|
.get(CodegenConstants.DOCEXTENSION).toString()));
|
||||||
}
|
}
|
||||||
@ -355,7 +358,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
return "EMPTY";
|
return "EMPTY";
|
||||||
}
|
}
|
||||||
|
|
||||||
String var = value.replaceAll("\\W+", "_").toUpperCase();
|
String var = value.replaceAll("\\W+", "_").toUpperCase(Locale.ROOT);
|
||||||
if (var.matches("\\d.*")) {
|
if (var.matches("\\d.*")) {
|
||||||
return "_" + var;
|
return "_" + var;
|
||||||
} else {
|
} else {
|
||||||
@ -768,7 +771,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
public String toVarName(String name) {
|
public String toVarName(String name) {
|
||||||
if (reservedWords.contains(name)) {
|
if (reservedWords.contains(name)) {
|
||||||
return escapeReservedWord(name);
|
return escapeReservedWord(name);
|
||||||
} else if (((CharSequence) name).chars().anyMatch(character -> specialCharReplacements.keySet().contains( "" + ((char) character)))) {
|
} else if (((CharSequence) name).chars().anyMatch(character -> specialCharReplacements.keySet().contains("" + ((char) character)))) {
|
||||||
return escapeSpecialCharacters(name, null, null);
|
return escapeSpecialCharacters(name, null, null);
|
||||||
} else {
|
} else {
|
||||||
return name;
|
return name;
|
||||||
@ -786,7 +789,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
name = removeNonNameElementToCamelCase(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
name = removeNonNameElementToCamelCase(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||||
if (reservedWords.contains(name)) {
|
if (reservedWords.contains(name)) {
|
||||||
return escapeReservedWord(name);
|
return escapeReservedWord(name);
|
||||||
} else if (((CharSequence) name).chars().anyMatch(character -> specialCharReplacements.keySet().contains( "" + ((char) character)))) {
|
} else if (((CharSequence) name).chars().anyMatch(character -> specialCharReplacements.keySet().contains("" + ((char) character)))) {
|
||||||
return escapeSpecialCharacters(name, null, null);
|
return escapeSpecialCharacters(name, null, null);
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
@ -842,11 +845,11 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
if (charactersToAllow != null && charactersToAllow.contains(character)) {
|
if (charactersToAllow != null && charactersToAllow.contains(character)) {
|
||||||
return character;
|
return character;
|
||||||
} else if (specialCharReplacements.containsKey(character)) {
|
} else if (specialCharReplacements.containsKey(character)) {
|
||||||
return specialCharReplacements.get(character) + (appdendixToReplacement != null ? appdendixToReplacement: "");
|
return specialCharReplacements.get(character) + (appdendixToReplacement != null ? appdendixToReplacement : "");
|
||||||
} else {
|
} else {
|
||||||
return character;
|
return character;
|
||||||
}
|
}
|
||||||
}).reduce( (c1, c2) -> "" + c1 + c2).orElse(null);
|
}).reduce((c1, c2) -> "" + c1 + c2).orElse(null);
|
||||||
|
|
||||||
if (result != null) return result;
|
if (result != null) return result;
|
||||||
throw new RuntimeException("Word '" + name + "' could not be escaped.");
|
throw new RuntimeException("Word '" + name + "' could not be escaped.");
|
||||||
@ -1091,7 +1094,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
*/
|
*/
|
||||||
public String toInstantiationType(Schema schema) {
|
public String toInstantiationType(Schema schema) {
|
||||||
if (ModelUtils.isMapSchema(schema)) {
|
if (ModelUtils.isMapSchema(schema)) {
|
||||||
Schema additionalProperties = (Schema) schema.getAdditionalProperties();
|
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
|
||||||
String type = additionalProperties.getType();
|
String type = additionalProperties.getType();
|
||||||
if (null == type) {
|
if (null == type) {
|
||||||
LOGGER.error("No Type defined for Additional Property " + additionalProperties + "\n" //
|
LOGGER.error("No Type defined for Additional Property " + additionalProperties + "\n" //
|
||||||
@ -1680,13 +1683,13 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private CodegenDiscriminator createDiscriminator(String schemaName, Schema schema, Map<String, Schema> allDefinitions) {
|
private CodegenDiscriminator createDiscriminator(String schemaName, Schema schema, Map<String, Schema> allDefinitions) {
|
||||||
if(schema.getDiscriminator() == null) {
|
if (schema.getDiscriminator() == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
CodegenDiscriminator discriminator = new CodegenDiscriminator();
|
CodegenDiscriminator discriminator = new CodegenDiscriminator();
|
||||||
discriminator.setPropertyName(schema.getDiscriminator().getPropertyName());
|
discriminator.setPropertyName(schema.getDiscriminator().getPropertyName());
|
||||||
discriminator.setMapping(schema.getDiscriminator().getMapping());
|
discriminator.setMapping(schema.getDiscriminator().getMapping());
|
||||||
if(schema.getDiscriminator().getMapping() != null && !schema.getDiscriminator().getMapping().isEmpty()) {
|
if (schema.getDiscriminator().getMapping() != null && !schema.getDiscriminator().getMapping().isEmpty()) {
|
||||||
for (Entry<String, String> e : schema.getDiscriminator().getMapping().entrySet()) {
|
for (Entry<String, String> e : schema.getDiscriminator().getMapping().entrySet()) {
|
||||||
String name = ModelUtils.getSimpleRef(e.getValue());
|
String name = ModelUtils.getSimpleRef(e.getValue());
|
||||||
discriminator.getMappedModels().add(new MappedModel(e.getKey(), name));
|
discriminator.getMappedModels().add(new MappedModel(e.getKey(), name));
|
||||||
@ -1783,6 +1786,13 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
if (p.getReadOnly() != null) {
|
if (p.getReadOnly() != null) {
|
||||||
property.isReadOnly = p.getReadOnly();
|
property.isReadOnly = p.getReadOnly();
|
||||||
}
|
}
|
||||||
|
if (p.getWriteOnly() != null) {
|
||||||
|
property.isWriteOnly = p.getWriteOnly();
|
||||||
|
}
|
||||||
|
if (p.getNullable() != null) {
|
||||||
|
property.isNullable = p.getNullable();
|
||||||
|
}
|
||||||
|
|
||||||
if (p.getXml() != null) {
|
if (p.getXml() != null) {
|
||||||
if (p.getXml().getAttribute() != null) {
|
if (p.getXml().getAttribute() != null) {
|
||||||
property.isXmlAttribute = p.getXml().getAttribute();
|
property.isXmlAttribute = p.getXml().getAttribute();
|
||||||
@ -1995,7 +2005,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
property.maxItems = p.getMaxProperties();
|
property.maxItems = p.getMaxProperties();
|
||||||
|
|
||||||
// handle inner property
|
// handle inner property
|
||||||
CodegenProperty cp = fromProperty("inner", (Schema) p.getAdditionalProperties());
|
CodegenProperty cp = fromProperty("inner", ModelUtils.getAdditionalProperties(p));
|
||||||
updatePropertyForMap(property, cp);
|
updatePropertyForMap(property, cp);
|
||||||
} else { // model
|
} else { // model
|
||||||
// TODO revise the logic below
|
// TODO revise the logic below
|
||||||
@ -2257,7 +2267,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
for (String key : operation.getResponses().keySet()) {
|
for (String key : operation.getResponses().keySet()) {
|
||||||
ApiResponse response = operation.getResponses().get(key);
|
ApiResponse response = operation.getResponses().get(key);
|
||||||
addProducesInfo(openAPI, response, op);
|
addProducesInfo(openAPI, response, op);
|
||||||
CodegenResponse r = fromResponse(key, response);
|
CodegenResponse r = fromResponse(openAPI, key, response);
|
||||||
r.hasMore = true;
|
r.hasMore = true;
|
||||||
if (r.baseType != null &&
|
if (r.baseType != null &&
|
||||||
!defaultIncludes.contains(r.baseType) &&
|
!defaultIncludes.contains(r.baseType) &&
|
||||||
@ -2285,7 +2295,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
CodegenProperty innerProperty = fromProperty("response", as.getItems());
|
CodegenProperty innerProperty = fromProperty("response", as.getItems());
|
||||||
op.returnBaseType = innerProperty.baseType;
|
op.returnBaseType = innerProperty.baseType;
|
||||||
} else if (ModelUtils.isMapSchema(responseSchema)) {
|
} else if (ModelUtils.isMapSchema(responseSchema)) {
|
||||||
CodegenProperty innerProperty = fromProperty("response", (Schema) responseSchema.getAdditionalProperties());
|
CodegenProperty innerProperty = fromProperty("response", ModelUtils.getAdditionalProperties(responseSchema));
|
||||||
op.returnBaseType = innerProperty.baseType;
|
op.returnBaseType = innerProperty.baseType;
|
||||||
} else {
|
} else {
|
||||||
if (cm.complexType != null) {
|
if (cm.complexType != null) {
|
||||||
@ -2326,7 +2336,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
op.returnTypeIsPrimitive = true;
|
op.returnTypeIsPrimitive = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addHeaders(methodResponse, op.responseHeaders);
|
addHeaders(openAPI, methodResponse, op.responseHeaders);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2366,7 +2376,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
bodyParameterName = (String) op.vendorExtensions.get("x-codegen-request-body-name");
|
bodyParameterName = (String) op.vendorExtensions.get("x-codegen-request-body-name");
|
||||||
}
|
}
|
||||||
bodyParam = fromRequestBody(requestBody, schemas, imports, bodyParameterName);
|
bodyParam = fromRequestBody(requestBody, schemas, imports, bodyParameterName);
|
||||||
bodyParam.description = requestBody.getDescription();
|
bodyParam.description = escapeText(requestBody.getDescription());
|
||||||
postProcessParameter(bodyParam);
|
postProcessParameter(bodyParam);
|
||||||
|
|
||||||
bodyParams.add(bodyParam);
|
bodyParams.add(bodyParam);
|
||||||
@ -2443,7 +2453,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
op.bodyParam = bodyParam;
|
op.bodyParam = bodyParam;
|
||||||
op.httpMethod = httpMethod.toUpperCase();
|
op.httpMethod = httpMethod.toUpperCase(Locale.ROOT);
|
||||||
|
|
||||||
// move "required" parameters in front of "optional" parameters
|
// move "required" parameters in front of "optional" parameters
|
||||||
if (sortParamsByRequiredFlag) {
|
if (sortParamsByRequiredFlag) {
|
||||||
@ -2503,11 +2513,12 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
/**
|
/**
|
||||||
* Convert OAS Response object to Codegen Response object
|
* Convert OAS Response object to Codegen Response object
|
||||||
*
|
*
|
||||||
|
* @param openAPI a OAS object representing the spec
|
||||||
* @param responseCode HTTP response code
|
* @param responseCode HTTP response code
|
||||||
* @param response OAS Response object
|
* @param response OAS Response object
|
||||||
* @return Codegen Response object
|
* @return Codegen Response object
|
||||||
*/
|
*/
|
||||||
public CodegenResponse fromResponse(String responseCode, ApiResponse response) {
|
public CodegenResponse fromResponse(OpenAPI openAPI, String responseCode, ApiResponse response) {
|
||||||
CodegenResponse r = CodegenModelFactory.newInstance(CodegenModelType.RESPONSE);
|
CodegenResponse r = CodegenModelFactory.newInstance(CodegenModelType.RESPONSE);
|
||||||
if ("default".equals(responseCode)) {
|
if ("default".equals(responseCode)) {
|
||||||
r.code = "0";
|
r.code = "0";
|
||||||
@ -2524,7 +2535,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
if (response.getExtensions() != null && !response.getExtensions().isEmpty()) {
|
if (response.getExtensions() != null && !response.getExtensions().isEmpty()) {
|
||||||
r.vendorExtensions.putAll(response.getExtensions());
|
r.vendorExtensions.putAll(response.getExtensions());
|
||||||
}
|
}
|
||||||
addHeaders(response, r.headers);
|
addHeaders(openAPI, response, r.headers);
|
||||||
r.hasHeaders = !r.headers.isEmpty();
|
r.hasHeaders = !r.headers.isEmpty();
|
||||||
|
|
||||||
if (r.schema != null) {
|
if (r.schema != null) {
|
||||||
@ -2671,7 +2682,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (ModelUtils.isMapSchema(parameterSchema)) { // for map parameter
|
} else if (ModelUtils.isMapSchema(parameterSchema)) { // for map parameter
|
||||||
CodegenProperty codegenProperty = fromProperty("inner", (Schema) parameterSchema.getAdditionalProperties());
|
CodegenProperty codegenProperty = fromProperty("inner", ModelUtils.getAdditionalProperties(parameterSchema));
|
||||||
codegenParameter.items = codegenProperty;
|
codegenParameter.items = codegenProperty;
|
||||||
codegenParameter.mostInnerItems = codegenProperty.mostInnerItems;
|
codegenParameter.mostInnerItems = codegenProperty.mostInnerItems;
|
||||||
codegenParameter.baseType = codegenProperty.dataType;
|
codegenParameter.baseType = codegenProperty.dataType;
|
||||||
@ -2896,7 +2907,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
// TODO revise below as it should be replaced by ModelUtils.isByteArraySchema(parameterSchema)
|
// TODO revise below as it should be replaced by ModelUtils.isByteArraySchema(parameterSchema)
|
||||||
public boolean isDataTypeBinary(String dataType) {
|
public boolean isDataTypeBinary(String dataType) {
|
||||||
if (dataType != null) {
|
if (dataType != null) {
|
||||||
return dataType.toLowerCase().startsWith("byte");
|
return dataType.toLowerCase(Locale.ROOT).startsWith("byte");
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2905,7 +2916,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
// TODO revise below as it should be replaced by ModelUtils.isFileSchema(parameterSchema)
|
// TODO revise below as it should be replaced by ModelUtils.isFileSchema(parameterSchema)
|
||||||
public boolean isDataTypeFile(String dataType) {
|
public boolean isDataTypeFile(String dataType) {
|
||||||
if (dataType != null) {
|
if (dataType != null) {
|
||||||
return dataType.toLowerCase().equals("file");
|
return dataType.toLowerCase(Locale.ROOT).equals("file");
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2993,12 +3004,12 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
protected void setReservedWordsLowerCase(List<String> words) {
|
protected void setReservedWordsLowerCase(List<String> words) {
|
||||||
reservedWords = new HashSet<String>();
|
reservedWords = new HashSet<String>();
|
||||||
for (String word : words) {
|
for (String word : words) {
|
||||||
reservedWords.add(word.toLowerCase());
|
reservedWords.add(word.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isReservedWord(String word) {
|
protected boolean isReservedWord(String word) {
|
||||||
return word != null && reservedWords.contains(word.toLowerCase());
|
return word != null && reservedWords.contains(word.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3070,12 +3081,15 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
* @param response API response
|
* @param response API response
|
||||||
* @param properties list of codegen property
|
* @param properties list of codegen property
|
||||||
*/
|
*/
|
||||||
private void addHeaders(ApiResponse response, List<CodegenProperty> properties) {
|
private void addHeaders(OpenAPI openAPI, ApiResponse response, List<CodegenProperty> properties) {
|
||||||
if (response.getHeaders() != null) {
|
if (response.getHeaders() != null) {
|
||||||
for (Map.Entry<String, Header> headers : response.getHeaders().entrySet()) {
|
for (Map.Entry<String, Header> headers : response.getHeaders().entrySet()) {
|
||||||
CodegenProperty cp = fromProperty(headers.getKey(), headers.getValue().getSchema());
|
String description = headers.getValue().getDescription();
|
||||||
cp.setDescription(escapeText(headers.getValue().getDescription()));
|
// follow the $ref
|
||||||
cp.setUnescapedDescription(headers.getValue().getDescription());
|
Header header = ModelUtils.getReferencedHeader(openAPI, headers.getValue());
|
||||||
|
CodegenProperty cp = fromProperty(headers.getKey(), header.getSchema());
|
||||||
|
cp.setDescription(escapeText(description));
|
||||||
|
cp.setUnescapedDescription(description);
|
||||||
properties.add(cp);
|
properties.add(cp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3124,7 +3138,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
LOGGER.warn("generated unique operationId `" + uniqueName + "`");
|
LOGGER.warn("generated unique operationId `" + uniqueName + "`");
|
||||||
}
|
}
|
||||||
co.operationId = uniqueName;
|
co.operationId = uniqueName;
|
||||||
co.operationIdLowerCase = uniqueName.toLowerCase();
|
co.operationIdLowerCase = uniqueName.toLowerCase(Locale.ROOT);
|
||||||
co.operationIdCamelCase = DefaultCodegen.camelize(uniqueName);
|
co.operationIdCamelCase = DefaultCodegen.camelize(uniqueName);
|
||||||
co.operationIdSnakeCase = DefaultCodegen.underscore(uniqueName);
|
co.operationIdSnakeCase = DefaultCodegen.underscore(uniqueName);
|
||||||
opList.add(co);
|
opList.add(co);
|
||||||
@ -3170,7 +3184,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
word = word.replace('-', '_');
|
word = word.replace('-', '_');
|
||||||
// replace space with underscore
|
// replace space with underscore
|
||||||
word = word.replace(' ', '_');
|
word = word.replace(' ', '_');
|
||||||
word = word.toLowerCase();
|
word = word.toLowerCase(Locale.ROOT);
|
||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3334,7 +3348,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
* @param schemas The complete set of model definitions (schemas).
|
* @param schemas The complete set of model definitions (schemas).
|
||||||
* @return A mapping from model name to type alias
|
* @return A mapping from model name to type alias
|
||||||
*/
|
*/
|
||||||
private static Map<String, String> getAllAliases(Map<String, Schema> schemas) {
|
static Map<String, String> getAllAliases(Map<String, Schema> schemas) {
|
||||||
if (schemas == null || schemas.isEmpty()) {
|
if (schemas == null || schemas.isEmpty()) {
|
||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
@ -3377,7 +3391,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
.map(StringUtils::capitalize)
|
.map(StringUtils::capitalize)
|
||||||
.collect(Collectors.joining(""));
|
.collect(Collectors.joining(""));
|
||||||
if (result.length() > 0) {
|
if (result.length() > 0) {
|
||||||
result = result.substring(0, 1).toLowerCase() + result.substring(1);
|
result = result.substring(0, 1).toLowerCase(Locale.ROOT) + result.substring(1);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -3406,7 +3420,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
Pattern p = Pattern.compile("\\/(.?)");
|
Pattern p = Pattern.compile("\\/(.?)");
|
||||||
Matcher m = p.matcher(word);
|
Matcher m = p.matcher(word);
|
||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
word = m.replaceFirst("." + m.group(1)/*.toUpperCase()*/); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
word = m.replaceFirst("." + m.group(1)/*.toUpperCase(Locale.ROOT)*/); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3422,7 +3436,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
word = m.replaceFirst("" + Character.toUpperCase(m.group(1).charAt(0)) + m.group(1).substring(1)/*.toUpperCase()*/);
|
word = m.replaceFirst("" + Character.toUpperCase(m.group(1).charAt(0)) + m.group(1).substring(1)/*.toUpperCase(Locale.ROOT)*/);
|
||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3430,7 +3444,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
p = Pattern.compile("(\\.?)(\\w)([^\\.]*)$");
|
p = Pattern.compile("(\\.?)(\\w)([^\\.]*)$");
|
||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
if (m.find()) {
|
if (m.find()) {
|
||||||
String rep = m.group(1) + m.group(2).toUpperCase() + m.group(3);
|
String rep = m.group(1) + m.group(2).toUpperCase(Locale.ROOT) + m.group(3);
|
||||||
rep = rep.replaceAll("\\$", "\\\\\\$");
|
rep = rep.replaceAll("\\$", "\\\\\\$");
|
||||||
word = m.replaceAll(rep);
|
word = m.replaceAll(rep);
|
||||||
}
|
}
|
||||||
@ -3440,7 +3454,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
String original = m.group(2);
|
String original = m.group(2);
|
||||||
String upperCase = original.toUpperCase();
|
String upperCase = original.toUpperCase(Locale.ROOT);
|
||||||
if (original.equals(upperCase)) {
|
if (original.equals(upperCase)) {
|
||||||
word = word.replaceFirst("_", "");
|
word = word.replaceFirst("_", "");
|
||||||
} else {
|
} else {
|
||||||
@ -3453,7 +3467,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
p = Pattern.compile("(-)(.)");
|
p = Pattern.compile("(-)(.)");
|
||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
word = m.replaceFirst(m.group(2).toUpperCase());
|
word = m.replaceFirst(m.group(2).toUpperCase(Locale.ROOT));
|
||||||
m = p.matcher(word);
|
m = p.matcher(word);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3465,7 +3479,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
charAt = word.charAt(i);
|
charAt = word.charAt(i);
|
||||||
}
|
}
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
word = word.substring(0, i).toLowerCase() + word.substring(i);
|
word = word.substring(0, i).toLowerCase(Locale.ROOT) + word.substring(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove all underscore
|
// remove all underscore
|
||||||
@ -3488,7 +3502,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
*/
|
*/
|
||||||
public String apiDocFilename(String templateName, String tag) {
|
public String apiDocFilename(String templateName, String tag) {
|
||||||
String docExtension = getDocExtension();
|
String docExtension = getDocExtension();
|
||||||
String suffix = docExtension != null ? docExtension: apiDocTemplateFiles().get(templateName);
|
String suffix = docExtension != null ? docExtension : apiDocTemplateFiles().get(templateName);
|
||||||
return apiDocFileFolder() + File.separator + toApiDocFilename(tag) + suffix;
|
return apiDocFileFolder() + File.separator + toApiDocFilename(tag) + suffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4239,7 +4253,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
codegenParameter.isPrimitiveType = false;
|
codegenParameter.isPrimitiveType = false;
|
||||||
codegenParameter.isContainer = true;
|
codegenParameter.isContainer = true;
|
||||||
codegenParameter.isListContainer = true;
|
codegenParameter.isListContainer = true;
|
||||||
codegenParameter.description = s.getDescription();
|
codegenParameter.description = escapeText(s.getDescription());
|
||||||
codegenParameter.dataType = getTypeDeclaration(s);
|
codegenParameter.dataType = getTypeDeclaration(s);
|
||||||
if (codegenParameter.baseType != null && codegenParameter.enumName != null) {
|
if (codegenParameter.baseType != null && codegenParameter.enumName != null) {
|
||||||
codegenParameter.datatypeWithEnum = codegenParameter.dataType.replace(codegenParameter.baseType, codegenParameter.enumName);
|
codegenParameter.datatypeWithEnum = codegenParameter.dataType.replace(codegenParameter.baseType, codegenParameter.enumName);
|
||||||
@ -4365,7 +4379,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
CodegenParameter codegenParameter = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
|
CodegenParameter codegenParameter = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
|
||||||
codegenParameter.baseName = "UNKNOWN_BASE_NAME";
|
codegenParameter.baseName = "UNKNOWN_BASE_NAME";
|
||||||
codegenParameter.paramName = "UNKNOWN_PARAM_NAME";
|
codegenParameter.paramName = "UNKNOWN_PARAM_NAME";
|
||||||
codegenParameter.description = body.getDescription();
|
codegenParameter.description = escapeText(body.getDescription());
|
||||||
codegenParameter.required = body.getRequired() != null ? body.getRequired() : Boolean.FALSE;
|
codegenParameter.required = body.getRequired() != null ? body.getRequired() : Boolean.FALSE;
|
||||||
codegenParameter.isBodyParam = Boolean.TRUE;
|
codegenParameter.isBodyParam = Boolean.TRUE;
|
||||||
|
|
||||||
@ -4378,7 +4392,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ModelUtils.isMapSchema(schema)) {
|
if (ModelUtils.isMapSchema(schema)) {
|
||||||
Schema inner = (Schema) schema.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(schema);
|
||||||
if (inner == null) {
|
if (inner == null) {
|
||||||
inner = new StringSchema().description("//TODO automatically added by openapi-generator");
|
inner = new StringSchema().description("//TODO automatically added by openapi-generator");
|
||||||
schema.setAdditionalProperties(inner);
|
schema.setAdditionalProperties(inner);
|
||||||
@ -4423,7 +4437,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isEmpty(bodyParameterName)) {
|
if (StringUtils.isEmpty(bodyParameterName)) {
|
||||||
if(StringUtils.isEmpty(mostInnerItem.complexType)) {
|
if (StringUtils.isEmpty(mostInnerItem.complexType)) {
|
||||||
codegenParameter.baseName = "request_body";
|
codegenParameter.baseName = "request_body";
|
||||||
} else {
|
} else {
|
||||||
codegenParameter.baseName = mostInnerItem.complexType;
|
codegenParameter.baseName = mostInnerItem.complexType;
|
||||||
@ -4466,7 +4480,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
imports.add(codegenParameter.baseType);
|
imports.add(codegenParameter.baseType);
|
||||||
} else {
|
} else {
|
||||||
CodegenProperty codegenProperty = fromProperty("property", schema);
|
CodegenProperty codegenProperty = fromProperty("property", schema);
|
||||||
if (schema.getAdditionalProperties() != null) {// http body is map
|
if (ModelUtils.getAdditionalProperties(schema) != null) {// http body is map
|
||||||
LOGGER.error("Map should be supported. Please report to openapi-generator github repo about the issue.");
|
LOGGER.error("Map should be supported. Please report to openapi-generator github repo about the issue.");
|
||||||
} else if (codegenProperty != null) {
|
} else if (codegenProperty != null) {
|
||||||
String codegenModelName, codegenModelDescription;
|
String codegenModelName, codegenModelDescription;
|
||||||
@ -4588,4 +4602,38 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
public boolean isDataTypeString(String dataType) {
|
public boolean isDataTypeString(String dataType) {
|
||||||
return "String".equals(dataType);
|
return "String".equals(dataType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CodegenServer> fromServers(List<Server> servers) {
|
||||||
|
if (servers == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<CodegenServer> codegenServers = new LinkedList<>();
|
||||||
|
for (Server server : servers) {
|
||||||
|
CodegenServer cs = new CodegenServer();
|
||||||
|
cs.description = escapeText(server.getDescription());
|
||||||
|
cs.url = server.getUrl();
|
||||||
|
cs.variables = this.fromServerVariables(server.getVariables());
|
||||||
|
codegenServers.add(cs);
|
||||||
|
}
|
||||||
|
return codegenServers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CodegenServerVariable> fromServerVariables(Map<String, ServerVariable> variables) {
|
||||||
|
if (variables == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<CodegenServerVariable> codegenServerVariables = new LinkedList<>();
|
||||||
|
for (Entry<String, ServerVariable> variableEntry : variables.entrySet()) {
|
||||||
|
CodegenServerVariable codegenServerVariable = new CodegenServerVariable();
|
||||||
|
ServerVariable variable = variableEntry.getValue();
|
||||||
|
codegenServerVariable.defaultValue = variable.getDefault();
|
||||||
|
codegenServerVariable.description = escapeText(variable.getDescription());
|
||||||
|
codegenServerVariable.enumValues = variable.getEnum();
|
||||||
|
codegenServerVariable.name = variableEntry.getKey();
|
||||||
|
codegenServerVariables.add(codegenServerVariable);
|
||||||
|
}
|
||||||
|
return codegenServerVariables;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -286,7 +286,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
private void generateModelDocumentation(List<File> files, Map<String, Object> models, String modelName) throws IOException {
|
private void generateModelDocumentation(List<File> files, Map<String, Object> models, String modelName) throws IOException {
|
||||||
for (String templateName : config.modelDocTemplateFiles().keySet()) {
|
for (String templateName : config.modelDocTemplateFiles().keySet()) {
|
||||||
String docExtension = config.getDocExtension();
|
String docExtension = config.getDocExtension();
|
||||||
String suffix = docExtension!=null ? docExtension : config.modelDocTemplateFiles().get(templateName);
|
String suffix = docExtension != null ? docExtension : config.modelDocTemplateFiles().get(templateName);
|
||||||
String filename = config.modelDocFileFolder() + File.separator + config.toModelDocFilename(modelName) + suffix;
|
String filename = config.modelDocFileFolder() + File.separator + config.toModelDocFilename(modelName) + suffix;
|
||||||
if (!config.shouldOverwrite(filename)) {
|
if (!config.shouldOverwrite(filename)) {
|
||||||
LOGGER.info("Skipped overwriting " + filename);
|
LOGGER.info("Skipped overwriting " + filename);
|
||||||
@ -382,6 +382,10 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
} */
|
} */
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Boolean skipFormModel = System.getProperty(CodegenConstants.SKIP_FORM_MODEL) != null ?
|
||||||
|
Boolean.valueOf(System.getProperty(CodegenConstants.SKIP_FORM_MODEL)) :
|
||||||
|
getGeneratorPropertyDefaultSwitch(CodegenConstants.SKIP_FORM_MODEL, false);
|
||||||
|
|
||||||
// process models only
|
// process models only
|
||||||
for (String name : modelKeys) {
|
for (String name : modelKeys) {
|
||||||
try {
|
try {
|
||||||
@ -393,9 +397,14 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
|
|
||||||
// don't generate models that are not used as object (e.g. form parameters)
|
// don't generate models that are not used as object (e.g. form parameters)
|
||||||
if (unusedModels.contains(name)) {
|
if (unusedModels.contains(name)) {
|
||||||
LOGGER.debug("Model " + name + " not generated since it's marked as unused (due to form parameters)");
|
if (Boolean.FALSE.equals(skipFormModel)) {
|
||||||
|
// if skipFormModel sets to true, still generate the model and log the result
|
||||||
|
LOGGER.info("Model " + name + " (marked as unused due to form parameters) is generated due to skipFormModel=false (default)");
|
||||||
|
} else {
|
||||||
|
LOGGER.info("Model " + name + " not generated since it's marked as unused (due to form parameters) and skipFormModel set to true");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Schema schema = schemas.get(name);
|
Schema schema = schemas.get(name);
|
||||||
Map<String, Schema> schemaMap = new HashMap<>();
|
Map<String, Schema> schemaMap = new HashMap<>();
|
||||||
@ -754,6 +763,12 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
bundle.put("hasAuthMethods", true);
|
bundle.put("hasAuthMethods", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<CodegenServer> servers = config.fromServers(openAPI.getServers());
|
||||||
|
if (servers != null && !servers.isEmpty()) {
|
||||||
|
bundle.put("servers", servers);
|
||||||
|
bundle.put("hasServers", true);
|
||||||
|
}
|
||||||
|
|
||||||
if (openAPI.getExternalDocs() != null) {
|
if (openAPI.getExternalDocs() != null) {
|
||||||
bundle.put("externalDocs", openAPI.getExternalDocs());
|
bundle.put("externalDocs", openAPI.getExternalDocs());
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ public class InlineModelResolver {
|
|||||||
}
|
}
|
||||||
} else if (property instanceof MapSchema) {
|
} else if (property instanceof MapSchema) {
|
||||||
MapSchema mp = (MapSchema) property;
|
MapSchema mp = (MapSchema) property;
|
||||||
Schema innerProperty = (Schema) mp.getAdditionalProperties();
|
Schema innerProperty = ModelUtils.getAdditionalProperties(mp);
|
||||||
if (innerProperty instanceof ObjectSchema) {
|
if (innerProperty instanceof ObjectSchema) {
|
||||||
ObjectSchema op = (ObjectSchema) innerProperty;
|
ObjectSchema op = (ObjectSchema) innerProperty;
|
||||||
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
||||||
@ -431,7 +431,7 @@ public class InlineModelResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ModelUtils.isMapSchema(property)) {
|
if (ModelUtils.isMapSchema(property)) {
|
||||||
Schema inner = (Schema) property.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(property);
|
||||||
if (inner instanceof ObjectSchema) {
|
if (inner instanceof ObjectSchema) {
|
||||||
ObjectSchema op = (ObjectSchema) inner;
|
ObjectSchema op = (ObjectSchema) inner;
|
||||||
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
||||||
@ -519,7 +519,7 @@ public class InlineModelResolver {
|
|||||||
model.setDescription(description);
|
model.setDescription(description);
|
||||||
model.setName(object.getName());
|
model.setName(object.getName());
|
||||||
model.setExample(example);
|
model.setExample(example);
|
||||||
model.setItems((Schema) object.getAdditionalProperties());
|
model.setItems(ModelUtils.getAdditionalProperties(object));
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import io.swagger.v3.parser.core.models.AuthorizationValue;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -39,8 +40,11 @@ public class AuthParser {
|
|||||||
for (String part : parts) {
|
for (String part : parts) {
|
||||||
String[] kvPair = part.split(":");
|
String[] kvPair = part.split(":");
|
||||||
if (kvPair.length == 2) {
|
if (kvPair.length == 2) {
|
||||||
// FIXME replace the deprecated method by decode(string, encoding). Which encoding is used ? Default UTF-8 ?
|
try {
|
||||||
auths.add(new AuthorizationValue(URLDecoder.decode(kvPair[0]), URLDecoder.decode(kvPair[1]), "header"));
|
auths.add(new AuthorizationValue(URLDecoder.decode(kvPair[0], "UTF-8"), URLDecoder.decode(kvPair[1], "UTF-8"), "header"));
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
LOGGER.warn(e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,16 +19,33 @@ package org.openapitools.codegen.config;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
||||||
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import org.openapitools.codegen.*;
|
|
||||||
import org.openapitools.codegen.auth.AuthParser;
|
|
||||||
import io.swagger.parser.OpenAPIParser;
|
import io.swagger.parser.OpenAPIParser;
|
||||||
import io.swagger.v3.core.util.Json;
|
import io.swagger.v3.core.util.Json;
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.parser.core.models.AuthorizationValue;
|
import io.swagger.v3.parser.core.models.AuthorizationValue;
|
||||||
import io.swagger.v3.parser.core.models.ParseOptions;
|
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||||
import io.swagger.v3.parser.core.models.SwaggerParseResult;
|
import io.swagger.v3.parser.core.models.SwaggerParseResult;
|
||||||
import org.apache.commons.lang3.Validate;
|
import org.apache.commons.lang3.Validate;
|
||||||
import org.openapitools.codegen.languages.*;
|
import org.openapitools.codegen.CliOption;
|
||||||
|
import org.openapitools.codegen.ClientOptInput;
|
||||||
|
import org.openapitools.codegen.ClientOpts;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenConfigLoader;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
|
import org.openapitools.codegen.SpecValidationException;
|
||||||
|
import org.openapitools.codegen.auth.AuthParser;
|
||||||
|
import org.openapitools.codegen.languages.CSharpNancyFXServerCodegen;
|
||||||
|
import org.openapitools.codegen.languages.CppQt5ClientCodegen;
|
||||||
|
import org.openapitools.codegen.languages.CppRestSdkClientCodegen;
|
||||||
|
import org.openapitools.codegen.languages.CppTizenClientCodegen;
|
||||||
|
import org.openapitools.codegen.languages.JavaJerseyServerCodegen;
|
||||||
|
import org.openapitools.codegen.languages.PhpLumenServerCodegen;
|
||||||
|
import org.openapitools.codegen.languages.PhpSlimServerCodegen;
|
||||||
|
import org.openapitools.codegen.languages.PhpZendExpressivePathHandlerServerCodegen;
|
||||||
|
import org.openapitools.codegen.languages.RubySinatraServerCodegen;
|
||||||
|
import org.openapitools.codegen.languages.ScalaAkkaClientCodegen;
|
||||||
|
import org.openapitools.codegen.languages.ScalaHttpClientCodegen;
|
||||||
|
import org.openapitools.codegen.languages.SwiftClientCodegen;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -40,6 +57,7 @@ import java.nio.file.Paths;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -139,7 +157,7 @@ public class CodegenConfigurator implements Serializable {
|
|||||||
public CodegenConfigurator setGeneratorName(final String generatorName) {
|
public CodegenConfigurator setGeneratorName(final String generatorName) {
|
||||||
if (nameMigrationMap.containsKey(generatorName)) {
|
if (nameMigrationMap.containsKey(generatorName)) {
|
||||||
String newValue = nameMigrationMap.get(generatorName);
|
String newValue = nameMigrationMap.get(generatorName);
|
||||||
LOGGER.warn(String.format("The name '%s' is a deprecated. Please update to the new name of '%s'.", generatorName, newValue));
|
LOGGER.warn(String.format(Locale.ROOT, "The name '%s' is a deprecated. Please update to the new name of '%s'.", generatorName, newValue));
|
||||||
this.generatorName = newValue;
|
this.generatorName = newValue;
|
||||||
} else {
|
} else {
|
||||||
this.generatorName = generatorName;
|
this.generatorName = generatorName;
|
||||||
|
@ -236,10 +236,10 @@ public class ExampleGenerator {
|
|||||||
Map<String, Object> mp = new HashMap<String, Object>();
|
Map<String, Object> mp = new HashMap<String, Object>();
|
||||||
if (property.getName() != null) {
|
if (property.getName() != null) {
|
||||||
mp.put(property.getName(),
|
mp.put(property.getName(),
|
||||||
resolvePropertyToExample(propertyName, mediaType, (Schema) property.getAdditionalProperties(), processedModels));
|
resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(property), processedModels));
|
||||||
} else {
|
} else {
|
||||||
mp.put("key",
|
mp.put("key",
|
||||||
resolvePropertyToExample(propertyName, mediaType, (Schema) property.getAdditionalProperties(), processedModels));
|
resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(property), processedModels));
|
||||||
}
|
}
|
||||||
return mp;
|
return mp;
|
||||||
} else if (ModelUtils.isUUIDSchema(property)) {
|
} else if (ModelUtils.isUUIDSchema(property)) {
|
||||||
|
@ -25,9 +25,11 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Presents a processing utility for parsing and evaluating files containing common ignore patterns. (.openapi-generator-ignore)
|
* Presents a processing utility for parsing and evaluating files containing common ignore patterns. (.openapi-generator-ignore)
|
||||||
@ -82,30 +84,30 @@ public class CodegenIgnoreProcessor {
|
|||||||
loadCodegenRules(targetIgnoreFile);
|
loadCodegenRules(targetIgnoreFile);
|
||||||
this.ignoreFile = targetIgnoreFile;
|
this.ignoreFile = targetIgnoreFile;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOGGER.error(String.format("Could not process %s.", targetIgnoreFile.getName()), e.getMessage());
|
LOGGER.error(String.format(Locale.ROOT, "Could not process %s.", targetIgnoreFile.getName()), e.getMessage());
|
||||||
}
|
}
|
||||||
} else if (!".swagger-codegen-ignore".equals(targetIgnoreFile.getName())) {
|
} else if (!".swagger-codegen-ignore".equals(targetIgnoreFile.getName())) {
|
||||||
final File legacyIgnoreFile = new File(targetIgnoreFile.getParentFile(), ".swagger-codegen-ignore");
|
final File legacyIgnoreFile = new File(targetIgnoreFile.getParentFile(), ".swagger-codegen-ignore");
|
||||||
if (legacyIgnoreFile.exists() && legacyIgnoreFile.isFile()) {
|
if (legacyIgnoreFile.exists() && legacyIgnoreFile.isFile()) {
|
||||||
LOGGER.info(String.format("Legacy support: '%s' file renamed to '%s'.", legacyIgnoreFile.getName(), targetIgnoreFile.getName()));
|
LOGGER.info(String.format(Locale.ROOT, "Legacy support: '%s' file renamed to '%s'.", legacyIgnoreFile.getName(), targetIgnoreFile.getName()));
|
||||||
try {
|
try {
|
||||||
Files.move(legacyIgnoreFile, targetIgnoreFile);
|
Files.move(legacyIgnoreFile, targetIgnoreFile);
|
||||||
loadFromFile(targetIgnoreFile);
|
loadFromFile(targetIgnoreFile);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOGGER.error(String.format("Could not rename file: %s", e.getMessage()));
|
LOGGER.error(String.format(Locale.ROOT, "Could not rename file: %s", e.getMessage()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// log info message
|
// log info message
|
||||||
LOGGER.info(String.format("No %s file found.", targetIgnoreFile.getName()));
|
LOGGER.info(String.format(Locale.ROOT, "No %s file found.", targetIgnoreFile.getName()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// log info message
|
// log info message
|
||||||
LOGGER.info(String.format("No %s file found.", targetIgnoreFile.getName()));
|
LOGGER.info(String.format(Locale.ROOT, "No %s file found.", targetIgnoreFile.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadCodegenRules(final File codegenIgnore) throws IOException {
|
void loadCodegenRules(final File codegenIgnore) throws IOException {
|
||||||
try (BufferedReader reader = new BufferedReader(new FileReader(codegenIgnore))) {
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(codegenIgnore), Charset.forName("UTF-8")))) {
|
||||||
String line;
|
String line;
|
||||||
|
|
||||||
// NOTE: Comments that start with a : (e.g. //:) are pulled from git documentation for .gitignore
|
// NOTE: Comments that start with a : (e.g. //:) are pulled from git documentation for .gitignore
|
||||||
|
@ -183,7 +183,6 @@ public abstract class Rule {
|
|||||||
|
|
||||||
}
|
}
|
||||||
} catch (ParserException e) {
|
} catch (ParserException e) {
|
||||||
e.printStackTrace();
|
|
||||||
return new InvalidRule(null, definition, e.getMessage());
|
return new InvalidRule(null, definition, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,13 +19,11 @@ package org.openapitools.codegen.languages;
|
|||||||
|
|
||||||
import com.samskivert.mustache.Escapers;
|
import com.samskivert.mustache.Escapers;
|
||||||
import com.samskivert.mustache.Mustache;
|
import com.samskivert.mustache.Mustache;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.oas.models.Operation;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||||
|
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
@ -43,6 +41,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
abstract public class AbstractAdaCodegen extends DefaultCodegen implements CodegenConfig {
|
abstract public class AbstractAdaCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
@ -180,7 +179,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String toFilename(String name) {
|
public String toFilename(String name) {
|
||||||
return name.replace(".", "-").toLowerCase();
|
return name.replace(".", "-").toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -329,7 +328,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
|
|||||||
return getTypeDeclaration(inner) + "_Vectors.Vector";
|
return getTypeDeclaration(inner) + "_Vectors.Vector";
|
||||||
}
|
}
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
String name = getTypeDeclaration(inner) + "_Map";
|
String name = getTypeDeclaration(inner) + "_Map";
|
||||||
if (name.startsWith("Swagger.")) {
|
if (name.startsWith("Swagger.")) {
|
||||||
return name;
|
return name;
|
||||||
@ -391,7 +390,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
|
|||||||
String mt = media.get("mediaType");
|
String mt = media.get("mediaType");
|
||||||
if (mt != null) {
|
if (mt != null) {
|
||||||
mt = mt.replace('/', '_');
|
mt = mt.replace('/', '_');
|
||||||
media.put("adaMediaType", mt.toUpperCase());
|
media.put("adaMediaType", mt.toUpperCase(Locale.ROOT));
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,12 @@
|
|||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenModel;
|
||||||
import org.openapitools.codegen.CodegenOperation;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
import org.openapitools.codegen.CodegenParameter;
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
|
||||||
import org.openapitools.codegen.CodegenProperty;
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
import org.openapitools.codegen.CodegenType;
|
import org.openapitools.codegen.CodegenType;
|
||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
@ -90,7 +90,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
// sanitize name
|
// sanitize name
|
||||||
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||||
|
|
||||||
if (name.toLowerCase().matches("^_*class$")) {
|
if (name.toLowerCase(Locale.ROOT).matches("^_*class$")) {
|
||||||
return "propertyClass";
|
return "propertyClass";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (startsWithTwoUppercaseLetters(name)) {
|
if (startsWithTwoUppercaseLetters(name)) {
|
||||||
name = name.substring(0, 2).toLowerCase() + name.substring(2);
|
name = name.substring(0, 2).toLowerCase(Locale.ROOT) + name.substring(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// camelize (lower first character) the variable name
|
// camelize (lower first character) the variable name
|
||||||
@ -125,7 +125,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
private boolean startsWithTwoUppercaseLetters(String name) {
|
private boolean startsWithTwoUppercaseLetters(String name) {
|
||||||
boolean startsWithTwoUppercaseLetters = false;
|
boolean startsWithTwoUppercaseLetters = false;
|
||||||
if (name.length() > 1) {
|
if (name.length() > 1) {
|
||||||
startsWithTwoUppercaseLetters = name.substring(0, 2).equals(name.substring(0, 2).toUpperCase());
|
startsWithTwoUppercaseLetters = name.substring(0, 2).equals(name.substring(0, 2).toUpperCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
return startsWithTwoUppercaseLetters;
|
return startsWithTwoUppercaseLetters;
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
if (inner == null) {
|
if (inner == null) {
|
||||||
LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined");
|
LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined");
|
||||||
@ -225,15 +225,15 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return String.format(pattern, getTypeDeclaration(ap.getItems()));
|
return String.format(Locale.ROOT, pattern, getTypeDeclaration(ap.getItems()));
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
final MapSchema ap = (MapSchema) p;
|
final MapSchema ap = (MapSchema) p;
|
||||||
final String pattern = "new HashMap<%s>()";
|
final String pattern = "new HashMap<%s>()";
|
||||||
if (ap.getAdditionalProperties() == null) {
|
if (ModelUtils.getAdditionalProperties(ap) == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return String.format(pattern, String.format("String, %s", getTypeDeclaration((Schema) ap.getAdditionalProperties())));
|
return String.format(Locale.ROOT, pattern, String.format(Locale.ROOT, "String, %s", getTypeDeclaration(ModelUtils.getAdditionalProperties(ap))));
|
||||||
} else if (ModelUtils.isLongSchema(p)) {
|
} else if (ModelUtils.isLongSchema(p)) {
|
||||||
if (p.getDefault() != null) {
|
if (p.getDefault() != null) {
|
||||||
return p.getDefault().toString() + "l";
|
return p.getDefault().toString() + "l";
|
||||||
@ -297,7 +297,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
p.example = "'" + p.example + "'";
|
p.example = "'" + p.example + "'";
|
||||||
} else if ("".equals(p.example) || p.example == null && p.dataType != "Object") {
|
} else if ("".equals(p.example) || p.example == null && p.dataType != "Object") {
|
||||||
// Get an example object from the generated model
|
// Get an example object from the generated model
|
||||||
if (!isReservedWord(p.dataType.toLowerCase())) {
|
if (!isReservedWord(p.dataType.toLowerCase(Locale.ROOT))) {
|
||||||
p.example = p.dataType + ".getExample()";
|
p.example = p.dataType + ".getExample()";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -332,7 +332,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
} else if (example.isEmpty()) {
|
} else if (example.isEmpty()) {
|
||||||
example = "2000, 1, 23";
|
example = "2000, 1, 23";
|
||||||
} else {
|
} else {
|
||||||
LOGGER.warn(String.format("The example provided for property '%s' is not a valid RFC3339 date. Defaulting to '2000-01-23'. [%s]", p
|
LOGGER.warn(String.format(Locale.ROOT, "The example provided for property '%s' is not a valid RFC3339 date. Defaulting to '2000-01-23'. [%s]", p
|
||||||
.getName(), example));
|
.getName(), example));
|
||||||
example = "2000, 1, 23";
|
example = "2000, 1, 23";
|
||||||
}
|
}
|
||||||
@ -343,7 +343,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
} else if (example.isEmpty()) {
|
} else if (example.isEmpty()) {
|
||||||
example = "2000, 1, 23, 4, 56, 7";
|
example = "2000, 1, 23, 4, 56, 7";
|
||||||
} else {
|
} else {
|
||||||
LOGGER.warn(String.format("The example provided for property '%s' is not a valid RFC3339 datetime. Defaulting to '2000-01-23T04-56-07Z'. [%s]", p
|
LOGGER.warn(String.format(Locale.ROOT, "The example provided for property '%s' is not a valid RFC3339 datetime. Defaulting to '2000-01-23T04-56-07Z'. [%s]", p
|
||||||
.getName(), example));
|
.getName(), example));
|
||||||
example = "2000, 1, 23, 4, 56, 7";
|
example = "2000, 1, 23, 4, 56, 7";
|
||||||
}
|
}
|
||||||
@ -366,7 +366,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
} else if (ModelUtils.isLongSchema(p)) {
|
} else if (ModelUtils.isLongSchema(p)) {
|
||||||
example = example.isEmpty() ? "123456789L" : example + "L";
|
example = example.isEmpty() ? "123456789L" : example + "L";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
example = "new " + getTypeDeclaration(p) + "{'key'=>" + toExampleValue((Schema) p.getAdditionalProperties()) + "}";
|
example = "new " + getTypeDeclaration(p) + "{'key'=>" + toExampleValue(ModelUtils.getAdditionalProperties(p)) + "}";
|
||||||
|
|
||||||
} else if (ModelUtils.isPasswordSchema(p)) {
|
} else if (ModelUtils.isPasswordSchema(p)) {
|
||||||
example = example.isEmpty() ? "password123" : escapeText(example);
|
example = example.isEmpty() ? "password123" : escapeText(example);
|
||||||
@ -526,7 +526,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(value) != null) {
|
if (getSymbolName(value) != null) {
|
||||||
return getSymbolName(value).toUpperCase();
|
return getSymbolName(value).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// number
|
// number
|
||||||
@ -540,7 +540,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String var = value.replaceAll("\\W+", "_").toUpperCase();
|
String var = value.replaceAll("\\W+", "_").toUpperCase(Locale.ROOT);
|
||||||
if (var.matches("\\d.*")) {
|
if (var.matches("\\d.*")) {
|
||||||
return "_" + var;
|
return "_" + var;
|
||||||
} else {
|
} else {
|
||||||
|
@ -234,7 +234,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) {
|
if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) {
|
||||||
LOGGER.warn(String.format("%s is not used by C# generators. Please use %s",
|
LOGGER.warn(String.format(Locale.ROOT, "%s is not used by C# generators. Please use %s",
|
||||||
CodegenConstants.INVOKER_PACKAGE, CodegenConstants.PACKAGE_NAME));
|
CodegenConstants.INVOKER_PACKAGE, CodegenConstants.PACKAGE_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,9 +313,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.INTERFACE_PREFIX)) {
|
if (additionalProperties.containsKey(CodegenConstants.INTERFACE_PREFIX)) {
|
||||||
String useInterfacePrefix = additionalProperties.get(CodegenConstants.INTERFACE_PREFIX).toString();
|
String useInterfacePrefix = additionalProperties.get(CodegenConstants.INTERFACE_PREFIX).toString();
|
||||||
if ("false".equals(useInterfacePrefix.toLowerCase())) {
|
if ("false".equals(useInterfacePrefix.toLowerCase(Locale.ROOT))) {
|
||||||
setInterfacePrefix("");
|
setInterfacePrefix("");
|
||||||
} else if (!"true".equals(useInterfacePrefix.toLowerCase())) {
|
} else if (!"true".equals(useInterfacePrefix.toLowerCase(Locale.ROOT))) {
|
||||||
// NOTE: if user passes "true" explicitly, we use the default I- prefix. The other supported case here is a custom prefix.
|
// NOTE: if user passes "true" explicitly, we use the default I- prefix. The other supported case here is a custom prefix.
|
||||||
setInterfacePrefix(sanitizeName(useInterfacePrefix));
|
setInterfacePrefix(sanitizeName(useInterfacePrefix));
|
||||||
}
|
}
|
||||||
@ -768,8 +768,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
// NOTE: typeMapping here supports things like string/String, long/Long, datetime/DateTime as lowercase keys.
|
// NOTE: typeMapping here supports things like string/String, long/Long, datetime/DateTime as lowercase keys.
|
||||||
// Should we require explicit casing here (values are not insensitive).
|
// Should we require explicit casing here (values are not insensitive).
|
||||||
// TODO avoid using toLowerCase as typeMapping should be case-sensitive
|
// TODO avoid using toLowerCase as typeMapping should be case-sensitive
|
||||||
if (typeMapping.containsKey(openAPIType.toLowerCase())) {
|
if (typeMapping.containsKey(openAPIType.toLowerCase(Locale.ROOT))) {
|
||||||
type = typeMapping.get(openAPIType.toLowerCase());
|
type = typeMapping.get(openAPIType.toLowerCase(Locale.ROOT));
|
||||||
if (languageSpecificPrimitives.contains(type)) {
|
if (languageSpecificPrimitives.contains(type)) {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
@ -811,7 +811,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
return getArrayTypeDeclaration((ArraySchema) p);
|
return getArrayTypeDeclaration((ArraySchema) p);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
// Should we also support maps of maps?
|
// Should we also support maps of maps?
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "<string, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<string, " + getTypeDeclaration(inner) + ">";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
|
@ -17,15 +17,11 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
|
||||||
|
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
import io.swagger.v3.core.util.Json;
|
import io.swagger.v3.core.util.Json;
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
@ -46,9 +42,12 @@ import java.util.HashSet;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
|
|
||||||
public abstract class AbstractEiffelCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractEiffelCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractEiffelCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractEiffelCodegen.class);
|
||||||
|
|
||||||
@ -169,13 +168,13 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
@Override
|
@Override
|
||||||
public String toParamName(String name) {
|
public String toParamName(String name) {
|
||||||
// params should be lowercase. E.g. "person: PERSON"
|
// params should be lowercase. E.g. "person: PERSON"
|
||||||
return toVarName(name).toLowerCase();
|
return toVarName(name).toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toModelName(String name) {
|
public String toModelName(String name) {
|
||||||
// phone_number => PHONE_NUMBER
|
// phone_number => PHONE_NUMBER
|
||||||
return toModelFilename(name).toUpperCase();
|
return toModelFilename(name).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -221,7 +220,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toApiTestFilename(String name) {
|
public String toApiTestFilename(String name) {
|
||||||
return toApiName(name).toLowerCase() + "_test";
|
return toApiName(name).toLowerCase(Locale.ROOT) + "_test";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -229,7 +228,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
if (name.length() == 0) {
|
if (name.length() == 0) {
|
||||||
return "DEFAULT_API";
|
return "DEFAULT_API";
|
||||||
}
|
}
|
||||||
return name.toUpperCase() + "_API";
|
return name.toUpperCase(Locale.ROOT) + "_API";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -269,7 +268,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isNullOrEmpty(model.parentSchema)) {
|
if (!isNullOrEmpty(model.parentSchema)) {
|
||||||
model.parentSchema = model.parentSchema.toLowerCase();
|
model.parentSchema = model.parentSchema.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,7 +289,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return "LIST [" + getTypeDeclaration(inner) + "]";
|
return "LIST [" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
@ -352,7 +351,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
for (CodegenOperation operation : operations) {
|
for (CodegenOperation operation : operations) {
|
||||||
// http method verb conversion (e.g. PUT => Put)
|
// http method verb conversion (e.g. PUT => Put)
|
||||||
|
|
||||||
operation.httpMethod = camelize(operation.httpMethod.toLowerCase());
|
operation.httpMethod = camelize(operation.httpMethod.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove model imports to avoid error
|
// remove model imports to avoid error
|
||||||
@ -557,7 +556,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
@Override
|
@Override
|
||||||
public String toInstantiationType(Schema p) {
|
public String toInstantiationType(Schema p) {
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema additionalProperties2 = (Schema) p.getAdditionalProperties();
|
Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
|
||||||
String type = additionalProperties2.getType();
|
String type = additionalProperties2.getType();
|
||||||
if (null == type) {
|
if (null == type) {
|
||||||
LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" //
|
LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" //
|
||||||
@ -575,7 +574,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String unCamelize(String name) {
|
public String unCamelize(String name) {
|
||||||
return name.replaceAll("(.)(\\p{Upper})", "$1_$2").toLowerCase();
|
return name.replaceAll("(.)(\\p{Upper})", "$1_$2").toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toEiffelFeatureStyle(String operationId) {
|
public String toEiffelFeatureStyle(String operationId) {
|
||||||
|
@ -17,22 +17,16 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.core.util.Yaml;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public abstract class AbstractGoCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractGoCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractGoCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractGoCodegen.class);
|
||||||
@ -258,7 +252,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return "[]" + getTypeDeclaration(inner);
|
return "[]" + getTypeDeclaration(inner);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[string]" + getTypeDeclaration(inner);
|
return getSchemaType(p) + "[string]" + getTypeDeclaration(inner);
|
||||||
}
|
}
|
||||||
//return super.getTypeDeclaration(p);
|
//return super.getTypeDeclaration(p);
|
||||||
@ -335,7 +329,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
||||||
for (CodegenOperation operation : operations) {
|
for (CodegenOperation operation : operations) {
|
||||||
// http method verb conversion (e.g. PUT => Put)
|
// http method verb conversion (e.g. PUT => Put)
|
||||||
operation.httpMethod = camelize(operation.httpMethod.toLowerCase());
|
operation.httpMethod = camelize(operation.httpMethod.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove model imports to avoid error
|
// remove model imports to avoid error
|
||||||
@ -389,7 +383,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
} else {
|
} else {
|
||||||
// Map optional type to dataType
|
// Map optional type to dataType
|
||||||
param.vendorExtensions.put("x-optionalDataType",
|
param.vendorExtensions.put("x-optionalDataType",
|
||||||
param.dataType.substring(0, 1).toUpperCase() + param.dataType.substring(1));
|
param.dataType.substring(0, 1).toUpperCase(Locale.ROOT) + param.dataType.substring(1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,11 +556,11 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(name) != null) {
|
if (getSymbolName(name) != null) {
|
||||||
return getSymbolName(name).toUpperCase();
|
return getSymbolName(name).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String enumName = sanitizeName(underscore(name).toUpperCase());
|
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
|
||||||
enumName = enumName.replaceFirst("^_", "");
|
enumName = enumName.replaceFirst("^_", "");
|
||||||
enumName = enumName.replaceFirst("_$", "");
|
enumName = enumName.replaceFirst("_$", "");
|
||||||
|
|
||||||
@ -581,7 +575,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumName(CodegenProperty property) {
|
public String toEnumName(CodegenProperty property) {
|
||||||
String enumName = underscore(toModelName(property.name)).toUpperCase();
|
String enumName = underscore(toModelName(property.name)).toUpperCase(Locale.ROOT);
|
||||||
|
|
||||||
// remove [] for array or map of enum
|
// remove [] for array or map of enum
|
||||||
enumName = enumName.replace("[]", "");
|
enumName = enumName.replace("[]", "");
|
||||||
|
@ -49,6 +49,7 @@ import java.util.HashSet;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -564,7 +565,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
// sanitize name
|
// sanitize name
|
||||||
name = sanitizeName(name, "\\W-[\\$]"); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
name = sanitizeName(name, "\\W-[\\$]"); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||||
|
|
||||||
if (name.toLowerCase().matches("^_*class$")) {
|
if (name.toLowerCase(Locale.ROOT).matches("^_*class$")) {
|
||||||
return "propertyClass";
|
return "propertyClass";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,7 +579,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (startsWithTwoUppercaseLetters(name)) {
|
if (startsWithTwoUppercaseLetters(name)) {
|
||||||
name = name.substring(0, 2).toLowerCase() + name.substring(2);
|
name = name.substring(0, 2).toLowerCase(Locale.ROOT) + name.substring(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If name contains special chars -> replace them.
|
// If name contains special chars -> replace them.
|
||||||
@ -604,7 +605,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
private boolean startsWithTwoUppercaseLetters(String name) {
|
private boolean startsWithTwoUppercaseLetters(String name) {
|
||||||
boolean startsWithTwoUppercaseLetters = false;
|
boolean startsWithTwoUppercaseLetters = false;
|
||||||
if (name.length() > 1) {
|
if (name.length() > 1) {
|
||||||
startsWithTwoUppercaseLetters = name.substring(0, 2).equals(name.substring(0, 2).toUpperCase());
|
startsWithTwoUppercaseLetters = name.substring(0, 2).equals(name.substring(0, 2).toUpperCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
return startsWithTwoUppercaseLetters;
|
return startsWithTwoUppercaseLetters;
|
||||||
}
|
}
|
||||||
@ -679,7 +680,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
if (inner == null) {
|
if (inner == null) {
|
||||||
LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string");
|
LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string");
|
||||||
inner = new StringSchema().description("TODO default missing array inner type to string");
|
inner = new StringSchema().description("TODO default missing array inner type to string");
|
||||||
@ -720,7 +721,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return String.format(pattern, typeDeclaration);
|
return String.format(Locale.ROOT, pattern, typeDeclaration);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
final String pattern;
|
final String pattern;
|
||||||
if (fullJavaUtil) {
|
if (fullJavaUtil) {
|
||||||
@ -728,11 +729,11 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
} else {
|
} else {
|
||||||
pattern = "new HashMap<%s>()";
|
pattern = "new HashMap<%s>()";
|
||||||
}
|
}
|
||||||
if (p.getAdditionalProperties() == null) {
|
if (ModelUtils.getAdditionalProperties(p) == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
String typeDeclaration = String.format("String, %s", getTypeDeclaration((Schema) p.getAdditionalProperties()));
|
String typeDeclaration = String.format(Locale.ROOT, "String, %s", getTypeDeclaration(ModelUtils.getAdditionalProperties(p)));
|
||||||
Object java8obj = additionalProperties.get("java8");
|
Object java8obj = additionalProperties.get("java8");
|
||||||
if (java8obj != null) {
|
if (java8obj != null) {
|
||||||
Boolean java8 = Boolean.valueOf(java8obj.toString());
|
Boolean java8 = Boolean.valueOf(java8obj.toString());
|
||||||
@ -741,7 +742,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return String.format(pattern, typeDeclaration);
|
return String.format(Locale.ROOT, pattern, typeDeclaration);
|
||||||
} else if (ModelUtils.isIntegerSchema(p)) {
|
} else if (ModelUtils.isIntegerSchema(p)) {
|
||||||
if (p.getDefault() != null) {
|
if (p.getDefault() != null) {
|
||||||
if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) {
|
if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) {
|
||||||
@ -1049,7 +1050,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(value) != null) {
|
if (getSymbolName(value) != null) {
|
||||||
return getSymbolName(value).toUpperCase();
|
return getSymbolName(value).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// number
|
// number
|
||||||
@ -1063,7 +1064,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String var = value.replaceAll("\\W+", "_").toUpperCase();
|
String var = value.replaceAll("\\W+", "_").toUpperCase(Locale.ROOT);
|
||||||
if (var.matches("\\d.*")) {
|
if (var.matches("\\d.*")) {
|
||||||
return "_" + var;
|
return "_" + var;
|
||||||
} else {
|
} else {
|
||||||
|
@ -17,16 +17,13 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -34,6 +31,7 @@ import java.io.File;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public abstract class AbstractKotlinCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractKotlinCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
@ -220,7 +218,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
|||||||
@Override
|
@Override
|
||||||
public String escapeReservedWord(String name) {
|
public String escapeReservedWord(String name) {
|
||||||
// TODO: Allow enum escaping as an option (e.g. backticks vs append/prepend underscore vs match model property escaping).
|
// TODO: Allow enum escaping as an option (e.g. backticks vs append/prepend underscore vs match model property escaping).
|
||||||
return String.format("`%s`", name);
|
return String.format(Locale.ROOT, "`%s`", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -282,7 +280,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
|||||||
if (ModelUtils.isArraySchema(p)) {
|
if (ModelUtils.isArraySchema(p)) {
|
||||||
return getArrayTypeDeclaration((ArraySchema) p);
|
return getArrayTypeDeclaration((ArraySchema) p);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
// Maps will be keyed only by primitive Kotlin string
|
// Maps will be keyed only by primitive Kotlin string
|
||||||
return getSchemaType(p) + "<kotlin.String, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<kotlin.String, " + getTypeDeclaration(inner) + ">";
|
||||||
@ -414,7 +412,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
|||||||
modified = underscore(modified);
|
modified = underscore(modified);
|
||||||
break;
|
break;
|
||||||
case UPPERCASE:
|
case UPPERCASE:
|
||||||
modified = modified.toUpperCase();
|
modified = modified.toUpperCase(Locale.ROOT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,7 +534,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String titleCase(final String input) {
|
private String titleCase(final String input) {
|
||||||
return input.substring(0, 1).toUpperCase() + input.substring(1);
|
return input.substring(0, 1).toUpperCase(Locale.ROOT) + input.substring(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
/*
|
/*ap Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
|
||||||
* Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
|
|
||||||
* Copyright 2018 SmartBear Software
|
* Copyright 2018 SmartBear Software
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -17,6 +16,9 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -24,23 +26,20 @@ import org.openapitools.codegen.CodegenOperation;
|
|||||||
import org.openapitools.codegen.CodegenParameter;
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
import org.openapitools.codegen.CodegenProperty;
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
import io.swagger.v3.oas.models.media.*;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
public abstract class AbstractPhpCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractPhpCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPhpCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPhpCodegen.class);
|
||||||
@ -238,6 +237,9 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
|||||||
|
|
||||||
// apache v2 license
|
// apache v2 license
|
||||||
// supportingFiles.add(new SupportingFile("LICENSE", "", "LICENSE"));
|
// supportingFiles.add(new SupportingFile("LICENSE", "", "LICENSE"));
|
||||||
|
|
||||||
|
// all PHP codegens requires Composer, it means that we need to exclude from SVN at least vendor folder
|
||||||
|
supportingFiles.add(new SupportingFile(".gitignore", "", ".gitignore"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPackageName() {
|
public String getPackageName() {
|
||||||
@ -328,7 +330,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getTypeDeclaration(inner) + "[]";
|
return getTypeDeclaration(inner) + "[]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
|
||||||
} else if (StringUtils.isNotBlank(p.get$ref())) { // model
|
} else if (StringUtils.isNotBlank(p.get$ref())) { // model
|
||||||
String type = super.getTypeDeclaration(p);
|
String type = super.getTypeDeclaration(p);
|
||||||
@ -623,7 +625,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(name) != null) {
|
if (getSymbolName(name) != null) {
|
||||||
return (getSymbolName(name)).toUpperCase();
|
return (getSymbolName(name)).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// number
|
// number
|
||||||
@ -636,7 +638,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
|||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String enumName = sanitizeName(underscore(name).toUpperCase());
|
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
|
||||||
enumName = enumName.replaceFirst("^_", "");
|
enumName = enumName.replaceFirst("^_", "");
|
||||||
enumName = enumName.replaceFirst("_$", "");
|
enumName = enumName.replaceFirst("_$", "");
|
||||||
|
|
||||||
@ -649,7 +651,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumName(CodegenProperty property) {
|
public String toEnumName(CodegenProperty property) {
|
||||||
String enumName = underscore(toModelName(property.name)).toUpperCase();
|
String enumName = underscore(toModelName(property.name)).toUpperCase(Locale.ROOT);
|
||||||
|
|
||||||
// remove [] for array or map of enum
|
// remove [] for array or map of enum
|
||||||
enumName = enumName.replace("[]", "");
|
enumName = enumName.replace("[]", "");
|
||||||
|
@ -19,12 +19,14 @@ package org.openapitools.codegen.languages;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConfig {
|
abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRubyCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRubyCodegen.class);
|
||||||
@ -88,7 +90,7 @@ abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
Schema inner = ((ArraySchema) schema).getItems();
|
Schema inner = ((ArraySchema) schema).getItems();
|
||||||
return getSchemaType(schema) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(schema) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(schema)) {
|
} else if (ModelUtils.isMapSchema(schema)) {
|
||||||
Schema inner = (Schema) schema.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(schema);
|
||||||
return getSchemaType(schema) + "<String, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(schema) + "<String, " + getTypeDeclaration(inner) + ">";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +118,7 @@ abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||||
// if it's all uppper case, convert to lower case
|
// if it's all uppper case, convert to lower case
|
||||||
if (name.matches("^[A-Z_]*$")) {
|
if (name.matches("^[A-Z_]*$")) {
|
||||||
name = name.toLowerCase();
|
name = name.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// camelize (lower first character) the variable name
|
// camelize (lower first character) the variable name
|
||||||
|
@ -181,7 +181,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
|||||||
@Override
|
@Override
|
||||||
public String toInstantiationType(Schema p) {
|
public String toInstantiationType(Schema p) {
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
String inner = getSchemaType((Schema) p.getAdditionalProperties());
|
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||||
return instantiationTypes.get("map") + "[String, " + inner + "]";
|
return instantiationTypes.get("map") + "[String, " + inner + "]";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
@ -235,7 +235,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
|||||||
} else if (ModelUtils.isIntegerSchema(p)) {
|
} else if (ModelUtils.isIntegerSchema(p)) {
|
||||||
return null;
|
return null;
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
String inner = getSchemaType((Schema) p.getAdditionalProperties());
|
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||||
return "new HashMap[String, " + inner + "]() ";
|
return "new HashMap[String, " + inner + "]() ";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
|
@ -227,7 +227,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "{ [key: string]: " + getTypeDeclaration(inner) + "; }";
|
return "{ [key: string]: " + getTypeDeclaration(inner) + "; }";
|
||||||
} else if (ModelUtils.isFileSchema(p)) {
|
} else if (ModelUtils.isFileSchema(p)) {
|
||||||
return "any";
|
return "any";
|
||||||
@ -246,7 +246,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
inner = mp1.getItems();
|
inner = mp1.getItems();
|
||||||
return this.getSchemaType(p) + "<" + this.getParameterDataType(parameter, inner) + ">";
|
return this.getSchemaType(p) + "<" + this.getParameterDataType(parameter, inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
inner = (Schema) p.getAdditionalProperties();
|
inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "{ [key: string]: " + this.getParameterDataType(parameter, inner) + "; }";
|
return "{ [key: string]: " + this.getParameterDataType(parameter, inner) + "; }";
|
||||||
} else if (ModelUtils.isStringSchema(p)) {
|
} else if (ModelUtils.isStringSchema(p)) {
|
||||||
// Handle string enums
|
// Handle string enums
|
||||||
|
@ -17,14 +17,18 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import com.samskivert.mustache.Mustache;
|
||||||
|
import com.samskivert.mustache.Template;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
|
import java.util.Locale;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import com.samskivert.mustache.Mustache;
|
|
||||||
import com.samskivert.mustache.Template;
|
|
||||||
import org.openapitools.codegen.*;
|
|
||||||
|
|
||||||
public class AdaCodegen extends AbstractAdaCodegen implements CodegenConfig {
|
public class AdaCodegen extends AbstractAdaCodegen implements CodegenConfig {
|
||||||
|
|
||||||
@ -71,7 +75,7 @@ public class AdaCodegen extends AbstractAdaCodegen implements CodegenConfig {
|
|||||||
// e.g. petstore.api (package name) => petstore_api (project name)
|
// e.g. petstore.api (package name) => petstore_api (project name)
|
||||||
projectName = packageName.replaceAll("\\.", "_");
|
projectName = packageName.replaceAll("\\.", "_");
|
||||||
}
|
}
|
||||||
String configBaseName = modelPackage.toLowerCase();
|
String configBaseName = modelPackage.toLowerCase(Locale.ROOT);
|
||||||
supportingFiles.add(new SupportingFile("gnat-project.mustache", "", toFilename(projectName) + ".gpr"));
|
supportingFiles.add(new SupportingFile("gnat-project.mustache", "", toFilename(projectName) + ".gpr"));
|
||||||
// supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
// supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
supportingFiles.add(new SupportingFile("config.gpr", "", "config.gpr"));
|
supportingFiles.add(new SupportingFile("config.gpr", "", "config.gpr"));
|
||||||
|
@ -19,7 +19,6 @@ package org.openapitools.codegen.languages;
|
|||||||
|
|
||||||
import com.samskivert.mustache.Mustache;
|
import com.samskivert.mustache.Mustache;
|
||||||
import com.samskivert.mustache.Template;
|
import com.samskivert.mustache.Template;
|
||||||
|
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.CodegenType;
|
import org.openapitools.codegen.CodegenType;
|
||||||
@ -28,6 +27,7 @@ import org.openapitools.codegen.SupportingFile;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public class AdaServerCodegen extends AbstractAdaCodegen implements CodegenConfig {
|
public class AdaServerCodegen extends AbstractAdaCodegen implements CodegenConfig {
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ public class AdaServerCodegen extends AbstractAdaCodegen implements CodegenConfi
|
|||||||
// e.g. petstore.api (package name) => petstore_api (project name)
|
// e.g. petstore.api (package name) => petstore_api (project name)
|
||||||
projectName = packageName.replaceAll("\\.", "_");
|
projectName = packageName.replaceAll("\\.", "_");
|
||||||
}
|
}
|
||||||
String configBaseName = modelPackage.toLowerCase();
|
String configBaseName = modelPackage.toLowerCase(Locale.ROOT);
|
||||||
supportingFiles.add(new SupportingFile("gnat-project.mustache", "", toFilename(projectName) + ".gpr"));
|
supportingFiles.add(new SupportingFile("gnat-project.mustache", "", toFilename(projectName) + ".gpr"));
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
supportingFiles.add(new SupportingFile("config.gpr", "", "config.gpr"));
|
supportingFiles.add(new SupportingFile("config.gpr", "", "config.gpr"));
|
||||||
|
@ -189,7 +189,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
return getSchemaType(p) + "<String, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<String, " + getTypeDeclaration(inner) + ">";
|
||||||
}
|
}
|
||||||
|
@ -217,6 +217,7 @@ public class ApexClientCodegen extends AbstractApexCodegen {
|
|||||||
if (ModelUtils.isArraySchema(p)) {
|
if (ModelUtils.isArraySchema(p)) {
|
||||||
Schema inner = ((ArraySchema) p).getItems();
|
Schema inner = ((ArraySchema) p).getItems();
|
||||||
out = String.format(
|
out = String.format(
|
||||||
|
Locale.ROOT,
|
||||||
"new List<%s>()",
|
"new List<%s>()",
|
||||||
inner == null ? "Object" : getTypeDeclaration(inner)
|
inner == null ? "Object" : getTypeDeclaration(inner)
|
||||||
);
|
);
|
||||||
@ -227,14 +228,14 @@ public class ApexClientCodegen extends AbstractApexCodegen {
|
|||||||
Long def = (Long) p.getDefault();
|
Long def = (Long) p.getDefault();
|
||||||
out = def == null ? out : def.toString() + "L";
|
out = def == null ? out : def.toString() + "L";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
String s = inner == null ? "Object" : getTypeDeclaration(inner);
|
String s = inner == null ? "Object" : getTypeDeclaration(inner);
|
||||||
out = String.format("new Map<String, %s>()", s);
|
out = String.format(Locale.ROOT, "new Map<String, %s>()", s);
|
||||||
} else if (ModelUtils.isStringSchema(p)) {
|
} else if (ModelUtils.isStringSchema(p)) {
|
||||||
if (p.getDefault() != null) {
|
if (p.getDefault() != null) {
|
||||||
String def = p.getDefault().toString();
|
String def = p.getDefault().toString();
|
||||||
if (def != null) {
|
if (def != null) {
|
||||||
out = p.getEnum() == null ? String.format("'%s'", escapeText(def)) : def;
|
out = p.getEnum() == null ? String.format(Locale.ROOT, "'%s'", escapeText(def)) : def;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -270,7 +271,7 @@ public class ApexClientCodegen extends AbstractApexCodegen {
|
|||||||
if (apiVersion.matches("^\\d{2}(\\.0)?$")) {
|
if (apiVersion.matches("^\\d{2}(\\.0)?$")) {
|
||||||
return apiVersion.substring(0, 2) + ".0";
|
return apiVersion.substring(0, 2) + ".0";
|
||||||
} else {
|
} else {
|
||||||
LOGGER.warn(String.format("specified API version is invalid: %s - defaulting to %s", apiVersion, this.apiVersion));
|
LOGGER.warn(String.format(Locale.ROOT, "specified API version is invalid: %s - defaulting to %s", apiVersion, this.apiVersion));
|
||||||
return this.apiVersion;
|
return this.apiVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,21 +17,21 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
|
|
||||||
import com.samskivert.mustache.Mustache;
|
import com.samskivert.mustache.Mustache;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.URLPathUtils;
|
import org.openapitools.codegen.utils.URLPathUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import static java.util.UUID.randomUUID;
|
import static java.util.UUID.randomUUID;
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
|
|
||||||
public static final String USE_SWASHBUCKLE = "useSwashbuckle";
|
public static final String USE_SWASHBUCKLE = "useSwashbuckle";
|
||||||
|
|
||||||
private String packageGuid = "{" + randomUUID().toString().toUpperCase() + "}";
|
private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}";
|
||||||
|
|
||||||
@SuppressWarnings("hiding")
|
@SuppressWarnings("hiding")
|
||||||
protected Logger LOGGER = LoggerFactory.getLogger(AspNetCoreServerCodegen.class);
|
protected Logger LOGGER = LoggerFactory.getLogger(AspNetCoreServerCodegen.class);
|
||||||
@ -141,7 +141,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
additionalProperties.put(USE_SWASHBUCKLE, useSwashbuckle);
|
additionalProperties.put(USE_SWASHBUCKLE, useSwashbuckle);
|
||||||
}
|
}
|
||||||
|
|
||||||
additionalProperties.put("dockerTag", packageName.toLowerCase());
|
additionalProperties.put("dockerTag", packageName.toLowerCase(Locale.ROOT));
|
||||||
|
|
||||||
apiPackage = packageName + ".Controllers";
|
apiPackage = packageName + ".Controllers";
|
||||||
modelPackage = packageName + ".Models";
|
modelPackage = packageName + ".Models";
|
||||||
@ -211,7 +211,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Converts, for example, PUT to HttpPut for controller attributes
|
// Converts, for example, PUT to HttpPut for controller attributes
|
||||||
operation.httpMethod = "Http" + operation.httpMethod.substring(0, 1) + operation.httpMethod.substring(1).toLowerCase();
|
operation.httpMethod = "Http" + operation.httpMethod.substring(0, 1) + operation.httpMethod.substring(1).toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -388,7 +388,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
@ -637,7 +637,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(
|
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(
|
||||||
definitions.get(p.dataType).getExample()));
|
definitions.get(p.dataType).getExample()));
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
e.printStackTrace();
|
LOGGER.warn(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/**
|
/**
|
||||||
|
@ -17,13 +17,9 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isEmpty;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.samskivert.mustache.Mustache;
|
import com.samskivert.mustache.Mustache;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
@ -40,8 +36,11 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.apache.commons.lang3.StringUtils.isEmpty;
|
||||||
|
|
||||||
public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
||||||
@SuppressWarnings({"hiding"})
|
@SuppressWarnings({"hiding"})
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class);
|
||||||
@ -57,7 +56,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
|||||||
// Defines the sdk option for targeted frameworks, which differs from targetFramework and targetFrameworkNuget
|
// Defines the sdk option for targeted frameworks, which differs from targetFramework and targetFrameworkNuget
|
||||||
private static final String MCS_NET_VERSION_KEY = "x-mcs-sdk";
|
private static final String MCS_NET_VERSION_KEY = "x-mcs-sdk";
|
||||||
|
|
||||||
protected String packageGuid = "{" + java.util.UUID.randomUUID().toString().toUpperCase() + "}";
|
protected String packageGuid = "{" + java.util.UUID.randomUUID().toString().toUpperCase(Locale.ROOT) + "}";
|
||||||
protected String clientPackage = "Org.OpenAPITools.Client";
|
protected String clientPackage = "Org.OpenAPITools.Client";
|
||||||
protected String localVariablePrefix = "";
|
protected String localVariablePrefix = "";
|
||||||
protected String apiDocPath = "docs/";
|
protected String apiDocPath = "docs/";
|
||||||
|
@ -17,17 +17,24 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
import com.google.common.base.Predicate;
|
||||||
import static org.apache.commons.lang3.StringUtils.capitalize;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import static org.openapitools.codegen.CodegenConstants.*;
|
import com.google.common.collect.BiMap;
|
||||||
import static org.openapitools.codegen.CodegenType.SERVER;
|
import com.google.common.collect.HashBiMap;
|
||||||
import static java.util.Arrays.asList;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import static java.util.UUID.randomUUID;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.Multimap;
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import org.openapitools.codegen.utils.*;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.*;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
import io.swagger.v3.oas.models.media.*;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
import org.openapitools.codegen.utils.URLPathUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
@ -36,20 +43,34 @@ import java.util.Collection;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
import org.slf4j.LoggerFactory;
|
import static java.util.Arrays.asList;
|
||||||
|
import static java.util.UUID.randomUUID;
|
||||||
import com.google.common.base.Predicate;
|
import static org.apache.commons.lang3.StringUtils.capitalize;
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import static org.openapitools.codegen.CodegenConstants.INTERFACE_PREFIX;
|
||||||
import com.google.common.collect.BiMap;
|
import static org.openapitools.codegen.CodegenConstants.INTERFACE_PREFIX_DESC;
|
||||||
import com.google.common.collect.HashBiMap;
|
import static org.openapitools.codegen.CodegenConstants.OPTIONAL_PROJECT_FILE;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import static org.openapitools.codegen.CodegenConstants.OPTIONAL_PROJECT_FILE_DESC;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import static org.openapitools.codegen.CodegenConstants.OPTIONAL_PROJECT_GUID;
|
||||||
import com.google.common.collect.Multimap;
|
import static org.openapitools.codegen.CodegenConstants.OPTIONAL_PROJECT_GUID_DESC;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.PACKAGE_NAME;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.PACKAGE_VERSION;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.RETURN_ICOLLECTION;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.RETURN_ICOLLECTION_DESC;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.SOURCE_FOLDER;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.SOURCE_FOLDER_DESC;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.USE_COLLECTION;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.USE_COLLECTION_DESC;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.USE_DATETIME_OFFSET;
|
||||||
|
import static org.openapitools.codegen.CodegenConstants.USE_DATETIME_OFFSET_DESC;
|
||||||
|
import static org.openapitools.codegen.CodegenType.SERVER;
|
||||||
|
|
||||||
public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpNancyFXServerCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpNancyFXServerCodegen.class);
|
||||||
@ -64,7 +85,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
private static final Map<String, Predicate<Schema>> propertyToOpenAPITypeMapping =
|
private static final Map<String, Predicate<Schema>> propertyToOpenAPITypeMapping =
|
||||||
createPropertyToOpenAPITypeMapping();
|
createPropertyToOpenAPITypeMapping();
|
||||||
|
|
||||||
private String packageGuid = "{" + randomUUID().toString().toUpperCase() + "}";
|
private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}";
|
||||||
|
|
||||||
private final Map<String, DependencyInfo> dependencies = new HashMap<>();
|
private final Map<String, DependencyInfo> dependencies = new HashMap<>();
|
||||||
private final Set<String> parentModels = new HashSet<>();
|
private final Set<String> parentModels = new HashSet<>();
|
||||||
@ -185,18 +206,18 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
final String assemblyFramework = namespaceInfo.length > 3 ? namespaceInfo[3].trim() : "net45";
|
final String assemblyFramework = namespaceInfo.length > 3 ? namespaceInfo[3].trim() : "net45";
|
||||||
|
|
||||||
if (isNullOrEmpty(model) || isNullOrEmpty(namespaceName)) {
|
if (isNullOrEmpty(model) || isNullOrEmpty(namespaceName)) {
|
||||||
LOGGER.warn(String.format("Could not import: '%s' - invalid namespace: '%s'", model, entry.getValue()));
|
LOGGER.warn(String.format(Locale.ROOT, "Could not import: '%s' - invalid namespace: '%s'", model, entry.getValue()));
|
||||||
importMapping.remove(model);
|
importMapping.remove(model);
|
||||||
} else {
|
} else {
|
||||||
LOGGER.info(String.format("Importing: '%s' from '%s' namespace.", model, namespaceName));
|
LOGGER.info(String.format(Locale.ROOT, "Importing: '%s' from '%s' namespace.", model, namespaceName));
|
||||||
importMapping.put(model, namespaceName);
|
importMapping.put(model, namespaceName);
|
||||||
}
|
}
|
||||||
if (!isNullOrEmpty(modelClass)) {
|
if (!isNullOrEmpty(modelClass)) {
|
||||||
LOGGER.info(String.format("Mapping: '%s' class to '%s'", model, modelClass));
|
LOGGER.info(String.format(Locale.ROOT, "Mapping: '%s' class to '%s'", model, modelClass));
|
||||||
modelNameMapping.put(model, modelClass);
|
modelNameMapping.put(model, modelClass);
|
||||||
}
|
}
|
||||||
if (assembly != null && assemblyVersion != null) {
|
if (assembly != null && assemblyVersion != null) {
|
||||||
LOGGER.info(String.format("Adding dependency: '%s', version: '%s', framework: '%s'",
|
LOGGER.info(String.format(Locale.ROOT, "Adding dependency: '%s', version: '%s', framework: '%s'",
|
||||||
assembly, assemblyVersion, assemblyVersion));
|
assembly, assemblyVersion, assemblyVersion));
|
||||||
dependencies.put(assembly, new DependencyInfo(assemblyVersion, assemblyFramework));
|
dependencies.put(assembly, new DependencyInfo(assemblyVersion, assemblyFramework));
|
||||||
}
|
}
|
||||||
@ -248,7 +269,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
operation.path = operation.path.replace("?", "/");
|
operation.path = operation.path.replace("?", "/");
|
||||||
}
|
}
|
||||||
if (!isNullOrEmpty(operation.httpMethod)) {
|
if (!isNullOrEmpty(operation.httpMethod)) {
|
||||||
operation.httpMethod = capitalize(operation.httpMethod.toLowerCase());
|
operation.httpMethod = capitalize(operation.httpMethod.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +301,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
for (final CodegenProperty property : parent.vars) {
|
for (final CodegenProperty property : parent.vars) {
|
||||||
final CodegenProperty duplicatedByParent = childPropertiesByName.get(property.name);
|
final CodegenProperty duplicatedByParent = childPropertiesByName.get(property.name);
|
||||||
if (duplicatedByParent != null) {
|
if (duplicatedByParent != null) {
|
||||||
LOGGER.info(String.format("Property: '%s' in '%s' model is inherited from '%s'",
|
LOGGER.info(String.format(Locale.ROOT, "Property: '%s' in '%s' model is inherited from '%s'",
|
||||||
property.name, child.classname, parent.classname));
|
property.name, child.classname, parent.classname));
|
||||||
duplicatedByParent.isInherited = true;
|
duplicatedByParent.isInherited = true;
|
||||||
final CodegenProperty parentVar = duplicatedByParent.clone();
|
final CodegenProperty parentVar = duplicatedByParent.clone();
|
||||||
@ -322,7 +343,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
} else {
|
} else {
|
||||||
result = enumName;
|
result = enumName;
|
||||||
}
|
}
|
||||||
LOGGER.debug(String.format("toEnumVarName('%s', %s) = '%s'", name, datatype, enumName));
|
LOGGER.debug(String.format(Locale.ROOT, "toEnumVarName('%s', %s) = '%s'", name, datatype, enumName));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,7 +355,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
} else {
|
} else {
|
||||||
apiName = capitalize(name);
|
apiName = capitalize(name);
|
||||||
}
|
}
|
||||||
LOGGER.debug(String.format("toApiName('%s') = '%s'", name, apiName));
|
LOGGER.debug(String.format(Locale.ROOT, "toApiName('%s') = '%s'", name, apiName));
|
||||||
return apiName;
|
return apiName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,7 +376,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
|
|||||||
} else {
|
} else {
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
LOGGER.debug(String.format("toModelImport('%s') = '%s'", name, result));
|
LOGGER.debug(String.format(Locale.ROOT, "toModelImport('%s') = '%s'", name, result));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,11 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.oas.models.info.Contact;
|
||||||
|
import io.swagger.v3.oas.models.info.Info;
|
||||||
|
import io.swagger.v3.oas.models.info.License;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -24,16 +29,11 @@ import org.openapitools.codegen.CodegenOperation;
|
|||||||
import org.openapitools.codegen.CodegenType;
|
import org.openapitools.codegen.CodegenType;
|
||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
import org.openapitools.codegen.SupportingFile;
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.info.*;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final String PROJECT_NAME = "projectName";
|
private static final String PROJECT_NAME = "projectName";
|
||||||
@ -221,7 +221,7 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi
|
|||||||
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
|
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
|
||||||
for (CodegenOperation op : ops) {
|
for (CodegenOperation op : ops) {
|
||||||
// Convert httpMethod to lower case, e.g. "get", "post"
|
// Convert httpMethod to lower case, e.g. "get", "post"
|
||||||
op.httpMethod = op.httpMethod.toLowerCase();
|
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
return operations;
|
return operations;
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,6 @@ package org.openapitools.codegen.languages;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -32,6 +31,7 @@ import org.openapitools.codegen.utils.ModelUtils;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConfig {
|
public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
@ -99,7 +99,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
@ -110,7 +110,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
|
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
|
||||||
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
|
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
|
||||||
for (CodegenOperation op : operationList) {
|
for (CodegenOperation op : operationList) {
|
||||||
op.httpMethod = op.httpMethod.toLowerCase();
|
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
return objs;
|
return objs;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ import io.swagger.v3.oas.models.Operation;
|
|||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
import org.openapitools.codegen.CodegenOperation;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
@ -38,6 +37,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -198,8 +198,8 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
|
|||||||
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
|
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
|
||||||
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
|
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
|
||||||
String classname = (String) operations.get("classname");
|
String classname = (String) operations.get("classname");
|
||||||
operations.put("classnameSnakeUpperCase", DefaultCodegen.underscore(classname).toUpperCase());
|
operations.put("classnameSnakeUpperCase", DefaultCodegen.underscore(classname).toUpperCase(Locale.ROOT));
|
||||||
operations.put("classnameSnakeLowerCase", DefaultCodegen.underscore(classname).toLowerCase());
|
operations.put("classnameSnakeLowerCase", DefaultCodegen.underscore(classname).toLowerCase(Locale.ROOT));
|
||||||
|
|
||||||
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
|
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
|
||||||
for (CodegenOperation op : operationList) {
|
for (CodegenOperation op : operationList) {
|
||||||
@ -220,7 +220,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
op.httpMethod = op.httpMethod.substring(0, 1).toUpperCase() + op.httpMethod.substring(1).toLowerCase();
|
op.httpMethod = op.httpMethod.substring(0, 1).toUpperCase(Locale.ROOT) + op.httpMethod.substring(1).toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
for (CodegenParameter param : op.allParams) {
|
for (CodegenParameter param : op.allParams) {
|
||||||
if (param.isFormParam) isParsingSupported = false;
|
if (param.isFormParam) isParsingSupported = false;
|
||||||
@ -305,7 +305,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
|
|||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
}
|
}
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
|
||||||
}
|
}
|
||||||
else if (ModelUtils.isByteArraySchema(p)) {
|
else if (ModelUtils.isByteArraySchema(p)) {
|
||||||
@ -343,7 +343,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
|
|||||||
else if (ModelUtils.isByteArraySchema(p)) {
|
else if (ModelUtils.isByteArraySchema(p)) {
|
||||||
return "\"\"";
|
return "\"\"";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
String inner = getSchemaType((Schema) p.getAdditionalProperties());
|
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||||
return "std::map<std::string, " + inner + ">()";
|
return "std::map<std::string, " + inner + ">()";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
|
@ -17,12 +17,15 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -30,6 +33,7 @@ import java.io.File;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -294,7 +298,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">*";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">*";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "<QString, " + getTypeDeclaration(inner) + ">*";
|
return getSchemaType(p) + "<QString, " + getTypeDeclaration(inner) + ">*";
|
||||||
}
|
}
|
||||||
if (foundationClasses.contains(openAPIType)) {
|
if (foundationClasses.contains(openAPIType)) {
|
||||||
@ -325,7 +329,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
|
|||||||
}
|
}
|
||||||
return "0";
|
return "0";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "new QMap<QString, " + getTypeDeclaration(inner) + ">()";
|
return "new QMap<QString, " + getTypeDeclaration(inner) + ">()";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
@ -371,7 +375,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
|
|||||||
|
|
||||||
// if it's all uppper case, convert to lower case
|
// if it's all uppper case, convert to lower case
|
||||||
if (varName.matches("^[A-Z_]*$")) {
|
if (varName.matches("^[A-Z_]*$")) {
|
||||||
varName = varName.toLowerCase();
|
varName = varName.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// camelize (lower first character) the variable name
|
// camelize (lower first character) the variable name
|
||||||
|
@ -17,12 +17,14 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -30,6 +32,7 @@ import java.io.File;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -323,7 +326,7 @@ public class CppQt5QHttpEngineServerCodegen extends AbstractCppCodegen implement
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "<QString, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<QString, " + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isBinarySchema(p)) {
|
} else if (ModelUtils.isBinarySchema(p)) {
|
||||||
return getSchemaType(p) + "*";
|
return getSchemaType(p) + "*";
|
||||||
@ -359,7 +362,7 @@ public class CppQt5QHttpEngineServerCodegen extends AbstractCppCodegen implement
|
|||||||
}
|
}
|
||||||
return "0";
|
return "0";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "QMap<QString, " + getTypeDeclaration(inner) + ">()";
|
return "QMap<QString, " + getTypeDeclaration(inner) + ">()";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
@ -407,7 +410,7 @@ public class CppQt5QHttpEngineServerCodegen extends AbstractCppCodegen implement
|
|||||||
|
|
||||||
// if it's all uppper case, convert to lower case
|
// if it's all uppper case, convert to lower case
|
||||||
if (varName.matches("^[A-Z_]*$")) {
|
if (varName.matches("^[A-Z_]*$")) {
|
||||||
varName = varName.toLowerCase();
|
varName = varName.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// camelize (lower first character) the variable name
|
// camelize (lower first character) the variable name
|
||||||
|
@ -17,17 +17,13 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
|
||||||
|
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.oas.models.Operation;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
@ -42,9 +38,12 @@ import java.util.Arrays;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
|
|
||||||
public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
||||||
|
|
||||||
public static final String DECLSPEC = "declspec";
|
public static final String DECLSPEC = "declspec";
|
||||||
@ -189,10 +188,10 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
|||||||
|
|
||||||
additionalProperties.put("modelNamespaceDeclarations", modelPackage.split("\\."));
|
additionalProperties.put("modelNamespaceDeclarations", modelPackage.split("\\."));
|
||||||
additionalProperties.put("modelNamespace", modelPackage.replaceAll("\\.", "::"));
|
additionalProperties.put("modelNamespace", modelPackage.replaceAll("\\.", "::"));
|
||||||
additionalProperties.put("modelHeaderGuardPrefix", modelPackage.replaceAll("\\.", "_").toUpperCase());
|
additionalProperties.put("modelHeaderGuardPrefix", modelPackage.replaceAll("\\.", "_").toUpperCase(Locale.ROOT));
|
||||||
additionalProperties.put("apiNamespaceDeclarations", apiPackage.split("\\."));
|
additionalProperties.put("apiNamespaceDeclarations", apiPackage.split("\\."));
|
||||||
additionalProperties.put("apiNamespace", apiPackage.replaceAll("\\.", "::"));
|
additionalProperties.put("apiNamespace", apiPackage.replaceAll("\\.", "::"));
|
||||||
additionalProperties.put("apiHeaderGuardPrefix", apiPackage.replaceAll("\\.", "_").toUpperCase());
|
additionalProperties.put("apiHeaderGuardPrefix", apiPackage.replaceAll("\\.", "_").toUpperCase(Locale.ROOT));
|
||||||
additionalProperties.put("declspec", declspec);
|
additionalProperties.put("declspec", declspec);
|
||||||
additionalProperties.put("defaultInclude", defaultInclude);
|
additionalProperties.put("defaultInclude", defaultInclude);
|
||||||
}
|
}
|
||||||
@ -308,7 +307,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "<utility::string_t, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<utility::string_t, " + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isStringSchema(p)
|
} else if (ModelUtils.isStringSchema(p)
|
||||||
|| ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p)
|
|| ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p)
|
||||||
@ -339,7 +338,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
|||||||
}
|
}
|
||||||
return "0";
|
return "0";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
String inner = getSchemaType((Schema) p.getAdditionalProperties());
|
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||||
return "std::map<utility::string_t, " + inner + ">()";
|
return "std::map<utility::string_t, " + inner + ">()";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
|
@ -270,7 +270,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isByteArraySchema(p)) {
|
} else if (ModelUtils.isByteArraySchema(p)) {
|
||||||
return "std::string";
|
return "std::string";
|
||||||
@ -307,7 +307,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
|
|||||||
} else if (ModelUtils.isByteArraySchema(p)) {
|
} else if (ModelUtils.isByteArraySchema(p)) {
|
||||||
return "\"\"";
|
return "\"\"";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
String inner = getSchemaType((Schema) p.getAdditionalProperties());
|
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||||
return "std::map<std::string, " + inner + ">()";
|
return "std::map<std::string, " + inner + ">()";
|
||||||
} else if (ModelUtils.isArraySchema(p)) {
|
} else if (ModelUtils.isArraySchema(p)) {
|
||||||
ArraySchema ap = (ArraySchema) p;
|
ArraySchema ap = (ArraySchema) p;
|
||||||
|
@ -307,7 +307,7 @@ public class DartClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
return getSchemaType(p) + "<String, " + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<String, " + getTypeDeclaration(inner) + ">";
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,16 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import java.io.File;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import java.util.UUID;
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import java.io.File;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class EiffelClientCodegen extends AbstractEiffelCodegen {
|
public class EiffelClientCodegen extends AbstractEiffelCodegen {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(EiffelClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(EiffelClientCodegen.class);
|
||||||
@ -168,7 +171,7 @@ public class EiffelClientCodegen extends AbstractEiffelCodegen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumName(CodegenProperty property) {
|
public String toEnumName(CodegenProperty property) {
|
||||||
return sanitizeName(property.name).toUpperCase() + "_ENUM";
|
return sanitizeName(property.name).toUpperCase(Locale.ROOT) + "_ENUM";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -179,7 +182,7 @@ public class EiffelClientCodegen extends AbstractEiffelCodegen {
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(value) != null) {
|
if (getSymbolName(value) != null) {
|
||||||
return getSymbolName(value).toUpperCase();
|
return getSymbolName(value).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// number
|
// number
|
||||||
@ -193,7 +196,7 @@ public class EiffelClientCodegen extends AbstractEiffelCodegen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String var = value.replaceAll("\\W+", "_").toLowerCase();
|
String var = value.replaceAll("\\W+", "_").toLowerCase(Locale.ROOT);
|
||||||
if (var.matches("\\d.*")) {
|
if (var.matches("\\d.*")) {
|
||||||
return "val_" + var;
|
return "val_" + var;
|
||||||
} else if (var.startsWith("_")) {
|
} else if (var.startsWith("_")) {
|
||||||
|
@ -447,7 +447,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return "[" + getTypeDeclaration(inner) + "]";
|
return "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "%{optional(String.t) => " + getTypeDeclaration(inner) + "}";
|
return "%{optional(String.t) => " + getTypeDeclaration(inner) + "}";
|
||||||
} else if (ModelUtils.isPasswordSchema(p)) {
|
} else if (ModelUtils.isPasswordSchema(p)) {
|
||||||
return "String.t";
|
return "String.t";
|
||||||
|
@ -17,15 +17,21 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.NumberSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenModel;
|
||||||
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.CodegenResponse;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.openapitools.codegen.languages.features.BeanValidationFeatures;
|
|
||||||
import org.openapitools.codegen.languages.features.JbossFeature;
|
|
||||||
import org.openapitools.codegen.languages.features.SwaggerFeatures;
|
|
||||||
import io.swagger.v3.oas.models.*;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.parameters.*;
|
|
||||||
import io.swagger.v3.oas.models.responses.*;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.Collator;
|
import java.text.Collator;
|
||||||
@ -36,6 +42,7 @@ import java.util.Comparator;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
@ -259,7 +266,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Collections.sort(parent.children, new Comparator<CodegenModel>() {
|
Collections.sort(parent.children, new Comparator<CodegenModel>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(CodegenModel cm1, CodegenModel cm2) {
|
public int compare(CodegenModel cm1, CodegenModel cm2) {
|
||||||
return Collator.getInstance().compare(cm1.classname, cm2.classname);
|
return Collator.getInstance(Locale.ROOT).compare(cm1.classname, cm2.classname);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -486,7 +493,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
@ -506,8 +513,8 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CodegenResponse fromResponse(String responseCode, ApiResponse resp) {
|
public CodegenResponse fromResponse(OpenAPI openAPI, String responseCode, ApiResponse resp) {
|
||||||
final CodegenResponse response = super.fromResponse(responseCode, resp);
|
final CodegenResponse response = super.fromResponse(openAPI, responseCode, resp);
|
||||||
if (response.dataType != null) {
|
if (response.dataType != null) {
|
||||||
addEncoderAndDecoder(response.vendorExtensions, response.dataType, response.isMapContainer, response.primitiveType);
|
addEncoderAndDecoder(response.vendorExtensions, response.dataType, response.isMapContainer, response.primitiveType);
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import com.samskivert.mustache.Mustache;
|
|||||||
import com.samskivert.mustache.Template;
|
import com.samskivert.mustache.Template;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
|
import org.openapitools.codegen.mustache.JoinWithCommaLambda;
|
||||||
import io.swagger.v3.oas.models.media.*;
|
import io.swagger.v3.oas.models.media.*;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -133,6 +134,8 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
public void processOpts() {
|
public void processOpts() {
|
||||||
super.processOpts();
|
super.processOpts();
|
||||||
|
|
||||||
|
additionalProperties.put("joinWithComma", new JoinWithCommaLambda());
|
||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
|
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
|
||||||
setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME));
|
setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME));
|
||||||
} else {
|
} else {
|
||||||
@ -287,7 +290,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}");
|
Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}");
|
||||||
for (CodegenOperation o : os) {
|
for (CodegenOperation o : os) {
|
||||||
// force http method to lower case
|
// force http method to lower case
|
||||||
o.httpMethod = o.httpMethod.toLowerCase();
|
o.httpMethod = o.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
if (o.isListContainer) {
|
if (o.isListContainer) {
|
||||||
o.returnType = "[" + o.returnBaseType + "]";
|
o.returnType = "[" + o.returnBaseType + "]";
|
||||||
|
@ -239,7 +239,7 @@ public class FinchServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
@ -341,7 +341,7 @@ public class FinchServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void generateScalaPath(CodegenOperation op) {
|
private void generateScalaPath(CodegenOperation op) {
|
||||||
op.httpMethod = op.httpMethod.toLowerCase();
|
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
String path = op.path;
|
String path = op.path;
|
||||||
|
|
||||||
@ -366,7 +366,7 @@ public class FinchServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
final CodegenParameter cp = op.pathParams.get(pathParamIndex);
|
final CodegenParameter cp = op.pathParams.get(pathParamIndex);
|
||||||
|
|
||||||
// TODO: Handle non-primitives…
|
// TODO: Handle non-primitives…
|
||||||
scalaPath = colConcat(scalaPath, cp.dataType.toLowerCase());
|
scalaPath = colConcat(scalaPath, cp.dataType.toLowerCase(Locale.ROOT));
|
||||||
|
|
||||||
pathParamIndex++;
|
pathParamIndex++;
|
||||||
} else {
|
} else {
|
||||||
@ -425,7 +425,7 @@ public class FinchServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
p.vendorExtensions.put("x-codegen-normalized-path-type", toPathParameter(p, "param", true));
|
p.vendorExtensions.put("x-codegen-normalized-path-type", toPathParameter(p, "param", true));
|
||||||
} else {
|
} else {
|
||||||
// If parameter is primitive and required, we can rely on data types like "string" or "long"
|
// If parameter is primitive and required, we can rely on data types like "string" or "long"
|
||||||
p.vendorExtensions.put("x-codegen-normalized-path-type", p.dataType.toLowerCase());
|
p.vendorExtensions.put("x-codegen-normalized-path-type", p.dataType.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
p.vendorExtensions.put("x-codegen-normalized-input-type", toInputParameter(p));
|
p.vendorExtensions.put("x-codegen-normalized-input-type", toInputParameter(p));
|
||||||
} else {
|
} else {
|
||||||
|
@ -17,25 +17,17 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
import org.openapitools.codegen.utils.*;
|
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.openapitools.codegen.mustache.*;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.security.SecurityScheme;
|
|
||||||
import io.swagger.v3.oas.models.*;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
|
||||||
import io.swagger.v3.oas.models.parameters.*;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(FlashClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(FlashClientCodegen.class);
|
||||||
@ -267,7 +259,7 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
|
|
||||||
// if it's all uppper case, convert to lower case
|
// if it's all uppper case, convert to lower case
|
||||||
if (name.matches("^[A-Z_]*$")) {
|
if (name.matches("^[A-Z_]*$")) {
|
||||||
name = name.toLowerCase();
|
name = name.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// underscore the variable name
|
// underscore the variable name
|
||||||
|
@ -465,7 +465,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
} else {
|
} else {
|
||||||
baseTitle = baseTitle.trim();
|
baseTitle = baseTitle.trim();
|
||||||
// Drop any API suffix
|
// Drop any API suffix
|
||||||
if (baseTitle.toUpperCase().endsWith("API")) {
|
if (baseTitle.toUpperCase(Locale.ROOT).endsWith("API")) {
|
||||||
baseTitle = baseTitle.substring(0, baseTitle.length() - 3);
|
baseTitle = baseTitle.substring(0, baseTitle.length() - 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -473,7 +473,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
if (!additionalProperties.containsKey(PROP_CABAL_PACKAGE)) {
|
if (!additionalProperties.containsKey(PROP_CABAL_PACKAGE)) {
|
||||||
List<String> words = new ArrayList<>();
|
List<String> words = new ArrayList<>();
|
||||||
for (String word : baseTitle.split(" ")) {
|
for (String word : baseTitle.split(" ")) {
|
||||||
words.add(word.toLowerCase());
|
words.add(word.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
setCabalPackage(StringUtils.join(words, "-"));
|
setCabalPackage(StringUtils.join(words, "-"));
|
||||||
}
|
}
|
||||||
@ -548,7 +548,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return "[" + getTypeDeclaration(inner) + "]";
|
return "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "(Map.Map String " + getTypeDeclaration(inner) + ")";
|
return "(Map.Map String " + getTypeDeclaration(inner) + ")";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
@ -570,7 +570,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
@Override
|
@Override
|
||||||
public String toInstantiationType(Schema p) {
|
public String toInstantiationType(Schema p) {
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema additionalProperties2 = (Schema) p.getAdditionalProperties();
|
Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
|
||||||
String type = additionalProperties2.getType();
|
String type = additionalProperties2.getType();
|
||||||
if (null == type) {
|
if (null == type) {
|
||||||
LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" //
|
LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" //
|
||||||
@ -615,7 +615,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
LOGGER.warn("generated unique operationId `" + uniqueName + "`");
|
LOGGER.warn("generated unique operationId `" + uniqueName + "`");
|
||||||
}
|
}
|
||||||
op.operationId = uniqueName;
|
op.operationId = uniqueName;
|
||||||
op.operationIdLowerCase = uniqueName.toLowerCase();
|
op.operationIdLowerCase = uniqueName.toLowerCase(Locale.ROOT);
|
||||||
op.operationIdCamelCase = DefaultCodegen.camelize(uniqueName);
|
op.operationIdCamelCase = DefaultCodegen.camelize(uniqueName);
|
||||||
op.operationIdSnakeCase = DefaultCodegen.underscore(uniqueName);
|
op.operationIdSnakeCase = DefaultCodegen.underscore(uniqueName);
|
||||||
opList.add(op);
|
opList.add(op);
|
||||||
@ -628,7 +628,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
op.vendorExtensions.put(X_OPERATION_TYPE, operationType);
|
op.vendorExtensions.put(X_OPERATION_TYPE, operationType);
|
||||||
typeNames.add(operationType);
|
typeNames.add(operationType);
|
||||||
|
|
||||||
op.vendorExtensions.put(X_HADDOCK_PATH, String.format("%s %s", op.httpMethod, op.path.replace("/", "\\/")));
|
op.vendorExtensions.put(X_HADDOCK_PATH, String.format(Locale.ROOT, "%s %s", op.httpMethod, op.path.replace("/", "\\/")));
|
||||||
op.vendorExtensions.put(X_HAS_BODY_OR_FORM_PARAM, op.getHasBodyParam() || op.getHasFormParams());
|
op.vendorExtensions.put(X_HAS_BODY_OR_FORM_PARAM, op.getHasBodyParam() || op.getHasFormParams());
|
||||||
|
|
||||||
for (CodegenParameter param : op.allParams) {
|
for (CodegenParameter param : op.allParams) {
|
||||||
@ -1003,9 +1003,9 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
if (word.length() == 0) {
|
if (word.length() == 0) {
|
||||||
return word;
|
return word;
|
||||||
} else if (word.length() == 1) {
|
} else if (word.length() == 1) {
|
||||||
return word.substring(0, 1).toUpperCase();
|
return word.substring(0, 1).toUpperCase(Locale.ROOT);
|
||||||
} else {
|
} else {
|
||||||
return word.substring(0, 1).toUpperCase() + word.substring(1);
|
return word.substring(0, 1).toUpperCase(Locale.ROOT) + word.substring(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1013,9 +1013,9 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
if (word.length() == 0) {
|
if (word.length() == 0) {
|
||||||
return word;
|
return word;
|
||||||
} else if (word.length() == 1) {
|
} else if (word.length() == 1) {
|
||||||
return word.substring(0, 1).toLowerCase();
|
return word.substring(0, 1).toLowerCase(Locale.ROOT);
|
||||||
} else {
|
} else {
|
||||||
return word.substring(0, 1).toLowerCase() + word.substring(1);
|
return word.substring(0, 1).toLowerCase(Locale.ROOT) + word.substring(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1303,7 +1303,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
}
|
}
|
||||||
|
|
||||||
// number
|
// number
|
||||||
if (num.contains(datatype.toLowerCase())) {
|
if (num.contains(datatype.toLowerCase(Locale.ROOT))) {
|
||||||
String varName = "Num" + value;
|
String varName = "Num" + value;
|
||||||
varName = varName.replaceAll("-", "Minus_");
|
varName = varName.replaceAll("-", "Minus_");
|
||||||
varName = varName.replaceAll("\\+", "Plus_");
|
varName = varName.replaceAll("\\+", "Plus_");
|
||||||
@ -1317,7 +1317,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
|||||||
@Override
|
@Override
|
||||||
public String toEnumValue(String value, String datatype) {
|
public String toEnumValue(String value, String datatype) {
|
||||||
List<String> num = new ArrayList<>(Arrays.asList("integer", "int", "double", "long", "float"));
|
List<String> num = new ArrayList<>(Arrays.asList("integer", "int", "double", "long", "float"));
|
||||||
if (num.contains(datatype.toLowerCase())) {
|
if (num.contains(datatype.toLowerCase(Locale.ROOT))) {
|
||||||
return value;
|
return value;
|
||||||
} else {
|
} else {
|
||||||
return "\"" + escapeText(value) + "\"";
|
return "\"" + escapeText(value) + "\"";
|
||||||
|
@ -17,6 +17,10 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.oas.models.Operation;
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
@ -29,15 +33,16 @@ import org.openapitools.codegen.CodegenType;
|
|||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
import org.openapitools.codegen.SupportingFile;
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.parameters.Parameter;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class HaskellServantCodegen extends DefaultCodegen implements CodegenConfig {
|
public class HaskellServantCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
@ -204,9 +209,9 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
if (word.length() == 0) {
|
if (word.length() == 0) {
|
||||||
return word;
|
return word;
|
||||||
} else if (word.length() == 1) {
|
} else if (word.length() == 1) {
|
||||||
return word.substring(0, 1).toUpperCase();
|
return word.substring(0, 1).toUpperCase(Locale.ROOT);
|
||||||
} else {
|
} else {
|
||||||
return word.substring(0, 1).toUpperCase() + word.substring(1);
|
return word.substring(0, 1).toUpperCase(Locale.ROOT) + word.substring(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,9 +219,9 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
if (word.length() == 0) {
|
if (word.length() == 0) {
|
||||||
return word;
|
return word;
|
||||||
} else if (word.length() == 1) {
|
} else if (word.length() == 1) {
|
||||||
return word.substring(0, 1).toLowerCase();
|
return word.substring(0, 1).toLowerCase(Locale.ROOT);
|
||||||
} else {
|
} else {
|
||||||
return word.substring(0, 1).toLowerCase() + word.substring(1);
|
return word.substring(0, 1).toLowerCase(Locale.ROOT) + word.substring(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +235,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
title = "OpenAPI";
|
title = "OpenAPI";
|
||||||
} else {
|
} else {
|
||||||
title = title.trim();
|
title = title.trim();
|
||||||
if (title.toUpperCase().endsWith("API")) {
|
if (title.toUpperCase(Locale.ROOT).endsWith("API")) {
|
||||||
title = title.substring(0, title.length() - 3);
|
title = title.substring(0, title.length() - 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -240,7 +245,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
// The package name is made by appending the lowercased words of the title interspersed with dashes
|
// The package name is made by appending the lowercased words of the title interspersed with dashes
|
||||||
List<String> wordsLower = new ArrayList<String>();
|
List<String> wordsLower = new ArrayList<String>();
|
||||||
for (String word : words) {
|
for (String word : words) {
|
||||||
wordsLower.add(word.toLowerCase());
|
wordsLower.add(word.toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
String cabalName = joinStrings("-", wordsLower);
|
String cabalName = joinStrings("-", wordsLower);
|
||||||
|
|
||||||
@ -293,7 +298,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return "[" + getTypeDeclaration(inner) + "]";
|
return "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "Map.Map String " + getTypeDeclaration(inner);
|
return "Map.Map String " + getTypeDeclaration(inner);
|
||||||
}
|
}
|
||||||
return fixModelChars(super.getTypeDeclaration(p));
|
return fixModelChars(super.getTypeDeclaration(p));
|
||||||
@ -328,7 +333,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
@Override
|
@Override
|
||||||
public String toInstantiationType(Schema p) {
|
public String toInstantiationType(Schema p) {
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema additionalProperties2 = (Schema) p.getAdditionalProperties();
|
Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
|
||||||
String type = additionalProperties2.getType();
|
String type = additionalProperties2.getType();
|
||||||
if (null == type) {
|
if (null == type) {
|
||||||
LOGGER.error("No Type defined for Additional Property " + additionalProperties2 + "\n" //
|
LOGGER.error("No Type defined for Additional Property " + additionalProperties2 + "\n" //
|
||||||
@ -484,7 +489,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
if (returnType.indexOf(" ") >= 0) {
|
if (returnType.indexOf(" ") >= 0) {
|
||||||
returnType = "(" + returnType + ")";
|
returnType = "(" + returnType + ")";
|
||||||
}
|
}
|
||||||
path.add("Verb '" + op.httpMethod.toUpperCase() + " 200 '[JSON] " + returnType);
|
path.add("Verb '" + op.httpMethod.toUpperCase(Locale.ROOT) + " 200 '[JSON] " + returnType);
|
||||||
type.add("m " + returnType);
|
type.add("m " + returnType);
|
||||||
|
|
||||||
op.vendorExtensions.put("x-routeType", joinStrings(" :> ", path));
|
op.vendorExtensions.put("x-routeType", joinStrings(" :> ", path));
|
||||||
|
@ -174,7 +174,7 @@ public class JMeterClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
|
|
||||||
import org.apache.commons.lang3.BooleanUtils;
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
@ -32,6 +31,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
|
public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
|
||||||
@ -198,7 +198,7 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getOrGenerateOperationId(Operation operation, String path, String httpMethod) {
|
protected String getOrGenerateOperationId(Operation operation, String path, String httpMethod) {
|
||||||
return super.getOrGenerateOperationId(operation, path, httpMethod.toUpperCase());
|
return super.getOrGenerateOperationId(operation, path, httpMethod.toUpperCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String apiFilename(String templateName, String tag) {
|
public String apiFilename(String templateName, String tag) {
|
||||||
|
@ -17,13 +17,12 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import io.swagger.v3.oas.models.*;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.BooleanUtils;
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
||||||
|
|
||||||
@ -159,7 +158,7 @@ public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen {
|
|||||||
@Override
|
@Override
|
||||||
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
|
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
|
||||||
if (useTags) {
|
if (useTags) {
|
||||||
String basePath = tag.toLowerCase();
|
String basePath = tag.toLowerCase(Locale.ROOT);
|
||||||
if (basePath.startsWith("/")) {
|
if (basePath.startsWith("/")) {
|
||||||
basePath = basePath.substring(1);
|
basePath = basePath.substring(1);
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ import io.swagger.v3.oas.models.OpenAPI;
|
|||||||
import io.swagger.v3.oas.models.Operation;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import io.swagger.v3.oas.models.PathItem;
|
import io.swagger.v3.oas.models.PathItem;
|
||||||
import io.swagger.v3.oas.models.tags.Tag;
|
import io.swagger.v3.oas.models.tags.Tag;
|
||||||
|
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
@ -39,6 +38,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -541,7 +541,7 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen {
|
|||||||
// Drop any API suffix
|
// Drop any API suffix
|
||||||
if (title != null) {
|
if (title != null) {
|
||||||
title = title.trim().replace(" ", "-");
|
title = title.trim().replace(" ", "-");
|
||||||
if (title.toUpperCase().endsWith("API")) {
|
if (title.toUpperCase(Locale.ROOT).endsWith("API")) {
|
||||||
title = title.substring(0, title.length() - 3);
|
title = title.substring(0, title.length() - 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -191,7 +192,7 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea
|
|||||||
if (this.useSwaggerUI) {
|
if (this.useSwaggerUI) {
|
||||||
//App/Controllers
|
//App/Controllers
|
||||||
supportingFiles.add(new SupportingFile("openapi.mustache", "public", "openapi.json"));
|
supportingFiles.add(new SupportingFile("openapi.mustache", "public", "openapi.json"));
|
||||||
supportingFiles.add(new SupportingFile("apiDocController.mustache", String.format("app/%s", apiPackage.replace(".", File.separator)), "ApiDocController.java"));
|
supportingFiles.add(new SupportingFile("apiDocController.mustache", String.format(Locale.ROOT, "app/%s", apiPackage.replace(".", File.separator)), "ApiDocController.java"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//We remove the default api.mustache that is used
|
//We remove the default api.mustache that is used
|
||||||
|
@ -22,7 +22,6 @@ import io.swagger.v3.oas.models.Operation;
|
|||||||
import io.swagger.v3.oas.models.PathItem;
|
import io.swagger.v3.oas.models.PathItem;
|
||||||
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import org.openapitools.codegen.CodegenModel;
|
||||||
import org.openapitools.codegen.CodegenOperation;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
@ -34,6 +33,7 @@ import org.openapitools.codegen.utils.URLPathUtils;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -175,7 +175,7 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen {
|
|||||||
if (operations != null) {
|
if (operations != null) {
|
||||||
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
|
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
|
||||||
for (CodegenOperation operation : ops) {
|
for (CodegenOperation operation : ops) {
|
||||||
operation.httpMethod = operation.httpMethod.toLowerCase();
|
operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
if ("Void".equalsIgnoreCase(operation.returnType)) {
|
if ("Void".equalsIgnoreCase(operation.returnType)) {
|
||||||
operation.returnType = null;
|
operation.returnType = null;
|
||||||
@ -251,7 +251,7 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen {
|
|||||||
serviceIdTemp = computeServiceId(pathname, entry);
|
serviceIdTemp = computeServiceId(pathname, entry);
|
||||||
entry.getValue().addExtension("x-serviceid", serviceIdTemp);
|
entry.getValue().addExtension("x-serviceid", serviceIdTemp);
|
||||||
entry.getValue().addExtension("x-serviceid-varname",
|
entry.getValue().addExtension("x-serviceid-varname",
|
||||||
serviceIdTemp.toUpperCase() + "_SERVICE_ID");
|
serviceIdTemp.toUpperCase(Locale.ROOT) + "_SERVICE_ID");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -284,7 +284,7 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen {
|
|||||||
pattern = Pattern.compile("(_)(.)");
|
pattern = Pattern.compile("(_)(.)");
|
||||||
matcher = pattern.matcher(word);
|
matcher = pattern.matcher(word);
|
||||||
while (matcher.find()) {
|
while (matcher.find()) {
|
||||||
word = matcher.replaceFirst(matcher.group(2).toUpperCase());
|
word = matcher.replaceFirst(matcher.group(2).toUpperCase(Locale.ROOT));
|
||||||
matcher = pattern.matcher(word);
|
matcher = pattern.matcher(word);
|
||||||
}
|
}
|
||||||
return word;
|
return word;
|
||||||
|
@ -18,7 +18,12 @@
|
|||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.oas.models.info.Info;
|
||||||
|
import io.swagger.v3.oas.models.info.License;
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -27,18 +32,9 @@ import org.openapitools.codegen.CodegenOperation;
|
|||||||
import org.openapitools.codegen.CodegenParameter;
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
import org.openapitools.codegen.CodegenProperty;
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
import org.openapitools.codegen.CodegenType;
|
import org.openapitools.codegen.CodegenType;
|
||||||
import org.openapitools.codegen.SupportingFile;
|
|
||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.PathItem;
|
|
||||||
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
|
||||||
import io.swagger.v3.oas.models.*;
|
|
||||||
import io.swagger.v3.oas.models.parameters.*;
|
|
||||||
import io.swagger.v3.oas.models.info.*;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -48,6 +44,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class JavascriptClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class JavascriptClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
@ -601,7 +598,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return "[" + getTypeDeclaration(inner) + "]";
|
return "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "{String: " + getTypeDeclaration(inner) + "}";
|
return "{String: " + getTypeDeclaration(inner) + "}";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
@ -863,9 +860,9 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
codegenModel.getVendorExtensions().put("x-itemType", getSchemaType(am.getItems()));
|
codegenModel.getVendorExtensions().put("x-itemType", getSchemaType(am.getItems()));
|
||||||
}
|
}
|
||||||
} else if (ModelUtils.isMapSchema(model)) {
|
} else if (ModelUtils.isMapSchema(model)) {
|
||||||
if (model.getAdditionalProperties() != null) {
|
if (ModelUtils.getAdditionalProperties(model) != null) {
|
||||||
codegenModel.getVendorExtensions().put("x-isMap", true);
|
codegenModel.getVendorExtensions().put("x-isMap", true);
|
||||||
codegenModel.getVendorExtensions().put("x-itemType", getSchemaType((Schema) model.getAdditionalProperties()));
|
codegenModel.getVendorExtensions().put("x-itemType", getSchemaType(ModelUtils.getAdditionalProperties(model)));
|
||||||
} else {
|
} else {
|
||||||
String type = model.getType();
|
String type = model.getType();
|
||||||
if (isPrimitiveType(type)){
|
if (isPrimitiveType(type)){
|
||||||
@ -1132,7 +1129,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(value) != null) {
|
if (getSymbolName(value) != null) {
|
||||||
return (getSymbolName(value)).toUpperCase();
|
return (getSymbolName(value)).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
@ -236,7 +236,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "<!" + getTypeDeclaration(inner) + ">";
|
return getSchemaType(p) + "<!" + getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "Object<!string, "+ getTypeDeclaration(inner) + ">";
|
return "Object<!string, "+ getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isFileSchema(p)) {
|
} else if (ModelUtils.isFileSchema(p)) {
|
||||||
return "Object";
|
return "Object";
|
||||||
|
@ -30,7 +30,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCodegen {
|
public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCodegen {
|
||||||
private static final SimpleDateFormat SNAPSHOT_SUFFIX_FORMAT = new SimpleDateFormat("yyyyMMddHHmm");
|
private static final SimpleDateFormat SNAPSHOT_SUFFIX_FORMAT = new SimpleDateFormat("yyyyMMddHHmm", Locale.ROOT);
|
||||||
|
|
||||||
public static final String NPM_NAME = "npmName";
|
public static final String NPM_NAME = "npmName";
|
||||||
public static final String NPM_VERSION = "npmVersion";
|
public static final String NPM_VERSION = "npmVersion";
|
||||||
@ -119,7 +119,7 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
|
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
|
||||||
codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties());
|
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
|
||||||
addImport(codegenModel, codegenModel.additionalPropertiesType);
|
addImport(codegenModel, codegenModel.additionalPropertiesType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo
|
|||||||
inner = ((ArraySchema) p).getItems();
|
inner = ((ArraySchema) p).getItems();
|
||||||
return this.getSchemaType(p) + "<" + this.getTypeDeclaration(inner) + ">";
|
return this.getSchemaType(p) + "<" + this.getTypeDeclaration(inner) + ">";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
inner = (Schema) p.getAdditionalProperties();
|
inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return "{ [key: string]: " + this.getTypeDeclaration(inner) + "; }";
|
return "{ [key: string]: " + this.getTypeDeclaration(inner) + "; }";
|
||||||
} else if (ModelUtils.isFileSchema(p)) {
|
} else if (ModelUtils.isFileSchema(p)) {
|
||||||
return "any";
|
return "any";
|
||||||
|
@ -17,21 +17,32 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.CliOption;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.ListIterator;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(LuaClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(LuaClientCodegen.class);
|
||||||
|
|
||||||
@ -337,7 +348,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,7 +414,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
// find the datatype of the parameter
|
// find the datatype of the parameter
|
||||||
//final CodegenParameter cp = op.pathParams.get(pathParamIndex);
|
//final CodegenParameter cp = op.pathParams.get(pathParamIndex);
|
||||||
// TODO: Handle non-primitives…
|
// TODO: Handle non-primitives…
|
||||||
//luaPath = luaPath + cp.dataType.toLowerCase();
|
//luaPath = luaPath + cp.dataType.toLowerCase(Locale.ROOT);
|
||||||
luaPath = luaPath + "/%s";
|
luaPath = luaPath + "/%s";
|
||||||
pathParamIndex++;
|
pathParamIndex++;
|
||||||
} else if (items[i].length() != 0) {
|
} else if (items[i].length() != 0) {
|
||||||
@ -514,11 +525,11 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(name) != null) {
|
if (getSymbolName(name) != null) {
|
||||||
return getSymbolName(name).toUpperCase();
|
return getSymbolName(name).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String enumName = sanitizeName(underscore(name).toUpperCase());
|
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
|
||||||
enumName = enumName.replaceFirst("^_", "");
|
enumName = enumName.replaceFirst("^_", "");
|
||||||
enumName = enumName.replaceFirst("_$", "");
|
enumName = enumName.replaceFirst("_$", "");
|
||||||
|
|
||||||
@ -531,7 +542,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumName(CodegenProperty property) {
|
public String toEnumName(CodegenProperty property) {
|
||||||
String enumName = underscore(toModelName(property.name)).toUpperCase();
|
String enumName = underscore(toModelName(property.name)).toUpperCase(Locale.ROOT);
|
||||||
|
|
||||||
// remove [] for array or map of enum
|
// remove [] for array or map of enum
|
||||||
enumName = enumName.replace("[]", "");
|
enumName = enumName.replace("[]", "");
|
||||||
|
@ -20,25 +20,37 @@ package org.openapitools.codegen.languages;
|
|||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import org.openapitools.codegen.utils.*;
|
import io.swagger.v3.oas.models.PathItem;
|
||||||
import io.swagger.v3.oas.models.*;
|
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
||||||
import io.swagger.v3.oas.models.info.*;
|
|
||||||
import io.swagger.v3.oas.models.PathItem.*;
|
|
||||||
import io.swagger.v3.oas.models.Paths;
|
import io.swagger.v3.oas.models.Paths;
|
||||||
|
import io.swagger.v3.oas.models.info.Info;
|
||||||
|
import org.openapitools.codegen.CliOption;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
|
import org.openapitools.codegen.CodegenResponse;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
import org.openapitools.codegen.utils.URLPathUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig {
|
public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(NodeJSServerCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(NodeJSServerCodegen.class);
|
||||||
@ -232,7 +244,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
||||||
for (CodegenOperation operation : operations) {
|
for (CodegenOperation operation : operations) {
|
||||||
operation.httpMethod = operation.httpMethod.toLowerCase();
|
operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
List<CodegenParameter> params = operation.allParams;
|
List<CodegenParameter> params = operation.allParams;
|
||||||
if (params != null && params.size() == 0) {
|
if (params != null && params.size() == 0) {
|
||||||
@ -368,7 +380,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
.replaceAll("^[-]*", "")
|
.replaceAll("^[-]*", "")
|
||||||
.replaceAll("[-]*$", "")
|
.replaceAll("[-]*$", "")
|
||||||
.replaceAll("[-]{2,}", "-")
|
.replaceAll("[-]{2,}", "-")
|
||||||
.toLowerCase();
|
.toLowerCase(Locale.ROOT);
|
||||||
this.additionalProperties.put("projectName", projectName);
|
this.additionalProperties.put("projectName", projectName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -28,10 +31,6 @@ import org.openapitools.codegen.CodegenType;
|
|||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
import org.openapitools.codegen.SupportingFile;
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -40,11 +39,10 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ObjcClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(ObjcClientCodegen.class);
|
||||||
|
|
||||||
@ -341,8 +339,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO avoid using toLowerCase as typeMapping should be case-sensitive
|
// TODO avoid using toLowerCase as typeMapping should be case-sensitive
|
||||||
if (typeMapping.containsKey(openAPIType.toLowerCase())) {
|
if (typeMapping.containsKey(openAPIType.toLowerCase(Locale.ROOT))) {
|
||||||
type = typeMapping.get(openAPIType.toLowerCase());
|
type = typeMapping.get(openAPIType.toLowerCase(Locale.ROOT));
|
||||||
if (languageSpecificPrimitives.contains(type) && !foundationClasses.contains(type)) {
|
if (languageSpecificPrimitives.contains(type) && !foundationClasses.contains(type)) {
|
||||||
return toModelNameWithoutReservedWordCheck(type);
|
return toModelNameWithoutReservedWordCheck(type);
|
||||||
}
|
}
|
||||||
@ -377,7 +375,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
return getSchemaType(p) + "<" + innerTypeDeclaration + ">*";
|
return getSchemaType(p) + "<" + innerTypeDeclaration + ">*";
|
||||||
}
|
}
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
String innerTypeDeclaration = getTypeDeclaration(inner);
|
String innerTypeDeclaration = getTypeDeclaration(inner);
|
||||||
|
|
||||||
@ -417,7 +415,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDataTypeBinary(String dataType) {
|
public boolean isDataTypeBinary(String dataType) {
|
||||||
return dataType.toLowerCase().startsWith("nsdata");
|
return dataType.toLowerCase(Locale.ROOT).startsWith("nsdata");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -220,7 +220,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
|
@ -204,7 +204,7 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen {
|
|||||||
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
||||||
|
|
||||||
for (CodegenOperation op : operations) {
|
for (CodegenOperation op : operations) {
|
||||||
op.httpMethod = op.httpMethod.toLowerCase();
|
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
// check to see if the path contains ".", which is not supported by PHP laravel
|
// check to see if the path contains ".", which is not supported by PHP laravel
|
||||||
// ref: https://github.com/swagger-api/swagger-codegen/issues/6897
|
// ref: https://github.com/swagger-api/swagger-codegen/issues/6897
|
||||||
if (op.path != null && op.path.contains(".")) {
|
if (op.path != null && op.path.contains(".")) {
|
||||||
|
@ -17,10 +17,12 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class PhpLumenServerCodegen extends AbstractPhpCodegen {
|
public class PhpLumenServerCodegen extends AbstractPhpCodegen {
|
||||||
@SuppressWarnings("hiding")
|
@SuppressWarnings("hiding")
|
||||||
@ -115,7 +117,7 @@ public class PhpLumenServerCodegen extends AbstractPhpCodegen {
|
|||||||
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
|
||||||
|
|
||||||
for (CodegenOperation op : operations) {
|
for (CodegenOperation op : operations) {
|
||||||
op.httpMethod = op.httpMethod.toLowerCase();
|
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
|
||||||
// check to see if the path contains ".", which is not supported by Lumen
|
// check to see if the path contains ".", which is not supported by Lumen
|
||||||
if (op.path != null && op.path.contains(".")) {
|
if (op.path != null && op.path.contains(".")) {
|
||||||
throw new IllegalArgumentException("'.' (dot) is not supported by PHP Lumen.");
|
throw new IllegalArgumentException("'.' (dot) is not supported by PHP Lumen.");
|
||||||
|
@ -116,6 +116,9 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
supportingFiles.add(new SupportingFile("composer.json", "", "composer.json"));
|
supportingFiles.add(new SupportingFile("composer.json", "", "composer.json"));
|
||||||
supportingFiles.add(new SupportingFile("index.mustache", "", "index.php"));
|
supportingFiles.add(new SupportingFile("index.mustache", "", "index.php"));
|
||||||
supportingFiles.add(new SupportingFile(".htaccess", "", ".htaccess"));
|
supportingFiles.add(new SupportingFile(".htaccess", "", ".htaccess"));
|
||||||
|
|
||||||
|
// remove this line when this class extends AbstractPhpCodegen
|
||||||
|
supportingFiles.add(new SupportingFile(".gitignore", "", ".gitignore"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -160,7 +163,7 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
|
@ -113,7 +113,6 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen {
|
|||||||
supportingFiles.add(new SupportingFile("composer.mustache", "", "composer.json"));
|
supportingFiles.add(new SupportingFile("composer.mustache", "", "composer.json"));
|
||||||
supportingFiles.add(new SupportingFile("index.mustache", "", "index.php"));
|
supportingFiles.add(new SupportingFile("index.mustache", "", "index.php"));
|
||||||
supportingFiles.add(new SupportingFile(".htaccess", "", ".htaccess"));
|
supportingFiles.add(new SupportingFile(".htaccess", "", ".htaccess"));
|
||||||
supportingFiles.add(new SupportingFile(".gitignore", "", ".gitignore"));
|
|
||||||
supportingFiles.add(new SupportingFile("AbstractApiController.mustache", toSrcPath(invokerPackage, srcBasePath), "AbstractApiController.php"));
|
supportingFiles.add(new SupportingFile("AbstractApiController.mustache", toSrcPath(invokerPackage, srcBasePath), "AbstractApiController.php"));
|
||||||
supportingFiles.add(new SupportingFile("SlimRouter.mustache", toSrcPath(invokerPackage, srcBasePath), "SlimRouter.php"));
|
supportingFiles.add(new SupportingFile("SlimRouter.mustache", toSrcPath(invokerPackage, srcBasePath), "SlimRouter.php"));
|
||||||
supportingFiles.add(new SupportingFile("phpunit.xml.mustache", "", "phpunit.xml.dist"));
|
supportingFiles.add(new SupportingFile("phpunit.xml.mustache", "", "phpunit.xml.dist"));
|
||||||
|
@ -17,17 +17,11 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.PathItem;
|
|
||||||
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
|
||||||
import io.swagger.v3.oas.models.*;
|
|
||||||
import io.swagger.v3.oas.models.parameters.*;
|
|
||||||
import io.swagger.v3.core.util.Yaml;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -194,7 +188,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
|
|||||||
this.bundleName = bundleName;
|
this.bundleName = bundleName;
|
||||||
this.bundleClassName = bundleName + "Bundle";
|
this.bundleClassName = bundleName + "Bundle";
|
||||||
this.bundleExtensionName = bundleName + "Extension";
|
this.bundleExtensionName = bundleName + "Extension";
|
||||||
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase();
|
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPhpLegacySupport(Boolean support) {
|
public void setPhpLegacySupport(Boolean support) {
|
||||||
@ -497,7 +491,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ModelUtils.isMapSchema(p)) {
|
if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,23 +17,18 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.PathItem;
|
|
||||||
import org.openapitools.codegen.*;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.oas.models.Operation;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
|
import io.swagger.v3.oas.models.PathItem;
|
||||||
|
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
||||||
import io.swagger.v3.oas.models.media.*;
|
import io.swagger.v3.oas.models.media.*;
|
||||||
import io.swagger.v3.core.util.Yaml;
|
import io.swagger.v3.oas.models.parameters.Parameter;
|
||||||
import io.swagger.v3.oas.models.parameters.*;
|
import io.swagger.v3.oas.models.parameters.QueryParameter;
|
||||||
|
import org.openapitools.codegen.*;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class PhpZendExpressivePathHandlerServerCodegen extends AbstractPhpCodegen {
|
public class PhpZendExpressivePathHandlerServerCodegen extends AbstractPhpCodegen {
|
||||||
|
|
||||||
@ -120,7 +115,7 @@ public class PhpZendExpressivePathHandlerServerCodegen extends AbstractPhpCodege
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (counter == 0) {
|
if (counter == 0) {
|
||||||
co.operationIdLowerCase = co.operationId.toLowerCase();
|
co.operationIdLowerCase = co.operationId.toLowerCase(Locale.ROOT);
|
||||||
opList.add(co);
|
opList.add(co);
|
||||||
co.baseName = tag;
|
co.baseName = tag;
|
||||||
}
|
}
|
||||||
|
@ -17,14 +17,18 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.CliOption;
|
||||||
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
|
import org.openapitools.codegen.SupportingFile;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -33,6 +37,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static java.util.UUID.randomUUID;
|
import static java.util.UUID.randomUUID;
|
||||||
@ -40,7 +45,7 @@ import static java.util.UUID.randomUUID;
|
|||||||
public class PowerShellClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class PowerShellClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(PowerShellClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(PowerShellClientCodegen.class);
|
||||||
|
|
||||||
private String packageGuid = "{" + randomUUID().toString().toUpperCase() + "}";
|
private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}";
|
||||||
|
|
||||||
protected String sourceFolder = "src";
|
protected String sourceFolder = "src";
|
||||||
protected String packageName = "Org.OpenAPITools";
|
protected String packageName = "Org.OpenAPITools";
|
||||||
@ -383,7 +388,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getTypeDeclaration(inner) + "[]";
|
return getTypeDeclaration(inner) + "[]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
// TODO not sure if the following map/hash declaration is correct
|
// TODO not sure if the following map/hash declaration is correct
|
||||||
return "{String, " + getTypeDeclaration(inner) + "}";
|
return "{String, " + getTypeDeclaration(inner) + "}";
|
||||||
} else if (!languageSpecificPrimitives.contains(getSchemaType(p))) {
|
} else if (!languageSpecificPrimitives.contains(getSchemaType(p))) {
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -27,11 +30,6 @@ import org.openapitools.codegen.CodegenType;
|
|||||||
import org.openapitools.codegen.DefaultCodegen;
|
import org.openapitools.codegen.DefaultCodegen;
|
||||||
import org.openapitools.codegen.SupportingFile;
|
import org.openapitools.codegen.SupportingFile;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
|
||||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -40,13 +38,10 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|
||||||
|
|
||||||
public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(PythonClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(PythonClientCodegen.class);
|
||||||
|
|
||||||
@ -404,7 +399,7 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
|
|
||||||
return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")";
|
return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")";
|
||||||
}
|
}
|
||||||
@ -436,7 +431,7 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
|
|
||||||
// if it's all uppper case, convert to lower case
|
// if it's all uppper case, convert to lower case
|
||||||
if (name.matches("^[A-Z_]*$")) {
|
if (name.matches("^[A-Z_]*$")) {
|
||||||
name = name.toLowerCase();
|
name = name.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// underscore the variable name
|
// underscore the variable name
|
||||||
|
@ -20,21 +20,21 @@ package org.openapitools.codegen.languages;
|
|||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import org.openapitools.codegen.*;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
|
||||||
import io.swagger.v3.oas.models.media.*;
|
|
||||||
import io.swagger.v3.oas.models.PathItem;
|
import io.swagger.v3.oas.models.PathItem;
|
||||||
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
import io.swagger.v3.oas.models.PathItem.HttpMethod;
|
||||||
import io.swagger.v3.oas.models.*;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.openapitools.codegen.*;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
public class PythonFlaskConnexionServerCodegen extends DefaultCodegen implements CodegenConfig {
|
public class PythonFlaskConnexionServerCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(PythonFlaskConnexionServerCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(PythonFlaskConnexionServerCodegen.class);
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ public class PythonFlaskConnexionServerCodegen extends DefaultCodegen implements
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]";
|
return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]";
|
||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
@ -400,7 +400,7 @@ public class PythonFlaskConnexionServerCodegen extends DefaultCodegen implements
|
|||||||
|
|
||||||
// if it's all uppper case, convert to lower case
|
// if it's all uppper case, convert to lower case
|
||||||
if (name.matches("^[A-Z_]*$")) {
|
if (name.matches("^[A-Z_]*$")) {
|
||||||
name = name.toLowerCase();
|
name = name.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// underscore the variable name
|
// underscore the variable name
|
||||||
|
@ -286,7 +286,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
Schema inner = ap.getItems();
|
Schema inner = ap.getItems();
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
} else if (ModelUtils.isMapSchema(p)) {
|
} else if (ModelUtils.isMapSchema(p)) {
|
||||||
Schema inner = (Schema) p.getAdditionalProperties();
|
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||||
return getTypeDeclaration(inner);
|
return getTypeDeclaration(inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,11 +428,11 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
// for symbol, e.g. $, #
|
// for symbol, e.g. $, #
|
||||||
if (getSymbolName(name) != null) {
|
if (getSymbolName(name) != null) {
|
||||||
return getSymbolName(name).toUpperCase();
|
return getSymbolName(name).toUpperCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
String enumName = sanitizeName(underscore(name).toUpperCase());
|
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
|
||||||
enumName = enumName.replaceFirst("^_", "");
|
enumName = enumName.replaceFirst("^_", "");
|
||||||
enumName = enumName.replaceFirst("_$", "");
|
enumName = enumName.replaceFirst("_$", "");
|
||||||
|
|
||||||
@ -445,7 +445,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumName(CodegenProperty property) {
|
public String toEnumName(CodegenProperty property) {
|
||||||
String enumName = underscore(toModelName(property.name)).toUpperCase();
|
String enumName = underscore(toModelName(property.name)).toUpperCase(Locale.ROOT);
|
||||||
|
|
||||||
// remove [] for array or map of enum
|
// remove [] for array or map of enum
|
||||||
enumName = enumName.replace("[]", "");
|
enumName = enumName.replace("[]", "");
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user