Skip to content

Commit 68e0904

Browse files
authored
Merge pull request #1208 from swagger-api/issue1190
refs - issue #1190 - fix ArraySchema with additionalProperties
2 parents 5f23cf2 + c24b408 commit 68e0904

File tree

3 files changed

+54
-4
lines changed

3 files changed

+54
-4
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2100,10 +2100,12 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
21002100
: additionalPropertiesBoolean;
21012101

21022102
if(additionalProperties != null) {
2103-
schema =
2104-
additionalProperties.equals( Boolean.FALSE)
2105-
? new ObjectSchema()
2106-
: new MapSchema();
2103+
if (schema == null) {
2104+
schema =
2105+
additionalProperties.equals(Boolean.FALSE)
2106+
? new ObjectSchema()
2107+
: new MapSchema();
2108+
}
21072109
schema.setAdditionalProperties( additionalProperties);
21082110
}
21092111

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,20 @@ public class OpenAPIV3ParserTest {
6666
protected int serverPort = getDynamicPort();
6767
protected WireMockServer wireMockServer;
6868

69+
@Test
70+
public void testIssue1190() {
71+
OpenAPIV3Parser openApiParser = new OpenAPIV3Parser();
72+
ParseOptions options = new ParseOptions();
73+
options.setResolve(true);
74+
options.setFlatten(true);
75+
SwaggerParseResult parseResult = openApiParser.readLocation("issue1190/issue1190.yaml", null, options);
76+
77+
OpenAPI openAPI = parseResult.getOpenAPI();
78+
assertNotNull(openAPI.getComponents().getSchemas().get("SomeObj_lorem"));
79+
}
80+
81+
82+
6983
@Test
7084
public void testIssue1147() {
7185
ParseOptions options = new ParseOptions();
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
openapi: 3.0.0
2+
info:
3+
version: 1.0.0
4+
title: Issue 1190
5+
license:
6+
name: Apache-2.0
7+
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
8+
paths:
9+
/example:
10+
get:
11+
operationId: example
12+
responses:
13+
'200':
14+
description: successful operation
15+
content:
16+
'application/json':
17+
schema:
18+
$ref: "#/components/schemas/SomeObj"
19+
components:
20+
schemas:
21+
SomeObj:
22+
type: object
23+
properties:
24+
lorem:
25+
type: array
26+
minItems: 1
27+
additionalProperties: false
28+
items:
29+
type: object
30+
properties:
31+
firstName:
32+
type: string
33+
lastName:
34+
type: string

0 commit comments

Comments
 (0)