Skip to content

Commit 700eeb0

Browse files
authored
Merge branch 'master' into patch-1
2 parents f9e6112 + 574ed86 commit 700eeb0

File tree

83 files changed

+1993
-372
lines changed

Some content is hidden

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

83 files changed

+1993
-372
lines changed

.whitesource

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"settingsInheritedFrom": "swagger-api/whitesource-config@main"
3+
}

pom.xml

Lines changed: 12 additions & 10 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.26</version>
15+
<version>1.0.34-SNAPSHOT</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,18 +254,18 @@
252254
</dependency>
253255
</dependencies>
254256
<properties>
255-
<swagger-codegen-version>3.0.26</swagger-codegen-version>
256-
<swagger-parser-version>2.0.26</swagger-parser-version>
257-
<swagger-core-version>2.1.9</swagger-core-version>
258-
<jackson-version>2.11.4</jackson-version>
257+
<swagger-codegen-version>3.0.34-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.12.1</jackson-version>
259261
<scala-version>2.11.1</scala-version>
260262
<felix-version>3.3.0</felix-version>
261-
<commons-io-version>2.4</commons-io-version>
262-
<commons-cli-version>1.2</commons-cli-version>
263+
<commons-io-version>2.11.0</commons-io-version>
264+
<commons-cli-version>1.5.0</commons-cli-version>
263265
<junit-version>4.13.1</junit-version>
264266
<maven-plugin-version>1.0.0</maven-plugin-version>
265-
<commons-lang-version>3.4</commons-lang-version>
266-
<slf4j-version>1.7.12</slf4j-version>
267+
<commons-lang-version>3.12.0</commons-lang-version>
268+
<slf4j-version>1.7.35</slf4j-version>
267269
<scala-maven-plugin-version>3.2.1</scala-maven-plugin-version>
268270
<testng-version>6.9.6</testng-version>
269271
<surefire-version>2.19.1</surefire-version>

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

Lines changed: 101 additions & 107 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: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,17 @@ protected void addInterfaces(List<Schema> schemas, CodegenModel codegenModel, Ma
175175
continue;
176176
}
177177
final String schemaName = ref.substring(ref.lastIndexOf("/") + 1);
178-
this.addInterfaceModel(allModels.get(codegenConfig.toModelName(schemaName)), codegenModel);
178+
179+
final CodegenModel model = allModels.get(codegenConfig.toModelName(schemaName));
180+
this.addInterfaceModel(model, codegenModel);
181+
182+
boolean subTypeAdded = false;
183+
if (codegenModel.getSubTypes() != null) {
184+
subTypeAdded = codegenModel.getSubTypes().stream().anyMatch(existingSubType -> existingSubType.classname.equalsIgnoreCase(model.classname));
185+
}
186+
if (!subTypeAdded) {
187+
codegenModel.addSubType(model);
188+
}
179189
}
180190
}
181191

src/main/java/io/swagger/codegen/v3/generators/examples/ExampleGenerator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ private Object resolveSchemaToExample(String propertyName, String mediaType, Sch
195195
Schema innerType = ((ArraySchema) schema).getItems();
196196
if (innerType != null) {
197197
int arrayLength = schema.getMaxItems() != null ? schema.getMaxItems() : 2;
198+
if (arrayLength > 10) {
199+
logger.warn("value of maxItems of property {} is {}; limiting to 10 examples", schema, arrayLength);
200+
arrayLength = 10;
201+
}
198202
Object[] objectProperties = new Object[arrayLength];
199203
Object objProperty = resolveSchemaToExample(propertyName, mediaType, innerType, processedModels);
200204
for(int i=0; i < arrayLength; i++) {

0 commit comments

Comments
 (0)