From 86063e9b24258edf86b6ed2df9182981b0d4a077 Mon Sep 17 00:00:00 2001 From: gracekarina Date: Sun, 7 Jan 2018 17:55:55 -0500 Subject: [PATCH] adding maxItems and MinItems into ArrayModel deserialiazing - ticket #594 --- .../parser/util/SwaggerDeserializer.java | 6 ++++ .../io/swagger/parser/SwaggerParserTest.java | 29 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java b/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java index eb0d672718..d02608a6d9 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java @@ -731,6 +731,12 @@ public Model definition(ObjectNode node, String location, ParseResult result) { am.items(items); } + Integer maxItems = getInteger("maxItems", node, false, location, result); + am.setMaxItems(maxItems); + + Integer minItems = getInteger("minItems", node, false, location, result); + am.setMinItems(minItems); + // extra keys Set keys = getKeys(node); for(String key : keys) { diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java b/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java index 045f539ea1..4ab85f7733 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java @@ -953,6 +953,35 @@ public void testIssue243() { assertNotNull(result.getSwagger()); } + @Test + public void testIssue594() { + String yaml = + "swagger: '2.0'\n" + + "paths:\n" + + " /test:\n" + + " post:\n" + + " parameters:\n" + + " - name: body\n" + + " in: body\n" + + " description: Hello world\n" + + " schema:\n" + + " type: array\n" + + " minItems: 1\n" + + " maxItems: 1\n" + + " items: \n" + + " $ref: \"#/definitions/Pet\"\n" + + " responses:\n" + + " 200:\n" + + " description: 'OK'\n"; + SwaggerDeserializationResult result = new SwaggerParser().readWithInfo(yaml); + assertNotNull(result.getSwagger()); + ArrayModel schema = (ArrayModel)((BodyParameter)result.getSwagger().getPaths().get("/test").getPost().getParameters().get(0)).getSchema(); + assertEquals(((RefProperty)schema.getItems()).get$ref(),"#/definitions/Pet"); + assertNotNull(schema.getMaxItems()); + assertNotNull(schema.getMinItems()); + + } + @Test public void testIssue450() { String desc = "An array of Pets";