Skip to content

Commit 6cb316d

Browse files
authored
Merge branch 'master' into patch-1
2 parents d45be82 + d5078f7 commit 6cb316d

File tree

299 files changed

+9507
-1071
lines changed

Some content is hidden

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

299 files changed

+9507
-1071
lines changed

pom.xml

Lines changed: 9 additions & 7 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.22-SNAPSHOT</version>
15+
<version>1.0.29</version>
1616
<packaging>jar</packaging>
1717

1818
<build>
@@ -66,10 +66,12 @@
6666
</plugin>
6767
<plugin>
6868
<artifactId>maven-surefire-plugin</artifactId>
69-
<version>2.22.0</version>
69+
<version>2.22.2</version>
7070
<configuration>
7171
<argLine>
7272
-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit-version}/jmockit-${jmockit-version}.jar
73+
-XX:+IgnoreUnrecognizedVMOptions
74+
--add-opens=java.base/java.util=ALL-UNNAMED
7375
</argLine>
7476
</configuration>
7577
</plugin>
@@ -252,15 +254,15 @@
252254
</dependency>
253255
</dependencies>
254256
<properties>
255-
<swagger-codegen-version>3.0.22-SNAPSHOT</swagger-codegen-version>
256-
<swagger-parser-version>2.0.21</swagger-parser-version>
257-
<swagger-core-version>2.1.4</swagger-core-version>
258-
<jackson-version>2.10.3</jackson-version>
257+
<swagger-codegen-version>3.0.29</swagger-codegen-version>
258+
<swagger-parser-version>2.0.28</swagger-parser-version>
259+
<swagger-core-version>2.1.11</swagger-core-version>
260+
<jackson-version>2.12.1</jackson-version>
259261
<scala-version>2.11.1</scala-version>
260262
<felix-version>3.3.0</felix-version>
261263
<commons-io-version>2.4</commons-io-version>
262264
<commons-cli-version>1.2</commons-cli-version>
263-
<junit-version>4.8.1</junit-version>
265+
<junit-version>4.13.1</junit-version>
264266
<maven-plugin-version>1.0.0</maven-plugin-version>
265267
<commons-lang-version>3.4</commons-lang-version>
266268
<slf4j-version>1.7.12</slf4j-version>

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

Lines changed: 170 additions & 111 deletions
Large diffs are not rendered by default.
Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
package io.swagger.codegen.v3.generators;
2+
3+
import io.swagger.codegen.v3.CodegenConstants;
4+
import io.swagger.codegen.v3.CodegenContent;
5+
import io.swagger.codegen.v3.CodegenOperation;
6+
import io.swagger.codegen.v3.CodegenParameter;
7+
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
8+
import io.swagger.v3.oas.models.OpenAPI;
9+
import io.swagger.v3.oas.models.media.ArraySchema;
10+
import io.swagger.v3.oas.models.media.Schema;
11+
import io.swagger.v3.oas.models.parameters.CookieParameter;
12+
import io.swagger.v3.oas.models.parameters.HeaderParameter;
13+
import io.swagger.v3.oas.models.parameters.Parameter;
14+
import io.swagger.v3.oas.models.parameters.PathParameter;
15+
import io.swagger.v3.oas.models.parameters.QueryParameter;
16+
17+
import java.util.ArrayList;
18+
import java.util.Collections;
19+
import java.util.List;
20+
import java.util.Map;
21+
import java.util.Set;
22+
23+
public class OperationParameters {
24+
25+
private CodegenParameter bodyParam = null;
26+
private List<CodegenParameter> allParams = new ArrayList<>();
27+
private List<CodegenParameter> bodyParams = new ArrayList<>();
28+
private List<CodegenParameter> pathParams = new ArrayList<>();
29+
private List<CodegenParameter> queryParams = new ArrayList<>();
30+
private List<CodegenParameter> headerParams = new ArrayList<>();
31+
private List<CodegenParameter> cookieParams = new ArrayList<>();
32+
private List<CodegenParameter> formParams = new ArrayList<>();
33+
private List<CodegenParameter> requiredParams = new ArrayList<>();
34+
private List<CodegenContent> codegenContents = new ArrayList<>();
35+
36+
public void setBodyParam(CodegenParameter bodyParam) {
37+
this.bodyParam = bodyParam;
38+
}
39+
40+
public CodegenParameter getBodyParam() {
41+
return bodyParam;
42+
}
43+
44+
public List<CodegenParameter> getAllParams() {
45+
return allParams;
46+
}
47+
48+
public List<CodegenParameter> getBodyParams() {
49+
return bodyParams;
50+
}
51+
52+
public List<CodegenParameter> getPathParams() {
53+
return pathParams;
54+
}
55+
56+
public List<CodegenParameter> getQueryParams() {
57+
return queryParams;
58+
}
59+
60+
public List<CodegenParameter> getHeaderParams() {
61+
return headerParams;
62+
}
63+
64+
public List<CodegenParameter> getCookieParams() {
65+
return cookieParams;
66+
}
67+
68+
public List<CodegenParameter> getFormParams() {
69+
return formParams;
70+
}
71+
72+
public List<CodegenParameter> getRequiredParams() {
73+
return requiredParams;
74+
}
75+
76+
public List<CodegenContent> getCodegenContents() {
77+
return codegenContents;
78+
}
79+
80+
public void addAllParams(CodegenParameter codegenParameter) {
81+
allParams.add(codegenParameter);
82+
}
83+
84+
public void addBodyParams(CodegenParameter codegenParameter) {
85+
bodyParams.add(codegenParameter);
86+
}
87+
88+
public void addPathParams(CodegenParameter codegenParameter) {
89+
pathParams.add(codegenParameter);
90+
}
91+
92+
public void addQueryParams(CodegenParameter codegenParameter) {
93+
queryParams.add(codegenParameter);
94+
}
95+
96+
public void addHeaderParams(CodegenParameter codegenParameter) {
97+
headerParams.add(codegenParameter);
98+
}
99+
100+
public void addCookieParams(CodegenParameter codegenParameter) {
101+
cookieParams.add(codegenParameter);
102+
}
103+
104+
public void addFormParam(CodegenParameter codegenParameter) {
105+
formParams.add(codegenParameter);
106+
}
107+
108+
public void addRequiredParam(CodegenParameter codegenParameter) {
109+
requiredParams.add(codegenParameter);
110+
}
111+
112+
public void addCodegenContents(CodegenContent codegenContent) {
113+
codegenContents.add(codegenContent);
114+
}
115+
116+
public void addParameters(Parameter parameter, CodegenParameter codegenParameter) {
117+
allParams.add(codegenParameter);
118+
119+
if (parameter instanceof QueryParameter || "query".equalsIgnoreCase(parameter.getIn())) {
120+
queryParams.add(codegenParameter.copy());
121+
} else if (parameter instanceof PathParameter || "path".equalsIgnoreCase(parameter.getIn())) {
122+
pathParams.add(codegenParameter.copy());
123+
} else if (parameter instanceof HeaderParameter || "header".equalsIgnoreCase(parameter.getIn())) {
124+
headerParams.add(codegenParameter.copy());
125+
} else if (parameter instanceof CookieParameter || "cookie".equalsIgnoreCase(parameter.getIn())) {
126+
cookieParams.add(codegenParameter.copy());
127+
}
128+
if (codegenParameter.required) {
129+
requiredParams.add(codegenParameter.copy());
130+
}
131+
}
132+
133+
public void addHasMore(CodegenOperation codegenOperation) {
134+
codegenOperation.allParams = addHasMore(allParams);
135+
codegenOperation.bodyParams = addHasMore(bodyParams);
136+
codegenOperation.pathParams = addHasMore(pathParams);
137+
codegenOperation.queryParams = addHasMore(queryParams);
138+
codegenOperation.headerParams = addHasMore(headerParams);
139+
codegenOperation.cookieParams = addHasMore(cookieParams);
140+
codegenOperation.formParams = addHasMore(formParams);
141+
codegenOperation.requiredParams = addHasMore(requiredParams);
142+
}
143+
144+
public void sortRequiredAllParams() {
145+
Collections.sort(allParams, (one, another) -> {
146+
if (one.required == another.required) {
147+
return 0;
148+
} else if (one.required) {
149+
return -1;
150+
} else {
151+
return 1;
152+
}
153+
});
154+
}
155+
156+
public void parseNestedObjects(String name, Schema schema, Set<String> imports, DefaultCodegenConfig codegenConfig, OpenAPI openAPI) {
157+
schema = OpenAPIUtil.getRefSchemaIfExists(schema, openAPI);
158+
if (schema == null || !isObjectWithProperties(schema)) {
159+
return;
160+
}
161+
final Map<String, Schema> properties = schema.getProperties();
162+
for (String key : properties.keySet()) {
163+
Schema property = properties.get(key);
164+
property = OpenAPIUtil.getRefSchemaIfExists(property, openAPI);
165+
boolean required;
166+
if (schema.getRequired() == null || schema.getRequired().isEmpty()) {
167+
required = false;
168+
} else {
169+
required = schema.getRequired().stream().anyMatch(propertyName -> key.equalsIgnoreCase(propertyName.toString()));
170+
}
171+
final String parameterName;
172+
if (property instanceof ArraySchema) {
173+
parameterName = String.format("%s[%s][]", name, key);
174+
} else {
175+
parameterName = String.format("%s[%s]", name, key);
176+
}
177+
if (isObjectWithProperties(property)) {
178+
parseNestedObjects(parameterName, property, imports, codegenConfig, openAPI);
179+
continue;
180+
}
181+
final Parameter queryParameter = new QueryParameter()
182+
.name(parameterName)
183+
.required(required)
184+
.schema(property);
185+
final CodegenParameter codegenParameter = codegenConfig.fromParameter(queryParameter, imports);
186+
addParameters(queryParameter, codegenParameter);
187+
}
188+
}
189+
190+
public static List<CodegenParameter> addHasMore(List<CodegenParameter> codegenParameters) {
191+
if (codegenParameters == null || codegenParameters.isEmpty()) {
192+
return codegenParameters;
193+
}
194+
for (int i = 0; i < codegenParameters.size(); i++) {
195+
codegenParameters.get(i).secondaryParam = i > 0;
196+
codegenParameters.get(i).getVendorExtensions().put(CodegenConstants.HAS_MORE_EXT_NAME, i < codegenParameters.size() - 1);
197+
}
198+
return codegenParameters;
199+
}
200+
201+
private boolean isObjectWithProperties(Schema schema) {
202+
return ("object".equalsIgnoreCase(schema.getType()) || schema.getType() == null)
203+
&& schema.getProperties() != null
204+
&& !schema.getProperties().isEmpty();
205+
}
206+
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ public SchemaHandler(DefaultCodegenConfig codegenConfig) {
3333
public void processComposedSchemas(CodegenModel codegenModel, Schema schema, Map<String, CodegenModel> allModels) {
3434
if (schema instanceof ComposedSchema) {
3535
this.addComposedModel(this.processComposedSchema(codegenModel, (ComposedSchema) schema, allModels));
36-
return;
3736
}
3837
if (schema instanceof ArraySchema) {
3938
this.addComposedModel(this.processArrayItemSchema(codegenModel, (ArraySchema) schema, allModels));
@@ -141,6 +140,7 @@ protected CodegenModel processArrayItemSchema(String codegenModelName, CodegenPr
141140
return null;
142141
}
143142
this.updatePropertyDataType(codegenProperty, composedModel.name, arraySchema);
143+
this.updatePropertyDataType(codegenProperty.items, composedModel);
144144
return composedModel;
145145
}
146146
return null;
@@ -209,6 +209,7 @@ protected void updatePropertyDataType(CodegenProperty codegenProperty, String sc
209209
arraySchema.setItems(refSchema);
210210
codegenProperty.setDatatype(this.codegenConfig.getTypeDeclaration(arraySchema));
211211
codegenProperty.setDatatypeWithEnum(codegenProperty.getDatatype());
212+
codegenProperty.vendorExtensions.put("x-is-composed", true);
212213

213214
codegenProperty.defaultValue = this.codegenConfig.toDefaultValue(arraySchema);
214215
codegenProperty.defaultValueWithParam = this.codegenConfig.toDefaultValueWithParam(codegenProperty.baseName, arraySchema);
@@ -225,6 +226,8 @@ protected void updateArrayModel(CodegenModel codegenModel, String schemaName, Ar
225226
this.codegenConfig.addParentContainer(codegenModel, codegenModel.name, arraySchema);
226227
codegenModel.defaultValue = this.codegenConfig.toDefaultValue(arraySchema);
227228
codegenModel.arrayModelType = this.codegenConfig.fromProperty(codegenModel.name, arraySchema).complexType;
229+
boolean isInterface = codegenModel.arrayModelType.startsWith(ALL_OF_PREFFIX) || codegenModel.arrayModelType.startsWith(ONE_OF_PREFFIX) || codegenModel.arrayModelType.startsWith(ANY_OF_PREFFIX);
230+
codegenModel.getVendorExtensions().put("x-array-model-type-is-interface", isInterface);
228231

229232
arraySchema.setItems(items);
230233
}
@@ -234,5 +237,6 @@ private void updatePropertyDataType(CodegenProperty codegenProperty, CodegenMode
234237
codegenProperty.datatypeWithEnum = composedModel.getClassname();
235238
codegenProperty.baseType = composedModel.getClassname();
236239
codegenProperty.complexType = composedModel.getClassname();
240+
codegenProperty.vendorExtensions.put("x-is-composed", true);
237241
}
238242
}

0 commit comments

Comments
 (0)