diff options
author | Adrian Stabiszewski <as@grundid.de> | 2015-05-03 16:23:13 +0200 |
---|---|---|
committer | Adrian Stabiszewski <as@grundid.de> | 2015-05-03 16:23:13 +0200 |
commit | a129465753d1463b56f33e4618c29ccca5b4fdd4 (patch) | |
tree | a3bb24953d7f52f573ba3f05d9445410a91e1797 | |
parent | 58af8b28f0c4ec7c2b77c2c7f549ad125c7ca52c (diff) | |
download | geojson-jackson-a129465753d1463b56f33e4618c29ccca5b4fdd4.tar.gz |
A feature object must have a member with the name "properties". #14
9 files changed, 75 insertions, 72 deletions
diff --git a/src/main/java/org/geojson/GeoJsonObject.java b/src/main/java/org/geojson/GeoJsonObject.java index b01c4f0..0213808 100644 --- a/src/main/java/org/geojson/GeoJsonObject.java +++ b/src/main/java/org/geojson/GeoJsonObject.java @@ -1,9 +1,5 @@ package org.geojson; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonSubTypes; @@ -11,6 +7,10 @@ import com.fasterxml.jackson.annotation.JsonSubTypes.Type; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + @JsonTypeInfo(property = "type", use = Id.NAME) @JsonSubTypes({ @Type(Feature.class), @Type(Polygon.class), @Type(MultiPolygon.class), @Type(FeatureCollection.class), @Type(Point.class), @Type(MultiPoint.class), @Type(MultiLineString.class), @Type(LineString.class) }) @@ -19,7 +19,7 @@ public abstract class GeoJsonObject { private Crs crs; private double[] bbox; - @JsonInclude(Include.NON_EMPTY) + @JsonInclude(Include.ALWAYS) private Map<String, Object> properties = new HashMap<String, Object>(); public Crs getCrs() { diff --git a/src/test/java/org/geojson/jackson/GeoJsonObjectTest.java b/src/test/java/org/geojson/jackson/GeoJsonObjectTest.java index e0af970..5e46d57 100644 --- a/src/test/java/org/geojson/jackson/GeoJsonObjectTest.java +++ b/src/test/java/org/geojson/jackson/GeoJsonObjectTest.java @@ -1,25 +1,17 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.GeoJsonObject; import org.geojson.GeoJsonObjectVisitor; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; public class GeoJsonObjectTest { private ObjectMapper mapper = new ObjectMapper(); - private class TestGeoJsonObject extends GeoJsonObject { - - @Override - public <T> T accept(GeoJsonObjectVisitor<T> geoJsonObjectVisitor) { - throw new RuntimeException("not implemented"); - } - } - @Test public void itShouldHaveProperties() throws Exception { TestGeoJsonObject testObject = new TestGeoJsonObject(); @@ -27,8 +19,20 @@ public class GeoJsonObjectTest { } @Test - public void itShouldNotSerializeEmptyProperties() throws Exception { + public void itShouldSerializeEmptyProperties() throws Exception { + // http://geojson.org/geojson-spec.html#feature-objects + // A feature object must have a member with the name "properties". + // The value of the properties member is an object (any JSON object or a JSON null value). TestGeoJsonObject testObject = new TestGeoJsonObject(); - assertEquals("{\"type\":\"GeoJsonObjectTest$TestGeoJsonObject\"}", mapper.writeValueAsString(testObject)); + assertEquals("{\"type\":\"GeoJsonObjectTest$TestGeoJsonObject\",\"properties\":{}}", + mapper.writeValueAsString(testObject)); + } + + private class TestGeoJsonObject extends GeoJsonObject { + + @Override + public <T> T accept(GeoJsonObjectVisitor<T> geoJsonObjectVisitor) { + throw new RuntimeException("not implemented"); + } } } diff --git a/src/test/java/org/geojson/jackson/GeometryCollectionTest.java b/src/test/java/org/geojson/jackson/GeometryCollectionTest.java index 35c77a0..2bc330b 100644 --- a/src/test/java/org/geojson/jackson/GeometryCollectionTest.java +++ b/src/test/java/org/geojson/jackson/GeometryCollectionTest.java @@ -1,14 +1,13 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.GeometryCollection; import org.geojson.LineString; import org.geojson.LngLatAlt; import org.geojson.Point; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import static org.junit.Assert.assertEquals; public class GeometryCollectionTest { @@ -19,9 +18,9 @@ public class GeometryCollectionTest { GeometryCollection gc = new GeometryCollection(); gc.add(new Point(100, 0)); gc.add(new LineString(new LngLatAlt(101, 0), new LngLatAlt(102, 1))); - assertEquals("{\"type\":\"GeometryCollection\"," - + "\"geometries\":[{\"type\":\"Point\",\"coordinates\":[100.0,0.0]}," - + "{\"type\":\"LineString\",\"coordinates\":[[101.0,0.0],[102.0,1.0]]}]}", + assertEquals("{\"type\":\"GeometryCollection\",\"properties\":{}," + + "\"geometries\":[{\"type\":\"Point\",\"properties\":{},\"coordinates\":[100.0,0.0]}," + + "{\"type\":\"LineString\",\"properties\":{},\"coordinates\":[[101.0,0.0],[102.0,1.0]]}]}", mapper.writeValueAsString(gc)); } } diff --git a/src/test/java/org/geojson/jackson/LineStringTest.java b/src/test/java/org/geojson/jackson/LineStringTest.java index 01dcc74..47d1a4f 100644 --- a/src/test/java/org/geojson/jackson/LineStringTest.java +++ b/src/test/java/org/geojson/jackson/LineStringTest.java @@ -1,15 +1,15 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - -import java.util.List; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.LineString; import org.geojson.LngLatAlt; import org.geojson.MultiPoint; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; public class LineStringTest { @@ -18,7 +18,7 @@ public class LineStringTest { @Test public void itShouldSerializeMultiPoint() throws Exception { MultiPoint lineString = new LineString(new LngLatAlt(100, 0), new LngLatAlt(101, 1)); - assertEquals("{\"type\":\"LineString\",\"coordinates\":[[100.0,0.0],[101.0,1.0]]}", + assertEquals("{\"type\":\"LineString\",\"properties\":{},\"coordinates\":[[100.0,0.0],[101.0,1.0]]}", mapper.writeValueAsString(lineString)); } diff --git a/src/test/java/org/geojson/jackson/MultiLineStringTest.java b/src/test/java/org/geojson/jackson/MultiLineStringTest.java index 3d3f488..4eadf38 100644 --- a/src/test/java/org/geojson/jackson/MultiLineStringTest.java +++ b/src/test/java/org/geojson/jackson/MultiLineStringTest.java @@ -1,14 +1,13 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - -import java.util.Arrays; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.LngLatAlt; import org.geojson.MultiLineString; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; public class MultiLineStringTest { @@ -19,7 +18,7 @@ public class MultiLineStringTest { MultiLineString multiLineString = new MultiLineString(); multiLineString.add(Arrays.asList(new LngLatAlt(100, 0), new LngLatAlt(101, 1))); multiLineString.add(Arrays.asList(new LngLatAlt(102, 2), new LngLatAlt(103, 3))); - assertEquals("{\"type\":\"MultiLineString\",\"coordinates\":" + assertEquals("{\"type\":\"MultiLineString\",\"properties\":{},\"coordinates\":" + "[[[100.0,0.0],[101.0,1.0]],[[102.0,2.0],[103.0,3.0]]]}", mapper.writeValueAsString(multiLineString)); } } diff --git a/src/test/java/org/geojson/jackson/MultiPointTest.java b/src/test/java/org/geojson/jackson/MultiPointTest.java index 3c6d1a4..2c33ebc 100644 --- a/src/test/java/org/geojson/jackson/MultiPointTest.java +++ b/src/test/java/org/geojson/jackson/MultiPointTest.java @@ -1,14 +1,14 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - -import java.util.List; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.LngLatAlt; import org.geojson.MultiPoint; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; public class MultiPointTest { @@ -17,13 +17,14 @@ public class MultiPointTest { @Test public void itShouldSerializeMultiPoint() throws Exception { MultiPoint multiPoint = new MultiPoint(new LngLatAlt(100, 0), new LngLatAlt(101, 1)); - assertEquals("{\"type\":\"MultiPoint\",\"coordinates\":[[100.0,0.0],[101.0,1.0]]}", + assertEquals("{\"type\":\"MultiPoint\",\"properties\":{},\"coordinates\":[[100.0,0.0],[101.0,1.0]]}", mapper.writeValueAsString(multiPoint)); } @Test public void itShouldDeserializeMultiPoint() throws Exception { - MultiPoint multiPoint = mapper.readValue("{\"type\":\"MultiPoint\",\"coordinates\":[[100.0,0.0],[101.0,1.0]]}", + MultiPoint multiPoint = mapper + .readValue("{\"type\":\"MultiPoint\",\"properties\":{},\"coordinates\":[[100.0,0.0],[101.0,1.0]]}", MultiPoint.class); assertNotNull(multiPoint); List<LngLatAlt> coordinates = multiPoint.getCoordinates(); diff --git a/src/test/java/org/geojson/jackson/MultiPoligonTest.java b/src/test/java/org/geojson/jackson/MultiPoligonTest.java index 8d166c7..27ce0cc 100644 --- a/src/test/java/org/geojson/jackson/MultiPoligonTest.java +++ b/src/test/java/org/geojson/jackson/MultiPoligonTest.java @@ -1,13 +1,12 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.LngLatAlt; import org.geojson.MultiPolygon; import org.geojson.Polygon; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import static org.junit.Assert.assertEquals; public class MultiPoligonTest { @@ -22,7 +21,7 @@ public class MultiPoligonTest { polygon.addInteriorRing(MockData.INTERNAL); multiPolygon.add(polygon); assertEquals( - "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[102.0,2.0],[103.0,2.0],[103.0,3.0],[102.0,3.0],[102.0,2.0]]]," + "{\"type\":\"MultiPolygon\",\"properties\":{},\"coordinates\":[[[[102.0,2.0],[103.0,2.0],[103.0,3.0],[102.0,3.0],[102.0,2.0]]]," + "[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]," + "[[100.2,0.2],[100.8,0.2],[100.8,0.8],[100.2,0.8],[100.2,0.2]]]]}", mapper.writeValueAsString(multiPolygon)); @@ -31,7 +30,7 @@ public class MultiPoligonTest { @Test public void itShouldDeserialize() throws Exception { MultiPolygon multiPolygon = mapper.readValue( - "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[102.0,2.0],[103.0,2.0],[103.0,3.0],[102.0,3.0],[102.0,2.0]]]," + "{\"type\":\"MultiPolygon\",\"properties\":{},\"coordinates\":[[[[102.0,2.0],[103.0,2.0],[103.0,3.0],[102.0,3.0],[102.0,2.0]]]," + "[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]," + "[[100.2,0.2],[100.8,0.2],[100.8,0.8],[100.2,0.8],[100.2,0.2]]]]}", MultiPolygon.class); assertEquals(2, multiPolygon.getCoordinates().size()); diff --git a/src/test/java/org/geojson/jackson/PointTest.java b/src/test/java/org/geojson/jackson/PointTest.java index 25b26c0..732421f 100644 --- a/src/test/java/org/geojson/jackson/PointTest.java +++ b/src/test/java/org/geojson/jackson/PointTest.java @@ -1,46 +1,47 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.GeoJsonObject; import org.geojson.LngLatAlt; import org.geojson.Point; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import static org.junit.Assert.*; public class PointTest { private ObjectMapper mapper = new ObjectMapper(); + public static void assertLngLatAlt(double expectedLongitue, double expectedLatitude, double expectedAltitude, + LngLatAlt point) { + assertEquals(expectedLongitue, point.getLongitude(), 0.00001); + assertEquals(expectedLatitude, point.getLatitude(), 0.00001); + if (Double.isNaN(expectedAltitude)) + assertFalse(point.hasAltitude()); + else + assertEquals(expectedAltitude, point.getAltitude(), 0.00001); + } + @Test public void itShouldSerializeAPoint() throws Exception { Point point = new Point(100, 0); - assertEquals("{\"type\":\"Point\",\"coordinates\":[100.0,0.0]}", mapper.writeValueAsString(point)); + assertEquals("{\"type\":\"Point\",\"properties\":{},\"coordinates\":[100.0,0.0]}", + mapper.writeValueAsString(point)); } @Test public void itShouldDeserializeAPoint() throws Exception { - GeoJsonObject value = mapper.readValue("{\"type\":\"Point\",\"coordinates\":[100.0,5.0]}", GeoJsonObject.class); + GeoJsonObject value = mapper + .readValue("{\"type\":\"Point\",\"properties\":{},\"coordinates\":[100.0,5.0]}", GeoJsonObject.class); assertNotNull(value); assertTrue(value instanceof Point); Point point = (Point)value; assertLngLatAlt(100, 5, Double.NaN, point.getCoordinates()); } - public static void assertLngLatAlt(double expectedLongitue, double expectedLatitude, double expectedAltitude, - LngLatAlt point) { - assertEquals(expectedLongitue, point.getLongitude(), 0.00001); - assertEquals(expectedLatitude, point.getLatitude(), 0.00001); - if (Double.isNaN(expectedAltitude)) - assertFalse(point.hasAltitude()); - else - assertEquals(expectedAltitude, point.getAltitude(), 0.00001); - } - @Test public void itShouldDeserializeAPointWithAltitude() throws Exception { - GeoJsonObject value = mapper.readValue("{\"type\":\"Point\",\"coordinates\":[100.0,5.0,123]}", + GeoJsonObject value = mapper.readValue("{\"type\":\"Point\",\"properties\":{},\"coordinates\":[100.0,5.0,123]}", GeoJsonObject.class); Point point = (Point)value; assertLngLatAlt(100, 5, 123, point.getCoordinates()); @@ -49,6 +50,7 @@ public class PointTest { @Test public void itShouldSerializeAPointWithAltitude() throws Exception { Point point = new Point(100, 0, 256); - assertEquals("{\"type\":\"Point\",\"coordinates\":[100.0,0.0,256.0]}", mapper.writeValueAsString(point)); + assertEquals("{\"type\":\"Point\",\"properties\":{},\"coordinates\":[100.0,0.0,256.0]}", + mapper.writeValueAsString(point)); } } diff --git a/src/test/java/org/geojson/jackson/PolygonTest.java b/src/test/java/org/geojson/jackson/PolygonTest.java index b698a02..101a207 100644 --- a/src/test/java/org/geojson/jackson/PolygonTest.java +++ b/src/test/java/org/geojson/jackson/PolygonTest.java @@ -1,14 +1,13 @@ package org.geojson.jackson; -import static org.junit.Assert.*; - -import java.util.List; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.geojson.LngLatAlt; import org.geojson.Polygon; import org.junit.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.List; + +import static org.junit.Assert.assertEquals; public class PolygonTest { @@ -17,7 +16,7 @@ public class PolygonTest { @Test public void itShouldSerialize() throws Exception { Polygon polygon = new Polygon(MockData.EXTERNAL); - assertEquals("{\"type\":\"Polygon\",\"coordinates\":" + assertEquals("{\"type\":\"Polygon\",\"properties\":{},\"coordinates\":" + "[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]]}", mapper.writeValueAsString(polygon)); } @@ -26,7 +25,7 @@ public class PolygonTest { public void itShouldSerializeWithHole() throws Exception { Polygon polygon = new Polygon(MockData.EXTERNAL); polygon.addInteriorRing(MockData.INTERNAL); - assertEquals("{\"type\":\"Polygon\",\"coordinates\":" + assertEquals("{\"type\":\"Polygon\",\"properties\":{},\"coordinates\":" + "[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]," + "[[100.2,0.2],[100.8,0.2],[100.8,0.8],[100.2,0.8],[100.2,0.2]]]}", mapper.writeValueAsString(polygon)); } |