Skip to content

Commit 46cb2fb

Browse files
committed
Merge pull request #159 from swagger-api/issue-158
Type checking
2 parents 9b0e8c5 + 26e1586 commit 46cb2fb

File tree

2 files changed

+33
-37
lines changed

2 files changed

+33
-37
lines changed

modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,10 @@
11
package io.swagger.parser.util;
22

33
import com.fasterxml.jackson.databind.JsonNode;
4-
import com.fasterxml.jackson.databind.node.ArrayNode;
5-
import com.fasterxml.jackson.databind.node.JsonNodeType;
6-
import com.fasterxml.jackson.databind.node.NumericNode;
7-
import com.fasterxml.jackson.databind.node.ObjectNode;
8-
import com.fasterxml.jackson.databind.node.TextNode;
9-
10-
import io.swagger.models.ArrayModel;
11-
import io.swagger.models.ComposedModel;
12-
import io.swagger.models.Contact;
13-
import io.swagger.models.ExternalDocs;
14-
import io.swagger.models.Info;
15-
import io.swagger.models.License;
16-
import io.swagger.models.Model;
17-
import io.swagger.models.ModelImpl;
18-
import io.swagger.models.Operation;
19-
import io.swagger.models.Path;
20-
import io.swagger.models.RefModel;
21-
import io.swagger.models.RefPath;
22-
import io.swagger.models.RefResponse;
23-
import io.swagger.models.Response;
24-
import io.swagger.models.Scheme;
25-
import io.swagger.models.SecurityRequirement;
26-
import io.swagger.models.Swagger;
27-
import io.swagger.models.Tag;
28-
import io.swagger.models.Xml;
29-
import io.swagger.models.auth.ApiKeyAuthDefinition;
30-
import io.swagger.models.auth.BasicAuthDefinition;
31-
import io.swagger.models.auth.In;
32-
import io.swagger.models.auth.OAuth2Definition;
33-
import io.swagger.models.auth.SecuritySchemeDefinition;
34-
import io.swagger.models.parameters.AbstractSerializableParameter;
35-
import io.swagger.models.parameters.FormParameter;
36-
import io.swagger.models.parameters.HeaderParameter;
37-
import io.swagger.models.parameters.Parameter;
38-
import io.swagger.models.parameters.PathParameter;
39-
import io.swagger.models.parameters.QueryParameter;
40-
import io.swagger.models.parameters.RefParameter;
4+
import com.fasterxml.jackson.databind.node.*;
5+
import io.swagger.models.*;
6+
import io.swagger.models.auth.*;
7+
import io.swagger.models.parameters.*;
418
import io.swagger.models.properties.Property;
429
import io.swagger.models.properties.PropertyBuilder;
4310
import io.swagger.util.Json;
@@ -1322,6 +1289,9 @@ public Double getDouble(String key, ObjectNode node, boolean required, String lo
13221289
else if(v.getNodeType().equals(JsonNodeType.NUMBER)) {
13231290
value = v.asDouble();
13241291
}
1292+
else if(!v.isValueNode()) {
1293+
result.invalidType(location, key, "double", node);
1294+
}
13251295
return value;
13261296
}
13271297

@@ -1337,6 +1307,9 @@ public Number getNumber(String key, ObjectNode node, boolean required, String lo
13371307
else if(v.getNodeType().equals(JsonNodeType.NUMBER)) {
13381308
value = v.numberValue();
13391309
}
1310+
else if(!v.isValueNode()) {
1311+
result.invalidType(location, key, "number", node);
1312+
}
13401313
return value;
13411314
}
13421315

@@ -1352,6 +1325,9 @@ public Integer getInteger(String key, ObjectNode node, boolean required, String
13521325
else if(v.getNodeType().equals(JsonNodeType.NUMBER)) {
13531326
value = v.intValue();
13541327
}
1328+
else if(!v.isValueNode()) {
1329+
result.invalidType(location, key, "integer", node);
1330+
}
13551331
return value;
13561332
}
13571333

@@ -1364,6 +1340,9 @@ public String getString(String key, ObjectNode node, boolean required, String lo
13641340
result.invalid();
13651341
}
13661342
}
1343+
else if(!v.isValueNode()) {
1344+
result.invalidType(location, key, "string", node);
1345+
}
13671346
else {
13681347
value = v.asText();
13691348
}

modules/swagger-parser/src/test/java/io/swagger/parser/util/SwaggerDeserializerTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -710,4 +710,21 @@ public void testDeserializeEnum() {
710710
assertEquals(enumValues.get(0), "First");
711711
assertEquals(enumValues.get(1), "Second");
712712
}
713+
714+
@Test
715+
public void testDeserializeWithMessages() {
716+
String yaml = "swagger: '2.0'\n" +
717+
"info:\n" +
718+
" version: 0.0.0\n" +
719+
" title:\n" +
720+
" - bar";
721+
SwaggerParser parser = new SwaggerParser();
722+
SwaggerDeserializationResult result = parser.readWithInfo(yaml);
723+
724+
Set<String> messages = new HashSet<String>(result.getMessages());
725+
assertTrue(messages.size() == 2);
726+
727+
assertTrue(messages.contains("attribute info.title is not of type `string`"));
728+
assertTrue(messages.contains("attribute paths is missing"));
729+
}
713730
}

0 commit comments

Comments
 (0)