You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2025/11/26 09:08:46 UTC
(sis) 01/01: Merge branch 'geoapi-4.0' into geoapi-3.1. Some changes are:
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 27274f37b12070451a9e5c2d0dba2006e2ff6d89
Merge: bd6a16c7b8 f1393024bc
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Wed Nov 26 10:00:53 2025 +0100
Merge branch 'geoapi-4.0' into geoapi-3.1. Some changes are:
- Expressions for some mathematical functions such as `isNaN`.
- A greater effort for translating filters to SQL statements.
- Refactoring of the geometry module (incubator).
- Fixes or improvements in filters, JTS wrappers and GeoTIFF reader.
- Replacement of `Feature.getValueOrFallback` by `FeatureType.hasProperty`.
- Promotion of some internal classes to public API.
.../sis/buildtools/coding/ReorganizeImports.java | 1 +
.../apache/sis/buildtools/gradle/BuildHelper.java | 2 +-
.../apache/sis/buildtools/gradle/Dependency.java | 2 +-
.../apache/sis/buildtools/gradle/ZipWriter.java | 6 +-
.../apache/sis/cloud/aws/s3/ClientFileSystem.java | 5 +-
.../main/org/apache/sis/console/Command.java | 4 +-
.../main/org/apache/sis/console/CommandRunner.java | 4 +-
.../main/org/apache/sis/console/SIS.java | 4 +-
.../org/apache/sis/console/TransformCommand.java | 2 +-
.../org.apache.sis.filter.FunctionRegister | 3 +
.../org.apache.sis.feature/main/module-info.java | 15 +-
.../sis/coverage/grid/GridCoverageProcessor.java | 2 +-
.../org/apache/sis/coverage/grid/GridGeometry.java | 15 +-
.../apache/sis/coverage/grid/GridOrientation.java | 34 +-
.../org/apache/sis/coverage/grid/package-info.java | 2 +-
.../apache/sis/feature/AbstractAssociation.java | 2 +-
.../org/apache/sis/feature/AbstractFeature.java | 85 ++--
.../org/apache/sis/feature/AbstractOperation.java | 7 +-
.../apache/sis/feature/DefaultAssociationRole.java | 5 +-
.../org/apache/sis/feature/DefaultFeatureType.java | 21 +-
.../main/org/apache/sis/feature/DenseFeature.java | 5 +-
.../apache/sis/feature/ExpressionOperation.java | 6 +-
.../org/apache/sis/feature/FeatureOperations.java | 57 ++-
.../main/org/apache/sis/feature/Features.java | 15 +-
.../org/apache/sis/feature/NamedFeatureType.java | 13 +-
.../main/org/apache/sis/feature/SparseFeature.java | 5 +-
.../sis/feature/builder/AttributeTypeBuilder.java | 4 +-
.../sis/feature/builder/FeatureTypeBuilder.java | 10 +-
.../org/apache/sis/feature/internal/Resources.java | 6 +-
.../sis/feature/internal/Resources.properties | 2 +-
.../sis/feature/internal/Resources_fr.properties | 2 +-
.../internal/shared/AttributeConvention.java | 15 -
.../feature/internal/shared/FeatureExpression.java | 49 +-
.../feature/internal/shared/FeatureProjection.java | 300 +++++++++--
.../internal/shared/FeatureProjectionBuilder.java | 407 ++++++++-------
.../sis/feature/internal/shared/FeatureView.java | 8 +-
.../sis/feature/internal/shared/OperationView.java | 192 +++++++
.../main/org/apache/sis/feature/package-info.java | 2 +-
.../org/apache/sis/filter/ArithmeticFunction.java | 46 +-
.../org/apache/sis/filter/AssociationValue.java | 17 +-
.../apache/sis/filter/BinaryGeometryFilter.java | 5 +-
.../org/apache/sis/filter/BinarySpatialFilter.java | 2 +
.../main/org/apache/sis/filter/Capabilities.java | 299 ++++++++++-
.../org/apache/sis/filter/ComparisonFilter.java | 3 +-
.../apache/sis/filter/DefaultFilterFactory.java | 142 +-----
.../main/org/apache/sis/filter/DistanceFilter.java | 1 +
.../org/apache/sis/filter/FunctionRegister.java | 16 +-
.../org/apache/sis/filter/IdentifierFilter.java | 74 ++-
.../main/org/apache/sis/filter/LeafExpression.java | 75 ++-
.../main/org/apache/sis/filter/LikeFilter.java | 2 +-
.../main/org/apache/sis/filter/LogicalFilter.java | 4 +-
.../main/org/apache/sis/filter/Optimization.java | 10 +-
.../main/org/apache/sis/filter/PropertyValue.java | 130 ++++-
.../main/org/apache/sis/filter/TemporalFilter.java | 12 +-
.../sis/filter/{ => base}/BinaryFunction.java | 7 +-
.../sis/filter/{ => base}/ConvertFunction.java | 28 +-
.../{internal => base}/GeometryConverter.java | 4 +-
.../{internal => base}/GeometryFromFeature.java | 3 +-
.../apache/sis/filter/{internal => base}/Node.java | 11 +-
.../sis/filter/{ => base}/UnaryFunction.java | 16 +-
.../{internal/shared => base}/WarningEvent.java | 17 +-
.../filter/{internal/shared => base}/XPath.java | 2 +-
.../org/apache/sis/filter/base/XPathSource.java} | 25 +-
.../org/apache/sis/filter/base/package-info.java | 25 +-
.../org/apache/sis/filter/math/BinaryOperator.java | 115 +++++
.../main/org/apache/sis/filter/math/Function.java | 366 ++++++++++++++
.../main/org/apache/sis/filter/math/Predicate.java | 109 ++++
.../main/org/apache/sis/filter/math/Registry.java | 101 ++++
.../org/apache/sis/filter/math/UnaryOperator.java | 109 ++++
.../filter/{internal => math}/package-info.java | 6 +-
.../main/org/apache/sis/filter/package-info.java | 2 +-
.../sis/filter/sqlmm/FunctionDescription.java | 22 +-
.../apache/sis/filter/sqlmm/FunctionWithSRID.java | 8 +-
.../apache/sis/filter/sqlmm/GeometryParser.java | 2 +-
.../main/org/apache/sis/filter/sqlmm/Registry.java | 20 +-
.../main/org/apache/sis/filter/sqlmm/SQLMM.java | 7 +-
.../apache/sis/filter/sqlmm/SpatialFunction.java | 22 +-
.../org/apache/sis/filter/sqlmm/package-info.java | 2 +-
.../{internal/shared => visitor}/CopyVisitor.java | 2 +-
.../{internal/shared => visitor}/EditVisitor.java | 2 +-
.../sis/filter/visitor/FunctionIdentifier.java | 56 +++
.../shared => visitor}/FunctionNames.java | 19 +-
.../shared => visitor}/ListingPropertyVisitor.java | 2 +-
.../{internal/shared => visitor}/Visitor.java | 54 +-
.../{internal/shared => visitor}/package-info.java | 4 +-
.../apache/sis/geometry/wrapper/GeometryType.java | 3 +-
.../apache/sis/geometry/wrapper/j2d/Wrapper.java | 2 +-
.../wrapper/jts/PackedCoordinateSequence.java | 150 +++---
.../jts/PackedCoordinateSequenceFactory.java | 24 +-
.../apache/sis/coverage/grid/GridGeometryTest.java | 52 ++
.../coverage/grid/ResampledGridCoverageTest.java | 3 +-
.../apache/sis/feature/AbstractFeatureTest.java | 8 -
.../internal/shared/FeatureProjectionTest.java | 343 +++++++++++++
.../apache/sis/filter/ArithmeticFunctionTest.java | 3 +-
.../apache/sis/filter/ComparisonFilterTest.java | 5 +-
.../apache/sis/filter/IdentifierFilterTest.java | 58 ++-
.../org/apache/sis/filter/LeafExpressionTest.java | 3 +-
.../org/apache/sis/filter/LogicalFilterTest.java | 5 +-
.../test/org/apache/sis/filter/XPathTest.java | 2 +-
.../org/apache/sis/filter/math/RegistryTest.java} | 36 +-
.../apache/sis/filter/sqlmm/RegistryTestCase.java | 2 +-
.../org/apache/sis/filter/sqlmm/SQLMMTest.java | 2 +-
.../shared => visitor}/CopyVisitorTest.java | 2 +-
.../shared => visitor}/FilterFactoryMock.java | 2 +-
.../{internal/shared => visitor}/FunctionMock.java | 2 +-
.../shared => visitor}/FunctionNamesTest.java | 2 +-
.../shared => visitor}/ValueReferenceMock.java | 2 +-
.../sis/geometry/wrapper/GeometriesTestCase.java | 8 +-
.../wrapper/jts/PackedCoordinateSequenceTest.java | 115 +++++
.../org.apache.sis.metadata/main/module-info.java | 2 +-
.../org/apache/sis/metadata/TreeTableView.java | 2 +-
.../apache/sis/metadata/ValueExistencePolicy.java | 2 +-
.../org/apache/sis/metadata/sql/Installer.java | 9 +-
.../apache/sis/metadata/sql/MetadataSource.java | 2 +-
.../metadata/sql/internal/shared/Initializer.java | 4 +-
.../sql/internal/shared/LocalDataSource.java | 51 +-
.../metadata/sql/internal/shared/Reflection.java | 22 +
.../metadata/sql/internal/shared/SQLBuilder.java | 4 +-
.../metadata/sql/internal/shared/SQLUtilities.java | 109 +---
.../metadata/sql/internal/shared/ScriptRunner.java | 122 ++++-
.../sis/metadata/sql/internal/shared/Syntax.java | 2 +-
.../metadata/sql/internal/shared/TypeMapper.java | 59 +--
.../org/apache/sis/metadata/sql/package-info.java | 2 +-
.../org/apache/sis/temporal/LenientDateFormat.java | 5 +-
.../main/org/apache/sis/xml/MarshallerPool.java | 3 +-
.../main/org/apache/sis/xml/Pooled.java | 2 +-
.../main/org/apache/sis/xml/bind/Context.java | 2 +-
.../apache/sis/xml/bind/IdentifierMapAdapter.java | 8 +-
.../org/apache/sis/xml/bind/ScopedIdentifier.java | 4 +-
.../xml/internal/shared/ExternalLinkHandler.java | 6 +-
.../apache/sis/xml/internal/shared/URISource.java | 2 +-
.../sql/internal/shared/SQLUtilitiesTest.java | 32 +-
.../sql/internal/shared/ScriptRunnerTest.java | 2 +
.../MultiResolutionCoverageLoaderTest.java | 2 +-
.../main/module-info.java | 2 +-
.../sis/parameter/DefaultParameterValue.java | 9 +-
.../main/org/apache/sis/parameter/Parameters.java | 5 +-
.../apache/sis/referencing/AuthorityFactories.java | 9 +
.../main/org/apache/sis/referencing/CommonCRS.java | 25 +-
.../sis/referencing/DefaultObjectDomain.java | 8 +-
.../sis/referencing/crs/DefaultCompoundCRS.java | 6 +-
.../org/apache/sis/referencing/cs/AbstractCS.java | 5 +-
.../factory/IdentifiedObjectFinder.java | 6 +
.../factory/MultiAuthoritiesFactory.java | 17 +-
.../referencing/factory/sql/AuthorityCodes.java | 34 +-
.../referencing/factory/sql/EPSGCodeFinder.java | 68 +--
.../referencing/factory/sql/EPSGDataAccess.java | 155 +++---
.../sis/referencing/factory/sql/EPSGInstaller.java | 57 +--
.../sis/referencing/factory/sql/SQLTranslator.java | 8 +-
.../sis/referencing/factory/sql/package-info.java | 2 +-
.../internal/shared/ExtendedPrecisionMatrix.java | 3 +-
.../sis/referencing/internal/shared/LazySet.java | 2 +-
.../shared/ReferencingFactoryContainer.java | 5 -
.../internal/shared/TemporalAccessor.java | 2 +-
.../operation/CoordinateOperationRegistry.java | 7 +-
.../referencing/operation/gridded/GridFile.java | 6 +-
.../referencing/operation/gridded/LoadedGrid.java | 2 +-
.../operation/transform/OperationMethodSet.java | 18 +-
.../referencing/factory/sql/EPSGFactoryTest.java | 8 +-
.../org/apache/sis/storage/landsat/BandGroup.java | 7 +-
.../apache/sis/storage/landsat/LandsatStore.java | 2 +-
.../sis/storage/landsat/LandsatStoreProvider.java | 2 +-
.../sis/storage/landsat/MetadataReaderTest.java | 2 +-
.../main/module-info.java | 2 +-
.../apache/sis/storage/geotiff/Compression.java | 2 +-
.../apache/sis/storage/geotiff/GeoTiffStore.java | 49 +-
.../org/apache/sis/storage/geotiff/IOBase.java | 6 +-
.../sis/storage/geotiff/ImageFileDirectory.java | 95 ++--
.../sis/storage/geotiff/MultiResolutionImage.java | 27 +-
.../org/apache/sis/storage/geotiff/Reader.java | 2 +-
.../org/apache/sis/storage/geotiff/Writer.java | 24 +-
.../sis/storage/geotiff/base/Compression.java | 2 +-
.../org/apache/sis/storage/geotiff/base/Tags.java | 4 +-
.../apache/sis/storage/geotiff/base/UnitKey.java | 4 +-
.../apache/sis/storage/geotiff/package-info.java | 2 +-
.../sis/storage/geotiff/reader/CRSBuilder.java | 6 +-
.../geotiff/reader/GridGeometryBuilder.java | 118 +++--
.../apache/sis/storage/geotiff/reader/Type.java | 2 +
.../sis/storage/geotiff/reader/XMLMetadata.java | 2 +-
.../storage/geotiff/writer/CompressionChannel.java | 2 +-
.../sis/storage/geotiff/writer/GeoEncoder.java | 82 ++-
.../geotiff/writer/HorizontalPredictor.java | 2 +-
.../sis/storage/geotiff/writer/TileMatrix.java | 2 +-
.../org/apache/sis/storage/geotiff/WriterTest.java | 2 +-
.../sis/storage/netcdf/NetcdfStoreProvider.java | 2 +-
.../sis/storage/netcdf/base/RasterResource.java | 4 +-
.../apache/sis/storage/netcdf/base/TestCase.java | 2 +-
.../main/module-info.java | 2 +-
.../apache/sis/storage/sql/SQLStoreProvider.java | 2 +-
.../storage/sql/duckdb/ExtendedClauseWriter.java | 16 +-
.../org/apache/sis/storage/sql/feature/Column.java | 15 +-
.../sis/storage/sql/feature/ComputedColumn.java | 88 ++++
.../apache/sis/storage/sql/feature/Database.java | 55 +-
.../sis/storage/sql/feature/FeatureAdapter.java | 26 +-
.../sis/storage/sql/feature/FeatureIterator.java | 31 +-
.../sis/storage/sql/feature/FeatureStream.java | 107 +++-
.../sis/storage/sql/feature/InfoStatements.java | 29 +-
.../apache/sis/storage/sql/feature/Relation.java | 2 +-
.../apache/sis/storage/sql/feature/Resources.java | 4 +-
.../sis/storage/sql/feature/Resources.properties | 2 +-
.../storage/sql/feature/Resources_fr.properties | 2 +-
.../sis/storage/sql/feature/SelectionClause.java | 108 ++--
.../storage/sql/feature/SelectionClauseWriter.java | 283 ++++++++---
.../org/apache/sis/storage/sql/feature/Table.java | 16 +-
.../sis/storage/sql/feature/ValueGetter.java | 2 +-
.../org/apache/sis/storage/sql/package-info.java | 2 +-
.../storage/sql/postgis/ExtendedClauseWriter.java | 18 +-
.../apache/sis/storage/sql/postgis/Postgres.java | 6 +-
.../org/apache/sis/util/stream/StreamWrapper.java | 107 ++--
.../org/apache/sis/storage/sql/SQLStoreTest.java | 78 ++-
.../sql/feature/SelectionClauseWriterTest.java | 10 +-
.../org/apache/sis/storage/gpx/StoreProvider.java | 4 +-
.../sis/storage/xml/stream/StaxStreamIO.java | 2 +-
.../org.apache.sis.storage/main/module-info.java | 2 +-
.../main/org/apache/sis/io/stream/ChannelData.java | 4 +-
.../org/apache/sis/io/stream/ChannelDataInput.java | 4 +-
.../apache/sis/io/stream/ChannelDataOutput.java | 4 +-
.../sis/io/stream/ChannelImageOutputStream.java | 6 +-
.../apache/sis/io/stream/HyperRectangleWriter.java | 16 +-
.../main/org/apache/sis/io/stream/Region.java | 2 +-
.../org/apache/sis/io/stream/UpdatableWrite.java | 6 +-
.../org/apache/sis/storage/AbstractFeatureSet.java | 38 +-
.../sis/storage/AbstractGridCoverageResource.java | 11 +-
.../org/apache/sis/storage/AbstractResource.java | 41 +-
.../main/org/apache/sis/storage/FeatureQuery.java | 6 +-
.../sis/storage/{base => }/MemoryFeatureSet.java | 64 ++-
...source.java => MemoryGridCoverageResource.java} | 90 ++--
.../main/org/apache/sis/storage/Resource.java | 22 +-
.../storage/aggregate/AggregatedFeatureSet.java | 12 -
.../sis/storage/aggregate/AggregatedResource.java | 11 +
.../aggregate/BandAggregateGridResource.java | 35 +-
.../storage/aggregate/ConcatenatedFeatureSet.java | 4 +-
.../aggregate/ConcatenatedGridCoverage.java | 6 +-
.../aggregate/ConcatenatedGridResource.java | 12 +-
.../sis/storage/aggregate/CoverageAggregator.java | 18 +-
.../org/apache/sis/storage/aggregate/Group.java | 9 +-
.../sis/storage/aggregate/GroupAggregate.java | 6 +-
.../sis/storage/aggregate/JoinFeatureSet.java | 13 +-
.../apache/sis/storage/base/MetadataFetcher.java | 28 +-
.../org/apache/sis/storage/base/PRJDataStore.java | 4 +-
.../apache/sis/storage/base/PseudoResource.java | 62 +++
.../apache/sis/storage/base/SimpleAggregate.java | 2 +-
.../apache/sis/storage/base}/SortByComparator.java | 2 +-
.../apache/sis/storage/base/TiledGridResource.java | 14 -
.../org/apache/sis/storage/base/URIDataStore.java | 15 +-
.../apache/sis/storage/base/WarningAdapter.java | 77 +++
.../sis/storage/base/WritableAggregateSupport.java | 4 +-
.../storage/base/WritableGridCoverageSupport.java | 4 +-
.../main/org/apache/sis/storage/csv/Store.java | 2 +-
.../org/apache/sis/storage/csv/StoreProvider.java | 2 +-
.../org/apache/sis/storage/csv/TimeEncoding.java | 7 +-
.../sis/storage/esri/AsciiGridStoreProvider.java | 2 +-
.../sis/storage/esri/RawRasterStoreProvider.java | 2 +-
.../apache/sis/storage/event/StoreListeners.java | 2 +-
.../apache/sis/storage/folder/StoreProvider.java | 2 +-
.../apache/sis/storage/image/WorldFileStore.java | 17 +-
.../sis/storage/image/WorldFileStoreProvider.java | 2 +-
.../storage/image/WritableSingleImageStore.java | 4 +-
.../apache/sis/storage/image/WritableStore.java | 2 +-
.../main/org/apache/sis/storage/package-info.java | 8 +-
.../org/apache/sis/storage/wkt/StoreProvider.java | 2 +-
.../org/apache/sis/storage/xml/StoreProvider.java | 2 +-
.../org/apache/sis/io/stream/ByteArrayChannel.java | 6 +-
.../apache/sis/io/stream/ChannelDataTestCase.java | 14 +-
.../org/apache/sis/storage/CoverageSubsetTest.java | 4 +-
.../test/org/apache/sis/storage/DataStoreMock.java | 2 +-
.../org/apache/sis/storage/FeatureQueryTest.java | 118 ++++-
.../org/apache/sis/storage/GridResourceMock.java | 12 +-
...st.java => MemoryGridCoverageResourceTest.java} | 21 +-
.../aggregate/BandAggregateGridResourceTest.java | 11 +-
.../aggregate/ConcatenatedFeatureSetTest.java | 2 +-
.../sis/storage/aggregate/CoverageMosaicTest.java | 5 +-
.../sis/storage/aggregate/JoinFeatureSetTest.java | 12 +-
.../sis/storage/aggregate/OpaqueGridResource.java | 6 +-
.../src/org.apache.sis.util/main/module-info.java | 2 +-
.../main/org/apache/sis/math/Statistics.java | 2 +-
.../main/org/apache/sis/measure/UnitDimension.java | 5 +-
.../main/org/apache/sis/pending/jdk/HexFormat.java | 5 +-
.../main/org/apache/sis/pending/jdk/JDK17.java | 2 +-
.../main/org/apache/sis/util/ObjectConverters.java | 14 +-
.../org/apache/sis/util/collection/Containers.java | 58 ++-
.../apache/sis/util/collection}/DerivedList.java | 28 +-
.../org/apache/sis/util/collection/DerivedSet.java | 10 +-
.../shared => collection}/ListOfUnknownSize.java | 152 ++++--
.../sis/util/collection/SetOfUnknownSize.java | 267 ++++++++++
.../apache/sis/util/collection/package-info.java | 2 +-
.../sis/util/internal/shared/AbstractIterator.java | 2 +-
.../sis/util/internal/shared/AbstractMap.java | 13 +
.../sis/util/internal/shared/CheckedHashSet.java | 2 +-
.../sis/util/internal/shared/CollectionsExt.java | 24 +-
.../sis/util/internal/shared/DoubleDouble.java | 8 +-
.../sis/util/internal/shared/SetOfUnknownSize.java | 199 --------
.../apache/sis/util/logging/MonolineFormatter.java | 17 +-
.../org/apache/sis/util/resources/Vocabulary.java | 5 +
.../sis/util/resources/Vocabulary.properties | 1 +
.../sis/util/resources/Vocabulary_fr.properties | 1 +
.../ListOfUnknownSizeTest.java | 5 +-
.../sis/util/logging/MonolineFormatterTest.java | 10 +-
geoapi/snapshot | 2 +-
.../org/apache/sis/cql/FilterToCQLVisitor.java | 4 +-
.../main/org/apache/sis/geometries/Geometries.java | 70 +--
.../org/apache/sis/geometries/GeometryFactory.java | 22 +-
.../org/apache/sis/geometries/PointSequence.java | 8 +-
.../geometries/csg/ConstructiveSolidGeometry.java | 10 +-
.../internal/shared/AbstractGeometry.java | 8 +-
.../geometries/internal/shared/ArraySequence.java | 38 +-
.../geometries/internal/shared/DefaultPoint.java | 10 +-
...{AbstractTupleArray.java => AbstractArray.java} | 20 +-
.../apache/sis/geometries/math/AbstractCursor.java | 16 +-
.../math/{TupleArray.java => Array.java} | 153 +++---
...rayConcatenated.java => ArrayConcatenated.java} | 44 +-
.../math/{TupleArrayND.java => ArrayMemory.java} | 558 +++++++++++----------
...ArraySpliterator.java => ArraySpliterator.java} | 20 +-
...rayUnmodifiable.java => ArrayUnmodifiable.java} | 34 +-
.../math/{TupleArrayCursor.java => Cursor.java} | 6 +-
...orUnmodifiable.java => CursorUnmodifiable.java} | 10 +-
.../org/apache/sis/geometries/math/NDArray.java | 182 +++++++
.../math/{TupleArrays.java => NDArrays.java} | 247 ++++-----
.../apache/sis/geometries/mesh/MeshPrimitive.java | 220 ++++----
.../geometries/mesh/MeshPrimitiveComparator.java | 6 +-
.../sis/geometries/mesh/MeshPrimitiveIndexes.java | 35 +-
.../sis/geometries/mesh/MeshPrimitiveVisitor.java | 22 +-
.../geometries/operation/GeometryOperations.java | 6 +-
.../operation/spatialanalysis2d/ISOLine.java | 6 +-
.../processor/spatialanalysis2d/Intersection.java | 26 +-
.../processor/spatialedition/ComputeAttribute.java | 8 +-
.../geometries/processor/spatialedition/To3D.java | 24 +-
.../processor/spatialedition/ToPrimitive.java | 12 +-
.../processor/spatialedition/Transform.java | 36 +-
.../processor/spatialrelations2d/Contains.java | 14 +-
.../simplify/greedyinsert/TINBuilder.java | 6 +-
.../sis/geometries/triangulate/EarClipping.java | 6 +-
.../geometries/triangulate/delaunay/Delaunay.java | 64 +--
.../triangulate/delaunay/OrientedEdge.java | 4 +-
.../triangulate/delaunay/OrientedTriangle.java | 4 +-
.../org/apache/sis/geometries/PreparedTINTest.java | 10 +-
.../org/apache/sis/geometries/TriangleTest.java | 6 +-
.../internal/shared/ArraySequenceTest.java | 24 +-
...tTupleArrayTest.java => AbstractArrayTest.java} | 82 +--
...tenatedTest.java => ArrayConcatenatedTest.java} | 28 +-
.../{TupleArrayNuiTest.java => ArrayNbTest.java} | 6 +-
.../{TupleArrayNlTest.java => ArrayNdTest.java} | 6 +-
.../{TupleArrayNiTest.java => ArrayNfTest.java} | 6 +-
.../{TupleArrayNiTest.java => ArrayNiTest.java} | 6 +-
.../{TupleArrayNiTest.java => ArrayNlTest.java} | 6 +-
.../{TupleArrayNiTest.java => ArrayNsTest.java} | 6 +-
.../{TupleArrayNbTest.java => ArrayNubTest.java} | 6 +-
.../{TupleArrayNiTest.java => ArrayNuiTest.java} | 6 +-
.../{TupleArrayNsTest.java => ArrayNusTest.java} | 6 +-
.../{TupleArraysTest.java => NDArraysTest.java} | 32 +-
.../sis/geometries/math/TupleArrayNdTest.java | 36 --
.../sis/geometries/math/TupleArrayNubTest.java | 36 --
.../sis/geometries/math/TupleArrayNusTest.java | 36 --
.../sis/geometries/mesh/PrimitiveIndexesTest.java | 22 +-
.../apache/sis/geometries/mesh/PrimitiveTest.java | 48 +-
.../sis/geometries/mesh/PrimitiveVisitorTest.java | 38 +-
.../geometries/operation/SutherlandHogmanTest.java | 10 +-
.../operation/spatialanalysis2d/IsoBandTest.java | 10 +-
.../spatialanalysis2d/IntersectionTest.java | 24 +-
.../processor/spatialedition/To3DTest.java | 4 +-
.../processor/spatialedition/ToPrimitiveTest.java | 18 +-
.../processor/spatialedition/TransformTest.java | 18 +-
.../triangulate/delaunay/DelaunayTest.java | 54 +-
.../triangulate/delaunay/OrientedEdgeTest.java | 6 +-
.../main/org/apache/sis/map/SEPortrayer.java | 2 +-
.../test/org/apache/sis/map/SEPortrayerTest.java | 40 +-
.../sis/map/service/GraphicsPortrayerTest.java | 2 +-
.../coveragejson/CoverageJsonStoreProvider.java | 2 +-
.../coveragejson/CoverageJsonStoreTest.java | 4 +-
.../org/apache/sis/storage/geopackage/Content.java | 2 +-
.../sis/storage/geopackage/GpkgStoreProvider.java | 2 +-
.../sis/storage/shapefile/ShapefileStore.java | 21 +-
netbeans-project/nbproject/project.xml | 2 +
.../apache/sis/gui/dataset/ExpandedFeature.java | 8 -
.../org/apache/sis/gui/dataset/RootResource.java | 16 -
.../sis/resources/embedded/EmbeddedResources.java | 9 +-
.../sis/referencing/factory/sql/epsg/Prepare.sql | 6 +
.../sis/referencing/factory/sql/epsg/Changes.md | 46 ++
.../sis/referencing/factory/sql/epsg/README.md | 70 +--
379 files changed, 7363 insertions(+), 3746 deletions(-)
diff --cc endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/OperationView.java
index 0000000000,ddbeebe36b..cf777f34bc
mode 000000,100644..100644
--- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/OperationView.java
+++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/OperationView.java
@@@ -1,0 -1,192 +1,192 @@@
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ package org.apache.sis.feature.internal.shared;
+
+ import java.util.Optional;
+ import java.io.Serializable;
+ import org.opengis.util.GenericName;
+ import org.opengis.util.InternationalString;
+ import org.opengis.parameter.ParameterValueGroup;
+ import org.opengis.parameter.ParameterDescriptorGroup;
+ import org.apache.sis.feature.AbstractOperation;
+ import org.apache.sis.feature.DefaultFeatureType;
+ import org.apache.sis.feature.internal.Resources;
+ import org.apache.sis.util.Deprecable;
+
+ // Specific to the geoapi-3.1 and geoapi-4.0 branches:
+ import org.opengis.feature.Feature;
+ import org.opengis.feature.FeatureOperationException;
+ import org.opengis.feature.IdentifiedType;
+ import org.opengis.feature.Operation;
+ import org.opengis.feature.Property;
+ import org.opengis.feature.PropertyNotFoundException;
+
+
+ /**
+ * An operation wrapper for hiding its dependencies. Because Apache <abbr>SIS</abbr>
+ * fetches operation dependencies only from instances of {@link AbstractOperation},
+ * we only need a wrapper that do <em>not</em> extend {@code AbstractOperation}.
+ * This class should be used only together with {@link FeatureView}.
+ *
+ * <h2>Purpose</h2>
+ * The {@link DefaultFeatureType} constructor verifies that all dependencies of all operations exist.
+ * This verification can block us from constructing the {@link FeatureView#source} type if the view
+ * does not include all dependencies needed by an operation. By wrapping the operation, we prevent
+ * {@link DefaultFeatureType} from doing this verification.
+ *
+ * @author Martin Desruisseaux (Geomatys)
+ */
+ final class OperationView implements Operation, Deprecable, Serializable {
+ /**
+ * For cross-version compatibility.
+ */
+ private static final long serialVersionUID = -4679426189917900959L;
+
+ /**
+ * The instance doing the actual operation.
+ */
+ private final AbstractOperation source;
+
+ /**
+ * The name of feature type expected by the operation.
+ */
+ @SuppressWarnings("serial") // Most Apache SIS implementations are serializable.
+ private final GenericName valueType;
+
+ /**
+ * Creates a new operation wrapper.
+ *
+ * @param valueType the name of feature type expected by the operation.
+ * @param source the operation instance to make opaque.
+ */
+ OperationView(final AbstractOperation source, final GenericName valueType) {
+ this.source = source;
+ this.valueType = valueType;
+ }
+
+ /**
+ * Returns the name of the wrapped operation.
+ */
+ @Override
+ public GenericName getName() {
+ return source.getName();
+ }
+
+ /**
+ * Returns a concise definition of the operation.
+ */
+ @Override
+ public InternationalString getDefinition() {
+ return source.getDefinition();
+ }
+
+ /**
+ * Returns a natural language designator for the operation.
+ * This can be used as an alternative to the {@linkplain #getName() name} in user interfaces.
+ */
+ @Override
+ public Optional<InternationalString> getDesignation() {
+ return source.getDesignation();
+ }
+
+ /**
+ * Returns optional information beyond that required for concise definition of the element.
+ * The description may assist in understanding the element scope and application.
+ */
+ @Override
+ public Optional<InternationalString> getDescription() {
+ return source.getDescription();
+ }
+
+ /**
+ * If this instance is deprecated, the reason or the alternative to use.
+ */
+ @Override
- public Optional<InternationalString> getRemarks() {
++ public InternationalString getRemarks() {
+ return source.getRemarks();
+ }
+
+ /**
+ * Returns {@code true} if this instance is deprecated.
+ */
+ @Override
+ public boolean isDeprecated() {
+ return source.isDeprecated();
+ }
+
+ /**
+ * Returns a description of the input parameters.
+ */
+ @Override
+ public ParameterDescriptorGroup getParameters() {
+ return source.getParameters();
+ }
+
+ /**
+ * Returns the expected result type.
+ */
+ @Override
+ public IdentifiedType getResult() {
+ return source.getResult();
+ }
+
+ /**
+ * Executes the operation on the specified feature with the specified parameters.
+ * This method is not strictly compliant with the contract of the public interface,
+ * because it requires that the given feature is an instance of {@link #valueType}.
+ * If not the case, this method tries to produce a more helpful exception message.
+ *
+ * @param instance the feature instance on which to execute the operation.
+ * Can be {@code null} if the operation does not need feature instance.
+ * @param parameters the parameters to use for executing the operation.
+ * Can be {@code null} if the operation does not take any parameters.
+ * @return the operation result.
+ */
+ @Override
+ public Property apply(final Feature instance, final ParameterValueGroup parameters) {
+ try {
+ return source.apply(instance, parameters);
+ } catch (PropertyNotFoundException e) {
+ throw new FeatureOperationException(Resources.format(
+ Resources.Keys.IllegalFeatureType_4, 1, getName(), valueType, instance.getType().getName()), e);
+ }
+ }
+
+ /**
+ * Returns a string representation of this operation.
+ */
+ @Override
+ public String toString() {
+ return source.toString();
+ }
+
+ /**
+ * Returns a hash code value for this operation.
+ */
+ @Override
+ public int hashCode() {
+ return source.hashCode() * 37;
+ }
+
+ /**
+ * Compares this operation with the given object for equality.
+ */
+ @Override
+ public boolean equals(final Object obj) {
+ return (obj instanceof OperationView) && source.equals(((OperationView) obj).source);
+ }
+ }
diff --cc endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
index 3945e2e6c6,43a30133fa..09b1977630
--- a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
+++ b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
@@@ -908,6 -920,27 +920,27 @@@ public class Database<G> extends Synta
listeners.warning(record);
}
+ /**
+ * Creates a listener for warnings that occur during the execution of filters or expressions.
+ * This method declares {@link FeatureSet#features(boolean)} as the public source of the log.
+ *
+ * @return the warning listener.
+ */
+ final Consumer<WarningEvent> createFilterListener() {
+ return (event) -> {
+ final LogRecord record = resources().createLogRecord(
+ event.recoverable ? Level.FINE : Level.WARNING,
+ Resources.Keys.IncompatibleFunction_2,
- event.getOperatorType().flatMap(CodeList::identifier).orElse("?"),
++ event.getOperatorType().map(CodeList::identifier).orElse("?"),
+ event.getParameter(ValueReference.class).map(ValueReference<?,?>::getXPath).orElse("?"));
+ record.setThrown(event.exception);
+ record.setSourceClassName(FeatureSet.class.getName());
+ record.setSourceMethodName("features");
+ record.setLoggerName(Modules.SQL);
+ listeners.warning(record);
+ };
+ }
+
/**
* Creates a tree representation of this database for debugging purpose.
*
diff --cc geoapi/snapshot
index 352a974aca,e8dfb3b92a..ae34c761d1
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 352a974acadf2cd5471b51c5e98c866f386e0b5b
-Subproject commit e8dfb3b92a0141221d33991c197b3f74bb0831c9
++Subproject commit ae34c761d138ab6bc826a7dde1581a560796201b