public PageImpl deserialize()

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);
    }