Skip to content

Commit 8351812

Browse files
committed
Add null check for all places accessing components and make it not required.
1 parent 7a29793 commit 8351812

File tree

4 files changed

+54
-31
lines changed

4 files changed

+54
-31
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/ResolverCache.java

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -154,38 +154,38 @@ else if(rootPath != null) {
154154
private Object loadInternalRef(String ref) {
155155
Object result = null;
156156

157-
if(ref.startsWith("#/components/schemas")) {
158-
result = getFromMap(ref, openApi.getComponents().getSchemas(), SCHEMAS_PATTERN);
159-
}
160-
else if(ref.startsWith("#/components/requestBodies")) {
161-
result = getFromMap(ref, openApi.getComponents().getRequestBodies(), REQUEST_BODIES_PATTERN);
162-
}
163-
else if(ref.startsWith("#/components/examples")) {
164-
result = getFromMap(ref, openApi.getComponents().getExamples(), EXAMPLES_PATTERN);
165-
}
166-
else if(ref.startsWith("#/components/responses")) {
167-
result = getFromMap(ref, openApi.getComponents().getResponses(), RESPONSES_PATTERN);
168-
}
169-
else if(ref.startsWith("#/components/parameters")) {
170-
result = getFromMap(ref, openApi.getComponents().getParameters(), PARAMETERS_PATTERN);
171-
}
172-
else if(ref.startsWith("#/components/links")) {
173-
result = getFromMap(ref, openApi.getComponents().getLinks(), LINKS_PATTERN);
174-
}
175-
else if(ref.startsWith("#/components/headers")) {
176-
result = getFromMap(ref, openApi.getComponents().getHeaders(), HEADERS_PATTERN);
177-
}
178-
else if(ref.startsWith("#/components/callbacks")) {
179-
result = getFromMap(ref, openApi.getComponents().getCallbacks(), CALLBACKS_PATTERN);
180-
}
181-
else if(ref.startsWith("#/components/securitySchemes")) {
182-
result = getFromMap(ref, openApi.getComponents().getSecuritySchemes(), SECURITY_SCHEMES);
183-
}
184-
else if(ref.startsWith("#/paths")) {
157+
if (ref.startsWith("#/paths")) {
185158
result = getFromMap(ref, openApi.getPaths(), PATHS_PATTERN);
159+
} else if (openApi.getComponents() != null){
160+
if(ref.startsWith("#/components/schemas")) {
161+
result = getFromMap(ref, openApi.getComponents().getSchemas(), SCHEMAS_PATTERN);
162+
}
163+
else if(ref.startsWith("#/components/requestBodies")) {
164+
result = getFromMap(ref, openApi.getComponents().getRequestBodies(), REQUEST_BODIES_PATTERN);
165+
}
166+
else if(ref.startsWith("#/components/examples")) {
167+
result = getFromMap(ref, openApi.getComponents().getExamples(), EXAMPLES_PATTERN);
168+
}
169+
else if(ref.startsWith("#/components/responses")) {
170+
result = getFromMap(ref, openApi.getComponents().getResponses(), RESPONSES_PATTERN);
171+
}
172+
else if(ref.startsWith("#/components/parameters")) {
173+
result = getFromMap(ref, openApi.getComponents().getParameters(), PARAMETERS_PATTERN);
174+
}
175+
else if(ref.startsWith("#/components/links")) {
176+
result = getFromMap(ref, openApi.getComponents().getLinks(), LINKS_PATTERN);
177+
}
178+
else if(ref.startsWith("#/components/headers")) {
179+
result = getFromMap(ref, openApi.getComponents().getHeaders(), HEADERS_PATTERN);
180+
}
181+
else if(ref.startsWith("#/components/callbacks")) {
182+
result = getFromMap(ref, openApi.getComponents().getCallbacks(), CALLBACKS_PATTERN);
183+
}
184+
else if(ref.startsWith("#/components/securitySchemes")) {
185+
result = getFromMap(ref, openApi.getComponents().getSecuritySchemes(), SECURITY_SCHEMES);
186+
}
186187
}
187188

188-
189189
return result;
190190

191191
}

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ public String processRefToExternalResponse(String $ref, RefFormat refFormat) {
125125
}
126126
String newRef;
127127

128+
if (openAPI.getComponents() == null) {
129+
openAPI.setComponents(new Components());
130+
}
128131
Map<String, ApiResponse> responses = openAPI.getComponents().getResponses();
129132

130133
if (responses == null) {
@@ -175,6 +178,9 @@ public String processRefToExternalRequestBody(String $ref, RefFormat refFormat)
175178
}
176179
String newRef;
177180

181+
if (openAPI.getComponents() == null) {
182+
openAPI.setComponents(new Components());
183+
}
178184
Map<String, RequestBody> bodies = openAPI.getComponents().getRequestBodies();
179185

180186
if (bodies == null) {
@@ -225,6 +231,9 @@ public String processRefToExternalHeader(String $ref, RefFormat refFormat) {
225231
}
226232
String newRef;
227233

234+
if (openAPI.getComponents() == null) {
235+
openAPI.setComponents(new Components());
236+
}
228237
Map<String, Header> headers = openAPI.getComponents().getHeaders();
229238

230239
if (headers == null) {
@@ -275,6 +284,9 @@ public String processRefToExternalSecurityScheme(String $ref, RefFormat refForma
275284
}
276285
String newRef;
277286

287+
if (openAPI.getComponents() == null) {
288+
openAPI.setComponents(new Components());
289+
}
278290
Map<String, SecurityScheme> securitySchemeMap = openAPI.getComponents().getSecuritySchemes();
279291

280292
if (securitySchemeMap == null) {
@@ -325,6 +337,9 @@ public String processRefToExternalLink(String $ref, RefFormat refFormat) {
325337
}
326338
String newRef;
327339

340+
if (openAPI.getComponents() == null) {
341+
openAPI.setComponents(new Components());
342+
}
328343
Map<String, Link> links = openAPI.getComponents().getLinks();
329344

330345
if (links == null) {
@@ -375,6 +390,9 @@ public String processRefToExternalExample(String $ref, RefFormat refFormat) {
375390
}
376391
String newRef;
377392

393+
if (openAPI.getComponents() == null) {
394+
openAPI.setComponents(new Components());
395+
}
378396
Map<String, Example> examples = openAPI.getComponents().getExamples();
379397

380398
if (examples == null) {
@@ -425,6 +443,9 @@ public String processRefToExternalParameter(String $ref, RefFormat refFormat) {
425443
}
426444
String newRef;
427445

446+
if (openAPI.getComponents() == null) {
447+
openAPI.setComponents(new Components());
448+
}
428449
Map<String, Parameter> parameters = openAPI.getComponents().getParameters();
429450

430451
if (parameters == null) {
@@ -475,6 +496,9 @@ public String processRefToExternalCallback(String $ref, RefFormat refFormat) {
475496
}
476497
String newRef;
477498

499+
if (openAPI.getComponents() == null) {
500+
openAPI.setComponents(new Components());
501+
}
478502
Map<String, Callback> callbacks = openAPI.getComponents().getCallbacks();
479503

480504
if (callbacks == null) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public OpenAPI parseRoot(JsonNode node, ParseResult result) {
136136
openAPI.setPaths(paths);
137137
}
138138

139-
obj = getObject("components", rootNode, true, location, result);
139+
obj = getObject("components", rootNode, false, location, result);
140140
if (obj != null) {
141141
Components components = getComponents(obj, "components", result);
142142
openAPI.setComponents(components);

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,6 @@ public void testAlmostEmpty(@Injectable List<AuthorizationValue> auths) {
542542

543543
assertTrue(messages.contains("attribute info is missing"));
544544
assertTrue(messages.contains("attribute paths is missing"));
545-
assertTrue(messages.contains("attribute components is missing"));
546545
assertTrue(messages.contains("attribute new is unexpected"));
547546
}
548547

0 commit comments

Comments
 (0)