Skip to content

Commit 4ccec46

Browse files
authored
Merge pull request #1565 from jhannes-forks/master
#1553 fails to generate spec on relative server urls on Windows
2 parents bb28d1d + 29ede86 commit 4ccec46

File tree

3 files changed

+47
-12
lines changed

3 files changed

+47
-12
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java

+5-12
Original file line numberDiff line numberDiff line change
@@ -145,17 +145,10 @@ public SwaggerParseResult deserialize(JsonNode rootNode) {
145145

146146
public SwaggerParseResult deserialize(JsonNode rootNode, String path) {
147147
SwaggerParseResult result = new SwaggerParseResult();
148-
try {
149-
150-
ParseResult rootParse = new ParseResult();
151-
OpenAPI api = parseRoot(rootNode, rootParse, path);
152-
result.setOpenAPI(api);
153-
result.setMessages(rootParse.getMessages());
154-
155-
} catch (Exception e) {
156-
result.setMessages(Arrays.asList(e.getMessage()));
157-
158-
}
148+
ParseResult rootParse = new ParseResult();
149+
OpenAPI api = parseRoot(rootNode, rootParse, path);
150+
result.setOpenAPI(api);
151+
result.setMessages(rootParse.getMessages());
159152
return result;
160153
}
161154

@@ -480,7 +473,7 @@ public Server getServer(ObjectNode obj, String location, ParseResult result, Str
480473
if (StringUtils.isNotBlank(value)) {
481474
if (!isValidURL(value) && path != null) {
482475
try {
483-
final URI absURI = new URI(path);
476+
final URI absURI = new URI(path.replaceAll("\\\\", "/"));
484477
if ("http".equals(absURI.getScheme()) || "https".equals(absURI.getScheme())) {
485478
value = absURI.resolve(new URI(value)).toString();
486479
}

modules/swagger-parser/src/test/java/io/swagger/parser/OpenAPIParserTest.java

+9
Original file line numberDiff line numberDiff line change
@@ -624,5 +624,14 @@ public void testMultipleOfBetweenZeroAndOne() {
624624
BigDecimal multipleOf = decimalValue.getMultipleOf();
625625
assertEquals(multipleOf, new BigDecimal("0.3", new MathContext(multipleOf.precision())));
626626
}
627+
628+
@Test
629+
public void testConvertWindowsPathsToUnixWhenResolvingServerPaths() {
630+
ParseOptions options = new ParseOptions();
631+
options.setResolve(true);
632+
SwaggerParseResult result = new OpenAPIParser().readLocation("exampleSpecs\\specs\\issue1553.yaml", null, options);
633+
634+
assertEquals("/api/customer1/v1", result.getOpenAPI().getServers().get(0).getUrl());
635+
}
627636
}
628637

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
openapi: 3.0.2
2+
info:
3+
title: Sample API
4+
description: A small example to demonstrate individual problems
5+
version: 0.1.9
6+
servers:
7+
- url: /api/customer1/v1
8+
description: Server
9+
paths:
10+
/pets:
11+
patch:
12+
requestBody:
13+
content:
14+
application/json:
15+
schema:
16+
$ref: '#/components/schemas/Pet'
17+
responses:
18+
'200':
19+
description: Updated
20+
components:
21+
schemas:
22+
Pet:
23+
type: object
24+
required:
25+
- pet_type
26+
properties:
27+
pet_type:
28+
type: string
29+
name:
30+
type: string
31+
birth_date:
32+
type: string
33+
format: date

0 commit comments

Comments
 (0)