Skip to content

Commit 4cf798f

Browse files
authored
Merge pull request #1410 from kerrykimbrough/issue-1409
When parameter style is invalid, return a helpful message instead of throwing an NPE
2 parents 93676f0 + 931c00b commit 4cf798f

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,7 +1569,7 @@ public Parameter getParameter(ObjectNode obj, String location, ParseResult resul
15691569
Boolean explode = getBoolean("explode", obj, false, location, result);
15701570
if (explode != null) {
15711571
parameter.setExplode(explode);
1572-
} else if(parameter.getStyle().equals(StyleEnum.FORM)){
1572+
} else if(StyleEnum.FORM.equals(parameter.getStyle())){
15731573
parameter.setExplode(Boolean.TRUE);
15741574
} else {
15751575
parameter.setExplode(Boolean.FALSE);
@@ -2674,7 +2674,7 @@ public void setStyle(String value, Parameter parameter, String location, ObjectN
26742674
} else if (value.equals(Parameter.StyleEnum.SPACEDELIMITED.toString())) {
26752675
parameter.setStyle(Parameter.StyleEnum.SPACEDELIMITED);
26762676
} else {
2677-
result.invalidType(location, "style", "string", obj);
2677+
result.invalidType(location, "style", "StyleEnum", obj);
26782678
}
26792679
}
26802680
}

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,56 @@ public void testDeserializeByteString() {
11721172
"attribute components.schemas.ByteString.default=`W.T.F?` is not of type `byte`"));
11731173
}
11741174

1175+
@Test
1176+
public void testStyleInvalid() {
1177+
String json =
1178+
"{"
1179+
+ " \"openapi\": \"3.0.0\","
1180+
+ " \"info\": {"
1181+
+ " \"title\": \"realize\","
1182+
+ " \"version\": \"0.0.0\""
1183+
+ " },"
1184+
+ " \"paths\": {"
1185+
+ " \"/realize/{param}\": {"
1186+
+ " \"post\": {"
1187+
+ " \"parameters\": ["
1188+
+ " {"
1189+
+ " \"name\": \"param\","
1190+
+ " \"in\": \"path\","
1191+
+ ""
1192+
+ " \"style\": \"DERP\","
1193+
+ " \"required\": true,"
1194+
+ ""
1195+
+ " \"schema\": {"
1196+
+ " \"type\": \"string\","
1197+
+ " \"nullable\": false,"
1198+
+ " \"minLength\": 1"
1199+
+ " }"
1200+
+ " }"
1201+
+ " ],"
1202+
+ " \"responses\": {"
1203+
+ " \"200\": {"
1204+
+ " \"description\": \"Success\","
1205+
+ " \"content\": {"
1206+
+ " \"application/json\": {"
1207+
+ " \"schema\": {"
1208+
+ " \"type\": \"object\""
1209+
+ " }"
1210+
+ " }"
1211+
+ " }"
1212+
+ " }"
1213+
+ " }"
1214+
+ " }"
1215+
+ " }"
1216+
+ " }"
1217+
+ "}"
1218+
;
1219+
OpenAPIV3Parser parser = new OpenAPIV3Parser();
1220+
SwaggerParseResult result = parser.readContents(json, null, null);
1221+
assertTrue(result.getMessages().size() == 1);
1222+
assertEquals(result.getMessages().get(0), "attribute paths.'/realize/{param}'(post).parameters.[param].style is not of type `StyleEnum`");
1223+
}
1224+
11751225
@Test
11761226
public void testDeserializeWithMessages() {
11771227
String yaml = "openapi: '3.0.0'\n" +

0 commit comments

Comments
 (0)