aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Stabiszewski <github@grundid.de>2020-02-27 14:00:14 +0100
committerGitHub <noreply@github.com>2020-02-27 14:00:14 +0100
commite0eb56b8411ff7692b3352596e7626a0ed7a6eee (patch)
treef4f97d6c4974f4a3212674b8c10d85b50c06b954
parent8066aa12e989065804eb944e398e14acc4adf735 (diff)
parent06813f3ee5fb509a31c6bec02e0b2a7ec604a5d9 (diff)
downloadgeojson-jackson-e0eb56b8411ff7692b3352596e7626a0ed7a6eee.tar.gz
Merge pull request #53 from trygveaa/polygon-set-exterior-ring-should-replace
Replace exterior ring in setExteriorRing if it exists
-rw-r--r--src/main/java/org/geojson/Polygon.java6
-rw-r--r--src/test/java/org/geojson/jackson/PolygonTest.java18
2 files changed, 23 insertions, 1 deletions
diff --git a/src/main/java/org/geojson/Polygon.java b/src/main/java/org/geojson/Polygon.java
index b3649e8..d4c42af 100644
--- a/src/main/java/org/geojson/Polygon.java
+++ b/src/main/java/org/geojson/Polygon.java
@@ -19,7 +19,11 @@ public class Polygon extends Geometry<List<LngLatAlt>> {
}
public void setExteriorRing(List<LngLatAlt> points) {
- coordinates.add(0, points);
+ if (coordinates.isEmpty()) {
+ coordinates.add(0, points);
+ } else {
+ coordinates.set(0, points);
+ }
}
@JsonIgnore
diff --git a/src/test/java/org/geojson/jackson/PolygonTest.java b/src/test/java/org/geojson/jackson/PolygonTest.java
index ef06fdf..6298483 100644
--- a/src/test/java/org/geojson/jackson/PolygonTest.java
+++ b/src/test/java/org/geojson/jackson/PolygonTest.java
@@ -5,6 +5,8 @@ import org.geojson.LngLatAlt;
import org.geojson.Polygon;
import org.junit.Test;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
@@ -46,6 +48,22 @@ public class PolygonTest {
assertListEquals(MockData.INTERNAL, polygon.getInteriorRings().get(0));
}
+ @Test
+ public void itShouldSetExteriorRing() throws Exception {
+ Polygon polygon = new Polygon();
+ polygon.setExteriorRing(MockData.EXTERNAL);
+ assertEquals(MockData.EXTERNAL, polygon.getExteriorRing());
+ }
+
+ @Test
+ public void itShouldReplaceExteriorRing() throws Exception {
+ Polygon polygon = new Polygon(Arrays.asList(
+ new LngLatAlt(0, 0), new LngLatAlt(1, 0), new LngLatAlt(1, 1), new LngLatAlt(0, 1), new LngLatAlt(0, 0)));
+ polygon.setExteriorRing(MockData.EXTERNAL);
+ assertEquals(MockData.EXTERNAL, polygon.getExteriorRing());
+ assertEquals(0, polygon.getInteriorRings().size());
+ }
+
private void assertListEquals(List<LngLatAlt> expectedList, List<LngLatAlt> actualList) {
for (int x = 0; x < actualList.size(); x++) {
LngLatAlt expected = expectedList.get(x);