aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Stabiszewski <as@grundid.de>2015-05-03 16:23:13 +0200
committerAdrian Stabiszewski <as@grundid.de>2015-05-03 16:23:13 +0200
commita129465753d1463b56f33e4618c29ccca5b4fdd4 (patch)
treea3bb24953d7f52f573ba3f05d9445410a91e1797
parent58af8b28f0c4ec7c2b77c2c7f549ad125c7ca52c (diff)
downloadgeojson-jackson-a129465753d1463b56f33e4618c29ccca5b4fdd4.tar.gz
A feature object must have a member with the name "properties". #14
-rw-r--r--src/main/java/org/geojson/GeoJsonObject.java10
-rw-r--r--src/test/java/org/geojson/jackson/GeoJsonObjectTest.java30
-rw-r--r--src/test/java/org/geojson/jackson/GeometryCollectionTest.java11
-rw-r--r--src/test/java/org/geojson/jackson/LineStringTest.java12
-rw-r--r--src/test/java/org/geojson/jackson/MultiLineStringTest.java11
-rw-r--r--src/test/java/org/geojson/jackson/MultiPointTest.java15
-rw-r--r--src/test/java/org/geojson/jackson/MultiPoligonTest.java9
-rw-r--r--src/test/java/org/geojson/jackson/PointTest.java36
-rw-r--r--src/test/java/org/geojson/jackson/PolygonTest.java13
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));
}