// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.front.geojson;
import java.io.IOException;
import org.geolatte.common.dataformats.json.jackson.JsonException;
import org.geolatte.common.dataformats.json.jackson.JsonMapper;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
/**
* This is a bridge deserializer for Jackson 1.9 used by Geolatte and Jackson 2.x.
*/
public class GeojsonDeserializer<T> extends JsonDeserializer<T> {
private final JsonMapper jsonMapper;
private final Class<T> type;
public GeojsonDeserializer(JsonMapper jsonMapper, Class<T> type) {
this.jsonMapper = jsonMapper;
this.type = type;
}
@Override
public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
try {
return jsonMapper.fromJson(jp.readValueAsTree().toString(), type);
} catch (JsonException e) {
throw new JsonMappingException(e.getMessage(), jp.getCurrentLocation(), e.getCause());
}
}
}