This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git

commit a2c13a9421862b1c27ae603e27afa8f3d541e0d0
Merge: eec072bb3f 781fc115d0
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Tue Dec 30 11:53:04 2025 +0100

    Merge branch 'geoapi-4.0' into geoapi-3.1:
    
    * Dynamic optimization of filters
    * Streaming of `GridCoverage.Evaluator`.
    * Reorganization of collection utilities.

 endorsed/build.gradle.kts                          |   4 +
 .../org/apache/sis/console/IdentifierCommand.java  |   2 +-
 .../org/apache/sis/coverage/BandedCoverage.java    |  60 +-
 .../org/apache/sis/coverage/SampleDimension.java   |  10 +-
 .../coverage/grid/BandAggregateGridCoverage.java   |  18 +-
 .../sis/coverage/grid/BufferedGridCoverage.java    |  39 +-
 .../sis/coverage/grid/ClippedGridCoverage.java     |   8 +-
 .../sis/coverage/grid/ConvertedGridCoverage.java   |  25 +-
 .../apache/sis/coverage/grid/DefaultEvaluator.java | 487 +++++++----
 .../sis/coverage/grid/DimensionalityReduction.java |  12 +-
 .../apache/sis/coverage/grid/EvaluatorWrapper.java |  19 +-
 .../coverage/grid/FractionalGridCoordinates.java   | 157 +---
 .../org/apache/sis/coverage/grid/GridCoverage.java |  48 +-
 .../apache/sis/coverage/grid/GridCoverage2D.java   |  62 +-
 .../sis/coverage/grid/GridCoverageProcessor.java   |   7 +-
 .../org/apache/sis/coverage/grid/GridExtent.java   |   6 +-
 .../apache/sis/coverage/grid/ImageRenderer.java    |  15 +-
 .../sis/coverage/grid/ReducedGridCoverage.java     |  14 +-
 .../sis/coverage/grid/ResampledGridCoverage.java   |   5 -
 .../apache/sis/coverage/grid/SliceGeometry.java    |   2 +-
 .../sis/coverage/grid/ValuesAtPointIterator.java   | 811 ++++++++++++++++++
 .../org/apache/sis/feature/AbstractFeature.java    |  35 +-
 .../apache/sis/feature/AbstractIdentifiedType.java |  25 +
 .../org/apache/sis/feature/CharacteristicMap.java  |   3 +-
 .../apache/sis/feature/CharacteristicTypeMap.java  |   3 +-
 .../org/apache/sis/feature/DefaultFeatureType.java |  17 +-
 .../org/apache/sis/feature/EnvelopeOperation.java  |   6 +-
 .../main/org/apache/sis/feature/FeatureFormat.java |   6 +-
 .../main/org/apache/sis/feature/Features.java      |   4 +
 .../sis/feature/GroupAsPolylineOperation.java      |   4 +-
 .../apache/sis/feature/MultiValuedAssociation.java |  20 +-
 .../apache/sis/feature/MultiValuedAttribute.java   |  16 +-
 .../apache/sis/feature/StringJoinOperation.java    |  11 +-
 .../sis/feature/builder/AttributeTypeBuilder.java  |   7 +-
 .../org/apache/sis/feature/internal/Resources.java |   4 +-
 .../sis/feature/internal/Resources.properties      |   2 +-
 .../sis/feature/internal/Resources_fr.properties   |   2 +-
 .../feature/internal/shared/FeatureProjection.java |   4 +-
 .../internal/shared/FeatureProjectionBuilder.java  |   5 +-
 .../sis/feature/internal/shared/InstantList.java   |  10 +
 .../feature/internal/shared/MovingFeatures.java    |  10 +-
 .../org/apache/sis/filter/AssociationValue.java    |  75 +-
 .../apache/sis/filter/BinaryGeometryFilter.java    |  25 +-
 .../org/apache/sis/filter/DynamicOptimization.java | 352 ++++++++
 .../org/apache/sis/filter/IdentifierFilter.java    |  19 +-
 .../main/org/apache/sis/filter/LogicalFilter.java  |   7 +-
 .../main/org/apache/sis/filter/Optimization.java   | 445 ++++++++--
 .../main/org/apache/sis/filter/PropertyValue.java  | 105 ++-
 .../org/apache/sis/filter/base/BinaryFunction.java |  19 +
 .../org/apache/sis/filter/base/UnaryFunction.java  |   4 +
 .../org/apache/sis/filter/base/WarningEvent.java   |  15 +-
 .../main/org/apache/sis/filter/math/Function.java  |   5 +-
 .../main/org/apache/sis/filter/math/Registry.java  |   4 +-
 .../main/org/apache/sis/filter/sqlmm/Registry.java |   4 +-
 .../main/org/apache/sis/filter/sqlmm/ST_Point.java |   4 +-
 .../org/apache/sis/filter/sqlmm/TwoGeometries.java |  32 +-
 .../org/apache/sis/filter/visitor/CopyVisitor.java |   4 +-
 .../apache/sis/geometry/wrapper/Geometries.java    |  13 +
 .../apache/sis/geometry/wrapper/esri/Factory.java  |   4 +-
 .../apache/sis/geometry/wrapper/j2d/Factory.java   |   4 +-
 .../sis/geometry/wrapper/jts/FilteringContext.java |   2 +-
 .../org/apache/sis/image/BandAggregateLayout.java  |   4 +-
 .../main/org/apache/sis/image/Colorizer.java       |   4 +-
 .../main/org/apache/sis/image/Visualization.java   |   4 +-
 .../sis/image/processing/CompoundFuture.java       |   4 +-
 .../main/org/apache/sis/index/tree/PointTree.java  |  12 +-
 .../sis/coverage/grid/DefaultEvaluatorTest.java    | 366 ++++++++
 .../grid/FractionalGridCoordinatesTest.java        |  11 +-
 .../sis/coverage/grid/GridCoverage2DTest.java      |   4 +-
 .../apache/sis/feature/AbstractFeatureTest.java    |  33 +-
 .../apache/sis/feature/test/FeatureComparator.java |   4 +-
 .../apache/sis/filter/DynamicOptimizationTest.java | 176 ++++
 .../org/apache/sis/filter/LogicalFilterTest.java   |   6 +-
 .../apache/sis/filter/sqlmm/RegistryTestCase.java  |   2 +-
 .../org.apache.sis.metadata/main/module-info.java  |   1 +
 .../org/apache/sis/metadata/MetadataVisitor.java   |   4 +-
 .../sis/metadata/MetadataVisitorException.java     |   6 +-
 .../apache/sis/metadata/ModifiableMetadata.java    | 103 +--
 .../org/apache/sis/metadata/PropertyAccessor.java  | 139 +++-
 .../apache/sis/metadata/PropertyInformation.java   |  16 +-
 .../main/org/apache/sis/metadata/PropertyMap.java  |   3 +-
 .../main/org/apache/sis/metadata/Pruner.java       |   4 +-
 .../main/org/apache/sis/metadata/StateChanger.java |  11 +-
 .../main/org/apache/sis/metadata/TreeNode.java     |   5 +-
 .../org/apache/sis/metadata/TreeTableView.java     |   6 +-
 .../apache/sis/metadata/internal/ExcludedSet.java  |   2 +-
 .../sis/metadata/internal/shared/Identifiers.java  |   8 +-
 .../internal/shared/ImplementationHelper.java      |   8 +-
 .../iso/DefaultExtendedElementInformation.java     |   6 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |  11 +-
 .../org/apache/sis/metadata/iso/ISOMetadata.java   |   5 +-
 .../sis/metadata/iso/citation/Citations.java       |   6 +-
 .../sis/metadata/iso/citation/DefaultContact.java  |   8 +-
 .../metadata/iso/citation/DefaultTelephone.java    |  22 +-
 .../iso/content/DefaultCoverageDescription.java    |  12 +-
 .../DefaultDigitalTransferOptions.java             |   6 +-
 .../metadata/iso/distribution/DefaultFormat.java   |   4 +-
 .../metadata/iso/distribution/DefaultMedium.java   |   4 +-
 .../apache/sis/metadata/iso/extent/Extents.java    |   2 +-
 .../iso/extent/NotSpatioTemporalException.java     |   2 +-
 .../DefaultRepresentativeFraction.java             |   6 +-
 .../maintenance/DefaultMaintenanceInformation.java |   8 +-
 .../iso/quality/DefaultEvaluationMethod.java       |  14 +-
 .../iso/quality/DefaultMeasureReference.java       |   4 +-
 .../sis/metadata/iso/quality/DefaultScope.java     |   4 +-
 .../main/org/apache/sis/metadata/package-info.java |   2 +-
 .../apache/sis/metadata/simple/SimpleExtent.java   |   2 +-
 .../org/apache/sis/metadata/sql/Dispatcher.java    |  44 +-
 .../apache/sis/metadata/sql/MetadataSource.java    |   6 +-
 .../org/apache/sis/temporal/GeneralDuration.java   |   6 +-
 .../main/org/apache/sis/util/iso/AbstractName.java |   9 -
 .../org/apache/sis/util/iso/DefaultNameSpace.java  |   6 +-
 .../org/apache/sis/util/iso/DefaultScopedName.java |  26 +-
 .../org/apache/sis/util/iso/RecordDefinition.java  |   4 +-
 .../main/org/apache/sis/xml/PooledMarshaller.java  |   1 +
 .../org/apache/sis/xml/PooledUnmarshaller.java     |   1 +
 .../org/apache/sis/xml/TransformingWriter.java     |   3 +-
 .../apache/sis/xml/bind/IdentifierMapAdapter.java  |   2 +-
 .../apache/sis/xml/bind/IdentifierMapEntry.java    |  10 +-
 .../sis/xml/bind/NonMarshalledAuthority.java       |  14 +-
 .../apache/sis/xml/bind/lan/LocaleAndCharset.java  |   6 +-
 .../org/apache/sis/xml/bind/lan/PT_Locale.java     |   4 +-
 .../bind/metadata/replace/ServiceParameter.java    |   2 +-
 .../xml/internal/shared/ExternalLinkHandler.java   |   4 +-
 .../xml/{ => internal/shared}/InputFactory.java    |  39 +-
 .../xml/{ => internal/shared}/OutputFactory.java   |  10 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |   5 +-
 .../iso/citation/DefaultCitationDateTest.java      |   1 +
 .../metadata/iso/citation/DefaultCitationTest.java |   6 +-
 .../metadata/iso/citation/DefaultContactTest.java  |   1 +
 .../iso/citation/DefaultTelephoneTest.java         |  51 ++
 .../sis/metadata/sql/MetadataFallbackVerifier.java |  22 +-
 .../apache/sis/test/mock/IdentifiedObjectMock.java |   4 +-
 .../test/org/apache/sis/xml/LegacyCodesTest.java   |   1 +
 .../org/apache/sis/xml/MarshallerPoolTest.java     |   1 +
 .../test/org/apache/sis/xml/NamespacesTest.java    |   1 +
 .../test/org/apache/sis/xml/NilReasonTest.java     |   3 +-
 .../test/org/apache/sis/xml/TransformerTest.java   |   1 +
 .../apache/sis/xml/TransformingNamespacesTest.java |   1 +
 .../org/apache/sis/xml/ValueConverterTest.java     |   1 +
 .../test/org/apache/sis/xml/XLinkTest.java         |   3 +-
 .../test/org/apache/sis/xml/XPointerTest.java      |   1 +
 .../sis/xml/internal/shared/InputFactoryTest.java  | 163 ++++
 .../referencing/gazetteer/FinalLocationType.java   |  26 +-
 .../gazetteer/GeohashReferenceSystem.java          |   2 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |   4 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |  11 +-
 .../main/org/apache/sis/io/wkt/Element.java        |  11 +-
 .../main/org/apache/sis/io/wkt/WKTDictionary.java  |  20 +-
 .../sis/parameter/DefaultParameterDescriptor.java  |  31 +-
 .../parameter/DefaultParameterDescriptorGroup.java |  39 +-
 .../sis/parameter/DefaultParameterValue.java       |   2 +-
 .../apache/sis/parameter/FilteredParameters.java   |   6 +-
 .../sis/parameter/MapProjectionDescriptor.java     |   2 +-
 .../sis/parameter/MatrixParameterValues.java       |   6 +-
 .../org/apache/sis/parameter/MatrixParameters.java |  13 +-
 .../org/apache/sis/parameter/ParameterFormat.java  |   4 +-
 .../parameter/UnmodifiableParameterValueGroup.java |   9 +-
 .../org/apache/sis/parameter/package-info.java     |   2 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |  32 +-
 .../apache/sis/referencing/IdentifiedObjects.java  |  16 +-
 .../sis/referencing/crs/DefaultCompoundCRS.java    |  10 +-
 .../sis/referencing/crs/DefaultProjectedCRS.java   |   2 +-
 .../sis/referencing/cs/DefaultCompoundCS.java      |  14 +-
 .../referencing/datum/DefaultDatumEnsemble.java    |   4 +-
 .../referencing/datum/DefaultGeodeticDatum.java    |  31 +-
 .../factory/ConcurrentAuthorityFactory.java        |   9 +-
 .../referencing/factory/GeodeticObjectFactory.java |   2 +-
 .../referencing/factory/IdentifiedObjectSet.java   |  13 +-
 .../factory/MultiAuthoritiesFactory.java           |   8 +-
 .../sis/referencing/factory/package-info.java      |   2 +-
 .../referencing/factory/sql/EPSGCodeFinder.java    |   6 +-
 .../referencing/factory/sql/ObjectPertinence.java  |   4 +-
 .../internal/shared/CoordinateOperations.java      |   3 +-
 .../internal/shared/IntervalRectangle.java         |   8 +-
 .../operation/AbstractCoordinateOperation.java     |  15 +-
 .../operation/CoordinateOperationContext.java      |   4 +-
 .../operation/DefaultConcatenatedOperation.java    |   9 +-
 .../operation/DefaultOperationMethod.java          |   2 +-
 .../referencing/operation/gridded/GridGroup.java   |   4 +-
 .../operation/gridded/TileOrganizer.java           |   4 +-
 .../sis/referencing/operation/matrix/Matrices.java |   2 +-
 .../operation/matrix/UnmodifiableMatrix.java       |   4 +-
 .../sis/referencing/operation/package-info.java    |   2 +-
 .../operation/projection/AlbersEqualArea.java      |   4 +-
 .../operation/projection/AzimuthalEquidistant.java |   2 +-
 .../operation/projection/CassiniSoldner.java       |   2 +-
 .../operation/projection/CylindricalEqualArea.java |   4 +-
 .../projection/EquidistantCylindrical.java         |   4 +-
 .../projection/LambertAzimuthalEqualArea.java      |   4 +-
 .../projection/LambertConicConformal.java          |   4 +-
 .../referencing/operation/projection/Mercator.java |   4 +-
 .../projection/ModifiedAzimuthalEquidistant.java   |   4 +-
 .../operation/projection/Mollweide.java            |   2 +-
 .../operation/projection/ObliqueMercator.java      |   3 +-
 .../operation/projection/ObliqueStereographic.java |   3 +-
 .../operation/projection/Orthographic.java         |   4 +-
 .../operation/projection/PolarStereographic.java   |   4 +-
 .../operation/projection/Polyconic.java            |   3 +-
 .../referencing/operation/projection/Robinson.java |   2 +-
 .../operation/projection/SatelliteTracking.java    |   3 +-
 .../operation/projection/Sinusoidal.java           |   4 +-
 .../operation/projection/TransverseMercator.java   |   2 +-
 .../sis/referencing/operation/provider/Affine.java |   2 +-
 .../operation/transform/ContextualParameters.java  |  10 +-
 .../referencing/CC_GeneralOperationParameter.java  |  23 +-
 .../parameter/DefaultParameterDescriptorTest.java  |  23 +
 .../sis/referencing/operation/projection/NoOp.java |   6 +-
 .../transform/OperationMethodSetTest.java          |  13 +-
 .../CC_GeneralOperationParameterTest.java          |  11 +
 .../CC_OperationParameterGroupTest.java            |  11 +-
 .../main/org/apache/sis/storage/landsat/Band.java  |   8 +-
 .../org/apache/sis/storage/landsat/BandGroup.java  |   5 +-
 .../apache/sis/storage/landsat/LandsatStore.java   |   6 +-
 .../apache/sis/storage/landsat/MetadataReader.java |   8 +-
 .../apache/sis/storage/landsat/package-info.java   |   2 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |   3 +-
 .../sis/storage/geotiff/reader/XMLMetadata.java    |   7 +-
 .../sis/storage/geotiff/writer/GeoEncoder.java     |   6 +-
 .../apache/sis/storage/netcdf/MetadataReader.java  |  12 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |   8 +-
 .../sis/storage/netcdf/base/DiscreteSampling.java  |  13 +
 .../org/apache/sis/storage/netcdf/base/Raster.java |   8 +-
 .../sis/storage/netcdf/base/RasterResource.java    |  14 +-
 .../apache/sis/storage/netcdf/base/Variable.java   |   9 +-
 .../sis/storage/netcdf/classic/ChannelDecoder.java | 101 ++-
 .../sis/storage/netcdf/classic/GridInfo.java       |   4 +-
 .../sis/storage/netcdf/classic/VariableInfo.java   |   4 +-
 .../apache/sis/storage/netcdf/package-info.java    |   2 +-
 .../sis/storage/netcdf/ucar/DecoderWrapper.java    |  20 +-
 .../sis/storage/netcdf/ucar/DimensionWrapper.java  |   8 +-
 .../sis/storage/netcdf/ucar/GridWrapper.java       |   4 +-
 .../org/apache/sis/storage/netcdf/ucar/Utils.java  |  83 --
 .../sis/storage/netcdf/ucar/VariableWrapper.java   |  61 +-
 .../storage/netcdf/classic/ChannelDecoderTest.java |  35 +-
 .../apache/sis/storage/sql/feature/Database.java   |   4 +-
 .../sis/storage/sql/feature/FeatureStream.java     |   2 +-
 .../apache/sis/storage/sql/feature/PrimaryKey.java |   7 +-
 .../apache/sis/storage/sql/feature/Relation.java   |   9 +-
 .../org/apache/sis/storage/sql/feature/Table.java  |  11 +
 .../sis/storage/sql/feature/ValueGetter.java       |   4 +-
 .../sql/feature/SelectionClauseWriterTest.java     |   2 +-
 .../main/org/apache/sis/storage/gpx/Metadata.java  |   6 +-
 .../org/apache/sis/storage/gpx/WritableStore.java  |   2 +-
 .../apache/sis/storage/xml/stream/InputType.java   |   6 +-
 .../apache/sis/storage/xml/stream/OutputType.java  |   6 +-
 .../sis/storage/xml/stream/RewriteOnUpdate.java    |   2 +-
 .../sis/storage/xml/stream/StaxDataStore.java      |  74 +-
 .../sis/storage/xml/stream/StaxStreamWriter.java   |   4 +-
 .../org/apache/sis/io/stream/UpdatableWrite.java   |  12 +-
 .../org/apache/sis/storage/AbstractFeatureSet.java |  31 +-
 .../org/apache/sis/storage/CoverageSubset.java     |   5 +-
 .../main/org/apache/sis/storage/FeatureNaming.java |  72 +-
 .../main/org/apache/sis/storage/FeatureQuery.java  |  21 +-
 .../main/org/apache/sis/storage/FeatureSubset.java |  17 +
 .../org/apache/sis/storage/MemoryFeatureSet.java   | 135 ++-
 .../sis/storage/UnsupportedStorageException.java   |   2 +-
 .../aggregate/BandAggregateGridResource.java       |   6 +-
 .../storage/aggregate/ConcatenatedFeatureSet.java  |  41 +-
 .../aggregate/ConcatenatedGridResource.java        |   6 +-
 .../sis/storage/aggregate/GroupAggregate.java      |   4 +-
 .../sis/storage/aggregate/JoinFeatureSet.java      |  16 +-
 .../apache/sis/storage/aggregate/package-info.java |   2 +-
 .../apache/sis/storage/base/MetadataBuilder.java   |   6 +-
 .../apache/sis/storage/base/ResourceLineage.java   |   6 +-
 .../apache/sis/storage/base/SimpleAggregate.java   |   4 +-
 .../apache/sis/storage/base/SortByComparator.java  |  10 +-
 .../org/apache/sis/storage/base/URIDataStore.java  |   5 +-
 .../sis/storage/csv/MovingFeatureBuilder.java      |   4 +-
 .../main/org/apache/sis/storage/csv/Store.java     |   6 +-
 .../org/apache/sis/storage/esri/RasterStore.java   |   3 +-
 .../main/org/apache/sis/storage/folder/Store.java  |   6 +-
 .../sis/storage/image/WorldFileResource.java       |  10 +-
 .../org/apache/sis/storage/internal/Resources.java |   5 +
 .../sis/storage/internal/Resources.properties      |   1 +
 .../sis/storage/internal/Resources_fr.properties   |   1 +
 .../main/org/apache/sis/storage/tiling/Tile.java   |   4 +-
 .../org/apache/sis/storage/FeatureNamingTest.java  |  34 +
 .../sis/storage/esri/BILConsistencyTest.java       |   3 +-
 .../sis/storage/esri/BIPConsistencyTest.java       |   3 +-
 .../sis/storage/esri/BSQConsistencyTest.java       |   3 +-
 .../sis/storage/image/SelfConsistencyTest.java     |   3 +-
 .../sis/storage/test/CoverageReadConsistency.java  |   2 +-
 .../src/org.apache.sis.util/main/module-info.java  |   2 -
 .../main/org/apache/sis/io/CompoundFormat.java     |  39 +-
 .../main/org/apache/sis/io/package-info.java       |   2 +-
 .../main/org/apache/sis/math/ArrayVector.java      |  10 +
 .../main/org/apache/sis/math/package-info.java     |   2 +-
 .../main/org/apache/sis/measure/Range.java         |  13 +-
 .../main/org/apache/sis/measure/UnitDimension.java |   6 +-
 .../main/org/apache/sis/measure/UnitServices.java  |   6 +-
 .../main/org/apache/sis/measure/package-info.java  |   2 +-
 .../main/org/apache/sis/util/Classes.java          |  12 +-
 .../main/org/apache/sis/util/Numbers.java          |   4 +-
 .../shared => collection}/CheckedArrayList.java    |  97 ++-
 .../sis/util/collection/CheckedContainer.java      |  96 ++-
 .../shared => collection}/CheckedHashSet.java      |  47 +-
 .../apache/sis/util/collection/CodeListSet.java    |  14 +-
 .../org/apache/sis/util/collection/Containers.java | 573 ++++++++++++-
 .../sis/util/collection/DefaultTreeTable.java      |  19 +-
 .../org/apache/sis/util/collection/DerivedSet.java |  11 +
 .../shared => collection}/EmptyQueue.java          |   4 +-
 .../sis/util/collection/FrequencySortedSet.java    |   6 +
 .../org/apache/sis/util/collection/RangeSet.java   |  13 +-
 .../apache/sis/util/collection/TableColumn.java    |  13 +
 .../apache/sis/util/collection/TreeNodeList.java   |  10 +
 .../UnmodifiableArrayList.java                     | 117 +--
 .../apache/sis/util/collection/WeakHashSet.java    |  11 +
 .../sis/util/internal/shared/CollectionsExt.java   | 916 ---------------------
 .../apache/sis/util/internal/shared/ViewAsSet.java |  76 ++
 .../test/org/apache/sis/setup/OptionKeyTest.java   |   4 +
 .../test/org/apache/sis/test/Printer.java          |   2 +-
 .../CheckedArrayListTest.java                      |  27 +-
 .../util/internal/shared/CollectionsExtTest.java   | 175 ----
 .../test/org/apache/sis/cql/FilterReadingTest.java |  14 +-
 .../test/org/apache/sis/cql/FilterWritingTest.java |  10 +-
 .../geometries/internal/shared/DefaultPolygon.java |  10 +-
 .../apache/sis/geometries/mesh/MeshPrimitive.java  |   6 +-
 .../main/org/apache/sis/map/SymbologyVisitor.java  |   2 +-
 .../test/org/apache/sis/map/SEPortrayerTest.java   |   2 +-
 .../sis/storage/geoheif/CoverageBuilder.java       |   4 +-
 .../apache/sis/storage/geoheif/GeoHeifStore.java   |   4 +-
 .../main/org/apache/sis/storage/geoheif/Group.java |   4 +-
 .../storage/isobmff/base/IdentifiedMediaData.java  |   2 +-
 .../apache/sis/storage/geopackage/GpkgStore.java   |   2 +-
 .../apache/sis/storage/geopackage/Initializer.java |   2 +-
 .../sis/storage/shapefile/ShapefileStore.java      |  16 +-
 netbeans-project/ivy.xml                           |  10 +-
 .../apache/sis/gui/controls/SyncWindowList.java    |   4 +-
 .../apache/sis/gui/coverage/CoverageCanvas.java    |  23 +-
 .../org/apache/sis/gui/coverage/package-info.java  |   2 +-
 .../org/apache/sis/gui/dataset/ExpandableList.java |   4 +-
 .../org/apache/sis/gui/dataset/FeatureList.java    |   4 +-
 .../org/apache/sis/gui/dataset/package-info.java   |   2 +-
 .../sis/gui/metadata/IdentificationInfo.java       |   2 +-
 .../sis/gui/metadata/RepresentationInfo.java       |   2 +-
 .../org/apache/sis/gui/metadata/package-info.java  |   2 +-
 .../gui/referencing/RecentReferenceSystems.java    |   9 +-
 .../apache/sis/gui/referencing/package-info.java   |   2 +-
 .../org/apache/sis/storage/gdal/FeatureLayer.java  |  12 +
 .../org/apache/sis/storage/gdal/GDALStore.java     |  18 +-
 .../org/apache/sis/storage/gdal/package-info.java  |   2 +-
 settings.gradle.kts                                |   6 +-
 343 files changed, 5844 insertions(+), 2969 deletions(-)

diff --cc 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ImageRenderer.java
index bdbe62f436,401c404991..bb6a02b650
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ImageRenderer.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ImageRenderer.java
@@@ -60,9 -60,10 +60,10 @@@ import org.apache.sis.math.Vector
  import static org.apache.sis.image.PlanarImage.XY_DIMENSIONS_KEY;
  import static org.apache.sis.image.PlanarImage.GRID_GEOMETRY_KEY;
  import static org.apache.sis.image.PlanarImage.SAMPLE_DIMENSIONS_KEY;
+ import static org.apache.sis.coverage.grid.GridCoverage.BIDIMENSIONAL;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.coordinate.MismatchedDimensionException;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.geometry.MismatchedDimensionException;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
index 0b1c1d48e0,ad4c85bb04..2dd1b99645
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
@@@ -33,13 -33,9 +33,13 @@@ import org.apache.sis.xml.bind.FilterBy
  import org.apache.sis.xml.internal.shared.LegacyNamespaces;
  import org.apache.sis.metadata.internal.Dependencies;
  import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
- import org.apache.sis.util.internal.shared.CollectionsExt;
+ import org.apache.sis.util.collection.Containers;
  import static 
org.apache.sis.metadata.internal.shared.ImplementationHelper.ensurePositive;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.Obligation;
 +import org.opengis.metadata.citation.ResponsibleParty;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import java.util.AbstractSet;
  import java.util.Iterator;
@@@ -566,7 -565,8 +566,7 @@@ public class DefaultExtendedElementInfo
       * @since 0.5
       */
      public void setRationale(final InternationalString newValue) {
-         rationales = 
writeCollection(CollectionsExt.singletonOrEmpty(newValue), rationales, 
InternationalString.class);
 -        checkWritePermission(rationale);
 -        rationale = newValue;
++        rationales = writeCollection(Containers.singletonOrEmpty(newValue), 
rationales, InternationalString.class);
      }
  
      /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
index 00cbad7b00,13dce9939c..a3c7498a39
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
@@@ -33,17 -33,12 +33,17 @@@ import org.apache.sis.xml.bind.FilterBy
  import org.apache.sis.xml.bind.gco.GO_Real;
  import org.apache.sis.xml.bind.metadata.CI_Citation;
  import org.apache.sis.xml.bind.metadata.MD_Identifier;
 -import org.apache.sis.xml.internal.shared.LegacyNamespaces;
 -import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
  import org.apache.sis.metadata.internal.Dependencies;
 +import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
 +import org.apache.sis.xml.internal.shared.LegacyNamespaces;
- import org.apache.sis.util.internal.shared.CollectionsExt;
+ import org.apache.sis.util.collection.Containers;
  import static 
org.apache.sis.metadata.internal.shared.ImplementationHelper.ensurePositive;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.distribution.MediumName;
 +import org.apache.sis.util.internal.shared.CodeLists;
 +import org.apache.sis.metadata.iso.citation.DefaultCitation;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import java.util.AbstractSet;
  import java.util.Iterator;
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
index 4d5cdfde24,f75ad153b8..f8edc1f386
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
@@@ -37,13 -37,9 +37,13 @@@ import org.apache.sis.metadata.iso.lega
  import org.apache.sis.metadata.internal.Dependencies;
  import org.apache.sis.xml.bind.FilterByVersion;
  import org.apache.sis.xml.internal.shared.LegacyNamespaces;
- import org.apache.sis.util.internal.shared.CollectionsExt;
+ import org.apache.sis.util.collection.Containers;
  import static 
org.apache.sis.metadata.internal.shared.ImplementationHelper.valueIfDefined;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
 +import org.opengis.temporal.PeriodDuration;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.metadata.maintenance.Scope;
  
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/Dispatcher.java
index 3b6c7faf4b,bcd8c733b8..9669c12c11
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/Dispatcher.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/Dispatcher.java
@@@ -30,15 -36,9 +36,15 @@@ import org.apache.sis.metadata.Modifiab
  import org.apache.sis.metadata.MetadataStandard;
  import org.apache.sis.metadata.KeyNamePolicy;
  import org.apache.sis.metadata.ValueExistencePolicy;
- import org.apache.sis.system.Semaphores;
  import org.apache.sis.metadata.internal.Dependencies;
+ import org.apache.sis.system.Semaphores;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
 +
 +// Specific to the geoapi-3.1 branch:
 +import org.opengis.metadata.citation.Responsibility;
 +
  
  /**
   * The handler for metadata proxy that implement (indirectly) metadata 
interfaces like
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java
index 084b09e67f,ef71b863f6..3df4cdb5a2
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java
@@@ -33,11 -33,8 +33,11 @@@ import org.apache.sis.xml.bind.gco.GO_G
  import org.apache.sis.metadata.internal.shared.NameToIdentifier;
  import org.apache.sis.util.iso.DefaultMemberName;
  import org.apache.sis.util.iso.Names;
- import static org.apache.sis.util.internal.shared.CollectionsExt.nonNull;
+ import static org.apache.sis.util.collection.Containers.nonNull;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.parameter.ParameterDirection;
  import org.opengis.metadata.Identifier;
diff --cc 
endorsed/src/org.apache.sis.metadata/test/org/apache/sis/test/mock/IdentifiedObjectMock.java
index 27a0aa0d37,c89c75eb2d..89cd7fdd79
--- 
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/test/mock/IdentifiedObjectMock.java
+++ 
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/test/mock/IdentifiedObjectMock.java
@@@ -25,11 -25,11 +25,11 @@@ import jakarta.xml.bind.annotation.adap
  import org.opengis.util.GenericName;
  import org.opengis.referencing.IdentifiedObject;
  import org.apache.sis.util.internal.shared.Strings;
- import org.apache.sis.util.internal.shared.CollectionsExt;
+ import org.apache.sis.util.collection.Containers;
  import org.apache.sis.xml.bind.gco.GO_GenericName;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
index 5f4572a82e,0547a1ba72..3b760398a5
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
@@@ -70,15 -68,8 +68,13 @@@ import org.apache.sis.util.iso.DefaultN
  import org.apache.sis.util.resources.Errors;
  import static org.apache.sis.util.ArgumentChecks.*;
  import static org.apache.sis.util.Utilities.deepEquals;
- import static org.apache.sis.util.internal.shared.CollectionsExt.nonNull;
- import static org.apache.sis.util.internal.shared.CollectionsExt.nonEmpty;
- import static org.apache.sis.util.internal.shared.CollectionsExt.immutableSet;
+ import static org.apache.sis.util.collection.Containers.nonNull;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +import org.opengis.referencing.operation.Conversion;
 +import org.opengis.referencing.operation.Projection;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.referencing.ObjectDomain;
  
@@@ -387,10 -378,10 +383,10 @@@ public class AbstractIdentifiedObject e
          // "identifiers": Identifier or Identifier[]
          // -----------------------------------------
          value = properties.get(IDENTIFIERS_KEY);
 -        if (value instanceof Identifier) {
 -            identifiers = Collections.singleton((Identifier) value);
 -        } else if (value instanceof Identifier[]) {
 -            identifiers = 
Containers.copyToImmutableSetIgnoreNull((Identifier[]) value);
 +        if (value instanceof ReferenceIdentifier) {
 +            identifiers = Collections.singleton((ReferenceIdentifier) value);
 +        } else if (value instanceof ReferenceIdentifier[]) {
-             identifiers = immutableSet(true, (ReferenceIdentifier[]) value);
++            identifiers = 
Containers.copyToImmutableSetIgnoreNull((ReferenceIdentifier[]) value);
          } else if (value != null) {
              throw illegalPropertyType(properties, IDENTIFIERS_KEY, value);
          }
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultDatumEnsemble.java
index 685fae51aa,72b0d08d80..511612ceed
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultDatumEnsemble.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultDatumEnsemble.java
@@@ -52,12 -52,8 +52,12 @@@ import org.apache.sis.util.Classes
  import org.apache.sis.util.ComparisonMode;
  import org.apache.sis.util.Utilities;
  import org.apache.sis.util.resources.Errors;
- import org.apache.sis.util.internal.shared.CollectionsExt;
+ import org.apache.sis.util.collection.Containers;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import java.util.Date;
 +import org.opengis.referencing.datum.VerticalDatumType;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import java.util.Optional;
  import java.time.temporal.Temporal;
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
index 55493866b6,916bb702d3..d17e8afa6d
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
@@@ -184,7 -180,7 +183,7 @@@ final class DefaultConcatenatedOperatio
                              final MathTransformFactory  mtFactory)
              throws FactoryException
      {
--        final var flattened = new 
ArrayList<CoordinateOperation>(operations.length);
++        final var flattened = new 
ArrayList<SingleOperation>(operations.length);
          final CoordinateReferenceSystem crs = initialize(properties, 
operations, flattened, mtFactory,
                  sourceCRS, (sourceCRS == null), (coordinateOperationAccuracy 
== null));
  
@@@ -200,7 -196,7 +199,7 @@@
           * At this point we should have flattened.size() >= 2, except if some 
operations
           * were omitted because their associated math transform were identity 
operation.
           */
-         this.operations = 
UnmodifiableArrayList.wrap(flattened.toArray(SingleOperation[]::new));
 -        this.operations = Containers.copyToImmutableList(flattened, 
CoordinateOperation.class);
++        this.operations = Containers.copyToImmutableList(flattened, 
SingleOperation.class);
      }
  
      /**
@@@ -247,7 -243,7 +246,7 @@@
      private CoordinateReferenceSystem initialize(
              final Map<String,?>             properties,
              final CoordinateOperation[]     operations,
--            final List<CoordinateOperation> flattened,
++            final List<SingleOperation>     flattened,
              final MathTransformFactory      mtFactory,
              CoordinateReferenceSystem       previous,
              boolean setSource,
@@@ -307,7 -303,7 +306,7 @@@
              } else {
                  // Note: operation (source, target) may be in reverse order, 
but it should be taken as metadata.
                  if (!step.isIdentity()) {
--                    flattened.add(op);
++                    flattened.add((SingleOperation) op);
                  }
                  previous = target;          // For next iteration cycle.
              }
diff --cc 
endorsed/src/org.apache.sis.storage.xml/main/org/apache/sis/storage/gpx/Metadata.java
index eb0d4f845d,9c6a3eeba5..30f13994e8
--- 
a/endorsed/src/org.apache.sis.storage.xml/main/org/apache/sis/storage/gpx/Metadata.java
+++ 
b/endorsed/src/org.apache.sis.storage.xml/main/org/apache/sis/storage/gpx/Metadata.java
@@@ -317,13 -313,12 +316,12 @@@ public final class Metadata extends Sim
       * @return means of communication with person(s) and organisations(s) 
associated with the resource.
       */
      @Override
 -    public Collection<Responsibility> getPointOfContacts() {
 +    public Collection<ResponsibleParty> getPointOfContacts() {
          if (creator != null) {
              final var p = new Person(creator);
-             return (author != null) ? UnmodifiableArrayList.wrap(new 
ResponsibleParty[] {p, author})
-                                     : Collections.singletonList(author);
 -            return (author != null) ? List.of(p, author) : List.of(author);
++            return (author != null) ? List.of(p, author) : List.of(p);
          }
-         return (author != null) ? Collections.singletonList(author) : 
Collections.emptyList();
+         return (author != null) ? List.of(author) : List.of();
      }
  
      /**
diff --cc 
optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
index 1b9685e3cf,62ba73d87c..e1c22a1a62
--- 
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
+++ 
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
@@@ -60,9 -60,12 +60,9 @@@ import org.apache.sis.util.Workaround
  import org.apache.sis.util.logging.Logging;
  import org.apache.sis.util.collection.BackingStoreException;
  import org.apache.sis.util.resources.Vocabulary;
- import static org.apache.sis.util.internal.shared.CollectionsExt.nonNull;
+ import static org.apache.sis.util.collection.Containers.nonNull;
  import static org.apache.sis.gui.internal.LogHandler.LOGGER;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.util.InternationalString;
 -
  
  /**
   * The pane where to show the values of {@link Identification} objects.


Reply via email to