package com.msgilligan.bitcoinj.json.conversion;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
import org.bitcoinj.core.Address;
import org.bitcoinj.core.AddressFormatException;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.core.Sha256Hash;
import java.io.IOException;
/**
*
*/
public class AddressDeserializer extends JsonDeserializer<Address> {
private NetworkParameters netParams;
public AddressDeserializer(NetworkParameters netParams) {
this.netParams = netParams;
}
@Override
public Address deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
JsonToken token = p.getCurrentToken();
switch (token) {
case VALUE_STRING:
try {
return Address.fromBase58(netParams, p.getValueAsString());
} catch (AddressFormatException e) {
throw new InvalidFormatException(p, "Invalid Address", p.getValueAsString(), Address.class);
}
default:
return (Address) ctxt.handleUnexpectedToken(Address.class, p);
}
}
}