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 2022/12/13 10:35:00 UTC

[sis] 01/01: Merge branch 'geoapi-4.0' into geoapi-3.1. This is the upgrade from Java 8 to Java 11.

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 f5bc633ac346e45db8e2cbab901c15cd7eb6e09e
Merge: fee1fa85b1 9c4a34851d
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Tue Dec 13 11:33:53 2022 +0100

    Merge branch 'geoapi-4.0' into geoapi-3.1.
    This is the upgrade from Java 8 to Java 11.
    
    https://issues.apache.org/jira/browse/SIS-561

 README                                             |   2 +-
 application/sis-console/pom.xml                    |   5 +
 .../org/apache/sis/console/IdentifierCommand.java  |   1 +
 .../org/apache/sis/console/MetadataCommand.java    |   4 +-
 .../apache/sis/console/ResourcesDownloader.java    |   3 +-
 .../org/apache/sis/console/TransformCommand.java   |   3 +-
 application/sis-javafx/pom.xml                     |   5 +
 application/sis-javafx/src/main/artifact/README    |   6 +-
 application/sis-javafx/src/main/artifact/bin/sis   |   2 +-
 .../sis-javafx/src/main/artifact/bin/sis.bat       |   2 +-
 application/sis-javafx/src/main/artifact/bin/sisfx |   2 +-
 .../sis-javafx/src/main/artifact/bin/sisfx.bat     |   2 +-
 .../main/java/org/apache/sis/gui/DataViewer.java   |   3 +-
 .../main/java/org/apache/sis/gui/RecentFiles.java  |   4 +-
 .../apache/sis/gui/coverage/CoverageControls.java  |   4 +-
 .../apache/sis/gui/coverage/CoverageExplorer.java  |  24 +-
 .../apache/sis/gui/coverage/CoverageStyling.java   |   2 +-
 .../org/apache/sis/gui/coverage/package-info.java  |   2 +-
 .../apache/sis/gui/dataset/ExpandedFeature.java    |   6 +-
 .../org/apache/sis/gui/dataset/PathAction.java     |   3 +-
 .../java/org/apache/sis/gui/map/StatusBar.java     |  63 +---
 .../java/org/apache/sis/gui/map/package-info.java  |   2 +-
 .../sis/gui/metadata/StandardMetadataTree.java     |   6 +-
 .../apache/sis/gui/referencing/AuthorityCodes.java |   3 +-
 .../gui/referencing/PositionableProjection.java    |   2 +-
 .../gui/referencing/RecentReferenceSystems.java    |  20 +-
 .../apache/sis/gui/referencing/package-info.java   |   2 +-
 .../org/apache/sis/internal/gui/GUIUtilities.java  |   4 +-
 .../apache/sis/internal/gui/ImageConverter.java    |   5 +-
 .../org/apache/sis/internal/gui/RecentChoices.java |   4 +-
 .../apache/sis/internal/gui/GUIUtilitiesTest.java  |   7 +-
 application/sis-openoffice/pom.xml                 |   5 +
 application/sis-webapp/pom.xml                     |  10 +
 .../org/apache/sis/services}/OSGiActivator.java    |   7 +-
 .../org/apache/sis/services}/ServletListener.java  |   8 +-
 .../org/apache/sis/internal/book/Assembler.java    |  10 +-
 .../apache/sis/internal/book/CodeColorizer.java    |   7 +-
 .../org/apache/sis/internal/book/package-info.java |   4 +-
 .../org/apache/sis/coverage/SampleDimension.java   |   4 +-
 .../sis/coverage/grid/BufferedGridCoverage.java    |   3 +-
 .../sis/coverage/grid/GridCoordinatesView.java     |   5 +-
 .../org/apache/sis/coverage/grid/GridCoverage.java |   2 +-
 .../apache/sis/coverage/grid/GridCoverage2D.java   |   3 +-
 .../apache/sis/coverage/grid/GridDerivation.java   |   3 +-
 .../org/apache/sis/coverage/grid/GridExtent.java   |  42 +--
 .../apache/sis/coverage/grid/GridExtentCRS.java    |   3 +-
 .../org/apache/sis/coverage/grid/GridGeometry.java |  31 +-
 .../apache/sis/coverage/grid/ImageRenderer.java    |   3 +-
 .../apache/sis/coverage/grid/PixelTranslation.java |  23 +-
 .../org/apache/sis/coverage/grid/package-info.java |   2 +-
 .../org/apache/sis/feature/AbstractAttribute.java  |   4 +-
 .../org/apache/sis/feature/AbstractFeature.java    |   7 +-
 .../org/apache/sis/feature/DefaultFeatureType.java |   2 +-
 .../org/apache/sis/feature/FeatureOperations.java  |   2 +-
 .../java/org/apache/sis/feature/LinkOperation.java |   3 +-
 .../sis/feature/builder/FeatureTypeBuilder.java    |   9 +-
 .../org/apache/sis/filter/AssociationValue.java    |   6 +-
 .../java/org/apache/sis/filter/BinaryFunction.java |   3 +-
 .../apache/sis/filter/BinaryGeometryFilter.java    |   3 +-
 .../java/org/apache/sis/filter/Capabilities.java   |   3 +-
 .../org/apache/sis/filter/ComparisonFilter.java    |   3 +-
 .../org/apache/sis/filter/ConvertFunction.java     |   4 +-
 .../java/org/apache/sis/filter/DistanceFilter.java |   7 +-
 .../org/apache/sis/filter/IdentifierFilter.java    |   5 +-
 .../java/org/apache/sis/filter/LeafExpression.java |   3 +-
 .../java/org/apache/sis/filter/LikeFilter.java     |   7 +-
 .../java/org/apache/sis/filter/LogicalFilter.java  |   5 +-
 .../java/org/apache/sis/filter/Optimization.java   |   5 +-
 .../java/org/apache/sis/filter/PropertyValue.java  |   4 +-
 .../java/org/apache/sis/filter/UnaryFunction.java  |   3 +-
 .../java/org/apache/sis/image/BandSelectImage.java |   3 +-
 .../java/org/apache/sis/image/ComputedImage.java   |   2 +-
 .../java/org/apache/sis/image/ImageCombiner.java   |   5 +-
 .../java/org/apache/sis/image/PlanarImage.java     |  15 +-
 .../sis/image/PositionalConsistencyImage.java      |   3 +-
 .../org/apache/sis/image/SourceAlignedImage.java   |   3 +-
 .../main/java/org/apache/sis/image/TileCache.java  |   3 +-
 .../org/apache/sis/index/tree/PointTreeNode.java   |   2 +-
 .../org/apache/sis/index/tree/QuadTreeNode.java    |   4 +-
 .../internal/coverage/j2d/BatchComputedImage.java  |   4 +-
 .../internal/coverage/j2d/ColorModelFactory.java   |  31 +-
 .../sis/internal/coverage/j2d/ColorModelPatch.java | 121 -------
 .../internal/coverage/j2d/DeferredProperty.java    |   4 +-
 .../sis/internal/coverage/j2d/ImageUtilities.java  |   2 +-
 .../coverage/j2d/MultiBandsIndexColorModel.java    |  43 ++-
 .../sis/internal/coverage/j2d/TiledImage.java      |   4 +-
 .../sis/internal/coverage/j2d/package-info.java    |   2 +-
 .../sis/internal/feature/AttributeConvention.java  |  30 +-
 .../sis/internal/feature/GeometryFactories.java    |   3 +-
 .../sis/internal/feature/MovingFeatures.java       |   7 +-
 .../internal/feature/SpatialOperationContext.java  |   5 +-
 .../apache/sis/internal/feature/j2d/Factory.java   |   4 +-
 .../sis/internal/feature/j2d/PathBuilder.java      |   2 +-
 .../apache/sis/internal/feature/j2d/Wrapper.java   |   4 +-
 .../internal/feature/jts/PathIteratorAdapter.java  |   6 +-
 .../sis/internal/feature/jts/ShapeConverter.java   |   5 +-
 .../sis/internal/filter/GeometryConverter.java     |   3 +-
 .../java/org/apache/sis/internal/filter/Node.java  |   1 +
 .../sis/internal/filter/SortByComparator.java      |   2 +-
 .../internal/filter/sqlmm/GeometryConstructor.java |   7 +-
 .../sis/internal/filter/sqlmm/OneGeometry.java     |   7 +-
 .../apache/sis/internal/filter/sqlmm/Registry.java |   4 +-
 .../sis/internal/filter/sqlmm/ST_Transform.java    |   3 +-
 .../sis/internal/filter/sqlmm/TwoGeometries.java   |   7 +-
 .../internal/processing/image/TiledProcess.java    |   3 +-
 .../coverage/grid/BufferedGridCoverageTest.java    |   5 +-
 .../coverage/grid/ConvertedGridCoverageTest.java   |  10 +-
 .../sis/coverage/grid/GridCoverage2DTest.java      |   7 +-
 .../sis/coverage/grid/GridDerivationTest.java      |   8 +-
 .../apache/sis/coverage/grid/GridExtentTest.java   |   4 +-
 .../apache/sis/feature/AbstractOperationTest.java  |   4 +-
 .../sis/feature/CharacteristicTypeMapTest.java     |  15 +-
 .../org/apache/sis/feature/CustomAttribute.java    |   7 +-
 .../sis/feature/DefaultAssociationRoleTest.java    |  17 +-
 .../sis/feature/DefaultAttributeTypeTest.java      |   5 +-
 .../apache/sis/feature/DefaultFeatureTypeTest.java |   3 +-
 .../org/apache/sis/feature/FeatureFormatTest.java  |   7 +-
 .../apache/sis/feature/FeatureMemoryBenchmark.java |  11 +-
 .../apache/sis/feature/FeatureOperationsTest.java  |   7 +-
 .../org/apache/sis/feature/FeatureTestCase.java    |  20 +-
 .../org/apache/sis/feature/LinkOperationTest.java  |   6 +-
 .../apache/sis/feature/PropertySingletonTest.java  |   8 +-
 .../sis/feature/SingletonAssociationTest.java      |  19 +-
 .../sis/feature/StringJoinOperationTest.java       |   3 +-
 .../feature/builder/AttributeTypeBuilderTest.java  |  13 +-
 .../builder/CharacteristicTypeBuilderTest.java     |   6 +-
 .../feature/builder/FeatureTypeBuilderTest.java    |   4 +-
 .../org/apache/sis/filter/LogicalFilterTest.java   |   8 +-
 .../sis/internal/coverage/j2d/ColorizerTest.java   |   4 +-
 .../internal/feature/AttributeConventionTest.java  |  19 +-
 .../sis/internal/feature/GeometriesTestCase.java   |   8 +-
 .../apache/sis/internal/feature/jts/JTSTest.java   |   4 +-
 .../sis/internal/filter/FunctionNamesTest.java     |   8 +-
 .../internal/filter/sqlmm/RegistryTestCase.java    |   6 +-
 core/sis-metadata/pom.xml                          |   5 +
 .../sis/internal/jaxb/IdentifierMapAdapter.java    |   8 +-
 .../sis/internal/jaxb/NonMarshalledAuthority.java  |   5 +-
 .../apache/sis/internal/jaxb/TypeRegistration.java |   7 +-
 .../internal/jaxb/metadata/replace/SensorType.java |   2 +-
 .../apache/sis/internal/metadata/ExcludedSet.java  |   2 -
 .../apache/sis/internal/metadata/NameMeaning.java  |  27 +-
 .../sis/internal/metadata/RecordSchemaSIS.java     |   5 +-
 .../internal/metadata/TransformationAccuracy.java  |   6 +-
 .../sis/internal/xml/StreamWriterDelegate.java     |   2 +-
 .../apache/sis/metadata/PropertyInformation.java   |   4 +-
 .../java/org/apache/sis/metadata/TreeNode.java     |   4 +-
 .../iso/DefaultExtendedElementInformation.java     |  16 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |  50 +--
 .../sis/metadata/iso/citation/DefaultCitation.java |   6 +-
 .../sis/metadata/iso/citation/DefaultContact.java  |  12 +-
 .../iso/citation/DefaultResponsibleParty.java      |  18 +-
 .../metadata/iso/citation/DefaultTelephone.java    |  10 +-
 .../iso/constraint/DefaultReleasability.java       |  26 +-
 .../sis/metadata/iso/constraint/package-info.java  |   2 +-
 .../iso/content/DefaultCoverageDescription.java    |   8 +-
 .../DefaultFeatureCatalogueDescription.java        |   8 +-
 .../iso/content/DefaultRangeDimension.java         |   4 +-
 .../metadata/iso/distribution/DefaultDataFile.java |   6 +-
 .../DefaultDigitalTransferOptions.java             |   4 +-
 .../metadata/iso/distribution/DefaultFormat.java   |  12 +-
 .../metadata/iso/distribution/DefaultMedium.java   |   4 +-
 .../distribution/DefaultStandardOrderProcess.java  |  24 --
 .../iso/identification/AbstractIdentification.java |   4 +-
 .../DefaultAggregateInformation.java               |  10 +-
 .../identification/DefaultDataIdentification.java  |   8 +-
 .../metadata/iso/lineage/DefaultProcessStep.java   |   4 +-
 .../sis/metadata/iso/lineage/DefaultSource.java    |   8 +-
 .../maintenance/DefaultMaintenanceInformation.java |  12 +-
 .../sis/metadata/iso/quality/AbstractElement.java  |  28 +-
 .../iso/quality/AbstractTemporalAccuracy.java      |   2 +-
 .../iso/quality/DefaultCoverageResult.java         |   6 +-
 .../metadata/iso/quality/DefaultDataQuality.java   |   6 +-
 .../DefaultNonQuantitativeAttributeAccuracy.java   |   2 +-
 .../iso/quality/DefaultQuantitativeResult.java     |   6 +-
 .../sis/metadata/iso/quality/DefaultScope.java     |   6 +-
 .../sis/metadata/iso/quality/DefaultUsability.java |   2 +-
 .../apache/sis/metadata/sql/MetadataWriter.java    |   5 +-
 .../org/apache/sis/util/iso/DefaultLocalName.java  |   3 +-
 .../apache/sis/util/iso/DefaultNameFactory.java    |   2 +-
 .../org/apache/sis/util/iso/DefaultRecord.java     |   3 +-
 .../org/apache/sis/util/iso/DefaultRecordType.java |   2 +-
 .../org/apache/sis/util/iso/DefaultTypeName.java   |  17 +-
 .../main/java/org/apache/sis/util/iso/Names.java   |   4 +-
 .../java/org/apache/sis/util/iso/package-info.java |   2 +-
 .../java/org/apache/sis/xml/Implementation.java    |  55 +---
 .../java/org/apache/sis/xml/MarshalContext.java    |   2 +-
 .../java/org/apache/sis/xml/MarshallerPool.java    |   4 +-
 .../main/java/org/apache/sis/xml/Namespaces.java   |  71 ++--
 .../src/main/java/org/apache/sis/xml/Pooled.java   |  50 +--
 .../java/org/apache/sis/xml/PooledTemplate.java    |   7 +-
 .../main/java/org/apache/sis/xml/Transformer.java  |  19 +-
 .../org/apache/sis/xml/TransformingReader.java     |   6 +-
 .../org/apache/sis/xml/TransformingWriter.java     |  11 +-
 .../src/main/java/org/apache/sis/xml/XML.java      |  15 +-
 .../main/java/org/apache/sis/xml/package-info.java |   2 +-
 .../internal/jaxb/cat/CodeListMarshallingTest.java |   8 +-
 .../sis/internal/jaxb/cat/EnumMarshallingTest.java |   4 +-
 .../sis/internal/jaxb/gco/MultiplicityTest.java    |   4 +-
 .../metadata/ImplementationHelperTest.java         |   5 +-
 .../apache/sis/internal/metadata/MergerTest.java   |  17 +-
 .../java/org/apache/sis/metadata/HashCodeTest.java |   8 +-
 .../apache/sis/metadata/InformationMapTest.java    |   6 +-
 .../apache/sis/metadata/MetadataStandardTest.java  |   5 +-
 .../sis/metadata/ModifiableMetadataTest.java       |   8 +-
 .../apache/sis/metadata/PropertyAccessorTest.java  |  11 +-
 .../java/org/apache/sis/metadata/PrunerTest.java   |  12 +-
 .../java/org/apache/sis/metadata/TreeNodeTest.java |  10 +-
 .../apache/sis/metadata/TreeTableFormatTest.java   |  19 +-
 .../java/org/apache/sis/metadata/ValueMapTest.java |  64 ++--
 .../sis/metadata/iso/CustomMetadataTest.java       |   4 +-
 .../sis/metadata/iso/citation/CitationsTest.java   |   3 +-
 .../metadata/iso/citation/DefaultCitationTest.java |  24 +-
 .../metadata/iso/citation/DefaultContactTest.java  |   8 +-
 .../iso/citation/DefaultResponsibilityTest.java    |   6 +-
 .../constraint/DefaultLegalConstraintsTest.java    |   4 +-
 .../sis/metadata/iso/extent/DefaultExtentTest.java |   4 +-
 .../identification/DefaultBrowseGraphicTest.java   |   7 +-
 .../identification/DefaultCoupledResourceTest.java |  10 +-
 .../DefaultDataIdentificationTest.java             |  16 +-
 .../DefaultServiceIdentificationTest.java          |  10 +-
 .../metadata/iso/quality/AbstractElementTest.java  |   4 +-
 .../iso/quality/DefaultDomainConsistencyTest.java  |   7 +-
 .../iso/quality/DefaultQuantitativeResultTest.java |  11 +-
 .../sis/metadata/sql/MetadataFallbackVerifier.java |   4 +-
 .../sis/metadata/sql/MetadataSourceTest.java       |   3 +-
 .../sis/metadata/sql/MetadataWriterTest.java       |   4 +-
 .../java/org/apache/sis/test/MetadataAssert.java   |   3 +-
 .../org/apache/sis/test/mock/MetadataMock.java     |   3 +-
 .../apache/sis/test/xml/DocumentComparator.java    |  26 +-
 .../org/apache/sis/test/xml/PackageVerifier.java   |  49 +--
 .../apache/sis/util/iso/DefaultRecordTypeTest.java |   4 +-
 .../apache/sis/util/iso/DefaultScopedNameTest.java |   7 +-
 .../apache/sis/util/iso/NameMarshallingTest.java   |   4 +-
 .../java/org/apache/sis/util/iso/TypesTest.java    |   3 +-
 .../org/apache/sis/xml/MarshallerPoolTest.java     |   4 -
 .../org/apache/sis/xml/RenameListGenerator.java    |   9 +-
 .../apache/sis/xml/TransformingNamespacesTest.java |   9 +-
 .../org/apache/sis/xml/XLinkMarshallingTest.java   |   6 +-
 .../apache/sis/internal/map/ListChangeEvent.java   |   9 +-
 .../org/apache/sis/internal/map/SEPortrayer.java   |   7 +-
 .../coverage/MultiResolutionCoverageLoader.java    |   5 +-
 .../main/java/org/apache/sis/portrayal/Canvas.java |   2 +-
 .../java/org/apache/sis/portrayal/MapLayers.java   |   2 +-
 .../apache/sis/internal/map/SEPortrayerTest.java   |   7 +-
 .../MultiResolutionCoverageLoaderTest.java         |  13 +-
 core/sis-referencing-by-identifiers/pom.xml        |   5 +
 .../referencing/gazetteer/FinalLocationType.java   |   8 +-
 .../referencing/gazetteer/GazetteerFactory.java    |   4 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |   3 +-
 .../referencing/gazetteer/LocationTypeTest.java    |   4 +-
 core/sis-referencing/pom.xml                       |   5 +
 .../org/apache/sis/geometry/CoordinateFormat.java  |   3 +-
 .../java/org/apache/sis/geometry/Envelopes.java    |   2 +-
 .../apache/sis/geometry/WraparoundAdjustment.java  |   6 +-
 .../referencing/CC_GeneralOperationParameter.java  |   5 +-
 .../jaxb/referencing/CC_OperationMethod.java       |   5 +-
 .../referencing/CC_OperationParameterGroup.java    |   2 +-
 .../sis/internal/referencing/AxisDirections.java   |  22 +-
 .../internal/referencing/CoordinateOperations.java |  11 +-
 .../referencing/GeodeticObjectBuilder.java         |   8 +-
 .../apache/sis/internal/referencing/Legacy.java    |  10 +-
 .../referencing/PositionalAccuracyConstant.java    |   4 +-
 .../internal/referencing/ReferencingUtilities.java |   4 +-
 .../internal/referencing/j2d/TileOrganizer.java    |   2 +-
 .../sis/internal/referencing/provider/Affine.java  |   8 +-
 .../provider/DatumShiftGridCompressed.java         |   4 +-
 .../referencing/provider/DatumShiftGridFile.java   |   2 +-
 .../provider/FranceGeocentricInterpolation.java    |   6 +-
 .../referencing/provider/GeodeticOperation.java    |   2 +-
 .../referencing/provider/MapProjection.java        |   4 +-
 .../referencing/provider/MapProjection3D.java      |   6 +-
 .../internal/referencing/provider/Molodensky.java  |   3 +-
 .../sis/internal/referencing/provider/NTv2.java    |   2 +-
 .../provider/PolarStereographicNorth.java          |   3 +-
 .../main/java/org/apache/sis/io/wkt/Element.java   |   5 +-
 .../main/java/org/apache/sis/io/wkt/Formatter.java |   5 +-
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |   8 +-
 .../org/apache/sis/io/wkt/MathTransformParser.java |   3 +-
 .../org/apache/sis/io/wkt/SingletonElement.java    |   2 +-
 .../java/org/apache/sis/io/wkt/Transliterator.java |  23 +-
 .../java/org/apache/sis/io/wkt/VerticalInfo.java   |   3 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  |  12 +-
 .../main/java/org/apache/sis/io/wkt/WKTFormat.java |   3 +-
 .../parameter/DefaultParameterDescriptorGroup.java |  13 +-
 .../sis/parameter/DefaultParameterValueGroup.java  |   3 +-
 .../sis/parameter/MapProjectionParameters.java     |  13 +-
 .../org/apache/sis/parameter/ParameterFormat.java  |   3 +-
 .../org/apache/sis/parameter/TensorParameters.java |   5 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |   2 +-
 .../java/org/apache/sis/referencing/Builder.java   |   4 +-
 .../main/java/org/apache/sis/referencing/CRS.java  |  29 +-
 .../java/org/apache/sis/referencing/CommonCRS.java |   5 +-
 .../sis/referencing/EPSGFactoryFallback.java       |   3 +-
 .../sis/referencing/crs/DefaultCompoundCRS.java    |  14 +-
 .../cs/DefaultCoordinateSystemAxis.java            |  27 +-
 .../org/apache/sis/referencing/cs/Normalizer.java  |   3 +-
 .../sis/referencing/datum/DatumShiftGrid.java      |   4 +-
 .../org/apache/sis/referencing/datum/formulas.html |   2 +-
 .../referencing/factory/AuthorityFactoryProxy.java |  31 +-
 .../sis/referencing/factory/CacheRecord.java       |   2 +-
 .../factory/CommonAuthorityFactory.java            |   4 +-
 .../factory/GeodeticAuthorityFactory.java          |   5 +-
 .../referencing/factory/GeodeticObjectFactory.java |  12 +-
 .../factory/IdentifiedObjectFinder.java            |   5 +-
 .../referencing/factory/IdentifiedObjectSet.java   |   2 +-
 .../factory/MultiAuthoritiesFactory.java           |   6 +-
 .../referencing/factory/sql/EPSGCodeFinder.java    |  15 +-
 .../referencing/factory/sql/EPSGDataAccess.java    |  13 +-
 .../sis/referencing/factory/sql/EPSGFactory.java   |   5 +-
 .../factory/sql/InstallationScriptProvider.java    |   3 +-
 .../operation/AbstractCoordinateOperation.java     |   5 +-
 .../operation/AbstractSingleOperation.java         |   2 +-
 .../operation/CoordinateOperationFinder.java       |   2 +-
 .../operation/CoordinateOperationRegistry.java     |   5 +-
 .../operation/DefaultConcatenatedOperation.java    |  10 +-
 .../DefaultCoordinateOperationFactory.java         |  14 +-
 .../operation/DefaultOperationMethod.java          |  20 +-
 .../operation/InverseOperationMethod.java          |   2 +-
 .../operation/builder/LinearTransformBuilder.java  |   2 +-
 .../operation/builder/ResidualGrid.java            |   5 +-
 .../sis/referencing/operation/matrix/Matrices.java |   2 +-
 .../transform/CoordinateSystemTransform.java       |   3 +-
 .../transform/DefaultMathTransformFactory.java     |  46 +--
 .../transform/EllipsoidToCentricTransform.java     |   5 +-
 .../operation/transform/MathTransformProvider.java |   2 +-
 .../operation/transform/MathTransforms.java        |   5 +-
 .../operation/transform/PoleRotation.java          |   6 +-
 .../transform/SpecializableTransform.java          |   7 +-
 .../referencing/operation/transform/formulas.html  |   2 +-
 .../operation/transform/package-info.java          |   2 +-
 .../org/apache/sis/referencing/package-info.java   |   2 +-
 .../org/apache/sis/geometry/EnvelopesTest.java     |   4 +-
 .../CC_OperationParameterGroupTest.java            |   9 +-
 .../sis/internal/jaxb/referencing/CodeTest.java    |   6 +-
 .../referencing/SecondDefiningParameterTest.java   |  16 +-
 .../referencing/EllipsoidalHeightCombinerTest.java |   7 +-
 .../sis/internal/referencing/FormulasTest.java     |   7 +-
 .../sis/internal/referencing/WKTKeywordsTest.java  |   5 +-
 .../provider/ParameterNameTableGenerator.java      |   3 +-
 .../sis/io/wkt/GeodeticObjectParserTest.java       |   4 +-
 .../org/apache/sis/io/wkt/WKTDictionaryTest.java   |  12 +-
 .../java/org/apache/sis/io/wkt/WKTFormatTest.java  |   7 +-
 .../DefaultParameterDescriptorGroupTest.java       |   9 +-
 .../parameter/DefaultParameterValueGroupTest.java  |  16 +-
 .../sis/parameter/DefaultParameterValueTest.java   |   4 +-
 .../sis/parameter/MapProjectionParametersTest.java |   3 +-
 .../apache/sis/parameter/ParameterFormatTest.java  |   2 +-
 .../sis/parameter/ParameterMarshallingTest.java    |   7 +-
 .../org/apache/sis/parameter/ParametersTest.java   |   6 +-
 .../apache/sis/parameter/TensorParametersTest.java |   3 +-
 .../org/apache/sis/parameter/TensorValuesTest.java |  10 +-
 .../referencing/AbstractIdentifiedObjectTest.java  |  11 +-
 .../sis/referencing/EPSGFactoryFallbackTest.java   |  24 +-
 .../sis/referencing/crs/AbstractCRSTest.java       |  10 +-
 .../referencing/crs/DefaultCompoundCRSTest.java    |  23 +-
 .../sis/referencing/crs/DefaultDerivedCRSTest.java |   4 +-
 .../referencing/crs/DefaultEngineeringCRSTest.java |  10 +-
 .../sis/referencing/crs/DefaultImageCRSTest.java   |  10 +-
 .../referencing/crs/DefaultTemporalCRSTest.java    |   6 +-
 .../apache/sis/referencing/crs/HardCodedCRS.java   |  11 +-
 .../apache/sis/referencing/cs/AbstractCSTest.java  |  18 +-
 .../sis/referencing/cs/CoordinateSystemsTest.java  |  16 +-
 .../sis/referencing/cs/DefaultCartesianCSTest.java |   9 +-
 .../sis/referencing/cs/DefaultCompoundCSTest.java  |   5 +-
 .../cs/DefaultCoordinateSystemAxisTest.java        |   4 +-
 .../referencing/cs/DefaultCylindricalCSTest.java   |   4 +-
 .../sis/referencing/cs/DefaultPolarCSTest.java     |   4 +-
 .../sis/referencing/cs/DefaultSphericalCSTest.java |   4 +-
 .../org/apache/sis/referencing/cs/HardCodedCS.java |  31 +-
 .../apache/sis/referencing/cs/NormalizerTest.java  |   8 +-
 .../datum/DefaultPrimeMeridianTest.java            |   5 +-
 .../datum/DefaultVerticalDatumTest.java            |  11 +-
 .../factory/CommonAuthorityFactoryTest.java        |  18 +-
 .../factory/GeodeticObjectFactoryTest.java         |   3 +-
 .../factory/IdentifiedObjectFinderTest.java        |   4 +-
 .../factory/MultiAuthoritiesFactoryTest.java       |  30 +-
 .../factory/sql/epsg/DataScriptFormatter.java      |   3 +-
 .../operation/CoordinateOperationFinderTest.java   |  11 +-
 .../DefaultConcatenatedOperationTest.java          |  12 +-
 .../operation/DefaultConversionTest.java           |  13 +-
 .../operation/HardCodedConversions.java            |  12 +-
 .../builder/LinearTransformBuilderTest.java        |   7 +-
 .../sis/referencing/operation/projection/NoOp.java |   6 +-
 .../projection/SatelliteTrackingTest.java          |   4 +-
 .../operation/transform/CoordinateDomain.java      |   2 +-
 .../transform/DefaultMathTransformFactoryTest.java |   3 +-
 .../transform/MathTransformFactoryBase.java        |   3 +-
 .../transform/MathTransformFactoryMock.java        |   3 +-
 .../transform/OperationMethodSetTest.java          |  10 +-
 .../operation/transform/SinusoidalShiftGrid.java   |   4 +-
 .../transform/WraparoundTransformTest.java         |  10 +-
 .../report/CoordinateOperationMethods.java         |   2 +-
 .../report/CoordinateReferenceSystems.java         |  11 +-
 .../sis/test/integration/ConsistencyTest.java      |   7 +-
 .../apache/sis/test/integration/MetadataTest.java  |  90 +++--
 core/sis-utility/pom.xml                           |  16 -
 .../sis/internal/converter/SystemRegistry.java     |   7 +-
 .../sis/internal/converter/package-info.java       |   7 +-
 .../sis/internal/{jdk9 => jdk17}/HexFormat.java    |   2 +-
 .../java/org/apache/sis/internal/jdk17/JDK17.java  |  72 ++++
 .../sis/internal/{jdk9 => jdk17}/package-info.java |   6 +-
 .../java/org/apache/sis/internal/jdk9/JDK9.java    | 366 ---------------------
 .../sis/internal/system/DefaultFactories.java      |  76 +++--
 .../apache/sis/internal/system/SystemListener.java |   3 +-
 .../apache/sis/internal/system/package-info.java   |   2 +-
 .../java/org/apache/sis/internal/util/Cloner.java  |   8 +-
 .../apache/sis/internal/util/CollectionsExt.java   | 232 ++++---------
 .../apache/sis/internal/util/DefinitionURI.java    |  13 +-
 .../apache/sis/internal/util/FinalFieldSetter.java |   6 +-
 .../org/apache/sis/internal/util/Numerics.java     |  16 +-
 .../org/apache/sis/internal/util/package-info.java |   2 +-
 .../main/java/org/apache/sis/math/ArrayVector.java |  13 +-
 .../main/java/org/apache/sis/math/Fraction.java    |  17 +-
 .../org/apache/sis/math/LinearlyDerivedVector.java |   8 +-
 .../java/org/apache/sis/math/MathFunctions.java    |   2 +-
 .../java/org/apache/sis/math/SequenceVector.java   |   5 +-
 .../java/org/apache/sis/math/StatisticsFormat.java |   2 +-
 .../src/main/java/org/apache/sis/math/Vector.java  |  41 +--
 .../org/apache/sis/measure/AbstractConverter.java  |   3 +-
 .../java/org/apache/sis/measure/UnitDimension.java |  23 +-
 .../java/org/apache/sis/measure/UnitFormat.java    |  10 +-
 .../src/main/java/org/apache/sis/setup/About.java  |   3 +-
 .../java/org/apache/sis/setup/GeometryLibrary.java |   2 -
 .../main/java/org/apache/sis/setup/OptionKey.java  |   2 +-
 .../apache/sis/setup/OptionalInstallations.java    |   3 +-
 .../java/org/apache/sis/util/CharSequences.java    |   4 +-
 .../src/main/java/org/apache/sis/util/Classes.java |   4 +-
 .../sis/util/DefaultInternationalString.java       |  10 +-
 .../src/main/java/org/apache/sis/util/Locales.java |   2 +-
 .../sis/util/collection/BackingStoreException.java |   2 +-
 .../sis/util/collection/DefaultTreeTable.java      |  20 +-
 .../sis/util/collection/FrequencySortedSet.java    |   3 +-
 .../apache/sis/util/collection/IntegerList.java    |   9 +-
 .../apache/sis/util/collection/TableColumn.java    |   3 +-
 .../sis/util/collection/TreeTableFormat.java       |   4 +-
 .../java/org/apache/sis/util/logging/Logging.java  |  86 ++---
 .../apache/sis/util/logging/PerformanceLevel.java  |   8 +-
 .../org/apache/sis/util/logging/package-info.java  |   2 +-
 .../java/org/apache/sis/util/resources/Loader.java |   3 +-
 .../apache/sis/internal/util/AbstractMapTest.java  |   3 +-
 .../sis/internal/util/CheckedArrayListTest.java    |   6 +-
 .../sis/internal/util/CollectionsExtTest.java      |  27 +-
 .../org/apache/sis/internal/util/NumericsTest.java |  35 +-
 .../org/apache/sis/measure/SystemUnitTest.java     |   9 +-
 .../org/apache/sis/measure/UnitDimensionTest.java  |   3 +-
 .../org/apache/sis/measure/UnitServicesTest.java   |   4 +-
 .../org/apache/sis/test/ProjectDirectories.java    |   3 +-
 .../test/java/org/apache/sis/test/TestRunner.java  |   3 +-
 .../org/apache/sis/util/collection/CacheTest.java  |  10 +-
 .../sis/util/collection/CodeListSetTest.java       |   2 +-
 .../apache/sis/util/collection/DerivedSetTest.java |  10 +-
 .../util/collection/FrequencySortedSetTest.java    |   3 +-
 .../sis/util/collection/IntegerListTest.java       |   5 +-
 .../apache/sis/util/collection/LargeCodeList.java  |   2 +-
 ide-project/NetBeans/nbproject/build-impl.xml      |  25 +-
 ide-project/NetBeans/nbproject/genfiles.properties |   6 +-
 ide-project/NetBeans/nbproject/project.properties  |  17 +-
 ide-project/NetBeans/nbproject/project.xml         |   1 -
 pom.xml                                            |  28 +-
 .../profile/fra/DirectReferenceSystemTest.java     |   6 +-
 .../apache/sis/internal/earth/netcdf/GCOM_C.java   |  33 +-
 .../apache/sis/internal/earth/netcdf/GCOM_W.java   |  32 +-
 src/main/javadoc/overview.html                     |   2 +-
 storage/pom.xml                                    |   5 +
 .../storage/inflater/CompressionChannel.java       |   3 +-
 .../internal/storage/inflater/CopyFromBytes.java   |   8 +-
 .../storage/inflater/HorizontalPredictor.java      |   4 +-
 .../storage/inflater/PredictorChannel.java         |   4 +-
 .../apache/sis/internal/storage/inflater/ZIP.java  |  31 +-
 .../internal/storage/inflater/package-info.java    |   2 +-
 .../org/apache/sis/storage/geotiff/CRSBuilder.java |   7 +-
 .../sis/storage/geotiff/CompressedSubset.java      |   2 +-
 .../org/apache/sis/storage/geotiff/DataSubset.java |   2 +-
 .../apache/sis/storage/geotiff/Localization.java   |   2 +-
 .../sis/storage/geotiff/MultiResolutionImage.java  |   2 +-
 .../sis/storage/geotiff/ReversedBitsChannel.java   |   2 +-
 .../apache/sis/storage/geotiff/XMLMetadata.java    |   4 +-
 .../java/org/apache/sis/internal/netcdf/Axis.java  |   2 +-
 .../org/apache/sis/internal/netcdf/CRSBuilder.java |   3 +-
 .../org/apache/sis/internal/netcdf/Convention.java |   5 +-
 .../org/apache/sis/internal/netcdf/FeatureSet.java |   2 +-
 .../apache/sis/internal/netcdf/GridMapping.java    |   3 +-
 .../apache/sis/internal/netcdf/RasterResource.java |   5 +-
 .../org/apache/sis/internal/netcdf/Variable.java   |   2 +-
 .../sis/internal/netcdf/impl/ChannelDecoder.java   |  10 +-
 .../sis/internal/netcdf/impl/VariableInfo.java     |   3 +-
 .../sis/internal/netcdf/ucar/DecoderWrapper.java   |   6 +-
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |   4 +-
 .../apache/sis/storage/netcdf/MetadataReader.java  |  16 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |   2 +-
 storage/sis-sqlstore/pom.xml                       |   5 +
 .../apache/sis/internal/sql/feature/Analyzer.java  |   3 +-
 .../sis/internal/sql/feature/BinaryEncoding.java   |   2 +-
 .../apache/sis/internal/sql/feature/Database.java  |   4 +-
 .../sis/internal/sql/feature/PrimaryKey.java       |   5 +-
 .../sis/internal/sql/feature/QueryAnalyzer.java    |   2 +-
 .../sis/internal/sql/feature/TableAnalyzer.java    |   2 +-
 .../sis/internal/sql/postgis/RasterReader.java     |   3 +-
 .../apache/sis/storage/sql/ResourceDefinition.java |   6 +-
 .../sis/internal/storage/StoreUtilities.java       |   3 +-
 .../sis/internal/storage/TiledGridCoverage.java    |   2 +-
 .../org/apache/sis/internal/storage/csv/Store.java |   5 +-
 .../sis/internal/storage/esri/CharactersView.java  |   6 +-
 .../sis/internal/storage/esri/RawRasterReader.java |   2 +-
 .../apache/sis/internal/storage/folder/Store.java  |   5 +-
 .../apache/sis/internal/storage/io/ByteWriter.java |   5 +-
 .../sis/internal/storage/io/ChannelFactory.java    |   3 +-
 .../sis/internal/storage/wkt/FirstKeywordPeek.java |   2 +-
 .../sis/internal/storage/xml/AbstractProvider.java |  45 ++-
 .../org/apache/sis/internal/storage/xml/Store.java |   3 +-
 .../sis/internal/storage/xml/StoreProvider.java    |  19 +-
 .../sis/internal/storage/xml/package-info.java     |   2 +-
 .../sis/storage/AbstractGridCoverageResource.java  |   3 +-
 .../java/org/apache/sis/storage/FeatureNaming.java |   6 +-
 .../apache/sis/storage/GridCoverageResource.java   |   5 +-
 .../org/apache/sis/storage/StorageConnector.java   |   7 +-
 .../storage/aggregate/AggregatedFeatureSet.java    |   4 +-
 .../aggregate/ConcatenatedGridResource.java        |   3 +-
 .../sis/storage/aggregate/GroupBySample.java       |   2 +-
 .../sis/storage/aggregate/JoinFeatureSet.java      |  13 +-
 .../apache/sis/storage/event/StoreListeners.java   |  53 +--
 .../org/apache/sis/storage/event/package-info.java |   2 +-
 .../sis/internal/storage/MetadataBuilderTest.java  |   7 +-
 .../apache/sis/internal/storage/csv/StoreTest.java |  26 +-
 .../sis/internal/storage/folder/StoreTest.java     |   6 +-
 .../internal/storage/xml/MimeTypeDetectorTest.java |  11 +-
 .../org/apache/sis/storage/GridResourceMock.java   |   3 +-
 .../aggregate/ConcatenatedFeatureSetTest.java      |  17 +-
 .../sis/storage/aggregate/JoinFeatureSetTest.java  |   6 +-
 .../sis/test/storage/CoverageReadConsistency.java  |   2 +-
 .../apache/sis/internal/storage/gpx/Copyright.java |   4 +-
 .../storage/gpx/GroupAsPolylineOperation.java      |   6 +-
 .../apache/sis/internal/storage/gpx/Metadata.java  |   2 +-
 .../org/apache/sis/internal/storage/gpx/Store.java |   2 +-
 .../sis/internal/storage/gpx/StoreProvider.java    |  11 +-
 .../org/apache/sis/internal/storage/gpx/Types.java |   7 +-
 .../sis/internal/storage/gpx/WritableStore.java    |   2 +-
 .../sis/internal/storage/gpx/package-info.java     |   2 +-
 .../storage/xml/stream/FormattedWriter.java        |   6 +-
 .../storage/xml/stream/StaxDataStoreProvider.java  |  12 +-
 .../internal/storage/xml/stream/package-info.java  |   2 +-
 .../sis/internal/storage/gpx/MetadataTest.java     |  10 +-
 .../sis/internal/storage/gpx/UpdaterTest.java      |   6 +-
 .../sis/internal/storage/gpx/WriterTest.java       |  31 +-
 544 files changed, 2127 insertions(+), 3284 deletions(-)

diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java
index fa5044a87c,ab15076f17..1b136c2330
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java
@@@ -17,15 -17,15 +17,15 @@@
  package org.apache.sis.metadata;
  
  import java.util.Locale;
+ import java.util.Set;
  import java.util.Collection;
- import java.util.Collections;
  import java.lang.reflect.Method;
  import org.opengis.annotation.UML;
 -import org.opengis.annotation.Obligation;
  import org.opengis.metadata.Datatype;
 +import org.opengis.metadata.Obligation;
  import org.opengis.metadata.citation.Citation;
  import org.opengis.metadata.ExtendedElementInformation;
 -import org.opengis.metadata.citation.Responsibility;
 +import org.opengis.metadata.citation.ResponsibleParty;
  import org.opengis.util.CodeList;
  import org.opengis.util.InternationalString;
  import org.apache.sis.internal.simple.SimpleIdentifier;
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
index a664ec48df,da521123ad..56f019dfd1
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
@@@ -259,11 -253,11 +259,11 @@@ public class DefaultDataIdentification 
       * @deprecated Replaced by {@code getLocalesAndCharsets().values()}.
       */
      @Override
-     @Deprecated
+     @Deprecated(since="1.0")
      @Dependencies("getLocalesAndCharsets")
 -    @XmlElement(name = "characterSet", namespace = LegacyNamespaces.GMD)
 -    public Collection<Charset> getCharacterSets() {
 -        return FilterByVersion.LEGACY_METADATA.accept() ? LocaleAndCharset.getCharacterSets(getLocalesAndCharsets()) : null;
 +    // @XmlElement at the end of this class.
 +    public Collection<CharacterSet> getCharacterSets() {
 +        return getLocalesAndCharsets().values().stream().map(CharacterSet::fromCharset).collect(Collectors.toSet());
      }
  
      /**
@@@ -277,14 -267,10 +277,14 @@@
       *
       * @deprecated Replaced by putting values in {@link #getLocalesAndCharsets()} map.
       */
-     @Deprecated
+     @Deprecated(since="1.0")
 -    public void setCharacterSets(final Collection<? extends Charset> newValues) {
 +    public void setCharacterSets(final Collection<? extends CharacterSet> newValues) {
          // TODO: delete after SIS 1.0 release (method not needed by JAXB).
 -        setLocalesAndCharsets(LocaleAndCharset.setCharacterSets(getLocalesAndCharsets(), newValues));
 +        Collection<Charset> c = null;
 +        if (newValues != null) {
 +            c = newValues.stream().map(CharacterSet::toCharset).collect(Collectors.toSet());
 +        }
 +        setLocalesAndCharsets(LocaleAndCharset.setCharacterSets(getLocalesAndCharsets(), c));
      }
  
      /**
diff --cc core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java
index f16a26a77a,9a879c4ded..c74b632cf3
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java
@@@ -16,7 -16,8 +16,7 @@@
   */
  package org.apache.sis.internal.jaxb.cat;
  
- import java.util.Arrays;
+ import java.util.List;
 -import java.util.EnumSet;
  import java.util.Collection;
  import javax.xml.bind.JAXBException;
  import org.opengis.metadata.identification.TopicCategory;
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeTest.java
index 036c7dfec0,5778228bd3..7c8550ccc7
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeTest.java
@@@ -84,18 -84,16 +84,18 @@@ public final strictfp class TreeNodeTes
      static DefaultCitation metadataWithHierarchy() {
          final DefaultCitation citation = TreeNodeChildrenTest.metadataWithMultiOccurrences();
          AbstractParty party = new DefaultOrganisation("Some organisation", null, null, null);
 -        DefaultResponsibility responsibility = new DefaultResponsibility(Role.DISTRIBUTOR, null, party);
 +        DefaultResponsibleParty responsibility = new DefaultResponsibleParty(Role.DISTRIBUTOR);
-         responsibility.setParties(singleton(party));
++        responsibility.setParties(Set.of(party));
          assertTrue(citation.getCitedResponsibleParties().add(responsibility));
  
          // Add a second responsible party with deeper hierarchy.
          final DefaultContact contact = new DefaultContact();
          final DefaultAddress address = new DefaultAddress();
-         address.setElectronicMailAddresses(singleton("Some email"));
-         contact.setAddresses(singleton(address));
+         address.setElectronicMailAddresses(Set.of("Some email"));
+         contact.setAddresses(Set.of(address));
          party = new DefaultIndividual("Some person of contact", null, contact);
 -        responsibility = new DefaultResponsibility(Role.POINT_OF_CONTACT, null, party);
 +        responsibility = new DefaultResponsibleParty(Role.POINT_OF_CONTACT);
-         responsibility.setParties(singleton(party));
++        responsibility.setParties(Set.of(party));
          assertTrue(citation.getCitedResponsibleParties().add(responsibility));
          return citation;
      }
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeTableFormatTest.java
index 9571ad9a5d,3044c96886..999ed5059c
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeTableFormatTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeTableFormatTest.java
@@@ -112,11 -111,11 +111,11 @@@ public final strictfp class TreeTableFo
          final DefaultCitation   titled = new DefaultCitation("Some specification");
          final DefaultCitation    coded = new DefaultCitation();
          final DefaultCitation untitled = new DefaultCitation();
-         titled  .setPresentationForms(singleton(PresentationForm.DOCUMENT_HARDCOPY));
-         coded   .setPresentationForms(singleton(PresentationForm.IMAGE_HARDCOPY));
-         untitled.setCitedResponsibleParties(singleton(new DefaultResponsibleParty(Role.AUTHOR)));
+         titled  .setPresentationForms(Set.of(PresentationForm.DOCUMENT_HARDCOPY));
+         coded   .setPresentationForms(Set.of(PresentationForm.IMAGE_HARDCOPY));
 -        untitled.setCitedResponsibleParties(Set.of(new DefaultResponsibility(Role.AUTHOR, null, null)));
++        untitled.setCitedResponsibleParties(Set.of(new DefaultResponsibleParty(Role.AUTHOR)));
          final DefaultProcessing processing = new DefaultProcessing();
-         processing.setDocumentations(asList(titled, coded, untitled));
+         processing.setDocumentations(List.of(titled, coded, untitled));
          final String text = format.format(processing.asTreeTable());
          assertMultilinesEquals(
              "Processing\n" +
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/ValueMapTest.java
index d51cbd2ef5,965966d77f..fc6053874c
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/ValueMapTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/ValueMapTest.java
@@@ -91,10 -89,10 +89,10 @@@ public final strictfp class ValueMapTes
       */
      private Map<String,Object> createCitation() {
          title    = new SimpleInternationalString("Undercurrent");
 -        author   = new DefaultResponsibility();
 +        author   = new DefaultResponsibleParty();
          citation = new DefaultCitation(title);
-         author.setParties(singleton(new DefaultIndividual("Testsuya Toyoda", null, null)));
-         citation.setCitedResponsibleParties(singleton(author));
+         author.setParties(Set.of(new DefaultIndividual("Testsuya Toyoda", null, null)));
+         citation.setCitedResponsibleParties(Set.of(author));
          citation.setISBN("9782505004509");
          citation.setEdition(NilReason.UNKNOWN.createNilObject(InternationalString.class));
          return MetadataStandard.ISO_19115.asValueMap(citation, null, KeyNamePolicy.JAVABEANS_PROPERTY, ValueExistencePolicy.NON_EMPTY);
@@@ -167,14 -165,15 +165,14 @@@
          assertFalse("'all' shall be a larger map than 'map'.", map.entrySet().containsAll(all.entrySet()));
          assertArrayEquals(new SimpleEntry<?,?>[] {
              new SimpleEntry<>("title",                   title),
-             new SimpleEntry<>("alternateTitles",         emptyList()),
-             new SimpleEntry<>("dates",                   emptyList()),
+             new SimpleEntry<>("alternateTitles",         List.of()),
+             new SimpleEntry<>("dates",                   List.of()),
              new SimpleEntry<>("identifiers",             citation.getIdentifiers()),
-             new SimpleEntry<>("citedResponsibleParties", singletonList(author)),
-             new SimpleEntry<>("presentationForms",       emptySet()),
+             new SimpleEntry<>("citedResponsibleParties", List.of(author)),
+             new SimpleEntry<>("presentationForms",       Set.of()),
 -            new SimpleEntry<>("otherCitationDetails",    List.of()),
              new SimpleEntry<>("ISBN",                    "9782505004509"),
-             new SimpleEntry<>("onlineResources",         emptyList()),
-             new SimpleEntry<>("graphics",                emptyList())
+             new SimpleEntry<>("onlineResources",         List.of()),
+             new SimpleEntry<>("graphics",                List.of())
          }, all.entrySet().toArray());
      }
  
@@@ -196,15 -195,16 +194,15 @@@
          assertFalse("'all' shall be a larger map than 'map'.", map.entrySet().containsAll(all.entrySet()));
          assertArrayEquals(new SimpleEntry<?,?>[] {
              new SimpleEntry<>("title",                   title),
-             new SimpleEntry<>("alternateTitles",         emptyList()),
-             new SimpleEntry<>("dates",                   emptyList()),
+             new SimpleEntry<>("alternateTitles",         List.of()),
+             new SimpleEntry<>("dates",                   List.of()),
              new SimpleEntry<>("edition",                 NilReason.UNKNOWN.createNilObject(InternationalString.class)),
              new SimpleEntry<>("identifiers",             citation.getIdentifiers()),
-             new SimpleEntry<>("citedResponsibleParties", singletonList(author)),
-             new SimpleEntry<>("presentationForms",       emptySet()),
+             new SimpleEntry<>("citedResponsibleParties", List.of(author)),
+             new SimpleEntry<>("presentationForms",       Set.of()),
 -            new SimpleEntry<>("otherCitationDetails",    List.of()),
              new SimpleEntry<>("ISBN",                    "9782505004509"),
-             new SimpleEntry<>("onlineResources",         emptyList()),
-             new SimpleEntry<>("graphics",                emptyList())
+             new SimpleEntry<>("onlineResources",         List.of()),
+             new SimpleEntry<>("graphics",                List.of())
          }, all.entrySet().toArray());
      }
  
@@@ -229,10 -229,10 +227,10 @@@
              new SimpleEntry<>("edition",                 NilReason.UNKNOWN.createNilObject(InternationalString.class)),
              new SimpleEntry<>("editionDate",             null),
              new SimpleEntry<>("identifiers",             citation.getIdentifiers()),
-             new SimpleEntry<>("citedResponsibleParties", singletonList(author)),
-             new SimpleEntry<>("presentationForms",       emptySet()),
+             new SimpleEntry<>("citedResponsibleParties", List.of(author)),
+             new SimpleEntry<>("presentationForms",       Set.of()),
              new SimpleEntry<>("series",                  null),
 -            new SimpleEntry<>("otherCitationDetails",    List.of()),
 +            new SimpleEntry<>("otherCitationDetails",    null),
  //          new SimpleEntry<>("collectiveTitle",         null),  -- deprecated as of ISO 19115:2014.
              new SimpleEntry<>("ISBN",                    "9782505004509"),
              new SimpleEntry<>("ISSN",                    null),
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java
index 81be7caac4,13da8b21bd..8fe47ab471
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java
@@@ -83,20 -82,14 +83,20 @@@ public final strictfp class DefaultCita
          title.add(Locale.ENGLISH,  "Undercurrent");
          citation.setTitle(title);
          citation.setISBN("9782505004509");
-         citation.setPresentationForms(Arrays.asList(
+         citation.setPresentationForms(List.of(
                  PresentationForm.DOCUMENT_HARDCOPY,
                  PresentationForm.DOCUMENT_DIGITAL));
-         citation.setAlternateTitles(Collections.singleton(
+         citation.setAlternateTitles(Set.of(
                  new SimpleInternationalString("Andākarento")));   // Actually a different script of the Japanese title.
 -        citation.setCitedResponsibleParties(List.of(
 -                new DefaultResponsibility(Role.AUTHOR, null, new DefaultIndividual("Testsuya Toyoda", null, null)),
 -                new DefaultResponsibility(Role.EDITOR, Extents.WORLD, new DefaultOrganisation("Kōdansha", null, null, null))));
 +
 +        final DefaultResponsibleParty author = new DefaultResponsibleParty(Role.AUTHOR);
-         author.setParties(Collections.singleton(new DefaultIndividual("Testsuya Toyoda", null, null)));
++        author.setParties(Set.of(new DefaultIndividual("Testsuya Toyoda", null, null)));
 +
 +        final DefaultResponsibleParty editor = new DefaultResponsibleParty(Role.EDITOR);
-         editor.setParties(Collections.singleton(new DefaultOrganisation("Kōdansha", null, null, null)));
-         editor.setExtents(Collections.singleton(Extents.WORLD));
++        editor.setParties(Set.of(new DefaultOrganisation("Kōdansha", null, null, null)));
++        editor.setExtents(Set.of(Extents.WORLD));
 +
-         citation.setCitedResponsibleParties(Arrays.asList(author, editor));
++        citation.setCitedResponsibleParties(List.of(author, editor));
          return citation;
      }
  
@@@ -254,11 -247,10 +254,11 @@@
          contact.setContactInstructions(new SimpleInternationalString("Send carrier pigeon."));
          contact.getIdentifierMap().putSpecialized(IdentifierSpace.ID, "ip-protocol");
          final DefaultCitation c = new DefaultCitation("Fight against poverty");
 -        c.setCitedResponsibleParties(List.of(
 -                new DefaultResponsibility(Role.ORIGINATOR, null, new DefaultIndividual("Maid Marian", null, contact)),
 -                new DefaultResponsibility(Role.FUNDER,     null, new DefaultIndividual("Robin Hood",  null, contact))
 -        ));
 +        final DefaultResponsibleParty r1 = new DefaultResponsibleParty(Role.ORIGINATOR);
 +        final DefaultResponsibleParty r2 = new DefaultResponsibleParty(Role.FUNDER);
-         r1.setParties(Collections.singleton(new DefaultIndividual("Maid Marian", null, contact)));
-         r2.setParties(Collections.singleton(new DefaultIndividual("Robin Hood",  null, contact)));
-         c.setCitedResponsibleParties(Arrays.asList(r1, r2));
++        r1.setParties(Set.of(new DefaultIndividual("Maid Marian", null, contact)));
++        r2.setParties(Set.of(new DefaultIndividual("Robin Hood",  null, contact)));
++        c.setCitedResponsibleParties(List.of(r1, r2));
          c.getDates().add(new DefaultCitationDate(TestUtilities.date("2015-10-17 00:00:00"), DateType.ADOPTED));
          c.getPresentationForms().add(PresentationForm.PHYSICAL_OBJECT);
          /*
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java
index c1e7e2ed02,0974ad48d1..cf63664c82
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java
@@@ -44,10 -44,9 +44,10 @@@ public final strictfp class DefaultResp
      @Test
      public void testLegacyMarshalling() throws JAXBException {
          final DefaultIndividual  party = new DefaultIndividual("An author", null, null);
 -        final DefaultResponsibility  r = new DefaultResponsibility(Role.AUTHOR, null, party);
 +        final DefaultResponsibleParty r = new DefaultResponsibleParty(Role.AUTHOR);
          final DefaultCitation citation = new DefaultCitation();
-         r.setParties(singleton(party));
-         citation.setCitedResponsibleParties(singleton(r));
++        r.setParties(Set.of(party));
+         citation.setCitedResponsibleParties(Set.of(r));
          final String xml = marshal(citation, VERSION_2007);
          assertXmlEquals("<gmd:CI_Citation xmlns:gco=\"" + LegacyNamespaces.GCO + '"' +
                                          " xmlns:gmd=\"" + LegacyNamespaces.GMD + "\">\n" +
diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
index 3f09eb136e,da9f292aa5..57a20aa6e0
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
@@@ -1053,8 -1048,8 +1053,8 @@@ public abstract class Builder<B extend
              valueAlias = null;
              valueIds   = null;
          } else {
-             valueAlias = aliases    .toArray(new GenericName[aliases    .size()]);
-             valueIds   = identifiers.toArray(new ReferenceIdentifier[identifiers.size()]);
+             valueAlias = aliases    .toArray(GenericName[]::new);
 -            valueIds   = identifiers.toArray(Identifier[]::new);
++            valueIds   = identifiers.toArray(ReferenceIdentifier[]::new);
          }
          properties.put(IdentifiedObject.ALIAS_KEY,       valueAlias);
          properties.put(IdentifiedObject.IDENTIFIERS_KEY, valueIds);
diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
index 6ac81454cb,842f1bbdab..8eb98d06f8
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
@@@ -146,7 -144,7 +145,7 @@@ final class DefaultConcatenatedOperatio
           * 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(new SingleOperation[flattened.size()]));
 -        this.operations = UnmodifiableArrayList.wrap(flattened.toArray(CoordinateOperation[]::new));
++        this.operations = UnmodifiableArrayList.wrap(flattened.toArray(SingleOperation[]::new));
      }
  
      /**
diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java
index 8061c26990,ba119e1404..285bc718c1
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java
@@@ -21,9 -21,8 +21,8 @@@ import java.util.Map
  import java.util.HashMap;
  import java.util.LinkedHashSet;
  import java.util.Locale;
- import java.util.Collections;
  import org.opengis.test.Validators;
 -import org.opengis.metadata.Identifier;
 +import org.opengis.referencing.ReferenceIdentifier;
  import org.apache.sis.referencing.datum.AbstractDatum;
  import org.apache.sis.internal.jaxb.referencing.Code;
  import org.apache.sis.internal.jaxb.Context;
@@@ -56,10 -55,10 +55,10 @@@ public final strictfp class AbstractIde
       *
       * @param  identifiers  the value for the {@code "identifiers"} property.
       */
 -    private static Map<String,Object> properties(final Set<Identifier> identifiers) {
 +    private static Map<String,Object> properties(final Set<ReferenceIdentifier> identifiers) {
          final Map<String,Object> properties = new HashMap<>(8);
          assertNull(properties.put("name",       "GRS 1980"));
-         assertNull(properties.put("identifiers", identifiers.toArray(new ReferenceIdentifier[identifiers.size()])));
 -        assertNull(properties.put("identifiers", identifiers.toArray(Identifier[]::new)));
++        assertNull(properties.put("identifiers", identifiers.toArray(ReferenceIdentifier[]::new)));
          assertNull(properties.put("codespace",  "EPSG"));
          assertNull(properties.put("version",    "8.3"));
          assertNull(properties.put("alias",      "International 1979"));
@@@ -133,9 -132,9 +132,9 @@@
       */
      @Test
      public void testWithoutIdentifier() {
-         final Set<ReferenceIdentifier> identifiers = Collections.emptySet();
 -        final Set<Identifier>          identifiers = Set.of();
++        final Set<ReferenceIdentifier> identifiers = Set.of();
          final AbstractIdentifiedObject object      = new AbstractIdentifiedObject(properties(identifiers));
 -        final Identifier               gmlId       = validate(object, identifiers, "GRS1980");
 +        final ReferenceIdentifier      gmlId       = validate(object, identifiers, "GRS1980");
          assertNull("gmlId", gmlId);
      }
  
@@@ -152,10 -151,10 +151,10 @@@
      @Test
      @DependsOnMethod("testWithoutIdentifier")
      public void testWithSingleIdentifier() {
 -        final Identifier               identifier  = new ImmutableIdentifier(null, "EPSG", "7019");
 -        final Set<Identifier>          identifiers = Set.of(identifier);
 +        final ReferenceIdentifier      identifier  = new ImmutableIdentifier(null, "EPSG", "7019");
-         final Set<ReferenceIdentifier> identifiers = Collections.singleton(identifier);
++        final Set<ReferenceIdentifier> identifiers = Set.of(identifier);
          final AbstractIdentifiedObject object      = new AbstractIdentifiedObject(properties(identifiers));
 -        final Identifier               gmlId       = validate(object, identifiers, "epsg-7019");
 +        final ReferenceIdentifier      gmlId       = validate(object, identifiers, "epsg-7019");
          assertNotNull("gmlId",                   gmlId);
          assertEquals ("gmlId.codespace", "EPSG", gmlId.getCodeSpace());
          assertEquals ("gmlId.code",      "7019", gmlId.getCode());
@@@ -187,10 -186,10 +186,10 @@@
      @Test
      @DependsOnMethod("testWithManyIdentifiers")
      public void testAsSubtype() {
 -        final Identifier               identifier  = new NamedIdentifier(EPSG, "7019");
 -        final Set<Identifier>          identifiers = Set.of(identifier);
 +        final ReferenceIdentifier      identifier  = new NamedIdentifier(EPSG, "7019");
-         final Set<ReferenceIdentifier> identifiers = Collections.singleton(identifier);
++        final Set<ReferenceIdentifier> identifiers = Set.of(identifier);
          final AbstractIdentifiedObject object      = new AbstractDatum(properties(identifiers));
 -        final Identifier               gmlId       = validate(object, identifiers, "epsg-datum-7019");
 +        final ReferenceIdentifier      gmlId       = validate(object, identifiers, "epsg-datum-7019");
          assertNotNull("gmlId",                   gmlId);
          assertEquals ("gmlId.codespace", "EPSG", gmlId.getCodeSpace());
          assertEquals ("gmlId.code",      "7019", gmlId.getCode());
@@@ -234,7 -233,7 +233,7 @@@
      @Test
      @DependsOnMethod("testWithoutIdentifier")
      public void testSerialization() {
-         final Set<ReferenceIdentifier> identifiers = Collections.emptySet();
 -        final Set<Identifier>     identifiers = Set.of();
++        final Set<ReferenceIdentifier> identifiers = Set.of();
          final AbstractIdentifiedObject object = new AbstractIdentifiedObject(properties(identifiers));
          final AbstractIdentifiedObject actual = assertSerializedEquals(object);
          assertNotSame(object, actual);
diff --cc core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
index 788550b02b,5538a1dfb0..7d6e3a7da0
--- a/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
@@@ -146,7 -144,7 +144,7 @@@ public final strictfp class MetadataTes
                      new DefaultTelephone("+33 (0)2 xx.xx.xx.x4", TelephoneType.FACSIMILE)
              ));
              final DefaultAddress address = new DefaultAddress();
-             address.setDeliveryPoints(singleton("Brest institute"));
 -            address.setDeliveryPoints(Set.of(new SimpleInternationalString("Brest institute")));
++            address.setDeliveryPoints(Set.of("Brest institute"));
              address.setCity(new SimpleInternationalString("Plouzane"));
              address.setPostalCode("29280");
              address.setCountry(country);
@@@ -175,7 -173,7 +173,7 @@@
                          new DefaultTelephone("+33 (0)4 xx.xx.xx.x8", TelephoneType.FACSIMILE)
                  ));
                  final DefaultAddress address = new DefaultAddress();
-                 address.setDeliveryPoints(singleton("Oceanology institute"));
 -                address.setDeliveryPoints(Set.of(new SimpleInternationalString("Oceanology institute")));
++                address.setDeliveryPoints(Set.of("Oceanology institute"));
                  address.setCity(new SimpleInternationalString("Marseille"));
                  address.setPostalCode("13288");
                  address.setCountry(country);
@@@ -190,9 -188,9 +188,9 @@@
                      TopicCategory.OCEANS);                                      // Topic category
              {
                  @SuppressWarnings("deprecation")
 -                final DefaultResponsibility custodian = new DefaultResponsibleParty(author);
 +                final DefaultResponsibleParty custodian = new DefaultResponsibleParty((DefaultResponsibility) author);
                  custodian.setRole(Role.CUSTODIAN);
-                 identification.setPointOfContacts(singleton(custodian));
+                 identification.setPointOfContacts(Set.of(custodian));
              }
              /*
               * Data indentification / Keywords.
@@@ -312,18 -310,18 +310,18 @@@
                      Datatype.CODE_LIST,                                             // Data type
                      "SeaDataNet",                                                   // Parent entity
                      "For testing only",                                             // Rule
 -                    NilReason.MISSING.createNilObject(Responsibility.class))));     // Source
 +                    NilReason.MISSING.createNilObject(ResponsibleParty.class))));   // Source
-             metadata.setMetadataExtensionInfo(singleton(extensionInfo));
+             metadata.setMetadataExtensionInfo(Set.of(extensionInfo));
          }
          /*
           * Distribution information.
           */
          {
              @SuppressWarnings("deprecation")
 -            final DefaultResponsibility distributor = new DefaultResponsibleParty(author);
 +            final DefaultResponsibleParty distributor = new DefaultResponsibleParty((DefaultResponsibility) author);
              final DefaultDistribution distributionInfo = new DefaultDistribution();
              distributor.setRole(Role.DISTRIBUTOR);
-             distributionInfo.setDistributors(singleton(new DefaultDistributor(distributor)));
+             distributionInfo.setDistributors(Set.of(new DefaultDistributor(distributor)));
  
              final DefaultFormat format = new DefaultFormat();
              final DefaultCitation specification = new DefaultCitation();
@@@ -338,9 -336,9 +336,9 @@@
              onlines.setDescription(new SimpleInternationalString("Dummy download link"));
              onlines.setFunction(OnLineFunction.DOWNLOAD);
              onlines.setProtocol("ftp");
-             transfer.setOnLines(singleton(onlines));
-             distributionInfo.setTransferOptions(singleton(transfer));
+             transfer.setOnLines(Set.of(onlines));
+             distributionInfo.setTransferOptions(Set.of(transfer));
 -            metadata.setDistributionInfo(Set.of(distributionInfo));
 +            metadata.setDistributionInfo(distributionInfo);
          }
          return metadata;
      }
diff --cc ide-project/NetBeans/nbproject/genfiles.properties
index f00261fedd,2427112a0b..874d87f86b
--- a/ide-project/NetBeans/nbproject/genfiles.properties
+++ b/ide-project/NetBeans/nbproject/genfiles.properties
@@@ -3,6 -3,6 +3,6 @@@
  build.xml.data.CRC32=58e6b21c
  build.xml.script.CRC32=462eaba0
  build.xml.stylesheet.CRC32=28e38971@1.53.1.46
- nbproject/build-impl.xml.data.CRC32=4e7b2ef2
- nbproject/build-impl.xml.script.CRC32=7ab9bfcf
- nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.101.0.48
 -nbproject/build-impl.xml.data.CRC32=fd717426
 -nbproject/build-impl.xml.script.CRC32=69d63511
++nbproject/build-impl.xml.data.CRC32=e6c2891e
++nbproject/build-impl.xml.script.CRC32=02d4f276
+ nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.104.0.48
diff --cc ide-project/NetBeans/nbproject/project.properties
index 7af52b92ab,e537f44c7a..fbd73f1c14
--- a/ide-project/NetBeans/nbproject/project.properties
+++ b/ide-project/NetBeans/nbproject/project.properties
@@@ -142,8 -143,9 +137,10 @@@ javac.processorpath=
      ${javac.classpath}
  javac.test.classpath=\
      ${javac.classpath}:\
 +    ${maven.repository}/org/opengis/geoapi-conformance/${geoapi.version}/geoapi-conformance-${geoapi.version}.jar:\
      ${maven.repository}/org/apache/derby/derby/${derby.version}/derby-${derby.version}.jar:\
+     ${maven.repository}/org/apache/derby/derbytools/${derby.version}/derbytools-${derby.version}.jar:\
+     ${maven.repository}/org/apache/derby/derbyshared/${derby.version}/derbyshared-${derby.version}.jar:\
      ${maven.repository}/org/hsqldb/hsqldb/${hsqldb.version}/hsqldb-${hsqldb.version}.jar:\
      ${maven.repository}/com/h2database/h2/${h2.version}/h2-${h2.version}.jar:\
      ${maven.repository}/gov/nist/math/jama/${jama.version}/jama-${jama.version}.jar:\
diff --cc profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java
index 2df9f598c8,23caa43ca7..908ed358dc
--- a/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java
+++ b/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java
@@@ -16,10 -16,12 +16,11 @@@
   */
  package org.apache.sis.internal.profile.fra;
  
+ import java.util.Set;
  import java.util.Collection;
  import javax.xml.bind.JAXBException;
 -import org.opengis.metadata.citation.Responsibility;
 +import org.opengis.metadata.citation.ResponsibleParty;
  import org.apache.sis.metadata.iso.DefaultMetadata;
 -import org.apache.sis.metadata.iso.DefaultIdentifier;
  import org.apache.sis.metadata.iso.citation.DefaultCitation;
  import org.apache.sis.metadata.iso.citation.DefaultResponsibleParty;
  import org.apache.sis.metadata.iso.citation.HardCodedCitations;
@@@ -58,13 -58,13 +58,13 @@@ public final strictfp class DirectRefer
      private static DefaultMetadata createMetadata(final boolean legacy) {
          final DefaultMetadata metadata = new DefaultMetadata();
          final DefaultCitation citation = new DefaultCitation("EPSG Geodetic Parameter Dataset");
 -        Collection<Responsibility> r = HardCodedCitations.EPSG.getCitedResponsibleParties();
 +        Collection<ResponsibleParty> r = HardCodedCitations.EPSG.getCitedResponsibleParties();
          if (legacy) {
-             r = singleton(new DefaultResponsibleParty(TestUtilities.getSingleton(r)));
+             r = Set.of(new DefaultResponsibleParty(TestUtilities.getSingleton(r)));
          }
          citation.setCitedResponsibleParties(r);
 -        final DirectReferenceSystem refSys = new DirectReferenceSystem(new DefaultIdentifier(citation, "4326"));
 +        final DirectReferenceSystem refSys = new DirectReferenceSystem(new RS_Identifier(citation, "4326"));
-         metadata.setReferenceSystemInfo(singleton(refSys));
+         metadata.setReferenceSystemInfo(Set.of(refSys));
          return metadata;
      }
  
diff --cc storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
index 15ba554853,55385907ce..ed51bc0d94
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
@@@ -522,9 -520,8 +520,11 @@@ split:  while ((start = CharSequences.s
                  if (individualName   != null) party = new DefaultIndividual(individualName, null, null);
                  if (organisationName != null) party = new DefaultOrganisation(organisationName, null, (Individual) party, null);
                  if (party            == null) party = isOrganisation(keys) ? new DefaultOrganisation() : new DefaultIndividual();
-                 if (contact          != null) party.setContactInfo(singleton(contact));
+                 if (contact          != null) party.setContactInfo(Set.of(contact));
 -                responsibility = new DefaultResponsibility(role, null, party);
 +                responsibility = new DefaultResponsibleParty(role);
-                 ((DefaultResponsibleParty) responsibility).setParties(singleton(party));
++                if (party != null) {
++                    ((DefaultResponsibleParty) responsibility).setParties(Set.of(party));
++                }
              }
          }
          return responsibility;