package com.msgilligan.namecoinj.json.pojo; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import org.bitcoinj.core.Address; import org.bitcoinj.core.Sha256Hash; import java.io.IOException; import java.util.List; import java.util.Map; /** * Namecoin name data * * example format: * [name:d/beelin, * value:{"alias":"beelin.github.io"}, * txid:5737868f7044ade9b0c04698c563955d9b49db841a4e575bc384873073b956ed, * address:NAPwebo2VLvGdBFC4cHrLRPS6ZXPKddx9Z, * expires_in:31874] */ public class NameData { private static ObjectMapper mapper = new ObjectMapper(); private static JavaType mapType = mapper.getTypeFactory().constructMapType(Map.class, String.class, Object.class); private final String name; private final Map<String, Object> value; // Deserialized from escape JSON string private final Sha256Hash txid; private final Address address; private final int expires_in; @JsonCreator public NameData(@JsonProperty("name") String name, @JsonProperty("value") String value, @JsonProperty("txid") Sha256Hash txid, @JsonProperty("address") Address address, @JsonProperty("expires_in") int expires_in) throws IOException { this.name = name; this.value = mapper.readValue(value, mapType); this.txid = txid; this.address = address; this.expires_in = expires_in; } /** * * @return namespace/name */ public String getName() { return name; } /** * * @return JSONNode */ public Map<String, Object> getValue() { return value; } public Sha256Hash getTxid() { return txid; } /** * * @return Address as String (for now since bitcoinj won't allow N... addresses) */ public Address getAddress() { return address; } public int getExpires_in() { return expires_in; } }