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