|
1 | 1 | package org.javawebstack.httpserver; |
2 | 2 |
|
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.*; |
7 | 4 | import org.javawebstack.httpserver.helper.HttpMethod; |
8 | 5 | import org.javawebstack.httpserver.helper.MimeType; |
9 | 6 | import org.javawebstack.validator.ValidationContext; |
@@ -69,21 +66,21 @@ public <T> T body(Class<T> clazz) { |
69 | 66 | MimeType type = MimeType.byMimeType(contentType); |
70 | 67 | if (type == null) |
71 | 68 | type = MimeType.JSON; |
72 | | - AbstractElement request = AbstractNull.INSTANCE; |
| 69 | + AbstractElement request = null; |
| 70 | + boolean arrayLike = clazz.isArray() || Collection.class.isAssignableFrom(clazz); |
73 | 71 | switch (type) { |
74 | 72 | case JSON: |
75 | 73 | request = AbstractElement.fromJson(body); |
76 | 74 | break; |
77 | 75 | case YAML: |
78 | | - request = AbstractElement.fromYaml(body, !(clazz.isArray() || Collection.class.isAssignableFrom(clazz))); |
| 76 | + request = AbstractElement.fromYaml(body, !arrayLike); |
79 | 77 | break; |
80 | 78 | case X_WWW_FORM_URLENCODED: |
81 | 79 | request = AbstractElement.fromFormData(body); |
82 | 80 | break; |
83 | | - default: |
84 | | - request = new AbstractObject(); |
85 | | - break; |
86 | 81 | } |
| 82 | + if(request == null || request.isNull()) |
| 83 | + request = arrayLike ? new AbstractArray() : new AbstractObject(); |
87 | 84 | ValidationResult result = Validator.getValidator(clazz).validate(new ValidationContext().attrib("exchange", this), request); |
88 | 85 | if (!result.isValid()) |
89 | 86 | throw new ValidationException(result); |
|
0 commit comments