diff --git a/core/src/main/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultGeometry.java b/core/src/main/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultGeometry.java index 885d9bd48b7..9b1148dff69 100644 --- a/core/src/main/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultGeometry.java +++ b/core/src/main/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultGeometry.java @@ -176,7 +176,7 @@ public boolean equals(Object o) { return false; } DefaultGeometry that = (DefaultGeometry) o; - return this.getOgcGeometry().equals(that.getOgcGeometry()); + return this.getOgcGeometry().equals((Object) that.getOgcGeometry()); } @Override diff --git a/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultLineStringTest.java b/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultLineStringTest.java index 38dc84549c4..35cef803590 100644 --- a/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultLineStringTest.java +++ b/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultLineStringTest.java @@ -23,6 +23,9 @@ import com.datastax.dse.driver.api.core.data.geometry.LineString; import com.datastax.dse.driver.api.core.data.geometry.Point; import com.esri.core.geometry.ogc.OGCLineString; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import java.nio.ByteBuffer; import java.nio.ByteOrder; import org.junit.Test; @@ -101,8 +104,26 @@ public void should_parse_valid_geo_json() { } @Test - public void should_convert_to_geo_json() { - assertThat(lineString.asGeoJson()).isEqualTo(json); + public void should_convert_to_geo_json() throws Exception { + + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(lineString.asGeoJson()); + assertThat(root.get("type").toString()).isEqualTo("\"LineString\""); + + double expected[][] = {{30.0, 10.0}, {10.0, 30.0}, {40.0, 40.0}}; + JsonNode coordinatesNode = root.get("coordinates"); + assertThat(coordinatesNode.isArray()).isTrue(); + ArrayNode coordinatesArray = (ArrayNode) coordinatesNode; + assertThat(coordinatesArray.size()).isEqualTo(3); + for (int i = 0; i < expected.length; ++i) { + + JsonNode elemNode = coordinatesArray.get(i); + assertThat(elemNode.isArray()).isTrue(); + ArrayNode elemArray = (ArrayNode) elemNode; + assertThat(elemArray.size()).isEqualTo(2); + assertThat(elemArray.get(0).asDouble()).isEqualTo(expected[i][0]); + assertThat(elemArray.get(1).asDouble()).isEqualTo(expected[i][1]); + } } @Test diff --git a/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPointTest.java b/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPointTest.java index 1e3a7366741..b99152c6238 100644 --- a/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPointTest.java +++ b/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPointTest.java @@ -22,6 +22,9 @@ import com.datastax.dse.driver.api.core.data.geometry.Point; import com.esri.core.geometry.ogc.OGCPoint; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import java.nio.ByteBuffer; import java.nio.ByteOrder; import org.junit.Test; @@ -83,8 +86,19 @@ public void should_parse_valid_geo_json() { } @Test - public void should_convert_to_geo_json() { - assertThat(point.asGeoJson()).isEqualTo(json); + public void should_convert_to_geo_json() throws Exception { + + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(point.asGeoJson()); + assertThat(root.get("type").toString()).isEqualTo("\"Point\""); + + double expected[] = {1.1, 2.2}; + JsonNode coordinatesNode = root.get("coordinates"); + assertThat(coordinatesNode.isArray()).isTrue(); + ArrayNode coordinatesArray = (ArrayNode) coordinatesNode; + assertThat(coordinatesArray.size()).isEqualTo(2); + assertThat(coordinatesArray.get(0).asDouble()).isEqualTo(expected[0]); + assertThat(coordinatesArray.get(1).asDouble()).isEqualTo(expected[1]); } @Test diff --git a/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPolygonTest.java b/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPolygonTest.java index d86e9cdc269..e60470a0708 100644 --- a/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPolygonTest.java +++ b/core/src/test/java/com/datastax/dse/driver/internal/core/data/geometry/DefaultPolygonTest.java @@ -24,6 +24,9 @@ import com.datastax.dse.driver.api.core.data.geometry.Point; import com.datastax.dse.driver.api.core.data.geometry.Polygon; import com.esri.core.geometry.ogc.OGCPolygon; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import java.nio.ByteBuffer; import java.nio.ByteOrder; import org.junit.Test; @@ -109,8 +112,44 @@ public void should_parse_valid_geo_json() { } @Test - public void should_convert_to_geo_json() { - assertThat(polygon.asGeoJson()).isEqualTo(json); + public void should_convert_to_geo_json() throws Exception { + + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(polygon.asGeoJson()); + assertThat(root.get("type").toString()).isEqualTo("\"Polygon\""); + + /* + Note that the order of values in expected differs from the order of insertion when creating + the Polygon. OGC expects the "exterior" ring of the polygon to be listed in counter-clockwise + order... and that's what this sequence represents (draw it out on a graph if you don't believe me). + + Weirdly this is the opposite of the order used for this test when we were using ESRI 1.2.1. + That fact (combined with the fact that only ESRI classes are used for serialization here) makes me + think that the earlier version was just doing it wrong... or at least doing it in a way that + didn't agree with the spec. Either way it is clearly correct that we should go counter-clockwise... + so that's what we're doing. + */ + double expected[][] = {{30.0, 10.0}, {40.0, 40.0}, {20.0, 40.0}, {10.0, 20.0}, {30.0, 10.0}}; + JsonNode coordinatesNode = root.get("coordinates"); + assertThat(coordinatesNode.isArray()).isTrue(); + ArrayNode coordinatesArray = (ArrayNode) coordinatesNode; + + // There's an extra layer here, presumably indicating the bounds of the polygon + assertThat(coordinatesArray.size()).isEqualTo(1); + JsonNode polygonNode = coordinatesArray.get(0); + assertThat(polygonNode.isArray()).isTrue(); + ArrayNode polygonArray = (ArrayNode) polygonNode; + + assertThat(polygonArray.size()).isEqualTo(5); + for (int i = 0; i < expected.length; ++i) { + + JsonNode elemNode = polygonArray.get(i); + assertThat(elemNode.isArray()).isTrue(); + ArrayNode elemArray = (ArrayNode) elemNode; + assertThat(elemArray.size()).isEqualTo(2); + assertThat(elemArray.get(0).asDouble()).isEqualTo(expected[i][0]); + assertThat(elemArray.get(1).asDouble()).isEqualTo(expected[i][1]); + } } @Test diff --git a/core/src/test/java/com/datastax/dse/driver/internal/core/insights/PlatformInfoFinderTest.java b/core/src/test/java/com/datastax/dse/driver/internal/core/insights/PlatformInfoFinderTest.java index 80294ea6b7d..d9e0e2f2006 100644 --- a/core/src/test/java/com/datastax/dse/driver/internal/core/insights/PlatformInfoFinderTest.java +++ b/core/src/test/java/com/datastax/dse/driver/internal/core/insights/PlatformInfoFinderTest.java @@ -82,7 +82,6 @@ public void should_find_dependencies_from_file() { expected.put("com.github.jnr:jffi", withUnverifiedRuntimeVersion("1.2.16")); expected.put("io.netty:netty-buffer", withUnverifiedRuntimeVersion("4.0.56.Final")); expected.put("org.ow2.asm:asm-commons", withUnverifiedRuntimeVersion("5.0.3")); - expected.put("org.json:json", withUnverifiedRuntimeVersion("20090211")); expected.put("org.ow2.asm:asm-util", withUnverifiedRuntimeVersion("5.0.3")); expected.put("com.github.jnr:jnr-ffi", withUnverifiedRuntimeVersion("2.1.7")); @@ -91,7 +90,7 @@ public void should_find_dependencies_from_file() { new PlatformInfoFinder(this::nullUrlProvider).fetchDependenciesFromFile(inputStream); // then - assertThat(stringStringMap).hasSize(28); + assertThat(stringStringMap).hasSize(27); assertThat(stringStringMap).isEqualTo(expected); } diff --git a/core/src/test/resources/insights/test-dependencies.txt b/core/src/test/resources/insights/test-dependencies.txt index 6cabe8b257d..97503f38c51 100644 --- a/core/src/test/resources/insights/test-dependencies.txt +++ b/core/src/test/resources/insights/test-dependencies.txt @@ -27,5 +27,4 @@ The following files have been resolved: org.ow2.asm:asm-analysis:jar:5.0.3:compile com.github.jnr:jnr-x86asm:jar:1.0.2:compile io.netty:netty-codec:jar:4.0.56.Final:compile - org.json:json:jar:20090211:compile com.github.jnr:jffi:jar:native:1.2.16:runtime \ No newline at end of file diff --git a/osgi-tests/src/test/java/com/datastax/oss/driver/internal/osgi/support/BundleOptions.java b/osgi-tests/src/test/java/com/datastax/oss/driver/internal/osgi/support/BundleOptions.java index 3e6171ca530..d0780829159 100644 --- a/osgi-tests/src/test/java/com/datastax/oss/driver/internal/osgi/support/BundleOptions.java +++ b/osgi-tests/src/test/java/com/datastax/oss/driver/internal/osgi/support/BundleOptions.java @@ -181,11 +181,10 @@ public static CompositeOption esriBundles() { CoreOptions.wrappedBundle( mavenBundle("com.esri.geometry", "esri-geometry-api").versionAsInProject()) .exports("com.esri.core.geometry.*") - .imports("org.json", "org.codehaus.jackson") + .imports("com.fasterxml.jackson.*", "com.fasterxml.jackson.databind.*") .bundleSymbolicName("com.esri.core.geometry") .overwriteManifest(WrappedUrlProvisionOption.OverwriteMode.FULL), - mavenBundle("org.json", "json").versionAsInProject(), - mavenBundle("org.codehaus.jackson", "jackson-core-asl").versionAsInProject(), + mavenBundle("com.fasterxml.jackson.core", "jackson-core").versionAsInProject(), systemProperty("cassandra.geo").value("true")); } diff --git a/pom.xml b/pom.xml index 2cfeb65e757..3b356516351 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 2.1.12 4.1.18 4.1.119.Final - 1.2.1 + 2.2.4 1.0.3 - 20230227 2.13.5 ${jackson.version} @@ -162,11 +161,6 @@ esri-geometry-api ${esri.version} - - org.json - json - ${json.version} - org.apache.tinkerpop gremlin-core