diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java index 98e4d0d2db..f99afa3555 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java @@ -1193,7 +1193,9 @@ public Integer getInteger(String key, ObjectNode node, boolean required, String } } else if(v.getNodeType().equals(JsonNodeType.NUMBER)) { - value = v.intValue(); + if (v.isInt()) { + value = v.intValue(); + } } else if(!v.isValueNode()) { result.invalidType(location, key, "integer", node); diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java index abb447f531..483f8c24fd 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java @@ -7,6 +7,7 @@ import io.swagger.v3.core.util.Yaml; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.IntegerSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.parser.OpenAPIV3Parser; @@ -352,6 +353,13 @@ public void testOneOfExternalRefConflictName() throws Exception { Assert.assertTrue(pet.getDiscriminator().getMapping().get("Cat").equals("#/components/schemas/Cat_2")); } + @Test + public void int64ExampleWithoutOverflow() throws Exception { + OpenAPI openAPI = new OpenAPIV3Parser().read("src/test/resources/int64example.yaml"); + IntegerSchema date = ((IntegerSchema) openAPI.getPaths().get("/foo").getGet().getResponses().get("200").getContent().get("application/json").getSchema().getProperties().get("date")); + Assert.assertEquals("1516042231144", date.getExample().toString()); + } + private static int getDynamicPort() { return new Random().ints(10000, 20000).findFirst().getAsInt(); diff --git a/modules/swagger-parser-v3/src/test/resources/int64example.yaml b/modules/swagger-parser-v3/src/test/resources/int64example.yaml new file mode 100644 index 0000000000..783e140251 --- /dev/null +++ b/modules/swagger-parser-v3/src/test/resources/int64example.yaml @@ -0,0 +1,21 @@ +openapi: 3.0.0 +info: + version: 0.0.0 + title: int64 mocking test +paths: + /foo: + get: + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + date: + type: integer + format: int64 + example: 1516042231144 + required: + - date