Skip to content

Commit ef05c09

Browse files
authored
Merge pull request #12140 from swagger-api/SWG-7517-updating-the-resolving-options-of-swagger-parser-v3
SWG-7517 updating the resolving options of swagger-parser-v3
2 parents fd37b94 + c7a6849 commit ef05c09

File tree

5 files changed

+40
-8
lines changed

5 files changed

+40
-8
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/v3/config/CodegenConfigurator.java

+36-4
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@
3434
import java.nio.file.Path;
3535
import java.nio.file.Paths;
3636
import java.util.ArrayList;
37+
import java.util.Arrays;
38+
import java.util.Collections;
3739
import java.util.HashMap;
3840
import java.util.HashSet;
3941
import java.util.List;
4042
import java.util.Map;
43+
import java.util.Objects;
44+
import java.util.Optional;
4145
import java.util.Set;
4246
import java.util.function.Predicate;
4347

@@ -578,8 +582,7 @@ public ClientOptInput toClientOptInput() {
578582
SwaggerParseResult result = new OpenAPIParser().readContents(inputSpec, authorizationValues, options);
579583
OpenAPI openAPI = result.getOpenAPI();
580584
if (config.needsUnflattenedSpec()) {
581-
ParseOptions optionsUnflattened = new ParseOptions();
582-
optionsUnflattened.setResolve(true);
585+
ParseOptions optionsUnflattened = buildUnflattenedParseOptions();
583586
SwaggerParseResult resultUnflattened = new OpenAPIParser().readContents(inputSpec, authorizationValues, optionsUnflattened);
584587
OpenAPI openAPIUnflattened = resultUnflattened.getOpenAPI();
585588
config.setUnflattenedOpenAPI(openAPIUnflattened);
@@ -617,8 +620,7 @@ public ClientOptInput toClientOptInput() {
617620
.openAPI(openAPI);
618621

619622
if (config.needsUnflattenedSpec()) {
620-
ParseOptions optionsUnflattened = new ParseOptions();
621-
optionsUnflattened.setResolve(true);
623+
ParseOptions optionsUnflattened = buildUnflattenedParseOptions();
622624
SwaggerParseResult resultUnflattened = new OpenAPIParser().readLocation(sanitizedSpecificationUrl, authorizationValues, optionsUnflattened);
623625
OpenAPI openAPIUnflattened = resultUnflattened.getOpenAPI();
624626
config.setUnflattenedOpenAPI(openAPIUnflattened);
@@ -674,9 +676,39 @@ private ParseOptions buildParseOptions() {
674676
options.setFlatten(true);
675677
options.setFlattenComposedSchemas(flattenInlineSchema);
676678
options.setSkipMatches(this.skipInlineModelMatches);
679+
680+
if (Objects.equals(System.getenv("SAFELY_RESOLVE_URL"), "true")) {
681+
setSafelyResolveURLParseOptions(options);
682+
}
683+
677684
return options;
678685
}
679686

687+
private ParseOptions buildUnflattenedParseOptions() {
688+
ParseOptions options = new ParseOptions();
689+
options.setResolve(true);
690+
691+
if (Objects.equals(System.getenv("SAFELY_RESOLVE_URL"), "true")) {
692+
setSafelyResolveURLParseOptions(options);
693+
}
694+
695+
return options;
696+
}
697+
698+
private void setSafelyResolveURLParseOptions(ParseOptions options) {
699+
List<String> allowList = Optional.ofNullable(System.getenv("REMOTE_REF_ALLOW_LIST"))
700+
.map(str -> Arrays.asList(str.split(",")))
701+
.orElseGet(Collections::emptyList);
702+
703+
List<String> blockList = Optional.ofNullable(System.getenv("REMOTE_REF_BLOCK_LIST"))
704+
.map(str -> Arrays.asList(str.split(",")))
705+
.orElseGet(Collections::emptyList);
706+
707+
options.setSafelyResolveURL(true);
708+
options.setRemoteRefAllowList(allowList);
709+
options.setRemoteRefBlockList(blockList);
710+
}
711+
680712
@JsonAnySetter
681713
public CodegenConfigurator addDynamicProperty(String name, Object value) {
682714
dynamicProperties.put(name, value);

pom.docker.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1116,7 +1116,7 @@
11161116
<swagger-codegen-generators-version>1.0.40-SNAPSHOT</swagger-codegen-generators-version>
11171117
<swagger-core-version>2.2.9</swagger-core-version>
11181118
<swagger-core-version-v1>1.6.10</swagger-core-version-v1>
1119-
<swagger-parser-version>2.1.13</swagger-parser-version>
1119+
<swagger-parser-version>2.1.14-SNAPSHOT</swagger-parser-version>
11201120
<swagger-parser-version-v1>1.0.65</swagger-parser-version-v1>
11211121
<jackson-version>2.14.2</jackson-version>
11221122
<jackson-databind-version>2.14.2</jackson-databind-version>

pom.java11.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,7 @@
12171217
<swagger-codegen-generators-version>1.0.40-SNAPSHOT</swagger-codegen-generators-version>
12181218
<swagger-core-version>2.2.9</swagger-core-version>
12191219
<swagger-core-version-v1>1.6.10</swagger-core-version-v1>
1220-
<swagger-parser-version>2.1.13</swagger-parser-version>
1220+
<swagger-parser-version>2.1.14-SNAPSHOT</swagger-parser-version>
12211221
<swagger-parser-version-v1>1.0.65</swagger-parser-version-v1>
12221222
<jackson-version>2.14.2</jackson-version>
12231223
<jackson-databind-version>2.14.2</jackson-databind-version>

pom.java8.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1220,7 +1220,7 @@
12201220
<swagger-codegen-generators-version>1.0.40-SNAPSHOT</swagger-codegen-generators-version>
12211221
<swagger-core-version>2.2.9</swagger-core-version>
12221222
<swagger-core-version-v1>1.6.10</swagger-core-version-v1>
1223-
<swagger-parser-version>2.1.13</swagger-parser-version>
1223+
<swagger-parser-version>2.1.14-SNAPSHOT</swagger-parser-version>
12241224
<swagger-parser-version-v1>1.0.65</swagger-parser-version-v1>
12251225
<jackson-version>2.14.2</jackson-version>
12261226
<jackson-databind-version>2.14.2</jackson-databind-version>

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,7 @@
12171217
<swagger-codegen-generators-version>1.0.40-SNAPSHOT</swagger-codegen-generators-version>
12181218
<swagger-core-version>2.2.9</swagger-core-version>
12191219
<swagger-core-version-v1>1.6.10</swagger-core-version-v1>
1220-
<swagger-parser-version>2.1.13</swagger-parser-version>
1220+
<swagger-parser-version>2.1.14-SNAPSHOT</swagger-parser-version>
12211221
<swagger-parser-version-v1>1.0.65</swagger-parser-version-v1>
12221222
<jackson-version>2.14.2</jackson-version>
12231223
<jackson-databind-version>2.14.2</jackson-databind-version>

0 commit comments

Comments
 (0)