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 c2fbef1374..fc915c54cd 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 @@ -778,6 +778,13 @@ public Model definition(ObjectNode node, String location, ParseResult result) { impl.setUniqueItems(bp); } + + BigDecimal bd = getBigDecimal("minimum", node, false, location, result); + impl.setMinimum(bd); + + bd = getBigDecimal("maximum", node, false, location, result); + impl.setMaximum(bd); + bp = getBoolean("exclusiveMaximum", node, false, location, result); if(bp != null) { impl.setExclusiveMaximum(bp); @@ -816,6 +823,7 @@ public Model definition(ObjectNode node, String location, ParseResult result) { impl.setMultipleOf(multipleOf); } + ap = node.get("enum"); if(ap != null) { ArrayNode arrayNode = getArray("enum", node, false, location, result); 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 3dccc5e671..074fde1c8f 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 @@ -29,6 +29,7 @@ import io.swagger.models.properties.Property; import io.swagger.models.properties.RefProperty; import io.swagger.models.properties.StringProperty; +import io.swagger.parser.util.TestUtils; import io.swagger.parser.util.SwaggerDeserializationResult; import io.swagger.parser.util.TestUtils; import io.swagger.util.Json; @@ -956,6 +957,7 @@ public void testIssue393() { assertNotNull(swagger.getVendorExtensions().get("x-error-defs")); } + @Test public void testBadFormat() throws Exception { SwaggerParser parser = new SwaggerParser(); final Swagger swagger = parser.read("src/test/resources/bad_format.yaml"); @@ -994,6 +996,57 @@ public void testBadFormat() throws Exception { assertEquals(queryParameter.getCollectionFormat(), "multi"); assertEquals(queryParameter.isUniqueItems(), true); } + @Test + public void testNumberAttributes() throws Exception { + SwaggerParser parser = new SwaggerParser(); + Swagger swagger = parser.read(TestUtils.getResourceAbsolutePath("/number_attributes.yaml")); + + ModelImpl numberType = (ModelImpl)swagger.getDefinitions().get("NumberType"); + assertNotNull(numberType); + assertNotNull(numberType.getEnum()); + assertEquals(numberType.getEnum().size(), 2); + List numberTypeEnumValues = numberType.getEnum(); + assertEquals(numberTypeEnumValues.get(0), "1.0"); + assertEquals(numberTypeEnumValues.get(1), "2.0"); + assertEquals(numberType.getDefaultValue(), new BigDecimal("1.0")); + assertEquals(numberType.getMinimum(), new BigDecimal("1.0")); + assertEquals(numberType.getMaximum(), new BigDecimal("2.0")); + + ModelImpl numberDoubleType = (ModelImpl)swagger.getDefinitions().get("NumberDoubleType"); + assertNotNull(numberDoubleType); + assertNotNull(numberDoubleType.getEnum()); + assertEquals(numberDoubleType.getEnum().size(), 2); + List numberDoubleTypeEnumValues = numberDoubleType.getEnum(); + assertEquals(numberDoubleTypeEnumValues.get(0), "1.0"); + assertEquals(numberDoubleTypeEnumValues.get(1), "2.0"); + assertEquals(numberDoubleType.getDefaultValue(), new BigDecimal("1.0")); + assertEquals(numberDoubleType.getMinimum(), new BigDecimal("1.0")); + assertEquals(numberDoubleType.getMaximum(), new BigDecimal("2.0")); + + ModelImpl integerType = (ModelImpl)swagger.getDefinitions().get("IntegerType"); + assertNotNull(integerType); + assertNotNull(integerType.getEnum()); + assertEquals(integerType.getEnum().size(), 2); + List integerTypeEnumValues = integerType.getEnum(); + assertEquals(integerTypeEnumValues.get(0), "1"); + assertEquals(integerTypeEnumValues.get(1), "2"); + assertEquals(integerType.getDefaultValue(), new Integer("1")); + assertEquals(integerType.getMinimum(), new BigDecimal("1")); + assertEquals(integerType.getMaximum(), new BigDecimal("2")); + + ModelImpl integerInt32Type = (ModelImpl)swagger.getDefinitions().get("IntegerInt32Type"); + assertNotNull(integerInt32Type); + assertNotNull(integerInt32Type.getEnum()); + assertEquals(integerInt32Type.getEnum().size(), 2); + List integerInt32TypeEnumValues = integerInt32Type.getEnum(); + assertEquals(integerInt32TypeEnumValues.get(0), "1"); + assertEquals(integerInt32TypeEnumValues.get(1), "2"); + assertEquals(integerInt32Type.getDefaultValue(), new Integer("1")); + assertEquals(integerInt32Type.getMinimum(), new BigDecimal("1")); + assertEquals(integerInt32Type.getMaximum(), new BigDecimal("2")); + + + } @Test public void testDefinitionExample() throws Exception { diff --git a/modules/swagger-parser/src/test/resources/number_attributes.yaml b/modules/swagger-parser/src/test/resources/number_attributes.yaml new file mode 100644 index 0000000000..bd9b1a2626 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/number_attributes.yaml @@ -0,0 +1,45 @@ +--- +swagger: '2.0' +info: + version: 1.0.0 + title: Pets Store +paths: {} +definitions: + + NumberType: + type: number + enum: + - 1.0 + - 2.0 + default: 1.0 + minimum: 1.0 + maximum: 2.0 + + NumberDoubleType: + type: number + format: double + enum: + - 1.0 + - 2.0 + default: 1.0 + minimum: 1.0 + maximum: 2.0 + + IntegerType: + type: integer + enum: + - 1 + - 2 + default: 1 + minimum: 1 + maximum: 2 + + IntegerInt32Type: + type: integer + format: int32 + enum: + - 1 + - 2 + default: 1 + minimum: 1 + maximum: 2