From b21f50c0b3b21bc4c2a3e3c810ef4fd408c56756 Mon Sep 17 00:00:00 2001 From: ralphdoe Date: Wed, 11 Apr 2018 22:48:44 -0500 Subject: [PATCH 1/5] refs #673 - Properties Missing in Parser - adding new properties to the SwaggerDeserializer --- .../parser/util/SwaggerDeserializer.java | 28 +++++++++++++++++++ 1 file changed, 28 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 298cac4e97..771ac2ea1f 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 @@ -788,6 +788,34 @@ public Model definition(ObjectNode node, String location, ParseResult result) { impl.setUniqueItems(bp); } + value = getString("pattern", node, false, location, result); + impl.setPattern(value); + + BigDecimal maximum = getBigDecimal("maximum", node, false, location, result); + if(maximum != null) { + impl.maximum(maximum); + } + + BigDecimal minimum = getBigDecimal("minimum", node, false, location, result); + if(minimum != null) { + impl.minimum(minimum); + } + + Integer minLength = getInteger("minLength", node, false, location, result); + if(minLength != null) { + impl.setMinLength(minLength); + } + + Integer maxLength = getInteger("maxLength", node, false, location, result); + if(maxLength != null) { + impl.setMaxLength(maxLength); + } + + Number multipleOf = getNumber("multipleOf", node, false, location, result); + if(multipleOf != null) { + impl.setMultipleOf(multipleOf); + } + ap = node.get("enum"); if(ap != null) { ArrayNode arrayNode = getArray("enum", node, false, location, result); From 2b3214ab91b7d66b5dc2a100baa63258f0b3bf08 Mon Sep 17 00:00:00 2001 From: ralphdoe Date: Fri, 13 Apr 2018 01:04:48 -0500 Subject: [PATCH 2/5] refs #673 - Properties Missing in Parser - adding new properties to the SwaggerDeserializer --- .../io/swagger/parser/util/SwaggerDeserializer.java | 10 ++++++++++ 1 file changed, 10 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 771ac2ea1f..4913423e3b 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 @@ -788,6 +788,16 @@ public Model definition(ObjectNode node, String location, ParseResult result) { impl.setUniqueItems(bp); } + bp = getBoolean("exclusiveMaximum", node, false, location, result); + if(bp != null) { + impl.setExclusiveMaximum(bp); + } + + bp = getBoolean("exclusiveMinimum", node, false, location, result); + if(bp != null) { + impl.setExclusiveMinimum(bp); + } + value = getString("pattern", node, false, location, result); impl.setPattern(value); From 9517e0382b5881924b0cd05f1efbf6adddc24853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=B3pez?= Date: Fri, 4 May 2018 01:06:52 -0500 Subject: [PATCH 3/5] ref #673 SwaggerDeserializer multipleOf type changed --- .../main/java/io/swagger/parser/util/SwaggerDeserializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 771ac2ea1f..2f95c9637c 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 @@ -811,7 +811,7 @@ public Model definition(ObjectNode node, String location, ParseResult result) { impl.setMaxLength(maxLength); } - Number multipleOf = getNumber("multipleOf", node, false, location, result); + BigDecimal multipleOf = getBigDecimal("multipleOf", node, false, location, result); if(multipleOf != null) { impl.setMultipleOf(multipleOf); } From b8f7db37c304f13e7537405fbd528d1586694646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=B3pez?= Date: Mon, 7 May 2018 12:33:20 -0500 Subject: [PATCH 4/5] ref #673 POM Updated --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7f321513ef..b3d501b43c 100644 --- a/pom.xml +++ b/pom.xml @@ -241,7 +241,7 @@ 2.4 1.6.3 - 1.5.19 + 1.5.20-SNAPSHOT 4.8.1 6.9.6 1.19 From 1a887124edec4fc8ae5166ecc433b15c00a0ae80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=B3pez?= Date: Sat, 12 May 2018 22:19:35 -0500 Subject: [PATCH 5/5] ref #673 SwaggerDeserializer Tests in Parser --- .../parser/util/SwaggerDeserializerTest.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/util/SwaggerDeserializerTest.java b/modules/swagger-parser/src/test/java/io/swagger/parser/util/SwaggerDeserializerTest.java index e142566c2c..a0e32628cb 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/util/SwaggerDeserializerTest.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/util/SwaggerDeserializerTest.java @@ -1404,6 +1404,110 @@ public void testIssue386() { assertNotNull(swagger); } + @Test + public void testIssue673ArrayProperties() { + String yaml = + "swagger: '2.0'\n" + + "info:\n" + + " description: 'Good'\n" + + " version: '2.0.0'\n" + + " title: 'Test'\n" + + "paths:\n" + + " /foo:\n" + + " post:\n" + + " responses:\n" + + " 200:\n" + + " description: 'OK'\n" + + "definitions:\n" + + " Fun:\n" + + " type: object\n" + + " properties:\n" + + " id:\n" + + " type: array\n" + + " uniqueItems: true\n" + + " minLength: 1\n" + + " maxLength: 100\n"; + + SwaggerParser parser = new SwaggerParser(); + SwaggerDeserializationResult result = parser.readWithInfo(yaml); + Swagger swagger = result.getSwagger(); + assertNotNull(swagger); + Property property = swagger.getDefinitions().get("Fun").getProperties().get("id"); + assertEquals(Boolean.TRUE, ((ArrayProperty)property).getUniqueItems()); + } + + @Test + public void testIssue673StringProperties() { + String yaml = + "swagger: '2.0'\n" + + "info:\n" + + " description: 'Good'\n" + + " version: '2.0.0'\n" + + " title: 'Test'\n" + + "paths:\n" + + " /foo:\n" + + " post:\n" + + " responses:\n" + + " 200:\n" + + " description: 'OK'\n" + + "definitions:\n" + + " Fun:\n" + + " type: object\n" + + " properties:\n" + + " id:\n" + + " type: string\n" + + " pattern: Pattern\n" + + " minLength: 1\n" + + " maxLength: 100\n"; + + SwaggerParser parser = new SwaggerParser(); + SwaggerDeserializationResult result = parser.readWithInfo(yaml); + Swagger swagger = result.getSwagger(); + assertNotNull(swagger); + Property property = swagger.getDefinitions().get("Fun").getProperties().get("id"); + assertEquals("Pattern", ((StringProperty)property).getPattern()); + assertEquals(new Integer(1), ((StringProperty)property).getMinLength()); + assertEquals(new Integer(100), ((StringProperty)property).getMaxLength()); + } + + @Test + public void testIssue673NumericProperties() { + String yaml = + "swagger: '2.0'\n" + + "info:\n" + + " description: 'Good'\n" + + " version: '2.0.0'\n" + + " title: 'Test'\n" + + "paths:\n" + + " /foo:\n" + + " post:\n" + + " responses:\n" + + " 200:\n" + + " description: 'OK'\n" + + "definitions:\n" + + " Fun:\n" + + " type: object\n" + + " properties:\n" + + " id:\n" + + " type: number\n" + + " minimum: 1\n" + + " maximum: 100\n" + + " exclusiveMaximum: true\n" + + " exclusiveMinimum: true\n" + + " multipleOf: 5\n"; + + SwaggerParser parser = new SwaggerParser(); + SwaggerDeserializationResult result = parser.readWithInfo(yaml); + Swagger swagger = result.getSwagger(); + assertNotNull(swagger); + Property property = swagger.getDefinitions().get("Fun").getProperties().get("id"); + assertEquals(new BigDecimal(1), ((AbstractNumericProperty)property).getMinimum()); + assertEquals(new BigDecimal(100), ((AbstractNumericProperty)property).getMaximum()); + assertEquals(new BigDecimal(5), ((AbstractNumericProperty)property).getMultipleOf()); + assertEquals(Boolean.TRUE, ((AbstractNumericProperty)property).getExclusiveMinimum()); + assertEquals(Boolean.TRUE, ((AbstractNumericProperty)property).getExclusiveMaximum()); + } + @Test public void testIssue360() { Swagger swagger = new Swagger();