diff --git a/build/cqs.tsv b/build/cqs.tsv
index 599820eccf5a..861e8bf54a2f 100644
--- a/build/cqs.tsv
+++ b/build/cqs.tsv
@@ -97,45 +97,45 @@ io.prometheus:simpleclient_tracer_common 0.16.0 compile
io.prometheus:simpleclient_tracer_otel 0.16.0 compile
io.prometheus:simpleclient_tracer_otel_agent 0.16.0 compile
io.sgr:s2-geometry-library-java 1.0.1 compile
-it.geosolutions.jaiext.affine:jt-affine 1.1.24 compile
-it.geosolutions.jaiext.algebra:jt-algebra 1.1.24 compile
-it.geosolutions.jaiext.bandcombine:jt-bandcombine 1.1.24 compile
-it.geosolutions.jaiext.bandmerge:jt-bandmerge 1.1.24 compile
-it.geosolutions.jaiext.bandselect:jt-bandselect 1.1.24 compile
-it.geosolutions.jaiext.binarize:jt-binarize 1.1.24 compile
-it.geosolutions.jaiext.border:jt-border 1.1.24 compile
-it.geosolutions.jaiext.buffer:jt-buffer 1.1.24 compile
-it.geosolutions.jaiext.classifier:jt-classifier 1.1.24 compile
-it.geosolutions.jaiext.colorconvert:jt-colorconvert 1.1.24 compile
-it.geosolutions.jaiext.colorindexer:jt-colorindexer 1.1.24 compile
-it.geosolutions.jaiext.crop:jt-crop 1.1.24 compile
-it.geosolutions.jaiext.errordiffusion:jt-errordiffusion 1.1.24 compile
-it.geosolutions.jaiext.format:jt-format 1.1.24 compile
-it.geosolutions.jaiext.imagefunction:jt-imagefunction 1.1.24 compile
-it.geosolutions.jaiext.iterators:jt-iterators 1.1.24 compile
-it.geosolutions.jaiext.lookup:jt-lookup 1.1.24 compile
-it.geosolutions.jaiext.mosaic:jt-mosaic 1.1.24 compile
-it.geosolutions.jaiext.nullop:jt-nullop 1.1.24 compile
-it.geosolutions.jaiext.orderdither:jt-orderdither 1.1.24 compile
-it.geosolutions.jaiext.piecewise:jt-piecewise 1.1.24 compile
-it.geosolutions.jaiext.rescale:jt-rescale 1.1.24 compile
-it.geosolutions.jaiext.rlookup:jt-rlookup 1.1.24 compile
-it.geosolutions.jaiext.scale2:jt-scale2 1.1.24 compile
-it.geosolutions.jaiext.scale:jt-scale 1.1.24 compile
-it.geosolutions.jaiext.shadedrelief:jt-shadedrelief 1.1.24 compile
-it.geosolutions.jaiext.stats:jt-stats 1.1.24 compile
-it.geosolutions.jaiext.translate:jt-translate 1.1.24 compile
-it.geosolutions.jaiext.utilities:jt-utilities 1.1.24 compile
-it.geosolutions.jaiext.vectorbin:jt-vectorbin 1.1.24 compile
-it.geosolutions.jaiext.warp:jt-warp 1.1.24 compile
-it.geosolutions.jaiext.zonal:jt-zonal 1.1.24 compile
+it.geosolutions.jaiext.affine:jt-affine 1.1.27 compile
+it.geosolutions.jaiext.algebra:jt-algebra 1.1.27 compile
+it.geosolutions.jaiext.bandcombine:jt-bandcombine 1.1.27 compile
+it.geosolutions.jaiext.bandmerge:jt-bandmerge 1.1.27 compile
+it.geosolutions.jaiext.bandselect:jt-bandselect 1.1.27 compile
+it.geosolutions.jaiext.binarize:jt-binarize 1.1.27 compile
+it.geosolutions.jaiext.border:jt-border 1.1.27 compile
+it.geosolutions.jaiext.buffer:jt-buffer 1.1.27 compile
+it.geosolutions.jaiext.classifier:jt-classifier 1.1.27 compile
+it.geosolutions.jaiext.colorconvert:jt-colorconvert 1.1.27 compile
+it.geosolutions.jaiext.colorindexer:jt-colorindexer 1.1.27 compile
+it.geosolutions.jaiext.crop:jt-crop 1.1.27 compile
+it.geosolutions.jaiext.errordiffusion:jt-errordiffusion 1.1.27 compile
+it.geosolutions.jaiext.format:jt-format 1.1.27 compile
+it.geosolutions.jaiext.imagefunction:jt-imagefunction 1.1.27 compile
+it.geosolutions.jaiext.iterators:jt-iterators 1.1.27 compile
+it.geosolutions.jaiext.lookup:jt-lookup 1.1.27 compile
+it.geosolutions.jaiext.mosaic:jt-mosaic 1.1.27 compile
+it.geosolutions.jaiext.nullop:jt-nullop 1.1.27 compile
+it.geosolutions.jaiext.orderdither:jt-orderdither 1.1.27 compile
+it.geosolutions.jaiext.piecewise:jt-piecewise 1.1.27 compile
+it.geosolutions.jaiext.rescale:jt-rescale 1.1.27 compile
+it.geosolutions.jaiext.rlookup:jt-rlookup 1.1.27 compile
+it.geosolutions.jaiext.scale2:jt-scale2 1.1.27 compile
+it.geosolutions.jaiext.scale:jt-scale 1.1.27 compile
+it.geosolutions.jaiext.shadedrelief:jt-shadedrelief 1.1.27 compile
+it.geosolutions.jaiext.stats:jt-stats 1.1.27 compile
+it.geosolutions.jaiext.translate:jt-translate 1.1.27 compile
+it.geosolutions.jaiext.utilities:jt-utilities 1.1.27 compile
+it.geosolutions.jaiext.vectorbin:jt-vectorbin 1.1.27 compile
+it.geosolutions.jaiext.warp:jt-warp 1.1.27 compile
+it.geosolutions.jaiext.zonal:jt-zonal 1.1.27 compile
it.geosolutions.jgridshift:jgridshift-core 1.3 compile
jakarta.annotation:jakarta.annotation-api 1.3.5 compile
jakarta.inject:jakarta.inject-api 2.0.0 compile
jakarta.inject:jakarta.inject-api 2.0.1 compile
jakarta.transaction:jakarta.transaction-api 1.3.3 compile
javax.annotation:javax.annotation-api 1.2 compile
-javax.measure:unit-api 2.1.2 compile
+javax.measure:unit-api 2.2 compile
joda-time:joda-time 2.12.6 compile
net.java.dev.jna:jna 5.14.0 compile
net.java.dev.jna:jna-platform 5.14.0 compile
@@ -219,34 +219,34 @@ org.ejml:ejml-core 0.41 compile
org.ejml:ejml-ddense 0.41 compile
org.ejml:ejml-fsparse 0.41 compile
org.ejml:ejml-simple 0.41 compile
-org.geotools.jdbc:gt-jdbc-postgis 30.4 compile
-org.geotools.ogc:net.opengis.fes 30.4 compile
-org.geotools.ogc:net.opengis.ows 30.4 compile
-org.geotools.ogc:net.opengis.wfs 30.4 compile
-org.geotools.ogc:org.w3.xlink 30.4 compile
-org.geotools.xsd:gt-xsd-core 30.4 compile
-org.geotools.xsd:gt-xsd-fes 30.4 compile
-org.geotools.xsd:gt-xsd-filter 30.4 compile
-org.geotools.xsd:gt-xsd-gml2 30.4 compile
-org.geotools.xsd:gt-xsd-gml3 30.4 compile
-org.geotools.xsd:gt-xsd-ows 30.4 compile
-org.geotools.xsd:gt-xsd-wfs 30.4 compile
-org.geotools:gt-api 30.4 compile
-org.geotools:gt-coverage 30.4 compile
-org.geotools:gt-cql 30.4 compile
-org.geotools:gt-epsg-wkt 30.4 compile
-org.geotools:gt-grid 30.4 compile
-org.geotools:gt-http 30.4 compile
-org.geotools:gt-jdbc 30.4 compile
-org.geotools:gt-main 30.4 compile
-org.geotools:gt-metadata 30.4 compile
-org.geotools:gt-process 30.4 compile
-org.geotools:gt-process-feature 30.4 compile
-org.geotools:gt-referencing 30.4 compile
-org.geotools:gt-render 30.4 compile
-org.geotools:gt-shapefile 30.4 compile
-org.geotools:gt-transform 30.4 compile
-org.geotools:gt-xml 30.4 compile
+org.geotools.jdbc:gt-jdbc-postgis 32.0 compile
+org.geotools.ogc:net.opengis.fes 32.0 compile
+org.geotools.ogc:net.opengis.ows 32.0 compile
+org.geotools.ogc:net.opengis.wfs 32.0 compile
+org.geotools.ogc:org.w3.xlink 32.0 compile
+org.geotools.xsd:gt-xsd-core 32.0 compile
+org.geotools.xsd:gt-xsd-fes 32.0 compile
+org.geotools.xsd:gt-xsd-filter 32.0 compile
+org.geotools.xsd:gt-xsd-gml2 32.0 compile
+org.geotools.xsd:gt-xsd-gml3 32.0 compile
+org.geotools.xsd:gt-xsd-ows 32.0 compile
+org.geotools.xsd:gt-xsd-wfs 32.0 compile
+org.geotools:gt-api 32.0 compile
+org.geotools:gt-coverage 32.0 compile
+org.geotools:gt-cql 32.0 compile
+org.geotools:gt-epsg-wkt 32.0 compile
+org.geotools:gt-grid 32.0 compile
+org.geotools:gt-http 32.0 compile
+org.geotools:gt-jdbc 32.0 compile
+org.geotools:gt-main 32.0 compile
+org.geotools:gt-metadata 32.0 compile
+org.geotools:gt-process 32.0 compile
+org.geotools:gt-process-feature 32.0 compile
+org.geotools:gt-referencing 32.0 compile
+org.geotools:gt-render 32.0 compile
+org.geotools:gt-shapefile 32.0 compile
+org.geotools:gt-transform 32.0 compile
+org.geotools:gt-xml 32.0 compile
org.huldra.math:bigint 0.7.1 compile
org.jetbrains:annotations 17.0.0 compile
org.jruby.jcodings:jcodings 1.0.55 compile
@@ -255,8 +255,8 @@ org.json4s:json4s-ast_2.12 3.6.12 compile
org.json4s:json4s-core_2.12 3.6.12 compile
org.json4s:json4s-native_2.12 3.6.12 compile
org.json4s:json4s-scalap_2.12 3.6.12 compile
-org.locationtech.jts.io:jts-io-common 1.19.0 compile
-org.locationtech.jts:jts-core 1.19.0 compile
+org.locationtech.jts.io:jts-io-common 1.20.0 compile
+org.locationtech.jts:jts-core 1.20.0 compile
org.locationtech.spatial4j:spatial4j 0.8 compile
org.mozilla:rhino 1.7.14 compile
org.mozilla:rhino-engine 1.7.14 compile
@@ -338,7 +338,7 @@ org.apache.sedona:sedona-common 1.5.0 test
org.cassandraunit:cassandra-unit 3.7.1.0 test
org.codehaus.groovy:groovy-jsr223 3.0.20 test
org.geomesa.testcontainers:testcontainers-accumulo 1.4.1 test
-org.geotools:gt-epsg-hsql 30.4 test
+org.geotools:gt-epsg-hsql 32.0 test
org.jruby:jruby 9.4.5.0 test
org.mockito:mockito-core 2.28.2 test
org.mortbay.jetty:jetty 6.1.26 test
diff --git a/docs/user/geoserver.rst b/docs/user/geoserver.rst
index 6cabe7c377a3..219286718c98 100644
--- a/docs/user/geoserver.rst
+++ b/docs/user/geoserver.rst
@@ -23,6 +23,8 @@ although this may occasionally cause errors as GeoServer does not follow semanti
+-------------------+-------------------+
| GeoMesa Version | GeoServer Version |
+===================+===================+
+| 5.1.0 | 2.26.0 |
++-------------------+-------------------+
| 5.0.0 | 2.24.2 |
+-------------------+-------------------+
| 4.0.0 | 2.22.2 |
diff --git a/geomesa-gt/geomesa-gt-partitioning/src/main/scala/org/locationtech/geomesa/gt/partition/postgis/dialect/PartitionedPostgisPsDialect.scala b/geomesa-gt/geomesa-gt-partitioning/src/main/scala/org/locationtech/geomesa/gt/partition/postgis/dialect/PartitionedPostgisPsDialect.scala
index 4e24652ff54b..7ff46d6c5ba3 100644
--- a/geomesa-gt/geomesa-gt-partitioning/src/main/scala/org/locationtech/geomesa/gt/partition/postgis/dialect/PartitionedPostgisPsDialect.scala
+++ b/geomesa-gt/geomesa-gt-partitioning/src/main/scala/org/locationtech/geomesa/gt/partition/postgis/dialect/PartitionedPostgisPsDialect.scala
@@ -15,6 +15,7 @@ import org.geotools.api.filter.Filter
import org.geotools.data.postgis.PostGISPSDialect
import org.geotools.jdbc.JDBCDataStore
+import java.lang.invoke.{MethodHandle, MethodHandles, MethodType}
import java.sql.{Connection, DatabaseMetaData, PreparedStatement, Types}
import java.util.Locale
import java.util.concurrent.TimeUnit
@@ -39,7 +40,55 @@ class PartitionedPostgisPsDialect(store: JDBCDataStore, delegate: PartitionedPos
}
})
- override def setValue(value: Any, binding: Class[_], ps: PreparedStatement, column: Int, cx: Connection): Unit = {
+ // reference to super.setValue, for back-compatibility with gt 30
+ private lazy val superSetValue: MethodHandle = {
+ val methodType =
+ MethodType.methodType(classOf[Unit], classOf[Object], classOf[Class[_]], classOf[PreparedStatement], classOf[Int], classOf[Connection])
+ MethodHandles.lookup.findSpecial(classOf[PostGISPSDialect], "setValue", methodType, classOf[PartitionedPostgisPsDialect])
+ }
+
+ override def setValue(
+ value: AnyRef,
+ binding: Class[_],
+ att: AttributeDescriptor,
+ ps: PreparedStatement,
+ column: Int,
+ cx: Connection): Unit = {
+ // json columns are string type in geotools, but we have to use setObject or else we get a binding error
+ if (binding == classOf[String] && jsonColumns.get(new PreparedStatementKey(ps, column))) {
+ ps.setObject(column, value, Types.OTHER)
+ } else if (binding == classOf[java.util.List[_]]) {
+ // handle bug in jdbc store not calling setArrayValue in update statements
+ value match {
+ case null =>
+ ps.setNull(column, Types.ARRAY)
+
+ case list: java.util.Collection[_] =>
+ if (list.isEmpty) {
+ ps.setNull(column, Types.ARRAY)
+ } else {
+ setArray(list.toArray(), ps, column, cx)
+ }
+
+ case array: Array[_] =>
+ if (array.isEmpty) {
+ ps.setNull(column, Types.ARRAY)
+ } else {
+ setArray(array, ps, column, cx)
+ }
+
+ case _ =>
+ // this will almost certainly fail...
+ super.setValue(value, binding, att, ps, column, cx)
+ }
+ } else {
+ super.setValue(value, binding, att, ps, column, cx)
+ }
+ }
+
+ // for back-compatibility with gt 30
+ // noinspection ScalaUnusedSymbol
+ def setValue(value: AnyRef, binding: Class[_], ps: PreparedStatement, column: Int, cx: Connection): Unit = {
// json columns are string type in geotools, but we have to use setObject or else we get a binding error
if (binding == classOf[String] && jsonColumns.get(new PreparedStatementKey(ps, column))) {
ps.setObject(column, value, Types.OTHER)
@@ -65,10 +114,10 @@ class PartitionedPostgisPsDialect(store: JDBCDataStore, delegate: PartitionedPos
case _ =>
// this will almost certainly fail...
- super.setValue(value, binding, ps, column, cx)
+ superSetValue.invoke(this, value, binding, ps, column, cx)
}
} else {
- super.setValue(value, binding, ps, column, cx)
+ superSetValue.invoke(this, value, binding, ps, column, cx)
}
}
@@ -116,7 +165,7 @@ class PartitionedPostgisPsDialect(store: JDBCDataStore, delegate: PartitionedPos
object PartitionedPostgisPsDialect {
// uses eq on the prepared statement to ensure that we compute json fields exactly once per prepared statement/col
- class PreparedStatementKey(val ps: PreparedStatement, val column: Int) {
+ private class PreparedStatementKey(val ps: PreparedStatement, val column: Int) {
override def equals(other: Any): Boolean = {
other match {
diff --git a/pom.xml b/pom.xml
index 0df654f709f5..0ecc9f31e681 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,9 +58,9 @@
2.3.0
- 30.4
- 2.24.4
- 1.19.0
+ 32.0
+ 2.26.0
+ 1.20.0
0.8
0.41