Skip to content

Commit d25dc19

Browse files
committed
Normalize refs to prevent schema duplication
1 parent 32dd655 commit d25dc19

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/ExternalRefProcessor.java

+14
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import io.swagger.v3.parser.ResolverCache;
3030
import io.swagger.v3.parser.models.RefFormat;
3131
import io.swagger.v3.parser.models.RefType;
32+
import io.swagger.v3.parser.util.RefUtils;
33+
3234
import org.apache.commons.io.FilenameUtils;
3335
import org.apache.commons.lang3.StringUtils;
3436
import org.slf4j.LoggerFactory;
@@ -86,6 +88,18 @@ public String processRefToExternalSchema(String $ref, RefFormat refFormat) {
8688
return renamedRef;
8789
}
8890

91+
RefFormat format = computeRefFormat($ref);
92+
if (format.equals(RefFormat.RELATIVE)) {
93+
String normalizedRef = Paths.get($ref).normalize().toString();
94+
System.out.println("Normalized " + $ref + " to " + normalizedRef);
95+
renamedRef = cache.getRenamedRef($ref);
96+
if (renamedRef != null) {
97+
return renamedRef;
98+
} else {
99+
$ref = normalizedRef;
100+
}
101+
}
102+
89103
final Schema schema = cache.loadRef($ref, refFormat, Schema.class);
90104

91105
if(schema == null) {

0 commit comments

Comments
 (0)