package de.rwth.idsg.bikeman.psinterface;
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 org.joda.time.DateTime;
import java.io.IOException;
/**
* Problem description:
*
* The PS API defines all timestamps as "Unix timestamps". Normal understanding of a "timestamp"
* in Java is in milliseconds, but Unix timestamps are in seconds!
*
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
* @since 05.02.2016
*/
public class UnixTimestampDeserializer extends JsonDeserializer<DateTime> {
@Override
public DateTime deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
// TODO: not sure about null handling
if (JsonToken.VALUE_NUMBER_INT.equals(jp.getCurrentToken())) {
long seconds = jp.getLongValue();
long millis = Utils.toMillis(seconds);
return new DateTime(millis);
} else {
return null;
}
}
}