Skip to content

Commit 067d980

Browse files
authored
Merge pull request #10924 from swagger-api/generator-updates
Generator updates
2 parents 35adbd5 + bc9691e commit 067d980

File tree

1,184 files changed

+10864
-6898
lines changed

Some content is hidden

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

1,184 files changed

+10864
-6898
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import java.util.regex.Pattern;
1212

1313
import io.swagger.models.properties.UntypedProperty;
14-
import io.swagger.util.Yaml;
1514
import org.apache.commons.lang3.ObjectUtils;
1615
import org.apache.commons.lang3.StringEscapeUtils;
1716
import org.apache.commons.lang3.StringUtils;
@@ -401,6 +400,15 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
401400

402401
// override to post-process any model properties
403402
@SuppressWarnings("unused")
403+
public void postProcessModelProperties(CodegenModel model){
404+
if (model.vars == null || model.vars.isEmpty()) {
405+
return;
406+
}
407+
for(CodegenProperty codegenProperty : model.vars) {
408+
postProcessModelProperty(model, codegenProperty);
409+
}
410+
}
411+
404412
public void postProcessModelProperty(CodegenModel model, CodegenProperty property){
405413
}
406414

@@ -1546,11 +1554,7 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
15461554
addVars(m, impl.getProperties(), impl.getRequired(), allDefinitions);
15471555
}
15481556

1549-
if (m.vars != null) {
1550-
for(CodegenProperty prop : m.vars) {
1551-
postProcessModelProperty(m, prop);
1552-
}
1553-
}
1557+
postProcessModelProperties(m);
15541558
return m;
15551559
}
15561560

@@ -2784,26 +2788,7 @@ public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
27842788
} else {
27852789
Model sub = bp.getSchema();
27862790
if (sub instanceof RefModel) {
2787-
String name = ((RefModel) sub).getSimpleRef();
2788-
try {
2789-
name = URLDecoder.decode(name, StandardCharsets.UTF_8.name());
2790-
} catch (UnsupportedEncodingException e) {
2791-
LOGGER.error("Could not decoded string: " + name, e);
2792-
}
2793-
name = getAlias(name);
2794-
if (typeMapping.containsKey(name)) {
2795-
name = typeMapping.get(name);
2796-
p.baseType = name;
2797-
} else {
2798-
name = toModelName(name);
2799-
p.baseType = name;
2800-
if (defaultIncludes.contains(name)) {
2801-
imports.add(name);
2802-
}
2803-
imports.add(name);
2804-
name = getTypeDeclaration(name);
2805-
}
2806-
p.dataType = name;
2791+
readRefModelParameter((RefModel) model, p, imports);
28072792
} else {
28082793
if (sub instanceof ComposedModel) {
28092794
p.dataType = "object";
@@ -2913,6 +2898,29 @@ public boolean isDataTypeFile(String dataType) {
29132898
}
29142899
}
29152900

2901+
protected void readRefModelParameter(RefModel refModel, CodegenParameter codegenParameter, Set<String> imports) {
2902+
String name = refModel.getSimpleRef();
2903+
try {
2904+
name = URLDecoder.decode(name, StandardCharsets.UTF_8.name());
2905+
} catch (UnsupportedEncodingException e) {
2906+
LOGGER.error("Could not decoded string: " + name, e);
2907+
}
2908+
name = getAlias(name);
2909+
if (typeMapping.containsKey(name)) {
2910+
name = typeMapping.get(name);
2911+
codegenParameter.baseType = name;
2912+
} else {
2913+
name = toModelName(name);
2914+
codegenParameter.baseType = name;
2915+
if (defaultIncludes.contains(name)) {
2916+
imports.add(name);
2917+
}
2918+
imports.add(name);
2919+
name = getTypeDeclaration(name);
2920+
}
2921+
codegenParameter.dataType = name;
2922+
}
2923+
29162924
/**
29172925
* Convert map of Swagger SecuritySchemeDefinition objects to a list of Codegen Security objects
29182926
*

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractGoCodegen.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,13 @@ public Map<String, String> createMapping(String key, String value) {
458458

459459
@Override
460460
public String toEnumValue(String value, String datatype) {
461-
if ("int".equals(datatype) || "double".equals(datatype) || "float".equals(datatype)) {
461+
if ("int".equals(datatype) || "int32".equals(datatype) || "int64".equals(datatype)
462+
|| "uint".equals(datatype) || "uint32".equals(datatype) || "uint64".equals(datatype)
463+
|| "float".equals(datatype) || "float32".equals(datatype) || "float64".equals(datatype)
464+
|| "boolean".equals(datatype) || "double".equals(datatype)) {
462465
return value;
466+
} else if ("string".equals(datatype)) {
467+
return String.format("\"%s\"", value);
463468
} else {
464469
return escapeText(value);
465470
}
@@ -477,11 +482,16 @@ public String toEnumVarName(String name, String datatype) {
477482
}
478483

479484
// number
480-
if ("int".equals(datatype) || "double".equals(datatype) || "float".equals(datatype)) {
485+
if ("int".equals(datatype) || "int32".equals(datatype) || "int64".equals(datatype)
486+
|| "uint".equals(datatype) || "uint32".equals(datatype) || "uint64".equals(datatype)
487+
|| "float".equals(datatype) || "float32".equals(datatype) || "float64".equals(datatype)) {
481488
String varName = name;
482489
varName = varName.replaceAll("-", "MINUS_");
483490
varName = varName.replaceAll("\\+", "PLUS_");
484491
varName = varName.replaceAll("\\.", "_DOT_");
492+
if (varName.matches("\\d.*")) {
493+
return "_" + varName;
494+
}
485495
return varName;
486496
}
487497

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.swagger.codegen.*;
66
import io.swagger.models.Model;
77
import io.swagger.models.ModelImpl;
8+
import io.swagger.models.RefModel;
89
import io.swagger.models.Swagger;
910
import io.swagger.models.properties.ArrayProperty;
1011
import io.swagger.models.properties.Property;
@@ -15,6 +16,9 @@
1516
import org.slf4j.LoggerFactory;
1617

1718
import java.io.File;
19+
import java.io.UnsupportedEncodingException;
20+
import java.net.URLDecoder;
21+
import java.nio.charset.StandardCharsets;
1822
import java.util.*;
1923

2024
import static org.apache.commons.lang3.StringUtils.isEmpty;
@@ -583,6 +587,28 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
583587
return codegenModel;
584588
}
585589

590+
@Override
591+
protected void readRefModelParameter(RefModel refModel, CodegenParameter codegenParameter, Set<String> imports) {
592+
String name = getSwaggerType(new RefProperty(refModel.get$ref()));
593+
594+
try {
595+
name = URLDecoder.decode(name, StandardCharsets.UTF_8.name());
596+
} catch (UnsupportedEncodingException e) {
597+
LOGGER.error("Could not decoded string: " + name, e);
598+
}
599+
name = getAlias(name);
600+
if (typeMapping.containsKey(name)) {
601+
name = typeMapping.get(name);
602+
} else {
603+
if (defaultIncludes.contains(name)) {
604+
imports.add(name);
605+
}
606+
}
607+
codegenParameter.baseType = name;
608+
codegenParameter.dataType = name;
609+
}
610+
611+
586612
public void setOptionalProjectFileFlag(boolean flag) {
587613
this.optionalProjectFileFlag = flag;
588614
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJAXRSSpecServerCodegen.java

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
package io.swagger.codegen.languages;
22

3-
import java.io.File;
4-
import java.io.IOException;
5-
import java.nio.charset.StandardCharsets;
6-
import java.util.ArrayList;
7-
import java.util.LinkedHashMap;
8-
import java.util.List;
9-
import java.util.Map;
10-
11-
import org.apache.commons.io.FileUtils;
12-
133
import io.swagger.codegen.CliOption;
144
import io.swagger.codegen.CodegenConstants;
155
import io.swagger.codegen.CodegenModel;
166
import io.swagger.codegen.CodegenOperation;
7+
import io.swagger.codegen.CodegenParameter;
178
import io.swagger.codegen.CodegenProperty;
189
import io.swagger.codegen.SupportingFile;
1910
import io.swagger.models.Operation;
2011
import io.swagger.models.Swagger;
12+
import io.swagger.models.parameters.Parameter;
2113
import io.swagger.util.Json;
14+
import org.apache.commons.io.FileUtils;
15+
16+
import java.io.File;
17+
import java.io.IOException;
18+
import java.nio.charset.StandardCharsets;
19+
import java.util.ArrayList;
20+
import java.util.LinkedHashMap;
21+
import java.util.List;
22+
import java.util.Map;
23+
import java.util.Set;
2224

2325
public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen
2426
{
@@ -57,6 +59,7 @@ public JavaJAXRSSpecServerCodegen()
5759
typeMapping.put("date", "LocalDate");
5860

5961
importMapping.put("LocalDate", "org.joda.time.LocalDate");
62+
importMapping.put("InputStream", "java.io.InputStream");
6063

6164
super.embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "spec";
6265

@@ -162,6 +165,33 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
162165
model.imports.remove("JsonProperty");
163166
}
164167

168+
@Override
169+
public void postProcessModelProperties(CodegenModel model){
170+
if (model.vars == null || model.vars.isEmpty()) {
171+
return;
172+
}
173+
final boolean useJackson = Boolean.valueOf(String.valueOf(additionalProperties.get("jackson")));
174+
boolean hasEnumProperty = false;
175+
for(CodegenProperty codegenProperty : model.vars) {
176+
postProcessModelProperty(model, codegenProperty);
177+
if (codegenProperty.isEnum) {
178+
hasEnumProperty = true;
179+
}
180+
}
181+
if (useJackson && hasEnumProperty) {
182+
model.imports.add("JsonValue");
183+
model.imports.add("JsonCreator");
184+
}
185+
}
186+
187+
public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
188+
final CodegenParameter parameter = super.fromParameter(param, imports);
189+
if (parameter.isFile) {
190+
imports.add("InputStream");
191+
}
192+
return parameter;
193+
}
194+
165195
@Override
166196
public void preprocessSwagger(Swagger swagger) {
167197
//copy input swagger to output folder
@@ -175,8 +205,7 @@ public void preprocessSwagger(Swagger swagger) {
175205

176206
}
177207
@Override
178-
public String getHelp()
179-
{
208+
public String getHelp() {
180209
return "Generates a Java JAXRS Server according to JAXRS 2.0 specification.";
181210
}
182211
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaResteasyServerCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public void processOpts() {
9999
supportingFiles.add(new SupportingFile("LocalDateProvider.mustache",
100100
(sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java"));
101101
}
102+
writeOptional(outputFolder, new SupportingFile("Dockerfile.mustache", "", "Dockerfile"));
102103
}
103104

104105
@Override

modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -646,12 +646,12 @@ public class ApiClient {
646646
builder = httpClient.resource(url).accept(accept);
647647
}
648648

649-
for (Entry<String, String> keyValue : headerParams.entrySet()) {
650-
builder = builder.header(keyValue.getKey(), keyValue.getValue());
649+
for (String key : headerParams.keySet()) {
650+
builder = builder.header(key, headerParams.get(key));
651651
}
652-
for (Map.Entry<String,String> keyValue : defaultHeaderMap.entrySet()) {
653-
if (!headerParams.containsKey(keyValue.getKey())) {
654-
builder = builder.header(keyValue.getKey(), keyValue.getValue());
652+
for (String key : defaultHeaderMap.keySet()) {
653+
if (!headerParams.containsKey(key)) {
654+
builder = builder.header(key, defaultHeaderMap.get(key));
655655
}
656656
}
657657

modules/swagger-codegen/src/main/resources/Java/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
6060

6161
@Override
6262
public {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} read(final JsonReader jsonReader) throws IOException {
63-
{{{dataType}}} value = {{#isNumber}}new BigDecimal(jsonReader.nextDouble()){{/isNumber}}{{^isNumber}}jsonReader.{{#isInteger}}nextInt(){{/isInteger}}{{^isInteger}}next{{{dataType}}}(){{/isInteger}}{{/isNumber}};
63+
{{#isNumber}}BigDecimal value = new BigDecimal(jsonReader.nextDouble()){{/isNumber}}{{^isNumber}}{{#isInteger}}Integer value {{/isInteger}}{{^isInteger}}String value {{/isInteger}}= jsonReader.{{#isInteger}}nextInt(){{/isInteger}}{{^isInteger}}nextString(){{/isInteger}}{{/isNumber}};
6464
return {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.fromValue(String.valueOf(value));
6565
}
6666
}

modules/swagger-codegen/src/main/resources/Java/modelInnerEnum.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151

5252
@Override
5353
public {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} read(final JsonReader jsonReader) throws IOException {
54-
{{{dataType}}} value = {{#isNumber}}new BigDecimal(jsonReader.nextDouble()){{/isNumber}}{{^isNumber}}jsonReader.{{#isInteger}}nextInt(){{/isInteger}}{{^isInteger}}next{{{dataType}}}(){{/isInteger}}{{/isNumber}};
55-
return {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.fromValue(String.valueOf(value));
54+
{{#isNumber}}Object value = new BigDecimal(jsonReader.nextDouble()){{/isNumber}}{{^isNumber}}{{#isInteger}}int value {{/isInteger}}{{^isInteger}}String value {{/isInteger}}= jsonReader.{{#isInteger}}nextInt(){{/isInteger}}{{^isInteger}}nextString(){{/isInteger}}{{/isNumber}};
55+
return {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.fromValue(String.valueOf(value));
5656
}
5757
}
5858
{{/gson}}

modules/swagger-codegen/src/main/resources/JavaJaxRS/cxf-cdi/model.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package {{package}};
44
{{/imports}}
55
{{#useBeanValidation}}
66
import javax.validation.constraints.*;
7+
import javax.validation.Valid;
78
{{/useBeanValidation}}
89
{{#models}}
910
{{#model}}{{#description}}

modules/swagger-codegen/src/main/resources/JavaJaxRS/cxf-cdi/pom.mustache

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,8 @@
5757
<dependency>
5858
<groupId>org.apache.cxf</groupId>
5959
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
60-
<!-- Version is just a guess -->
61-
<!-- IBM WebSphere Application Server Liberty Core v8.5.5.6 uses v3.0.2, source https://www.ibm.com/support/knowledgecenter/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/rwlp_jaxrs_secure.html -->
62-
<version>3.0.2</version>
60+
<!-- TOMCAT EE JaxRS v8.0.6 uses v3.0.2, https://www.apache.org/dyn/closer.cgi/tomee/tomee-8.0.6/ -->
61+
<version>3.3.8</version>
6362
<scope>provided</scope>
6463
</dependency>
6564

0 commit comments

Comments
 (0)