Loading src/main/java/es/redmic/jts4jackson/linestring/LineStringDeserializer.java 0 → 100644 +31 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.linestring; import java.io.IOException; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.LineString; import org.locationtech.spatial4j.io.jackson.GeometryDeserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; public class LineStringDeserializer extends JsonDeserializer<LineString> { final GeometryDeserializer dser; public LineStringDeserializer() { dser = new GeometryDeserializer(); } @Override public LineString deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { Geometry geometry = dser.deserialize(jp, ctxt); if (geometry != null) { return (LineString) geometry; } return null; } } src/main/java/es/redmic/jts4jackson/linestring/LineStringSerializer.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.linestring; import java.io.IOException; import org.locationtech.jts.geom.LineString; import org.locationtech.spatial4j.io.jackson.GeometryAsGeoJSONSerializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; public class LineStringSerializer extends JsonSerializer<LineString> { final GeometryAsGeoJSONSerializer ser; public LineStringSerializer() { ser = new GeometryAsGeoJSONSerializer(); } @Override public void serialize(LineString value, JsonGenerator gen, SerializerProvider serializers) throws IOException { ser.serialize(value, gen, serializers); } } src/main/java/es/redmic/jts4jackson/module/JTSModule.java +5 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.module; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; import com.fasterxml.jackson.core.json.PackageVersion; import com.fasterxml.jackson.databind.module.SimpleModule; import es.redmic.jts4jackson.linestring.LineStringDeserializer; import es.redmic.jts4jackson.linestring.LineStringSerializer; import es.redmic.jts4jackson.point.PointDeserializer; import es.redmic.jts4jackson.point.PointSerializer; Loading @@ -18,9 +21,11 @@ public class JTSModule extends SimpleModule { // deserializers addDeserializer(Point.class, new PointDeserializer()); addDeserializer(LineString.class, new LineStringDeserializer()); // serializers: addSerializer(Point.class, new PointSerializer()); addSerializer(LineString.class, new LineStringSerializer()); } @Override Loading src/test/java/es/redmic/jts4jackson/linestring/LineStringSerializerDeserializerTest.java 0 → 100644 +54 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.linestring; import java.io.IOException; import java.nio.file.Files; import org.json.JSONException; import org.junit.Test; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.LineString; import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.core.io.ClassPathResource; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.exc.InvalidDefinitionException; import es.redmic.jts4jackson.module.JTSModule; public class LineStringSerializerDeserializerTest { private String dataFile = "/data/lineString.json"; ObjectMapper mapper = new ObjectMapper(); @Test public void sourceAndExpectedJson_AreEqual_IfDeserializeAndSerializeLineString() throws JsonParseException, JsonMappingException, IOException, JSONException { mapper.registerModule(new JTSModule()); LineString lineString = mapper.readValue(getClass().getResource(dataFile).openStream(), LineString.class); String source = new String(Files.readAllBytes(new ClassPathResource(dataFile).getFile().toPath())); String expected = mapper.writeValueAsString(lineString); JSONAssert.assertEquals(expected, source, false); } @Test(expected = InvalidDefinitionException.class) public void deserialize_ThrowExeption_IfModuleIsNotRegistry() throws JsonParseException, JsonMappingException, IOException, JSONException { mapper.readValue(getClass().getResource(dataFile).openStream(), LineString.class); } @Test(expected = JsonMappingException.class) public void serialize_ThrowExeption_IfModuleIsNotRegistry() throws JsonParseException, JsonMappingException, IOException, JSONException { mapper.writeValueAsString(new GeometryFactory().createLineString()); } } src/test/java/es/redmic/jts4jackson/point/PointSerializerDeserializerTest.java +1 −4 Original line number Diff line number Diff line package es.redmic.jts4jackson.point; import java.io.File; import java.io.IOException; import java.nio.file.Files; Loading Loading @@ -32,9 +31,7 @@ public class PointSerializerDeserializerTest { Point point = mapper.readValue(getClass().getResource(dataFile).openStream(), Point.class); File resource = new ClassPathResource(dataFile).getFile(); String source = new String(Files.readAllBytes(resource.toPath())); String source = new String(Files.readAllBytes(new ClassPathResource(dataFile).getFile().toPath())); String expected = mapper.writeValueAsString(point); Loading Loading
src/main/java/es/redmic/jts4jackson/linestring/LineStringDeserializer.java 0 → 100644 +31 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.linestring; import java.io.IOException; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.LineString; import org.locationtech.spatial4j.io.jackson.GeometryDeserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; public class LineStringDeserializer extends JsonDeserializer<LineString> { final GeometryDeserializer dser; public LineStringDeserializer() { dser = new GeometryDeserializer(); } @Override public LineString deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { Geometry geometry = dser.deserialize(jp, ctxt); if (geometry != null) { return (LineString) geometry; } return null; } }
src/main/java/es/redmic/jts4jackson/linestring/LineStringSerializer.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.linestring; import java.io.IOException; import org.locationtech.jts.geom.LineString; import org.locationtech.spatial4j.io.jackson.GeometryAsGeoJSONSerializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; public class LineStringSerializer extends JsonSerializer<LineString> { final GeometryAsGeoJSONSerializer ser; public LineStringSerializer() { ser = new GeometryAsGeoJSONSerializer(); } @Override public void serialize(LineString value, JsonGenerator gen, SerializerProvider serializers) throws IOException { ser.serialize(value, gen, serializers); } }
src/main/java/es/redmic/jts4jackson/module/JTSModule.java +5 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.module; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; import com.fasterxml.jackson.core.json.PackageVersion; import com.fasterxml.jackson.databind.module.SimpleModule; import es.redmic.jts4jackson.linestring.LineStringDeserializer; import es.redmic.jts4jackson.linestring.LineStringSerializer; import es.redmic.jts4jackson.point.PointDeserializer; import es.redmic.jts4jackson.point.PointSerializer; Loading @@ -18,9 +21,11 @@ public class JTSModule extends SimpleModule { // deserializers addDeserializer(Point.class, new PointDeserializer()); addDeserializer(LineString.class, new LineStringDeserializer()); // serializers: addSerializer(Point.class, new PointSerializer()); addSerializer(LineString.class, new LineStringSerializer()); } @Override Loading
src/test/java/es/redmic/jts4jackson/linestring/LineStringSerializerDeserializerTest.java 0 → 100644 +54 −0 Original line number Diff line number Diff line package es.redmic.jts4jackson.linestring; import java.io.IOException; import java.nio.file.Files; import org.json.JSONException; import org.junit.Test; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.LineString; import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.core.io.ClassPathResource; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.exc.InvalidDefinitionException; import es.redmic.jts4jackson.module.JTSModule; public class LineStringSerializerDeserializerTest { private String dataFile = "/data/lineString.json"; ObjectMapper mapper = new ObjectMapper(); @Test public void sourceAndExpectedJson_AreEqual_IfDeserializeAndSerializeLineString() throws JsonParseException, JsonMappingException, IOException, JSONException { mapper.registerModule(new JTSModule()); LineString lineString = mapper.readValue(getClass().getResource(dataFile).openStream(), LineString.class); String source = new String(Files.readAllBytes(new ClassPathResource(dataFile).getFile().toPath())); String expected = mapper.writeValueAsString(lineString); JSONAssert.assertEquals(expected, source, false); } @Test(expected = InvalidDefinitionException.class) public void deserialize_ThrowExeption_IfModuleIsNotRegistry() throws JsonParseException, JsonMappingException, IOException, JSONException { mapper.readValue(getClass().getResource(dataFile).openStream(), LineString.class); } @Test(expected = JsonMappingException.class) public void serialize_ThrowExeption_IfModuleIsNotRegistry() throws JsonParseException, JsonMappingException, IOException, JSONException { mapper.writeValueAsString(new GeometryFactory().createLineString()); } }
src/test/java/es/redmic/jts4jackson/point/PointSerializerDeserializerTest.java +1 −4 Original line number Diff line number Diff line package es.redmic.jts4jackson.point; import java.io.File; import java.io.IOException; import java.nio.file.Files; Loading Loading @@ -32,9 +31,7 @@ public class PointSerializerDeserializerTest { Point point = mapper.readValue(getClass().getResource(dataFile).openStream(), Point.class); File resource = new ClassPathResource(dataFile).getFile(); String source = new String(Files.readAllBytes(resource.toPath())); String source = new String(Files.readAllBytes(new ClassPathResource(dataFile).getFile().toPath())); String expected = mapper.writeValueAsString(point); Loading