ecararus/product-catalogue

View on GitHub
src/main/java/com/eca/util/ProductVODeserializer.java

Summary

Maintainability
A
0 mins
Test Coverage
package com.eca.util;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.eca.catalogue.product.vo.ProductVO;

import java.io.IOException;

public final class ProductVODeserializer extends JsonDeserializer<ProductVO> {

    @SuppressWarnings("DuplicateThrows")
    @Override
    public ProductVO deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        ObjectCodec objectCodec = jsonParser.getCodec();
        JsonNode node = objectCodec.readTree(jsonParser);
        return ProductVO.builder()
                .setCategory(node.get("category").asText())
                .setName(node.get("name").asText())
                .setLocationId(deserializeLocationId(node))
                .build();
    }

    private String deserializeLocationId(JsonNode node) {
        String locationId = node.get("locationId").asText();
        return "null".equals(locationId) ? null : locationId;
    }
}