in commons/src/main/java/com/epam/eco/kafkamanager/rest/helper/PageImplJsonDeserializer.java [105:165]
public PageImpl<?> deserialize(
JsonParser jsonParser,
DeserializationContext ctxt) throws IOException {
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
jsonParser.nextToken();
}
String fieldName = jsonParser.getCurrentName();
JavaType contentClass = JAVA_OBJECT_TYPE;
TreeNode contentNode = null;
List<?> content = null;
Long totalElements = null;
Pageable pageable = null;
while (fieldName != null) {
if (PageImplFields.CONTENT_CLASS.equals(fieldName)) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() != JsonToken.VALUE_NULL) {
contentClass = jsonParser.readValueAs(JavaType.class);
}
} else if (PageImplFields.CONTENT.equals(fieldName)) {
jsonParser.nextToken();
contentNode = jsonParser.readValueAsTree();
} else if (PageImplFields.TOTAL_ELEMENTS.equals(fieldName)) {
jsonParser.nextToken();
totalElements = _parseLongPrimitive(jsonParser, ctxt);
} else if (PageImplFields.PAGE.equals(fieldName)) {
jsonParser.nextToken();
pageable = jsonParser.readValueAs(Pageable.class);
} else if (
PageImplFields.FIRST.equals(fieldName) ||
PageImplFields.LAST.equals(fieldName) ||
PageImplFields.TOTAL_PAGES.equals(fieldName) ||
PageImplFields.NUMBER_OF_ELEMENTS.equals(fieldName)) {
jsonParser.nextToken();
//ignore
} else {
handleUnknownProperty(jsonParser, ctxt, _valueClass, fieldName);
}
fieldName = jsonParser.nextFieldName();
}
ObjectCodec codec = jsonParser.getCodec();
if (contentNode != null) {
JavaType targetType = listTypeWithElementsOf(contentType, ctxt);
if (contentType.isJavaLangObject()) {
targetType = listTypeWithElementsOf(contentClass, ctxt);
}
content = codec.readValue(contentNode.traverse(codec), targetType);
}
JsonDeserializerUtils.assertNotNullValue(content, PageImplFields.CONTENT, _valueClass, ctxt);
if (pageable == null && totalElements == null) {
return new PageImpl<>(content);
}
JsonDeserializerUtils.assertNotNullValue(pageable, PageImplFields.PAGE, _valueClass, ctxt);
JsonDeserializerUtils.assertRequiredField(totalElements, PageImplFields.TOTAL_ELEMENTS, _valueClass, ctxt);
return new PageImpl<>(content, pageable, totalElements);
}