Skip to content

Commit ff62818

Browse files
committed
fixes #5 sync with KaiZen parser
1 parent 4215b0f commit ff62818

158 files changed

Lines changed: 14091 additions & 14890 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pom.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,14 @@
6666
<java.version>1.8</java.version>
6767
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
6868
<version.light-4j>1.5.19</version.light-4j>
69+
<version.json-overlay>1.5.19</version.json-overlay>
6970
<version.jackson>2.9.5</version.jackson>
71+
<version.javamail>1.6.1</version.javamail>
7072
<version.slf4j>1.7.25</version.slf4j>
7173
<version.logback>1.2.3</version.logback>
7274
<version.junit>4.12</version.junit>
7375
<version.jsonassert>1.5.0</version.jsonassert>
76+
<version.guava>26.0-jre</version.guava>
7477
</properties>
7578

7679

@@ -90,6 +93,11 @@
9093
<artifactId>service</artifactId>
9194
<version>${version.light-4j}</version>
9295
</dependency>
96+
<dependency>
97+
<groupId>com.networknt</groupId>
98+
<artifactId>json-overlay</artifactId>
99+
<version>${version.json-overlay}</version>
100+
</dependency>
93101
<dependency>
94102
<groupId>com.fasterxml.jackson.core</groupId>
95103
<artifactId>jackson-core</artifactId>
@@ -110,6 +118,11 @@
110118
<artifactId>jackson-dataformat-yaml</artifactId>
111119
<version>${version.jackson}</version>
112120
</dependency>
121+
<dependency>
122+
<groupId>com.sun.mail</groupId>
123+
<artifactId>javax.mail</artifactId>
124+
<version>${version.javamail}</version>
125+
</dependency>
113126
<dependency>
114127
<groupId>org.slf4j</groupId>
115128
<artifactId>slf4j-api</artifactId>
@@ -133,6 +146,12 @@
133146
<version>${version.jsonassert}</version>
134147
<scope>test</scope>
135148
</dependency>
149+
<dependency>
150+
<groupId>com.google.guava</groupId>
151+
<artifactId>guava</artifactId>
152+
<version>${version.guava}</version>
153+
<scope>test</scope>
154+
</dependency>
136155
</dependencies>
137156
<build>
138157
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>

src/main/java/com/networknt/oas/OpenApi.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,5 @@
1010
*******************************************************************************/
1111
package com.networknt.oas;
1212

13-
import com.networknt.oas.model.OpenApiObject;
14-
15-
public interface OpenApi<T extends OpenApi<?>> extends OpenApiObject<T, T> {
13+
public interface OpenApi<M> {
1614
}

src/main/java/com/networknt/oas/OpenApi3Parser.java

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,60 @@
1919

2020
public class OpenApi3Parser extends OpenApiParser {
2121

22-
private OpenApiParser parser = new OpenApiParser() {
23-
24-
@Override
25-
protected boolean isVersion3(JsonNode tree) {
26-
return true;
27-
}
28-
};
29-
22+
@Override
3023
public OpenApi3 parse(String spec, URL resolutionBase) {
31-
return (OpenApi3) parser.parse(spec, resolutionBase);
24+
return (OpenApi3) super.parse(spec, resolutionBase);
3225
}
3326

27+
@Override
3428
public OpenApi3 parse(String spec, URL resolutionBase, boolean validate) {
35-
return (OpenApi3) parser.parse(spec, resolutionBase, validate);
29+
return (OpenApi3) super.parse(spec, resolutionBase, validate);
30+
}
31+
32+
@Override
33+
public OpenApi3 parse(File specFile) throws Exception {
34+
return (OpenApi3) super.parse(specFile);
35+
}
36+
37+
@Override
38+
public OpenApi3 parse(File specFile, boolean validate) throws Exception {
39+
return (OpenApi3) super.parse(specFile, validate);
40+
}
41+
42+
@Override
43+
public OpenApi3 parse(URI uri) throws Exception {
44+
return (OpenApi3) super.parse(uri);
3645
}
3746

38-
public OpenApi3 parse(File specFile) {
39-
return (OpenApi3) parser.parse(specFile);
47+
@Override
48+
public OpenApi3 parse(URI uri, boolean validate) throws Exception {
49+
return (OpenApi3) super.parse(uri, validate);
4050
}
4151

42-
public OpenApi3 parse(File specFile, boolean validate) {
43-
return (OpenApi3) parser.parse(specFile, validate);
52+
@Override
53+
public OpenApi3 parse(URL resolutionBase) throws Exception {
54+
return (OpenApi3) super.parse(resolutionBase);
4455
}
4556

46-
public OpenApi3 parse(URI uri) {
47-
return (OpenApi3) parser.parse(uri);
57+
@Override
58+
public OpenApi3 parse(URL resolutionBase, boolean validate) throws Exception {
59+
return (OpenApi3) super.parse(resolutionBase, validate);
4860
}
4961

50-
public OpenApi3 parse(URI uri, boolean validate) {
51-
return (OpenApi3) parser.parse(uri, validate);
62+
@Override
63+
public OpenApi3 parse(JsonNode tree, URL resolutionBase) {
64+
return (OpenApi3) super.parse(tree, resolutionBase);
5265
}
5366

54-
public OpenApi3 parse(URL resolutionBase) {
55-
return (OpenApi3) parser.parse(resolutionBase);
67+
@Override
68+
public OpenApi3 parse(JsonNode tree, URL resolutionBase, boolean validate) {
69+
return (OpenApi3) super.parse(tree, resolutionBase, validate);
5670
}
5771

58-
public OpenApi3 parse(URL resolutionBase, boolean validate) {
59-
return (OpenApi3) parser.parse(resolutionBase, validate);
72+
@Override
73+
protected boolean isVersion3(JsonNode tree) {
74+
return true; // if 'openapi' property is missing or incorrect, that will
75+
// show up as a
76+
// validation error
6077
}
6178
}

src/main/java/com/networknt/oas/OpenApiParser.java

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@
1111
package com.networknt.oas;
1212

1313
import com.fasterxml.jackson.databind.JsonNode;
14-
import com.networknt.oas.jsonoverlay.JsonLoader;
15-
import com.networknt.oas.jsonoverlay.ReferenceRegistry;
16-
import com.networknt.oas.jsonoverlay.ResolutionBaseRegistry;
17-
import com.networknt.oas.jsonoverlay.Resolver;
14+
import com.networknt.jsonoverlay.JsonLoader;
15+
import com.networknt.jsonoverlay.ReferenceManager;
16+
import com.networknt.oas.model.OpenApi3;
1817
import com.networknt.oas.model.impl.OpenApi3Impl;
1918

2019
import java.io.File;
@@ -25,107 +24,115 @@
2524

2625
public class OpenApiParser {
2726

28-
public OpenApiParser() {
29-
}
30-
3127
public OpenApi<?> parse(String spec, URL resolutionBase) {
3228
return parse(spec, resolutionBase, true);
3329
}
3430

3531
public OpenApi<?> parse(String spec, URL resolutionBase, boolean validate) {
3632
try {
37-
JsonLoader jsonLoader = new JsonLoader();
38-
JsonNode tree = jsonLoader.loadString(resolutionBase, spec);
39-
ResolutionBaseRegistry resolutionBaseRegistry = new ResolutionBaseRegistry(jsonLoader);
40-
resolutionBaseRegistry.register(resolutionBase.toString(), tree);
41-
return parse(resolutionBase, validate, resolutionBaseRegistry);
33+
JsonLoader loader = new JsonLoader();
34+
JsonNode tree = loader.loadString(resolutionBase, spec);
35+
return parse(tree, resolutionBase, validate, loader);
36+
4237
} catch (IOException e) {
43-
throw new SwaggerParserException("Failed to parse spec as JSON or YAML", e);
38+
throw new OpenApiParserException("Failed to parse spec as JSON or YAML", e);
4439
}
4540
}
4641

47-
public OpenApi<?> parse(File specFile) {
42+
public OpenApi<?> parse(File specFile) throws Exception {
4843
return parse(specFile, true);
4944
}
5045

51-
public OpenApi<?> parse(File specFile, boolean validate) {
46+
public OpenApi<?> parse(File specFile, boolean validate) throws Exception {
5247
try {
5348
return parse(specFile.toURI().toURL(), validate);
5449
} catch (IOException e) {
55-
throw new SwaggerParserException("Failed to read spec from file", e);
50+
throw new OpenApiParserException("Failed to read spec from file", e);
5651
}
5752
}
5853

59-
public OpenApi<?> parse(URI uri) {
54+
public OpenApi<?> parse(URI uri) throws Exception {
6055
return parse(uri, true);
6156
}
6257

63-
public OpenApi<?> parse(URI uri, boolean validate) {
58+
public OpenApi<?> parse(URI uri, boolean validate) throws Exception {
6459
try {
6560
return parse(uri.toURL(), validate);
6661
} catch (MalformedURLException e) {
67-
throw new SwaggerParserException("Invalid URI for Swagger spec", e);
62+
throw new OpenApiParserException("Invalid URI for Swagger spec", e);
6863
}
6964
}
7065

71-
public OpenApi<?> parse(URL resolutionBase) {
66+
public OpenApi<?> parse(URL resolutionBase) throws Exception {
7267
return parse(resolutionBase, true);
7368
}
7469

75-
public OpenApi<?> parse(URL resolutionBase, boolean validate) {
76-
return parse(resolutionBase, validate, new ResolutionBaseRegistry(new JsonLoader()));
70+
public OpenApi<?> parse(URL resolutionBase, boolean validate) throws Exception {
71+
ReferenceManager manager = new ReferenceManager(resolutionBase);
72+
return parse(manager, validate);
7773
}
7874

79-
protected OpenApi<?> parse(URL resolutionBase, boolean validate, ResolutionBaseRegistry resolutionBaseRegistry) {
75+
public OpenApi<?> parse(JsonNode tree, URL resolutionBase) {
76+
return parse(tree, resolutionBase, true);
77+
}
78+
79+
public OpenApi<?> parse(JsonNode tree, URL resolutionBase, boolean validate) {
80+
return parse(tree, resolutionBase, validate, null);
81+
}
82+
83+
public OpenApi<?> parse(JsonNode tree, URL resolutionBase, boolean validate, JsonLoader loader) {
84+
ReferenceManager manager = new ReferenceManager(resolutionBase, tree, loader);
85+
return parse(manager, validate);
86+
}
87+
88+
private OpenApi<?> parse(ReferenceManager manager, boolean validate) {
89+
JsonNode tree;
8090
try {
81-
ReferenceRegistry referenceRegistry = new ReferenceRegistry();
82-
new Resolver(referenceRegistry, resolutionBaseRegistry).preresolve(resolutionBase);
83-
JsonNode tree = resolutionBaseRegistry.get(resolutionBase.toString()).getJson();
91+
tree = manager.loadDoc();
8492
if (isVersion3(tree)) {
85-
OpenApi3Impl model = new OpenApi3Impl(tree, null, referenceRegistry);
93+
OpenApi3 model = (OpenApi3) OpenApi3Impl.factory.create(tree, null, manager);
94+
((OpenApi3Impl) model)._setCreatingRef(manager.getDocReference());
8695
if (validate) {
8796
model.validate();
8897
}
8998
return model;
9099
} else {
91-
throw new SwaggerParserException(
92-
"Could not determine OpenApi version - missing or invalid 'openapi' or 'swagger' property");
100+
throw new OpenApiParserException(
101+
"Could not determine OpenApi version from model: no 'openapi' property");
93102
}
94-
} catch (Exception e) {
95-
// throw new SwaggerParserException("Failed to parse Swagger spec", e);
96-
throw e;
103+
} catch (IOException e) {
104+
throw new OpenApiParserException("Failed to parse model", e);
97105
}
98-
99106
}
100107

101108
protected boolean isVersion3(JsonNode tree) {
102109
JsonNode versionNode = tree.path("openapi");
103110
return versionNode.isTextual() && versionNode.asText().startsWith("3.");
104111
}
105112

106-
public static class SwaggerParserException extends RuntimeException {
113+
public static class OpenApiParserException extends RuntimeException {
107114

108115
private static final long serialVersionUID = 1L;
109116

110-
public SwaggerParserException() {
117+
public OpenApiParserException() {
111118
super();
112119
}
113120

114-
public SwaggerParserException(String message, Throwable cause, boolean enableSuppression,
121+
public OpenApiParserException(String message, Throwable cause, boolean enableSuppression,
115122
boolean writableStackTrace) {
116123
super(message, cause, enableSuppression, writableStackTrace);
117124
}
118125

119-
public SwaggerParserException(String message, Throwable cause) {
126+
public OpenApiParserException(String message, Throwable cause) {
120127
super(message, cause);
121128
}
122129

123-
public SwaggerParserException(String message) {
130+
public OpenApiParserException(String message) {
124131
super(message);
125132
}
126133

127-
public SwaggerParserException(Throwable cause) {
134+
public OpenApiParserException(Throwable cause) {
128135
super(cause);
129136
}
130137
}
131-
}
138+
}

src/main/java/com/networknt/oas/jsonoverlay/BooleanOverlay.java

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)