Skip to content

Commit da00000

Browse files
committed
extract for re-use
1 parent 2d73e9b commit da00000

2 files changed

Lines changed: 66 additions & 31 deletions

File tree

openapi-parser/src/main/java/io/openapiparser/OpenApiParser.java

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@
55

66
package io.openapiparser;
77

8-
import io.openapiprocessor.jsonschema.converter.StringNotNullConverter;
98
import io.openapiprocessor.jsonschema.schema.*;
109

1110
import java.net.URI;
1211

13-
import static io.openapiparser.Keywords.OPENAPI;
1412
import static io.openapiprocessor.jsonschema.support.Null.nonNull;
1513

1614
public class OpenApiParser {
@@ -47,20 +45,19 @@ public OpenApiResult parse(URI baseUri, Object document) {
4745
}
4846

4947
private OpenApiResult parseVersion(URI baseUri, Object document) {
50-
String version = getVersion(baseUri, document);
48+
OpenApiVersion version = OpenApiVersionParser.parseVersion(document);
5149

52-
if (isVersion30(version)) {
50+
if (version == OpenApiVersion.V30) {
5351
return parse30(baseUri, document);
5452

55-
} else if (isVersion31(version)) {
53+
} else if (version == OpenApiVersion.V31) {
5654
return parse31(baseUri, document);
5755

58-
} else if (isVersion32(version)) {
56+
} else if (version == OpenApiVersion.V32) {
5957
return parse32(baseUri, document);
60-
61-
} else {
62-
throw new UnknownVersionException(version);
6358
}
59+
60+
throw new RuntimeException("failed to parser OpenAPI version!");
6461
}
6562

6663
private OpenApiResult32 parse32(URI baseUri, Object document) {
@@ -103,26 +100,4 @@ private OpenApiResult30 parse30(URI baseUri, Object document) {
103100
nonNull(Bucket.createBucket(result.getScope(), document)),
104101
documents);
105102
}
106-
107-
private String getVersion(URI baseUri, Object document) {
108-
Scope scope = Scope.createScope(baseUri, document, SchemaVersion.getLatest());
109-
Bucket api = nonNull(Bucket.createBucket(scope, document));
110-
return nonNull(api.convert (OPENAPI, new StringNotNullConverter ()));
111-
}
112-
113-
private boolean isVersion30(String version) {
114-
return checkVersion (version, "3.0");
115-
}
116-
117-
private boolean isVersion31(String version) {
118-
return checkVersion (version, "3.1");
119-
}
120-
121-
private boolean isVersion32(String version) {
122-
return checkVersion (version, "3.2");
123-
}
124-
125-
private boolean checkVersion (String version, String prefix) {
126-
return version.startsWith (prefix);
127-
}
128103
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* Copyright 2025 https://github.com/openapi-processor/openapi-parser
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiparser;
7+
8+
import io.openapiprocessor.jsonschema.converter.StringNotNullConverter;
9+
import io.openapiprocessor.jsonschema.support.Types;
10+
import org.checkerframework.checker.nullness.qual.Nullable;
11+
12+
import java.util.Map;
13+
14+
import static io.openapiparser.Keywords.OPENAPI;
15+
16+
public class OpenApiVersionParser {
17+
18+
public static OpenApiVersion parseVersion(Object document) {
19+
String version = getVersion(document);
20+
21+
if (isVersion30(version)) {
22+
return OpenApiVersion.V31;
23+
24+
} else if (isVersion31(version)) {
25+
return OpenApiVersion.V31;
26+
27+
} else if (isVersion32(version)) {
28+
return OpenApiVersion.V32;
29+
30+
} else {
31+
throw new UnknownVersionException(version);
32+
}
33+
}
34+
35+
private static boolean isVersion30(String version) {
36+
return checkVersion (version, "3.0");
37+
}
38+
39+
private static boolean isVersion31(String version) {
40+
return checkVersion (version, "3.1");
41+
}
42+
43+
private static boolean isVersion32(String version) {
44+
return checkVersion (version, "3.2");
45+
}
46+
47+
private static boolean checkVersion (String version, String prefix) {
48+
return version.startsWith (prefix);
49+
}
50+
51+
private static String getVersion(Object document) {
52+
if (!Types.isMap(document)) {
53+
throw new UnknownVersionException(null);
54+
}
55+
56+
Map<String, @Nullable Object> root = Types.asMap(document);
57+
StringNotNullConverter converter = new StringNotNullConverter();
58+
return converter.convert(OPENAPI, root.get(OPENAPI), "");
59+
}
60+
}

0 commit comments

Comments
 (0)