Skip to content

Commit ae2e840

Browse files
authored
Merge branch 'master' into fix/php-guzzlehttp-7
2 parents a0b69e0 + 8f1af14 commit ae2e840

File tree

57 files changed

+3170
-66
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+3170
-66
lines changed

.github/workflows/maven-pr.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
name: Build Test PR
2+
3+
on:
4+
pull_request:
5+
branches: [ "master" ]
6+
7+
jobs:
8+
build_pr:
9+
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
java: [ 8, 11, 17 ]
14+
15+
env:
16+
GENERATORS_VERSION_PROPERTY: ""
17+
steps:
18+
- uses: actions/checkout@v3
19+
name: git checkout
20+
- name: Set up Java
21+
uses: actions/setup-java@v3
22+
with:
23+
java-version: ${{ matrix.java }}
24+
distribution: temurin
25+
cache: maven
26+
- name: preliminary checks
27+
run: |
28+
docker login --username=${{ secrets.DOCKERHUB_SB_USERNAME }} --password=${{ secrets.DOCKERHUB_SB_PASSWORD }}
29+
set -e
30+
# fail if templates/generators contain carriage return '\r'
31+
/bin/bash ./bin/utils/detect_carriage_return.sh
32+
# fail if generators contain merge conflicts
33+
/bin/bash ./bin/utils/detect_merge_conflict.sh
34+
# fail if generators contain tab '\t'
35+
/bin/bash ./bin/utils/detect_tab_in_java_class.sh
36+
- uses: s4u/[email protected]
37+
name: setup maven settings.xml
38+
with:
39+
servers: |
40+
[{
41+
"id": "sonatype-nexus-staging",
42+
"username": "${{ secrets.OSSRH_USERNAME }}",
43+
"password": "${{ secrets.OSSRH_TOKEN }}"
44+
},
45+
{
46+
"id": "sonatype-nexus-snapshots",
47+
"username": "${{ secrets.OSSRH_USERNAME }}",
48+
"password": "${{ secrets.OSSRH_TOKEN }}"
49+
}]
50+
- name: Build with Maven
51+
run: |
52+
export MY_POM_VERSION=`mvn -Dswagger-codegen-version=3.0.38 -q -Dexec.executable="echo" -Dexec.args='${projects.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec`
53+
echo "POM VERSION" ${MY_POM_VERSION}
54+
export CODEGEN_VERSION=`sed -n 's/<swagger\-codegen\-version>\([^\s]*\)<\/swagger\-codegen\-version>/\1/p' pom.xml`
55+
export CODEGEN_VERSION=`echo ${CODEGEN_VERSION} | tr -d '[:space:]'`
56+
echo "CODEGEN_VERSION" ${CODEGEN_VERSION}
57+
export CODEGEN_VERSION_PROPERTY=""
58+
if [[ ! $MY_POM_VERSION =~ ^.*SNAPSHOT$ ]];
59+
then
60+
if [[ ! $CODEGEN_VERSION =~ ^.*SNAPSHOT$ ]];
61+
then
62+
# check release version exists
63+
export CODEGEN_FOUND_JSON=`curl -s --max-time 60 --retry 15 --connect-timeout 20 https://search.maven.org/solrsearch/select?q=g:io.swagger.codegen.v3%20AND%20a:swagger-codegen%20AND%20v:${CODEGEN_VERSION}%20AND%20p:jar`
64+
export CODEGEN_FOUND=`echo ${CODEGEN_FOUND_JSON} | jq '.response.numFound'`
65+
echo "CODEGEN_FOUND" ${CODEGEN_FOUND}
66+
if [[ $CODEGEN_FOUND == '0' ]];
67+
then
68+
echo "codegen version not found"
69+
rm -f maven-metadata.json
70+
curl -o maven-metadata.json -s --max-time 60 --retry 15 --connect-timeout 30 -H "accept: application/json" https://oss.sonatype.org/service/local/repositories/snapshots/content/io/swagger/codegen/v3/swagger-codegen/
71+
LAST_SNAP=`jq '.data | sort_by(.lastModified) | reverse | .[0].text' maven-metadata.json`
72+
export LAST_SNAP=${LAST_SNAP:1:${#LAST_SNAP}-2}
73+
echo "LAST_SNAP $LAST_SNAP"
74+
export CODEGEN_VERSION_PROPERTY=-Dswagger-codegen-version=$LAST_SNAP
75+
fi
76+
fi
77+
fi
78+
echo "CODEGEN_VERSION_PROPERTY ${CODEGEN_VERSION_PROPERTY}"
79+
echo "CODEGEN_VERSION_PROPERTY=${CODEGEN_VERSION_PROPERTY}" >> $GITHUB_ENV
80+
./mvnw clean verify -U ${CODEGEN_VERSION_PROPERTY}

.github/workflows/maven-push.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Build Test Push
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
7+
jobs:
8+
build_push:
9+
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
java: [ 8, 11, 17 ]
14+
15+
env:
16+
GENERATORS_VERSION_PROPERTY: ""
17+
18+
steps:
19+
- uses: actions/checkout@v3
20+
name: git checkout
21+
with:
22+
ref: master
23+
- name: Set up Java
24+
uses: actions/setup-java@v3
25+
with:
26+
java-version: ${{ matrix.java }}
27+
distribution: temurin
28+
cache: maven
29+
- name: preliminary checks
30+
run: |
31+
docker login --username=${{ secrets.DOCKERHUB_SB_USERNAME }} --password=${{ secrets.DOCKERHUB_SB_PASSWORD }}
32+
set -e
33+
# fail if templates/generators contain carriage return '\r'
34+
/bin/bash ./bin/utils/detect_carriage_return.sh
35+
# fail if generators contain merge conflicts
36+
/bin/bash ./bin/utils/detect_merge_conflict.sh
37+
# fail if generators contain tab '\t'
38+
/bin/bash ./bin/utils/detect_tab_in_java_class.sh
39+
- uses: s4u/[email protected]
40+
name: setup maven settings.xml
41+
with:
42+
servers: |
43+
[{
44+
"id": "sonatype-nexus-staging",
45+
"username": "${{ secrets.OSSRH_USERNAME }}",
46+
"password": "${{ secrets.OSSRH_TOKEN }}"
47+
},
48+
{
49+
"id": "sonatype-nexus-snapshots",
50+
"username": "${{ secrets.OSSRH_USERNAME }}",
51+
"password": "${{ secrets.OSSRH_TOKEN }}"
52+
}]
53+
- name: Build with Maven
54+
run: |
55+
export MY_POM_VERSION=`mvn -Dswagger-codegen-version=3.0.38 -q -Dexec.executable="echo" -Dexec.args='${projects.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec`
56+
echo "POM VERSION" ${MY_POM_VERSION}
57+
export CODEGEN_VERSION=`sed -n 's/<swagger\-codegen\-version>\([^\s]*\)<\/swagger\-codegen\-version>/\1/p' pom.xml`
58+
export CODEGEN_VERSION=`echo ${CODEGEN_VERSION} | tr -d '[:space:]'`
59+
echo "CODEGEN_VERSION" ${CODEGEN_VERSION}
60+
export CODEGEN_VERSION_PROPERTY=""
61+
if [[ ! $MY_POM_VERSION =~ ^.*SNAPSHOT$ ]];
62+
then
63+
if [[ ! $CODEGEN_VERSION =~ ^.*SNAPSHOT$ ]];
64+
then
65+
# check release version exists
66+
export CODEGEN_FOUND_JSON=`curl -s --max-time 60 --retry 15 --connect-timeout 20 https://search.maven.org/solrsearch/select?q=g:io.swagger.codegen.v3%20AND%20a:swagger-codegen%20AND%20v:${CODEGEN_VERSION}%20AND%20p:jar`
67+
export CODEGEN_FOUND=`echo ${CODEGEN_FOUND_JSON} | jq '.response.numFound'`
68+
echo "CODEGEN_FOUND" ${CODEGEN_FOUND}
69+
if [[ $CODEGEN_FOUND == '0' ]];
70+
then
71+
echo "codegen version not found"
72+
rm -f maven-metadata.json
73+
curl -o maven-metadata.json -s --max-time 60 --retry 15 --connect-timeout 30 -H "accept: application/json" https://oss.sonatype.org/service/local/repositories/snapshots/content/io/swagger/codegen/v3/swagger-codegen/
74+
LAST_SNAP=`jq '.data | sort_by(.lastModified) | reverse | .[0].text' maven-metadata.json`
75+
export LAST_SNAP=${LAST_SNAP:1:${#LAST_SNAP}-2}
76+
echo "LAST_SNAP $LAST_SNAP"
77+
export CODEGEN_VERSION_PROPERTY=-Dswagger-codegen-version=$LAST_SNAP
78+
fi
79+
fi
80+
fi
81+
echo "CODEGEN_VERSION_PROPERTY ${CODEGEN_VERSION_PROPERTY}"
82+
echo "CODEGEN_VERSION_PROPERTY=${CODEGEN_VERSION_PROPERTY}" >> $GITHUB_ENV
83+
./mvnw clean verify -U ${CODEGEN_VERSION_PROPERTY}
84+
- name: Deploy Maven Snapshot
85+
if: ${{ matrix.java == 17 }}
86+
run: |
87+
export MY_POM_VERSION=`mvn -Dswagger-codegen-version=3.0.38 -q -Dexec.executable="echo" -Dexec.args='${projects.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec`
88+
echo "POM VERSION" ${MY_POM_VERSION}
89+
if [[ $MY_POM_VERSION =~ ^.*SNAPSHOT$ ]];
90+
then
91+
./mvnw clean deploy -U --settings $HOME/.m2/settings.xml
92+
else
93+
echo "not deploying release: " ${MY_POM_VERSION}
94+
fi
95+

pom.xml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<groupId>io.swagger.codegen.v3</groupId>
1414
<artifactId>swagger-codegen-generators</artifactId>
15-
<version>1.0.35-SNAPSHOT</version>
15+
<version>1.0.39-SNAPSHOT</version>
1616
<packaging>jar</packaging>
1717

1818
<build>
@@ -254,26 +254,22 @@
254254
</dependency>
255255
</dependencies>
256256
<properties>
257-
<swagger-codegen-version>3.0.35-SNAPSHOT</swagger-codegen-version>
258-
<swagger-parser-version>2.0.30</swagger-parser-version>
259-
<swagger-core-version>2.1.13</swagger-core-version>
260-
<jackson-version>2.13.2</jackson-version>
261-
<!--
262-
jackson-databind 2.13.2 is still affected by CVE-2020-36518.
263-
This version pin for jackson-databind can be removed when bumping jackson to 2.14
264-
-->
265-
<jackson-databind-version>2.13.2.2</jackson-databind-version>
257+
<swagger-codegen-version>3.0.42-SNAPSHOT</swagger-codegen-version>
258+
<swagger-parser-version>2.1.12</swagger-parser-version>
259+
<swagger-core-version>2.2.8</swagger-core-version>
260+
<jackson-version>2.14.0</jackson-version>
261+
<jackson-databind-version>2.14.0</jackson-databind-version>
266262
<scala-version>2.11.1</scala-version>
267263
<felix-version>3.3.0</felix-version>
268264
<commons-io-version>2.11.0</commons-io-version>
269265
<commons-cli-version>1.5.0</commons-cli-version>
270266
<junit-version>4.13.1</junit-version>
271267
<maven-plugin-version>1.0.0</maven-plugin-version>
272268
<commons-lang-version>3.12.0</commons-lang-version>
273-
<slf4j-version>1.7.35</slf4j-version>
269+
<slf4j-version>1.7.36</slf4j-version>
274270
<scala-maven-plugin-version>3.2.1</scala-maven-plugin-version>
275271
<testng-version>6.9.6</testng-version>
276-
<surefire-version>2.19.1</surefire-version>
272+
<surefire-version>2.21.0</surefire-version>
277273
<jmockit-version>1.42</jmockit-version>
278274
<reflections-version>0.9.11</reflections-version>
279275

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3057,7 +3057,7 @@ public void addParentContainer(CodegenModel codegenModel, String name, Schema sc
30573057
* @return The underscored version of the word
30583058
*/
30593059
public static String underscore(String word) {
3060-
String firstPattern = "([A-Z]+)([A-Z][a-z])";
3060+
String firstPattern = "([A-Z]+)([A-Z][a-z][a-z]+)";
30613061
String secondPattern = "([a-z\\d])([A-Z])";
30623062
String replacementPattern = "$1_$2";
30633063
// Replace package separator with slash.

src/main/java/io/swagger/codegen/v3/generators/SchemaHandler.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,18 @@ public List<CodegenModel> getModels() {
7070
}
7171

7272
protected CodegenModel processComposedSchema(CodegenModel codegenModel, ComposedSchema composedSchema, Map<String, CodegenModel> allModels) {
73+
74+
final boolean schemaWithNoProperties = codegenModel.vars == null || codegenModel.vars.isEmpty();
75+
if (schemaWithNoProperties && (composedSchema.getAllOf() == null || composedSchema.getAllOf().isEmpty())) {
76+
if (composedSchema.getOneOf() != null && !composedSchema.getOneOf().isEmpty()) {
77+
this.addInterfaces(composedSchema.getOneOf(), codegenModel, allModels);
78+
} else if (composedSchema.getAnyOf() != null && !composedSchema.getAnyOf().isEmpty()) {
79+
this.addInterfaces(composedSchema.getAnyOf(), codegenModel, allModels);
80+
}
81+
codegenModel.setIsComposedModel(true);
82+
return codegenModel;
83+
}
84+
7385
List<Schema> schemas = composedSchema.getOneOf();
7486
CodegenModel composedModel = this.createComposedModel(ONE_OF_PREFFIX + codegenModel.getName(), schemas);
7587
if (composedModel == null) {
@@ -186,6 +198,19 @@ protected void addInterfaces(List<Schema> schemas, CodegenModel codegenModel, Ma
186198
if (!subTypeAdded) {
187199
codegenModel.addSubType(model);
188200
}
201+
202+
if (codegenModel.getVendorExtensions() == null || codegenModel.getVendorExtensions().containsKey("x-discriminator-type")) {
203+
continue;
204+
}
205+
if (codegenModel.getDiscriminator() != null && StringUtils.isNotBlank(codegenModel.getDiscriminator().getPropertyName())) {
206+
Optional<CodegenProperty> optionalProperty = model.vars.stream()
207+
.filter(codegenProperty -> codegenProperty.baseName.equals(codegenModel.getDiscriminator().getPropertyName())).findFirst();
208+
209+
optionalProperty.ifPresent(codegenProperty -> {
210+
codegenModel.getVendorExtensions().put("x-discriminator-type", codegenProperty.datatypeWithEnum);
211+
codegenModel.getVendorExtensions().put("x-discriminator-type-getter", codegenConfig.toGetter(codegenModel.getDiscriminator().getPropertyName()));
212+
});
213+
}
189214
}
190215
}
191216

src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ public String getSchemaType(Schema propertySchema) {
755755
String type;
756756

757757
if (swaggerType == null) {
758-
swaggerType = StringUtils.EMPTY; // set swagger type to empty string if null
758+
swaggerType = "object";
759759
}
760760

761761
// TODO avoid using toLowerCase as typeMapping should be case-sensitive

src/main/java/io/swagger/codegen/v3/generators/dotnet/CSharpClientCodegen.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,26 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
587587
super.postProcessModelProperty(model, property);
588588
}
589589

590+
@Override
591+
protected void fixUpParentAndInterfaces(CodegenModel codegenModel, Map<String, CodegenModel> allModels) {
592+
super.fixUpParentAndInterfaces(codegenModel, allModels);
593+
final CodegenModel parentModel = codegenModel.getParentModel();
594+
if (parentModel == null || (codegenModel.getReadWriteVars() == null || codegenModel.getReadWriteVars().isEmpty()) || (parentModel.getVars() == null || parentModel.getVars().isEmpty())) {
595+
return;
596+
}
597+
codegenModel.setParentVars(parentModel.getVars());
598+
parentModel.getVars().forEach(parentProperty -> {
599+
codegenModel.getReadWriteVars().stream()
600+
.filter(codegenProperty -> parentProperty.getName().equalsIgnoreCase(codegenProperty.getName()))
601+
.findFirst()
602+
.ifPresent(codegenProperty -> {
603+
codegenProperty.setDatatype(parentProperty.getDatatype());
604+
codegenProperty.setDatatypeWithEnum(parentProperty.getDatatypeWithEnum());
605+
});
606+
});
607+
608+
}
609+
590610
/*
591611
* The swagger pattern spec follows the Perl convention and style of modifiers. .NET
592612
* does not support this syntax directly so we need to convert the pattern to a .NET compatible

src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1033,9 +1033,10 @@ protected void fixUpParentAndInterfaces(CodegenModel codegenModel, Map<String, C
10331033
if (codegenModel.vars == null || codegenModel.vars.isEmpty() || codegenModel.parentModel == null) {
10341034
return;
10351035
}
1036-
CodegenModel parentModel = codegenModel.parentModel;
10371036

10381037
for (CodegenProperty codegenProperty : codegenModel.vars) {
1038+
CodegenModel parentModel = codegenModel.parentModel;
1039+
10391040
while (parentModel != null) {
10401041
if (parentModel.vars == null || parentModel.vars.isEmpty()) {
10411042
parentModel = parentModel.parentModel;
@@ -1049,6 +1050,7 @@ protected void fixUpParentAndInterfaces(CodegenModel codegenModel, Map<String, C
10491050
!parentProperty.datatype.equals(codegenProperty.datatype)));
10501051
if (hasConflict) {
10511052
codegenProperty.name = toVarName(codegenModel.name + "_" + codegenProperty.name);
1053+
codegenProperty.nameInCamelCase = camelize(codegenProperty.name, false);
10521054
codegenProperty.getter = toGetter(codegenProperty.name);
10531055
codegenProperty.setter = toSetter(codegenProperty.name);
10541056
break;

src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaJAXRSServerCodegen.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.HashMap;
2323
import java.util.List;
2424
import java.util.Map;
25+
import java.io.File;
2526

2627
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
2728

@@ -224,11 +225,11 @@ public String apiFilename(String templateName, String tag) {
224225
String result = super.apiFilename(templateName, tag);
225226

226227
if ( templateName.endsWith("Impl.mustache") ) {
227-
int ix = result.lastIndexOf('/');
228+
int ix = result.lastIndexOf(File.separatorChar);
228229
result = result.substring(0, ix) + "/impl" + result.substring(ix, result.length() - 5) + "ServiceImpl.java";
229230
result = result.replace(apiFileFolder(), implFileFolder(implFolder));
230231
} else if ( templateName.endsWith("Factory.mustache") ) {
231-
int ix = result.lastIndexOf('/');
232+
int ix = result.lastIndexOf(File.separatorChar);
232233
result = result.substring(0, ix) + "/factories" + result.substring(ix, result.length() - 5) + "ServiceFactory.java";
233234
result = result.replace(apiFileFolder(), implFileFolder(implFolder));
234235
} else if ( templateName.endsWith("Service.mustache") ) {

src/main/java/io/swagger/codegen/v3/generators/java/JavaClientCodegen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public JavaClientCodegen() {
9191
supportedLibraries.put("feign", "HTTP client: OpenFeign 9.4.0. JSON processing: Jackson 2.10.1");
9292
supportedLibraries.put("jersey2", "HTTP client: Jersey client 2.26. JSON processing: Jackson 2.10.1");
9393
supportedLibraries.put("okhttp-gson", "HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.8.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.");
94+
supportedLibraries.put("okhttp4-gson", "HTTP client: OkHttp 4.10.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.");
9495
supportedLibraries.put(RETROFIT_1, "HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.3.1 (Retrofit 1.9.0). IMPORTANT NOTE: retrofit1.x is no longer actively maintained so please upgrade to 'retrofit2' instead.");
9596
supportedLibraries.put(RETROFIT_2, "HTTP client: OkHttp 3.8.0. JSON processing: Gson 2.6.1 (Retrofit 2.3.0). Enable the RxJava adapter using '-DuseRxJava[2]=true'. (RxJava 1.x or 2.x)");
9697
supportedLibraries.put("resttemplate", "HTTP client: Spring RestTemplate 4.3.9-RELEASE. JSON processing: Jackson 2.9.9");
@@ -231,7 +232,7 @@ public void processOpts() {
231232
additionalProperties.put("jackson", "true");
232233
supportingFiles.add(new SupportingFile("ParamExpander.mustache", invokerFolder, "ParamExpander.java"));
233234
supportingFiles.add(new SupportingFile("EncodingUtils.mustache", invokerFolder, "EncodingUtils.java"));
234-
} else if ("okhttp-gson".equals(getLibrary()) || StringUtils.isEmpty(getLibrary())) {
235+
} else if ("okhttp-gson".equals(getLibrary()) || "okhttp4-gson".equals(getLibrary()) || StringUtils.isEmpty(getLibrary())) {
235236
// the "okhttp-gson" library template requires "ApiCallback.mustache" for async call
236237
supportingFiles.add(new SupportingFile("ApiCallback.mustache", invokerFolder, "ApiCallback.java"));
237238
supportingFiles.add(new SupportingFile("ApiResponse.mustache", invokerFolder, "ApiResponse.java"));

0 commit comments

Comments
 (0)