diff --git a/services-geojson/src/main/java/com/mapbox/geojson/Feature.java b/services-geojson/src/main/java/com/mapbox/geojson/Feature.java index d4853fbfa..fa49527ef 100644 --- a/services-geojson/src/main/java/com/mapbox/geojson/Feature.java +++ b/services-geojson/src/main/java/com/mapbox/geojson/Feature.java @@ -165,7 +165,8 @@ public static Feature fromGeometry(@Nullable Geometry geometry, @Nullable JsonOb */ public static Feature fromGeometry(@Nullable Geometry geometry, @NonNull JsonObject properties, @Nullable String id, @Nullable BoundingBox bbox) { - return new AutoValue_Feature(TYPE, bbox, id, geometry, properties); + return new AutoValue_Feature(TYPE, bbox, id, geometry, + properties == null ? new JsonObject() : properties); } /** diff --git a/services-geojson/src/main/java/com/mapbox/geojson/MultiPoint.java b/services-geojson/src/main/java/com/mapbox/geojson/MultiPoint.java index 8de336b83..dd145f808 100644 --- a/services-geojson/src/main/java/com/mapbox/geojson/MultiPoint.java +++ b/services-geojson/src/main/java/com/mapbox/geojson/MultiPoint.java @@ -130,7 +130,7 @@ static MultiPoint fromLngLats(@NonNull double[][] coordinates) { * @return a list of points * @since 3.0.0 */ - @Nullable + @NonNull @Override public abstract List coordinates(); diff --git a/services-geojson/src/main/java/com/mapbox/geojson/Polygon.java b/services-geojson/src/main/java/com/mapbox/geojson/Polygon.java index e0050efa4..b0150d424 100644 --- a/services-geojson/src/main/java/com/mapbox/geojson/Polygon.java +++ b/services-geojson/src/main/java/com/mapbox/geojson/Polygon.java @@ -323,7 +323,7 @@ public List inner() { * @return a list of points * @since 3.0.0 */ - @Nullable + @NonNull @Override public abstract List> coordinates(); diff --git a/services-geojson/src/test/java/com/mapbox/geojson/LineStringTest.java b/services-geojson/src/test/java/com/mapbox/geojson/LineStringTest.java index 923004882..8b047267d 100644 --- a/services-geojson/src/test/java/com/mapbox/geojson/LineStringTest.java +++ b/services-geojson/src/test/java/com/mapbox/geojson/LineStringTest.java @@ -120,4 +120,10 @@ public void toJson() throws IOException { LineString geo = LineString.fromJson(json); compareJson(json, geo.toJson()); } + + @Test + public void fromJson_coordinatesPresent() throws Exception { + thrown.expect(NullPointerException.class); + LineString.fromJson("{\"type\":\"LineString\",\"coordinates\":null}"); + } } \ No newline at end of file diff --git a/services-geojson/src/test/java/com/mapbox/geojson/MultiLineStringTest.java b/services-geojson/src/test/java/com/mapbox/geojson/MultiLineStringTest.java index 3cee5f078..fb4e4ec7a 100644 --- a/services-geojson/src/test/java/com/mapbox/geojson/MultiLineStringTest.java +++ b/services-geojson/src/test/java/com/mapbox/geojson/MultiLineStringTest.java @@ -6,7 +6,10 @@ import static org.junit.Assert.assertNull; import com.mapbox.core.TestUtils; + +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import java.io.IOException; import java.util.ArrayList; @@ -16,6 +19,9 @@ public class MultiLineStringTest extends TestUtils { private static final String SAMPLE_MULTILINESTRING = "sample-multilinestring.json"; + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void sanity() throws Exception { List points = new ArrayList<>(); @@ -133,4 +139,10 @@ public void toJson() throws IOException { MultiLineString geo = MultiLineString.fromJson(json); compareJson(json, geo.toJson()); } + + @Test + public void fromJson_coordinatesPresent() throws Exception { + thrown.expect(NullPointerException.class); + MultiLineString.fromJson("{\"type\":\"MultiLineString\",\"coordinates\":null}"); + } } diff --git a/services-geojson/src/test/java/com/mapbox/geojson/MultiPointTest.java b/services-geojson/src/test/java/com/mapbox/geojson/MultiPointTest.java index a8ad24e9b..e6f0b7782 100644 --- a/services-geojson/src/test/java/com/mapbox/geojson/MultiPointTest.java +++ b/services-geojson/src/test/java/com/mapbox/geojson/MultiPointTest.java @@ -7,7 +7,9 @@ import com.mapbox.core.TestUtils; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import java.io.IOException; import java.util.ArrayList; @@ -17,6 +19,9 @@ public class MultiPointTest extends TestUtils { private static final String SAMPLE_MULTIPOINT = "sample-multipoint.json"; + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void sanity() throws Exception { List points = new ArrayList<>(); @@ -106,4 +111,10 @@ public void toJson() throws IOException { MultiPoint geo = MultiPoint.fromJson(json); compareJson(json, geo.toJson()); } + + @Test + public void fromJson_coordinatesPresent() throws Exception { + thrown.expect(NullPointerException.class); + MultiPoint.fromJson("{\"type\":\"MultiPoint\",\"coordinates\":null}"); + } } \ No newline at end of file diff --git a/services-geojson/src/test/java/com/mapbox/geojson/MultiPolygonTest.java b/services-geojson/src/test/java/com/mapbox/geojson/MultiPolygonTest.java index 9333dfa89..57dca1e2c 100644 --- a/services-geojson/src/test/java/com/mapbox/geojson/MultiPolygonTest.java +++ b/services-geojson/src/test/java/com/mapbox/geojson/MultiPolygonTest.java @@ -7,7 +7,9 @@ import com.mapbox.core.TestUtils; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import java.io.IOException; import java.util.ArrayList; @@ -16,6 +18,9 @@ public class MultiPolygonTest extends TestUtils { private static final String SAMPLE_MULTIPOLYGON = "sample-multipolygon.json"; + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void sanity() throws Exception { List points = new ArrayList<>(); @@ -151,4 +156,10 @@ public void toJson() throws IOException { MultiPolygon geo = MultiPolygon.fromJson(json); compareJson(json, geo.toJson()); } + + @Test + public void fromJson_coordinatesPresent() throws Exception { + thrown.expect(NullPointerException.class); + MultiPolygon.fromJson("{\"type\":\"MultiPolygon\",\"coordinates\":null}"); + } } diff --git a/services-geojson/src/test/java/com/mapbox/geojson/PointTest.java b/services-geojson/src/test/java/com/mapbox/geojson/PointTest.java index f18ef942e..2d2b14a4d 100644 --- a/services-geojson/src/test/java/com/mapbox/geojson/PointTest.java +++ b/services-geojson/src/test/java/com/mapbox/geojson/PointTest.java @@ -7,7 +7,10 @@ import static org.junit.Assert.assertNull; import com.mapbox.core.TestUtils; + +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import java.io.IOException; import java.util.ArrayList; @@ -17,6 +20,9 @@ public class PointTest extends TestUtils { private static final String SAMPLE_POINT = "sample-point.json"; + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void sanity() throws Exception { Point point = Point.fromLngLat(1.0, 2.0); @@ -60,7 +66,7 @@ public void bbox_nullWhenNotSet() throws Exception { } @Test - public void bbox_doesNotSerializeWhenNotPresent() throws Exception { + public void bbox_doesSerializeWhenNotPresent() throws Exception { Point point = Point.fromLngLat(1.0, 2.0); compareJson(point.toJson(), "{\"type\":\"Point\",\"coordinates\":[1.0, 2.0]}"); @@ -126,4 +132,10 @@ public void toJson() throws IOException { Point geo = Point.fromJson(json); compareJson(json, geo.toJson()); } + + @Test + public void fromJson_coordinatesPresent() throws Exception { + thrown.expect(NullPointerException.class); + Point.fromJson("{\"type\":\"Point\",\"coordinates\":null}"); + } } \ No newline at end of file diff --git a/services-geojson/src/test/java/com/mapbox/geojson/PolygonTest.java b/services-geojson/src/test/java/com/mapbox/geojson/PolygonTest.java index 2aab21743..c8d018f8c 100644 --- a/services-geojson/src/test/java/com/mapbox/geojson/PolygonTest.java +++ b/services-geojson/src/test/java/com/mapbox/geojson/PolygonTest.java @@ -264,4 +264,10 @@ public void toJsonHoles() throws IOException { Polygon geo = Polygon.fromJson(json); compareJson(json, geo.toJson()); } + + @Test + public void fromJson_coordinatesPresent() throws Exception { + thrown.expect(NullPointerException.class); + Polygon.fromJson("{\"type\":\"Polygon\",\"coordinates\":null}"); + } }