Skip to content

Commit 6930783

Browse files
authored
Merge pull request #14 from JavaWebStack/fix/validationForInvalidJsonOrYaml
Fix validation for invalid json or yaml
2 parents 4427afd + cdb5691 commit 6930783

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

src/main/java/org/javawebstack/httpserver/Exchange.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package org.javawebstack.httpserver;
22

3-
import org.javawebstack.abstractdata.AbstractElement;
4-
import org.javawebstack.abstractdata.AbstractMapper;
5-
import org.javawebstack.abstractdata.AbstractNull;
6-
import org.javawebstack.abstractdata.AbstractObject;
3+
import org.javawebstack.abstractdata.*;
74
import org.javawebstack.httpserver.helper.HttpMethod;
85
import org.javawebstack.httpserver.helper.MimeType;
96
import org.javawebstack.validator.ValidationContext;
@@ -69,21 +66,21 @@ public <T> T body(Class<T> clazz) {
6966
MimeType type = MimeType.byMimeType(contentType);
7067
if (type == null)
7168
type = MimeType.JSON;
72-
AbstractElement request = AbstractNull.INSTANCE;
69+
AbstractElement request = null;
70+
boolean arrayLike = clazz.isArray() || Collection.class.isAssignableFrom(clazz);
7371
switch (type) {
7472
case JSON:
7573
request = AbstractElement.fromJson(body);
7674
break;
7775
case YAML:
78-
request = AbstractElement.fromYaml(body, !(clazz.isArray() || Collection.class.isAssignableFrom(clazz)));
76+
request = AbstractElement.fromYaml(body, !arrayLike);
7977
break;
8078
case X_WWW_FORM_URLENCODED:
8179
request = AbstractElement.fromFormData(body);
8280
break;
83-
default:
84-
request = new AbstractObject();
85-
break;
8681
}
82+
if(request == null || request.isNull())
83+
request = arrayLike ? new AbstractArray() : new AbstractObject();
8784
ValidationResult result = Validator.getValidator(clazz).validate(new ValidationContext().attrib("exchange", this), request);
8885
if (!result.isValid())
8986
throw new ValidationException(result);

0 commit comments

Comments
 (0)