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 2023/01/02 13:35:06 UTC

[sis] 01/01: Merge branch 'geoapi-3.1'

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

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

commit 459597c6a64651f96ad87a793576cdcde85df2be
Merge: f3f3169460 c7d4b3ede7
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Mon Jan 2 14:34:47 2023 +0100

    Merge branch 'geoapi-3.1'

 .../java/org/apache/sis/console/CommandRunner.java |   2 +-
 .../org/apache/sis/gui/coverage/GridTileCache.java |   2 +-
 .../org/apache/sis/gui/dataset/ResourceEvent.java  |   3 +
 .../java/org/apache/sis/coverage/Category.java     |   2 +
 .../org/apache/sis/coverage/RegionOfInterest.java  |   6 +-
 .../org/apache/sis/coverage/SampleDimension.java   |   2 +
 .../org/apache/sis/coverage/SampleRangeFormat.java |   2 +-
 .../main/java/org/apache/sis/coverage/ToNaN.java   |   2 +-
 .../org/apache/sis/coverage/grid/GridGeometry.java |   5 +-
 .../java/org/apache/sis/coverage/package-info.java |   2 +-
 .../org/apache/sis/feature/AbstractFeature.java    |   2 +-
 .../apache/sis/feature/AbstractIdentifiedType.java |   4 +
 .../apache/sis/feature/DefaultAssociationRole.java |  14 +-
 .../apache/sis/feature/DefaultAttributeType.java   |   1 +
 .../org/apache/sis/feature/DefaultFeatureType.java |   5 +
 .../java/org/apache/sis/feature/DenseFeature.java  |   2 +
 .../org/apache/sis/feature/EnvelopeOperation.java  |   2 +
 .../java/org/apache/sis/feature/FeatureFormat.java |   5 +-
 .../sis/feature/FeatureOperationException.java     |   1 +
 .../sis/feature/InvalidFeatureException.java       |   1 +
 .../org/apache/sis/feature/NamedFeatureType.java   |   2 +
 .../org/apache/sis/feature/SingletonAttribute.java |   1 +
 .../java/org/apache/sis/feature/SparseFeature.java |   1 +
 .../apache/sis/feature/StringJoinOperation.java    |   2 +
 .../apache/sis/feature/builder/TypeBuilder.java    |   1 -
 .../java/org/apache/sis/filter/BinaryFunction.java |   4 +-
 .../apache/sis/filter/BinaryGeometryFilter.java    |   5 +-
 .../org/apache/sis/filter/ComparisonFilter.java    |   1 -
 .../org/apache/sis/filter/ConvertFunction.java     |   2 +-
 .../org/apache/sis/filter/DefaultSortProperty.java |   2 +-
 .../java/org/apache/sis/filter/DistanceFilter.java |   2 +-
 .../java/org/apache/sis/filter/LeafExpression.java |   2 +-
 .../java/org/apache/sis/filter/LikeFilter.java     |   2 +-
 .../java/org/apache/sis/filter/LogicalFilter.java  |   4 +-
 .../java/org/apache/sis/filter/PropertyValue.java  |   3 +-
 .../java/org/apache/sis/filter/UnaryFunction.java  |   2 +-
 .../org/apache/sis/index/tree/NodeIterator.java    |   1 +
 .../java/org/apache/sis/index/tree/PointTree.java  |  15 +-
 .../org/apache/sis/index/tree/PointTreeNode.java   |  15 +-
 .../org/apache/sis/index/tree/QuadTreeNode.java    |   7 +-
 .../org/apache/sis/internal/feature/Resources.java |   1 -
 .../internal/feature/SpatialOperationContext.java  |   8 +-
 .../sis/internal/feature/j2d/ShapeWrapper.java     |   1 +
 .../feature/jts/PackedCoordinateSequence.java      |   5 +
 .../sis/internal/filter/GeometryConverter.java     |   2 +-
 .../sis/internal/filter/SortByComparator.java      |   1 +
 .../internal/filter/sqlmm/FunctionWithSRID.java    |   1 +
 .../internal/filter/sqlmm/GeometryConstructor.java |   1 +
 .../sis/internal/filter/sqlmm/OneGeometry.java     |   3 +-
 .../apache/sis/internal/filter/sqlmm/ST_Point.java |   1 +
 .../sis/internal/filter/sqlmm/ST_Transform.java    |   1 +
 .../sis/internal/filter/sqlmm/TwoGeometries.java   |   2 +
 .../sis/internal/processing/isoline/Fragments.java |   2 +-
 .../sis/internal/jaxb/IdentifierMapAdapter.java    |   2 +-
 .../sis/internal/jaxb/NonMarshalledAuthority.java  |   1 -
 .../sis/internal/jaxb/SpecializedIdentifier.java   |   2 +-
 .../sis/internal/jaxb/lan/LocaleAndCharset.java    |   4 +-
 .../apache/sis/internal/metadata/Resources.java    |   1 -
 .../sis/internal/simple/SimpleAttributeType.java   |   1 +
 .../internal/simple/SimpleIdentifiedObject.java    |   1 +
 .../sis/internal/simple/SimpleIdentifier.java      |   1 +
 .../org/apache/sis/metadata/MetadataFormat.java    |   2 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |   2 +-
 .../org/apache/sis/metadata/iso/ISOMetadata.java   |   2 +-
 .../apache/sis/metadata/sql/MetadataWriter.java    |   6 +-
 .../org/apache/sis/util/iso/DefaultRecord.java     |   2 +-
 .../org/apache/sis/util/iso/DefaultRecordType.java |   2 +-
 .../org/apache/sis/util/iso/DefaultTypeName.java   |   2 +-
 .../org/apache/sis/util/iso/RecordDefinition.java  |   2 +-
 .../main/java/org/apache/sis/xml/NilReason.java    |   3 +-
 .../src/main/java/org/apache/sis/xml/XLink.java    |   1 +
 .../sis/metadata/iso/extent/ExtentsTest.java       |   1 -
 .../apache/sis/test/xml/DocumentComparator.java    |   6 +-
 .../org/apache/sis/geometry/AbstractEnvelope.java  |  12 +-
 .../org/apache/sis/geometry/ArrayEnvelope.java     |   1 +
 .../org/apache/sis/geometry/CoordinateFormat.java  |   8 +-
 .../org/apache/sis/geometry/DirectPosition1D.java  |   1 +
 .../org/apache/sis/geometry/DirectPosition2D.java  |   1 +
 .../java/org/apache/sis/geometry/Envelope2D.java   |   1 +
 .../java/org/apache/sis/geometry/Envelopes.java    |   3 -
 .../apache/sis/geometry/GeneralDirectPosition.java |   1 +
 .../org/apache/sis/geometry/GeneralEnvelope.java   |   5 +-
 .../java/org/apache/sis/geometry/Shapes2D.java     |   1 -
 .../internal/referencing/EPSGParameterDomain.java  |   1 +
 .../apache/sis/internal/referencing/Formulas.java  |  10 +-
 .../apache/sis/internal/referencing/RTreeNode.java |   1 +
 .../referencing/j2d/AffineTransform2D.java         |   2 +-
 .../referencing/j2d/IntervalRectangle.java         |   8 +-
 .../referencing/j2d/ParameterizedAffine.java       |   3 +-
 .../sis/internal/referencing/j2d/package-info.java |   2 +-
 .../sis/internal/referencing/package-info.java     |   2 +-
 .../referencing/provider/DatumShiftGridFile.java   |   3 +
 .../referencing/provider/DatumShiftGridGroup.java  |   5 +-
 .../provider/FranceGeocentricInterpolation.java    |   5 +-
 .../referencing/provider/GeocentricAffine.java     |   1 -
 .../provider/MolodenskyInterpolation.java          |   3 +
 .../sis/internal/referencing/provider/NADCON.java  |   5 +-
 .../sis/internal/referencing/provider/NTv2.java    |   3 +-
 .../referencing/provider/package-info.java         |   2 +-
 .../main/java/org/apache/sis/io/wkt/Formatter.java |   1 -
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |   1 -
 .../java/org/apache/sis/io/wkt/StoredTree.java     |   1 +
 .../main/java/org/apache/sis/io/wkt/WKTFormat.java |   5 +-
 .../main/java/org/apache/sis/io/wkt/Warnings.java  |  25 +--
 .../java/org/apache/sis/io/wkt/package-info.java   |   2 +-
 .../parameter/DefaultParameterDescriptorGroup.java |   3 +-
 .../sis/parameter/DefaultParameterValue.java       |   4 +-
 .../apache/sis/parameter/FilteredParameters.java   |   3 +-
 .../sis/parameter/MapProjectionParameters.java     |   3 +
 .../org/apache/sis/parameter/ParameterFormat.java  |   6 +-
 .../apache/sis/parameter/ParameterValueList.java   |   4 +-
 .../java/org/apache/sis/parameter/Parameters.java  |   3 +-
 .../org/apache/sis/parameter/TensorParameters.java |   2 +-
 .../org/apache/sis/parameter/TensorValues.java     |   2 +-
 .../sis/parameter/UninitializedParameter.java      |   2 +-
 .../parameter/UnmodifiableParameterValueGroup.java |   4 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |   8 +-
 .../sis/referencing/AbstractReferenceSystem.java   |   4 +-
 .../sis/referencing/ImmutableIdentifier.java       |   4 +-
 .../org/apache/sis/referencing/Properties.java     |   1 +
 .../apache/sis/referencing/crs/AbstractCRS.java    |   2 +-
 .../sis/referencing/crs/AbstractDerivedCRS.java    |   2 +-
 .../sis/referencing/crs/DefaultCompoundCRS.java    |   1 +
 .../sis/referencing/crs/DefaultEngineeringCRS.java |   2 +-
 .../sis/referencing/crs/DefaultGeodeticCRS.java    |   1 +
 .../sis/referencing/crs/DefaultImageCRS.java       |   1 +
 .../sis/referencing/crs/DefaultTemporalCRS.java    |   1 +
 .../sis/referencing/crs/DefaultVerticalCRS.java    |   1 +
 .../org/apache/sis/referencing/cs/AbstractCS.java  |   2 +-
 .../sis/referencing/cs/DefaultCompoundCS.java      |   5 +-
 .../cs/DefaultCoordinateSystemAxis.java            |   1 +
 .../sis/referencing/datum/AbstractDatum.java       |   3 +
 .../sis/referencing/datum/BursaWolfParameters.java |   2 +
 .../sis/referencing/datum/DatumShiftGrid.java      |   3 +
 .../sis/referencing/datum/DefaultEllipsoid.java    |   1 +
 .../referencing/datum/DefaultGeodeticDatum.java    |   2 +
 .../referencing/datum/DefaultPrimeMeridian.java    |   1 +
 .../org/apache/sis/referencing/datum/Sphere.java   |   3 -
 .../factory/ConcurrentAuthorityFactory.java        |   1 -
 .../factory/UnavailableFactoryException.java       |   4 +-
 .../sis/referencing/factory/package-info.java      |   2 +-
 .../referencing/factory/sql/EPSGDataAccess.java    |   1 -
 .../operation/AbstractCoordinateOperation.java     |  14 +-
 .../operation/AbstractSingleOperation.java         |   4 +-
 .../operation/CoordinateOperationContext.java      |   2 +-
 .../operation/CoordinateOperationFinder.java       |  24 +--
 .../operation/DefaultConcatenatedOperation.java    |   2 +-
 .../sis/referencing/operation/DefaultFormula.java  |   4 +-
 .../operation/DefaultOperationMethod.java          |   4 +-
 .../operation/DefaultPassThroughOperation.java     |   2 +-
 .../operation/InverseOperationMethod.java          |   2 +-
 .../operation/builder/LinearTransformBuilder.java  |   1 -
 .../builder/LocalizationGridException.java         |   1 +
 .../operation/builder/ResidualGrid.java            |   1 +
 .../operation/matrix/GeneralMatrix.java            |  67 +++++--
 .../sis/referencing/operation/matrix/Matrices.java |  55 +++---
 .../referencing/operation/matrix/MatrixSIS.java    |  10 +-
 .../operation/matrix/UnmodifiableMatrix.java       |   1 +
 .../referencing/operation/matrix/package-info.java |   2 +-
 .../sis/referencing/operation/package-info.java    |   2 +-
 .../operation/projection/AuthalicConversion.java   |  18 +-
 .../operation/projection/ConformalProjection.java  |  27 +--
 .../referencing/operation/projection/Inverter.java |   2 +-
 .../projection/LambertAzimuthalEqualArea.java      |  12 +-
 .../referencing/operation/projection/Mercator.java |   6 -
 .../operation/projection/MeridianArcBased.java     |  58 ++++--
 .../operation/projection/NormalizedProjection.java |   2 +-
 .../operation/projection/ZonedGridSystem.java      |   3 +
 .../operation/projection/package-info.java         |   2 +-
 .../transform/AbstractLinearTransform.java         |  14 +-
 .../operation/transform/ConcatenatedTransform.java |   3 +
 .../operation/transform/ConstantTransform1D.java   |  13 +-
 .../operation/transform/ContextualParameters.java  |  18 +-
 .../operation/transform/DatumShiftTransform.java   |   2 +
 .../transform/DefaultMathTransformFactory.java     |   3 +-
 .../transform/EllipsoidToCentricTransform.java     |   1 +
 .../transform/ExponentialTransform1D.java          |   1 +
 .../operation/transform/IdentityTransform1D.java   |   4 +-
 .../transform/InterpolatedGeocentricTransform.java |   1 +
 .../transform/InterpolatedMolodenskyTransform.java |   4 +
 .../InterpolatedMolodenskyTransform2D.java         |   3 +
 .../operation/transform/LinearInterpolator1D.java  |  11 +-
 .../operation/transform/LinearTransform1D.java     | 200 ++++++++++++++++-----
 .../transform/LogarithmicTransform1D.java          |   1 +
 .../operation/transform/MathTransforms.java        |   8 +-
 .../operation/transform/PassThroughTransform.java  |   1 +
 .../operation/transform/PoleRotation.java          |   1 +
 .../operation/transform/ProjectiveTransform.java   |  27 ++-
 .../transform/SpecializableTransform.java          |   5 +
 .../operation/transform/TransferFunction.java      |   1 +
 .../operation/transform/TransformAdapter2D.java    |   1 +
 .../sis/referencing/factory/TestFactorySource.java |   1 -
 .../factory/sql/epsg/DataScriptFormatter.java      |   1 -
 .../operation/CoordinateOperationFinderTest.java   |   4 +-
 .../operation/matrix/GeneralMatrixTest.java        |   5 +-
 .../referencing/operation/matrix/MatricesTest.java |  19 +-
 .../operation/matrix/MatrixTestCase.java           |  31 ++--
 .../operation/projection/SinusoidalTest.java       |   2 +-
 .../operation/transform/SinusoidalShiftGrid.java   |   2 +-
 .../sis/internal/converter/ArrayConverter.java     |   1 +
 .../internal/converter/CharSequenceConverter.java  |   1 +
 .../sis/internal/converter/FallbackConverter.java  |   2 +
 .../sis/internal/converter/IdentityConverter.java  |   8 +-
 .../sis/internal/converter/StringConverter.java    |  22 +--
 .../sis/internal/converter/package-info.java       |   2 +-
 .../sis/internal/util/AutoMessageFormat.java       |   2 +-
 .../apache/sis/internal/util/CheckedHashSet.java   |   1 +
 .../org/apache/sis/internal/util/DoubleDouble.java |  70 ++------
 .../sis/internal/util/SimpleCharacterIterator.java |  10 +-
 .../sis/internal/util/UnmodifiableArrayList.java   |   1 +
 .../main/java/org/apache/sis/math/ArrayVector.java |  23 ++-
 .../org/apache/sis/math/ConcatenatedVector.java    |   1 +
 .../org/apache/sis/math/LinearlyDerivedVector.java |   1 +
 .../java/org/apache/sis/math/MathFunctions.java    |  37 ++--
 .../java/org/apache/sis/math/RepeatedVector.java   |   1 +
 .../main/java/org/apache/sis/math/Statistics.java  |   1 +
 .../java/org/apache/sis/math/package-info.java     |   2 +-
 .../org/apache/sis/measure/AbstractConverter.java  |   2 +-
 .../apache/sis/measure/ConcatenatedConverter.java  |   2 +
 .../org/apache/sis/measure/ConventionalUnit.java   |   2 +-
 .../java/org/apache/sis/measure/DerivedScalar.java |   4 +-
 .../sis/measure/FormattedCharacterIterator.java    |  23 +--
 .../org/apache/sis/measure/LinearConverter.java    |  36 ++--
 .../org/apache/sis/measure/MeasurementRange.java   |   1 +
 .../main/java/org/apache/sis/measure/Range.java    |   1 +
 .../main/java/org/apache/sis/measure/Scalar.java   |   2 +-
 .../apache/sis/measure/SexagesimalConverter.java   |   2 +-
 .../java/org/apache/sis/measure/UnitDimension.java |   2 +-
 .../java/org/apache/sis/measure/UnitFormat.java    |   5 +-
 .../main/java/org/apache/sis/measure/Units.java    |   1 +
 .../src/main/java/org/apache/sis/setup/About.java  |   2 +-
 .../sis/util/collection/DefaultTreeTable.java      |   5 +-
 .../org/apache/sis/util/collection/DerivedMap.java |   6 +-
 .../org/apache/sis/util/collection/DerivedSet.java |   2 +-
 .../sis/util/collection/FrequencySortedSet.java    |   3 +-
 .../org/apache/sis/util/collection/RangeSet.java   |   1 +
 .../apache/sis/util/collection/TreeNodeList.java   |   2 +
 .../sis/util/collection/TreeTableFormat.java       |  14 +-
 .../resources/ResourceInternationalString.java     |   1 +
 .../apache/sis/internal/util/DoubleDoubleTest.java |   8 +-
 .../measure/FormattedCharacterIteratorTest.java    |   2 +-
 .../apache/sis/measure/LinearConverterTest.java    |   1 -
 ide-project/NetBeans/nbproject/cfg_hints.xml       |  52 ++++++
 .../sis/internal/profile/fra/Constraints.java      |   1 +
 .../internal/profile/fra/DataIdentification.java   |   1 +
 .../profile/fra/DirectReferenceSystem.java         |   2 +-
 .../profile/fra/IndirectReferenceSystem.java       |   2 +-
 .../sis/internal/profile/fra/LegalConstraints.java |   1 +
 .../internal/profile/fra/SecurityConstraints.java  |   1 +
 .../org/apache/sis/storage/geotiff/CRSBuilder.java |   3 +-
 .../sis/internal/netcdf/ucar/DecoderWrapper.java   |   1 -
 .../apache/sis/storage/netcdf/MetadataReader.java  |   1 -
 .../sis/internal/storage/wkt/StoreFormat.java      |   2 +-
 .../apache/sis/storage/CanNotProbeException.java   |   5 +-
 .../java/org/apache/sis/storage/CoverageQuery.java |   2 +-
 .../org/apache/sis/storage/DataStoreRegistry.java  |   2 +-
 .../java/org/apache/sis/storage/FeatureQuery.java  |   5 +
 .../org/apache/sis/storage/StorageConnector.java   |   1 -
 258 files changed, 940 insertions(+), 606 deletions(-)

diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java
index a99c102d8a,b7f0bbbbc3..cda13acf8b
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java
@@@ -223,10 -234,10 +224,10 @@@ public class DefaultAssociationRole ext
                  } else {
                      /*
                       * The feature that we need to resolve is not the one we just created. Maybe we can find
-                      * this desired feature in an association of the 'creating' feature, instead of beeing
-                      * the 'creating' feature itself. This is a little bit unusual, but not illegal.
+                      * this desired feature in an association of the `creating` feature, instead of beeing
+                      * the `creating` feature itself. This is a little bit unusual, but not illegal.
                       */
 -                    final List<FeatureType> deferred = new ArrayList<>();
 +                    final List<DefaultFeatureType> deferred = new ArrayList<>();
                      resolved = search(creating, properties, name, deferred);
                      if (resolved == null) {
                          /*
@@@ -260,9 -271,8 +261,8 @@@
       * @param  deferred    where to store {@code FeatureType}s to be eventually used for a deep search.
       * @return the feature of the given name, or {@code null} if none.
       */
-     @SuppressWarnings("null")
 -    private static FeatureType search(final FeatureType feature, Collection<? extends PropertyType> properties,
 -            final GenericName name, final List<FeatureType> deferred)
 +    private static DefaultFeatureType search(final DefaultFeatureType feature, Collection<? extends AbstractIdentifiedType> properties,
 +            final GenericName name, final List<DefaultFeatureType> deferred)
      {
          /*
           * Search only in associations declared in the given feature, not in inherited associations.
@@@ -348,11 -359,13 +348,11 @@@
       *         and not yet resolved.
       *
       * @see #isResolved()
 -     * @see Features#getValueTypeName(PropertyType)
       */
 -    @Override
 -    public final FeatureType getValueType() {
 +    public final DefaultFeatureType getValueType() {
          /*
           * This method shall be final for consistency with other methods in this classes
-          * which use the 'valueType' field directly. Furthermore, this method is invoked
+          * which use the `valueType` field directly. Furthermore, this method is invoked
           * (indirectly) by DefaultFeatureType constructors.
           */
          FeatureType type = valueType;
diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
index d11b7e87bf,29841e9f5a..dbc9f39489
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
@@@ -150,13 -156,14 +150,14 @@@ public class DefaultFeatureType extend
       *
       * @see #getSuperTypes()
       */
 -    @SuppressWarnings("serial")                     // Can be various serializable implementations.
 -    private final Set<FeatureType> superTypes;
++    @SuppressWarnings("serial")
 +    private final Set<DefaultFeatureType> superTypes;
  
      /**
 -     * The names of all parents of this feature type, including parents of parents.
 -     * This is used for a more efficient implementation of {@link #isAssignableFrom(FeatureType)}.
 +     * The names of all parents of this feature type, including parents of parents. This is used
 +     * for a more efficient implementation of {@link #isAssignableFrom(DefaultFeatureType)}.
       *
 -     * @see #isAssignableFrom(FeatureType)
 +     * @see #isAssignableFrom(DefaultFeatureType)
       */
      private transient Set<GenericName> assignableTo;
  
@@@ -167,7 -174,8 +168,8 @@@
       *
       * @see #getProperties(boolean)
       */
+     @SuppressWarnings("serial")                     // Can be various serializable implementations.
 -    private final List<PropertyType> properties;
 +    private final List<AbstractIdentifiedType> properties;
  
      /**
       * All properties, including the ones declared in the super-types.
diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
index f53c01b44b,6b55312d79..a41ba4057a
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
@@@ -613,14 -628,14 +612,14 @@@ format:                     for (final 
                                  Collection<?> cv = CollectionsExt.singletonOrEmpty(ct.getDefaultValue());
                                  if (feature != null) {
                                      /*
-                                      * Usually, the property 'cp' below is null because all features use the same
+                                      * Usually, the property `cp` below is null because all features use the same
                                       * characteristic value (for example the same unit of measurement),  which is
-                                      * given by the default value 'cv'.  Nevertheless we have to check if current
+                                      * given by the default value `cv`.  Nevertheless we have to check if current
                                       * feature overrides this characteristic.
                                       */
 -                                    final Property cp = feature.getProperty(propertyType.getName().toString());
 -                                    if (cp instanceof Attribute<?>) {            // Should always be true, but we are paranoiac.
 -                                        Attribute<?> ca = ((Attribute<?>) cp).characteristics().get(cn.toString());
 +                                    final Object cp = feature.getProperty(propertyType.getName().toString());
 +                                    if (cp instanceof AbstractAttribute<?>) {            // Should always be true, but we are paranoiac.
 +                                        AbstractAttribute<?> ca = ((AbstractAttribute<?>) cp).characteristics().get(cn.toString());
                                          if (ca != null) cv = ca.getValues();
                                      }
                                  }
diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java
index f0533e28f0,b936b9d522..b0be4785f0
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java
@@@ -57,14 -63,18 +57,14 @@@ abstract class BinaryGeometryFilter<R,G
  
      /**
       * The first of the two expressions to be used by this function.
 -     *
 -     * @see BinarySpatialOperator#getOperand1()
       */
-     @SuppressWarnings("serial")         // Not statically typed as Serializable.
+     @SuppressWarnings("serial")         // Most SIS implementations are serializable.
      protected final Expression<? super R, GeometryWrapper<G>> expression1;
  
      /**
       * The second of the two expressions to be used by this function.
 -     *
 -     * @see BinarySpatialOperator#getOperand2()
       */
-     @SuppressWarnings("serial")         // Not statically typed as Serializable.
+     @SuppressWarnings("serial")         // Most SIS implementations are serializable.
      protected final Expression<? super R, GeometryWrapper<G>> expression2;
  
      /**
diff --cc storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureQuery.java
index 734da76a62,e7409c28ba..9edc48afa9
--- a/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureQuery.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureQuery.java
@@@ -106,7 -108,8 +106,8 @@@ public class FeatureQuery extends Quer
       * @see #getSelection()
       * @see #setSelection(Filter)
       */
+     @SuppressWarnings("serial")                 // Most SIS implementations are serializable.
 -    private Filter<? super Feature> selection;
 +    private Filter<? super AbstractFeature> selection;
  
      /**
       * The number of feature instances to skip from the beginning.
@@@ -134,7 -137,8 +135,8 @@@
       * @see #getSortBy()
       * @see #setSortBy(SortBy)
       */
+     @SuppressWarnings("serial")                 // Most SIS implementations are serializable.
 -    private SortBy<Feature> sortBy;
 +    private SortBy<AbstractFeature> sortBy;
  
      /**
       * Hint used by resources to optimize returned features.
@@@ -419,7 -418,8 +422,8 @@@
           * The literal, value reference or more complex expression to be retrieved by a {@code Query}.
           * Never {@code null}.
           */
+         @SuppressWarnings("serial")
 -        public final Expression<? super Feature, ?> expression;
 +        public final Expression<? super AbstractFeature, ?> expression;
  
          /**
           * The name to assign to the expression result, or {@code null} if unspecified.