Skip to content

Commit 305249e

Browse files
committed
fix flatten option
1 parent 1de79da commit 305249e

File tree

4 files changed

+39
-14
lines changed

4 files changed

+39
-14
lines changed

modules/swagger-codegen/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
</reporting>
201201
<properties>
202202
<diffutils-version>1.3.0</diffutils-version>
203-
<swagger-codegen-v2-version>2.4.27</swagger-codegen-v2-version>
203+
<swagger-codegen-v2-version>2.4.28-SNAPSHOT</swagger-codegen-v2-version>
204204
</properties>
205205
<dependencies>
206206
<dependency>

modules/swagger-codegen/src/main/java/io/swagger/codegen/v3/service/GeneratorUtil.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.swagger.models.Swagger;
1313
import io.swagger.models.auth.UrlMatcher;
1414
import io.swagger.parser.SwaggerParser;
15+
import io.swagger.parser.util.ParseOptions;
1516
import io.swagger.v3.core.util.Json;
1617
import org.apache.commons.lang3.StringUtils;
1718
import org.apache.commons.lang3.Validate;
@@ -108,15 +109,26 @@ public static io.swagger.codegen.ClientOptInput getClientOptInputV2(GenerationRe
108109
}
109110
LOGGER.debug("getClientOptInputV2 - processed auth");
110111

112+
CodegenConfig codegenConfig=null;
113+
try {
114+
codegenConfig = CodegenConfigLoader.forName(lang);
115+
} catch(RuntimeException e) {
116+
throw new BadRequestException("Unsupported target " + lang + " supplied");
117+
}
118+
ParseOptions parseOptions = new ParseOptions();
119+
parseOptions.setResolve(true);
120+
if (codegenConfig.isUsingFlattenSpec() && !Boolean.FALSE.equals(generationRequest.getOptions().isUsingFlattenSpecForV2())) {
121+
parseOptions.setFlatten(true);
122+
}
111123
Swagger swagger;
112124
if (StringUtils.isBlank(inputSpec)) {
113125
if (inputSpecURL != null) {
114126
if (!authorizationValues.isEmpty()) {
115127
swagger =
116128
new SwaggerParser().read(inputSpecURL, authorizationValues,
117-
true);
129+
parseOptions);
118130
} else {
119-
swagger = new SwaggerParser().read(inputSpecURL);
131+
swagger = new SwaggerParser().read(inputSpecURL, null, parseOptions);
120132
}
121133
} else {
122134
throw new BadRequestException("No swagger specification was supplied");
@@ -126,9 +138,9 @@ public static io.swagger.codegen.ClientOptInput getClientOptInputV2(GenerationRe
126138
try {
127139
JsonNode node = io.swagger.util.Json.mapper().readTree(inputSpec);
128140
if (!authorizationValues.isEmpty()) {
129-
swagger = new SwaggerParser().read(node, authorizationValues, true);
141+
swagger = new SwaggerParser().read(node, authorizationValues, parseOptions);
130142
} else {
131-
swagger = new SwaggerParser().read(node, true);
143+
swagger = new SwaggerParser().read(node, null,parseOptions);
132144
}
133145
} catch (Exception e) {
134146
LOGGER.error("Exception parsing input spec", e);
@@ -144,12 +156,6 @@ public static io.swagger.codegen.ClientOptInput getClientOptInputV2(GenerationRe
144156
io.swagger.codegen.ClientOptInput clientOptInput = new io.swagger.codegen.ClientOptInput();
145157
ClientOpts clientOpts = new ClientOpts();
146158

147-
CodegenConfig codegenConfig=null;
148-
try {
149-
codegenConfig = CodegenConfigLoader.forName(lang);
150-
} catch(RuntimeException e) {
151-
throw new BadRequestException("Unsupported target " + lang + " supplied");
152-
}
153159
codegenConfig.setOutputDir(generationRequest.getOptions().getOutputDir());
154160
codegenConfig.setInputSpec(inputSpec);
155161
if (isNotEmpty(options.getApiPackage())) {

modules/swagger-codegen/src/main/java/io/swagger/codegen/v3/service/Options.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class Options {
3939
private String outputDir = "";
4040
private Boolean resolveFully;
4141

42+
private Boolean usingFlattenSpecForV2;
43+
4244
private Map<String, String> codegenArguments = new LinkedHashMap<>();
4345

4446
private boolean flattenInlineComposedSchemas = false;
@@ -504,4 +506,21 @@ public Options flattenInlineComposedSchemas(boolean flattenInlineComposedSchemas
504506
this.flattenInlineComposedSchemas = flattenInlineComposedSchemas;
505507
return this;
506508
}
509+
510+
public Boolean isUsingFlattenSpecForV2() {
511+
return usingFlattenSpecForV2;
512+
}
513+
514+
public Boolean getUsingFlattenSpecForV2() {
515+
return usingFlattenSpecForV2;
516+
}
517+
518+
public void setUsingFlattenSpecForV2(Boolean usingFlattenSpecForV2) {
519+
this.usingFlattenSpecForV2 = usingFlattenSpecForV2;
520+
}
521+
522+
public Options usingFlattenSpecForV2(Boolean usingFlattenSpecForV2) {
523+
this.usingFlattenSpecForV2 = usingFlattenSpecForV2;
524+
return this;
525+
}
507526
}

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,10 +1179,10 @@
11791179
</repositories>
11801180
<properties>
11811181
<swagger-codegen-generators-version>1.0.35-SNAPSHOT</swagger-codegen-generators-version>
1182-
<swagger-core-version>2.1.13</swagger-core-version>
1182+
<swagger-core-version>2.2.1-SNAPSHOT</swagger-core-version>
11831183
<swagger-core-version-v1>1.6.6</swagger-core-version-v1>
1184-
<swagger-parser-version>2.0.30</swagger-parser-version>
1185-
<swagger-parser-version-v1>1.0.59</swagger-parser-version-v1>
1184+
<swagger-parser-version>2.1.0-SNAPSHOT</swagger-parser-version>
1185+
<swagger-parser-version-v1>1.0.61-SNAPSHOT</swagger-parser-version-v1>
11861186
<jackson-version>2.13.2</jackson-version>
11871187
<!--
11881188
jackson-databind 2.13.2 is still affected by CVE-2020-36518.

0 commit comments

Comments
 (0)