package com.spbsu.crawl.data.impl;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.io.IOException;
/**
* Created by noxoomo on 14/07/16.
*/
@JsonDeserialize(using = PackedUnsignedLong.PackedUnsignedLongDeserializer.class)
public class PackedUnsignedLong {
private final int lowerbits;
private final int upperbits;
public PackedUnsignedLong(final int lowerbits,
final int upperbits) {
this.lowerbits = lowerbits;
this.upperbits = upperbits;
}
static class PackedUnsignedLongDeserializer extends JsonDeserializer<PackedUnsignedLong> {
@Override
public PackedUnsignedLong deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException {
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
final int lowerbits;
final int upperbits;
if (node.isArray()) {
lowerbits = node.get(0).asInt();
upperbits = node.get(1).asInt();
} else {
lowerbits = node.asInt();
upperbits = 0;
}
return new PackedUnsignedLong(lowerbits, upperbits);
}
}
}