CMSgov/dpc-app

View on GitHub
dpc-api/src/main/java/gov/cms/dpc/api/converters/BakeryKeyPairDeserializer.java

Summary

Maintainability
A
0 mins
Test Coverage
B
83%
package gov.cms.dpc.api.converters;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import gov.cms.dpc.macaroons.thirdparty.BakeryKeyPair;

import java.io.IOException;

public class BakeryKeyPairDeserializer extends StdDeserializer<BakeryKeyPair> {
    public static final long serialVersionUID = 42L;

    BakeryKeyPairDeserializer() {
        this(null);
    }

    private BakeryKeyPairDeserializer(Class<?> vc) {
        super(vc);
    }

    @Override
    public BakeryKeyPair deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        final JsonNode node = p.getCodec().readTree(p);

        final JsonNode publicKeyNode = node.get("public_key");
        if (publicKeyNode == null) {
            throw new IllegalArgumentException("Keypair must have public key value");
        }
        final JsonNode privateKeyNode = node.get("private_key");
        if (privateKeyNode == null) {
            throw new IllegalArgumentException("Keypair must have private key value");
        }

        return new BakeryKeyPair(publicKeyNode.binaryValue(), publicKeyNode.binaryValue());
    }
}