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 e7c5ccf5a900bf49cf045ad9a55c5cb36b8b2477 Merge: 217df02d3e f5bc633ac3 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Tue Dec 13 14:25:57 2022 +0100 Merge branch '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 | 8 +- .../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 +- .../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 | 9 +- .../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 | 15 +- .../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 +- .../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 +- .../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 | 16 +- .../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 | 8 +- .../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 | 2 +- .../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 | 12 +- .../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 | 4 +- .../apache/sis/test/xml/DocumentComparator.java | 26 +- .../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 - .../apache/sis/xml/TransformingNamespacesTest.java | 9 +- .../org/apache/sis/xml/XLinkMarshallingTest.java | 6 +- .../coverage/MultiResolutionCoverageLoader.java | 5 +- .../main/java/org/apache/sis/portrayal/Canvas.java | 2 +- .../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 +- .../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/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 +- .../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 +- 532 files changed, 2084 insertions(+), 3209 deletions(-) diff --cc application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java index 508305767e,d4bcfba71c..9a8b168400 --- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java +++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java @@@ -68,10 -68,10 +68,10 @@@ import org.apache.sis.gui.Widget * * <h2>Limitations</h2> * Current implementation is restricted to {@link GridCoverage} instances, but a future - * implementation may generalize to {@link org.opengis.coverage.Coverage} instances. + * implementation may generalize to {@code org.opengis.coverage.Coverage} instances. * * @author Martin Desruisseaux (Geomatys) - * @version 1.3 + * @version 1.4 * * @see CoverageCanvas * @see GridView diff --cc application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandedFeature.java index 64c8a59f87,26a78bc4ea..edec90fd8b --- a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandedFeature.java +++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandedFeature.java @@@ -19,9 -19,10 +19,11 @@@ package org.apache.sis.gui.dataset import java.util.Arrays; import java.util.Map; import java.util.Collection; - import java.util.Collections; + import java.util.List; -import org.opengis.feature.Feature; -import org.opengis.feature.FeatureType; -import org.opengis.feature.Property; ++ ++// Branch-dependent imports +import org.apache.sis.feature.AbstractFeature; +import org.apache.sis.feature.DefaultFeatureType; /** diff --cc core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java index e434b87630,07a0549ee3..a18028f358 --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java @@@ -39,9 -39,8 +39,8 @@@ import org.apache.sis.util.collection.C import org.apache.sis.image.DataType; // Branch-specific imports - import org.apache.sis.internal.jdk9.JDK9; -import org.opengis.coverage.CannotEvaluateException; -import org.opengis.coverage.PointOutsideCoverageException; +import org.apache.sis.coverage.CannotEvaluateException; +import org.apache.sis.coverage.PointOutsideCoverageException; /** diff --cc core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java index 09e1193d49,92d67f4201..ad8f132b6d --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java @@@ -17,8 -17,9 +17,7 @@@ package org.apache.sis.coverage.grid; import java.util.Arrays; -import org.opengis.coverage.grid.GridCoordinates; -import org.apache.sis.util.resources.Errors; import org.apache.sis.util.ArgumentChecks; - import org.apache.sis.internal.jdk9.JDK9; /** diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java index 3f1c4397fb,45742cebb2..30bbeab54a --- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java @@@ -150,9 -156,9 +150,9 @@@ public abstract class AbstractAttribute */ private void writeObject(final ObjectOutputStream out) throws IOException { out.defaultWriteObject(); - final Attribute<?>[] characterizedBy; + final AbstractAttribute<?>[] characterizedBy; if (characteristics instanceof CharacteristicMap) { - characterizedBy = characteristics.values().toArray(new AbstractAttribute<?>[characteristics.size()]); - characterizedBy = characteristics.values().toArray(Attribute[]::new); ++ characterizedBy = characteristics.values().toArray(AbstractAttribute[]::new); } else { characterizedBy = null; } @@@ -351,13 -356,13 +351,13 @@@ * This method does not store the new map in the {@link #characteristics} field; * it is caller responsibility to do so if desired. */ - private Map<String,Attribute<?>> newCharacteristicsMap() { + private Map<String,AbstractAttribute<?>> newCharacteristicsMap() { if (type instanceof DefaultAttributeType<?>) { - Map<String, AttributeType<?>> map = ((DefaultAttributeType<?>) type).characteristics(); + Map<String, DefaultAttributeType<?>> map = type.characteristics(); if (!map.isEmpty()) { if (!(map instanceof CharacteristicTypeMap)) { - final Collection<AttributeType<?>> types = map.values(); - map = CharacteristicTypeMap.create(type, types.toArray(AttributeType<?>[]::new)); + final Collection<DefaultAttributeType<?>> types = map.values(); - map = CharacteristicTypeMap.create(type, types.toArray(new DefaultAttributeType<?>[types.size()])); ++ map = CharacteristicTypeMap.create(type, types.toArray(DefaultAttributeType<?>[]::new)); } return new CharacteristicMap(this, (CharacteristicTypeMap) map); } diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java index fca73023b3,193da7f434..25d5c47511 --- 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 @@@ -353,7 -353,7 +353,7 @@@ public class DefaultFeatureType extend assignableTo = new HashSet<>(4); assignableTo.add(super.getName()); scanPropertiesFrom(this, properties); - allProperties = UnmodifiableArrayList.wrap(byName.values().toArray(new AbstractIdentifiedType[byName.size()])); - allProperties = UnmodifiableArrayList.wrap(byName.values().toArray(PropertyType[]::new)); ++ allProperties = UnmodifiableArrayList.wrap(byName.values().toArray(AbstractIdentifiedType[]::new)); /* * Now check if the feature is simple/complex or dense/sparse. We perform this check after we finished * to create the list of all properties, because some properties may be overridden and we want to take diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java index cb464a4653,98b969b62e..262a89b6f1 --- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java @@@ -412,8 -407,8 +411,8 @@@ public class FeatureTypeBuilder extend * * @see DefaultFeatureType#getSuperTypes() */ - public FeatureType[] getSuperTypes() { - return superTypes.toArray(FeatureType[]::new); + public DefaultFeatureType[] getSuperTypes() { - return superTypes.toArray(new DefaultFeatureType[superTypes.size()]); ++ return superTypes.toArray(DefaultFeatureType[]::new); } /** @@@ -1015,7 -991,7 +1014,7 @@@ } } feature = new DefaultFeatureType(identification(), isAbstract(), - superTypes.toArray(new DefaultFeatureType[superTypes.size()]), - superTypes.toArray(FeatureType[]::new), ++ superTypes.toArray(DefaultFeatureType[]::new), ArraysExt.resize(propertyTypes, propertyCursor)); } return feature; diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/IdentifierFilter.java index 23884bae02,83ee72bbfe..02dc5e2182 --- a/core/sis-feature/src/main/java/org/apache/sis/filter/IdentifierFilter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/IdentifierFilter.java @@@ -21,8 -21,11 +21,9 @@@ import java.util.Collection import org.apache.sis.util.ArgumentChecks; import org.apache.sis.internal.feature.AttributeConvention; + // Branch-dependent imports -import org.opengis.feature.Feature; -import org.opengis.filter.Expression; -import org.opengis.filter.ResourceId; ++import org.apache.sis.feature.AbstractFeature; + /** * Filter features using a set of predefined identifiers and discarding features diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java index d7ff6e6d13,ffc8e17298..93048e4ea3 --- a/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java @@@ -423,9 -425,9 +422,9 @@@ public class Optimization */ private static <R> List<Filter<? super R>> toAndOperands(final Filter<R> filter) { if (filter == null) { - return Collections.emptyList(); + return List.of(); } - final CodeList<?> type = filter.getOperatorType(); + final Enum<?> type = filter.getOperatorType(); if (type == LogicalOperatorName.AND) { return ((LogicalOperator<R>) filter).getOperands(); } diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/feature/AttributeConvention.java index 50b461ab77,5062863567..36442c9c6f --- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/AttributeConvention.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/AttributeConvention.java @@@ -102,15 -106,15 +102,15 @@@ public final class AttributeConvention * <p>The {@linkplain org.apache.sis.feature.DefaultAttributeType#getValueClass() value class} can be * the {@link com.esri.core.geometry.Geometry} class from ESRI's API, or the {@code Geometry} class from * <cite>Java Topology Suite</cite> (JTS) library, or any other class defined in future SIS versions. - * See {@link #isGeometryAttribute(IdentifiedType)} for testing whether the value is a supported type.</p> + * See {@code isGeometryAttribute(IdentifiedType)} for testing whether the value is a supported type.</p> * - * @see #isGeometryAttribute(IdentifiedType) + * @see #isGeometryAttribute(AbstractIdentifiedType) */ - public static final ScopedName GEOMETRY_PROPERTY; + public static final ScopedName GEOMETRY_PROPERTY = Names.createScopedName(SCOPE, null, "geometry"); /** - * Conventional name for fetching the envelope encompassing all geometries in a feature. Most {@code FeatureType}s - * have at most one geometry, which is also the {@link #GEOMETRY_PROPERTY default geometry}. + * Conventional name for fetching the envelope encompassing all geometries in a feature. + * Most {@code FeatureType}s have at most one geometry, which is also the {@link #GEOMETRY_PROPERTY default geometry}. * But if several geometries exist, then the value for this synthetic property is the union of all geometries. * * <p>Properties of this name are usually @@@ -136,9 -140,9 +136,9 @@@ * <p>The {@linkplain org.apache.sis.feature.DefaultAttributeType#getValueClass() value class} should be * {@link org.opengis.referencing.crs.CoordinateReferenceSystem}.</p> * - * @see #getCRSCharacteristic(Property) + * @see #getCRSCharacteristic(Object) */ - public static final ScopedName CRS_CHARACTERISTIC; + public static final ScopedName CRS_CHARACTERISTIC = Names.createScopedName(SCOPE, null, "crs"); /** * Conventional name for fetching the unit of measurement of a property. @@@ -166,9 -170,9 +166,9 @@@ * <p>The {@linkplain org.apache.sis.feature.DefaultAttributeType#getValueClass() value class} should be * {@link Integer}.</p> * - * @see #getMaximalLengthCharacteristic(Property) + * @see #getMaximalLengthCharacteristic(Object) */ - public static final ScopedName MAXIMAL_LENGTH_CHARACTERISTIC; + public static final ScopedName MAXIMAL_LENGTH_CHARACTERISTIC = Names.createScopedName(SCOPE, null, "maximalLength"); /** * Conventional name for fetching the enumeration of valid values. diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java index 46f52afd4f,fec27f404f..8824c781f0 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java @@@ -54,11 -53,10 +52,10 @@@ public class MovingFeatures * This characteristic uses the same name than {@code TIME_AS_INSTANTS}. Consequently, at most one * of {@code TIME_AS_INSTANTS} and {@code TIME_AS_NUMBERS} can be used on the same property. */ - private static final AttributeType<Number> TIME_AS_NUMBERS; + private static final DefaultAttributeType<Number> TIME_AS_NUMBERS; static { - final LocalName scope = Names.createLocalName("OGC", null, "MF"); - final Map<String,Object> properties = Collections.singletonMap( - DefaultAttributeType.NAME_KEY, Names.createScopedName(scope, null, "datetimes")); + final var scope = Names.createLocalName("OGC", null, "MF"); + final var properties = Map.of(DefaultAttributeType.NAME_KEY, Names.createScopedName(scope, null, "datetimes")); TIME_AS_INSTANTS = new DefaultAttributeType<>(properties, Instant.class, 0, Integer.MAX_VALUE, null); TIME_AS_NUMBERS = new DefaultAttributeType<>(properties, Number.class, 0, Integer.MAX_VALUE, null); } diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java index cd78942517,4fe8e0e1f7..944184c617 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java @@@ -84,9 -86,10 +84,10 @@@ public abstract class Node implements S * * @see Expression#getFunctionName() */ - protected static <T> AttributeType<T> createType(final Class<T> type, final Object name) { + protected static <T> DefaultAttributeType<T> createType(final Class<T> type, final Object name) { + // We do not use `Map.of(…)` for letting the attribute type constructor do the null check. return new DefaultAttributeType<>(Collections.singletonMap(DefaultAttributeType.NAME_KEY, name), - type, 1, 1, null, (AttributeType<?>[]) null); + type, 1, 1, null, (DefaultAttributeType<?>[]) null); } /** diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java index 9202548677,397f181b00..163349e1bd --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java @@@ -20,10 -20,10 +20,10 @@@ import java.util.Arrays import java.util.Collection; import org.apache.sis.internal.feature.Geometries; import org.apache.sis.internal.filter.FunctionRegister; - import org.apache.sis.internal.jdk9.JDK9; + import org.apache.sis.internal.jdk17.JDK17; // Branch-dependent imports -import org.opengis.filter.Expression; +import org.apache.sis.filter.Expression; /** diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/CharacteristicTypeMapTest.java index d7ae539fe2,8246b7add6..e8e34acf50 --- a/core/sis-feature/src/test/java/org/apache/sis/feature/CharacteristicTypeMapTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/CharacteristicTypeMapTest.java @@@ -114,12 -116,12 +113,12 @@@ public final strictfp class Characteris @Test public void testQualifiedNames() { final DefaultAttributeType<?> a1, a2, a3, tp; - a1 = new DefaultAttributeType<>(singletonMap(NAME_KEY, Names.parseGenericName(null, null, "ns1:accuracy")), Float.class, 1, 1, 0.1f); - a2 = new DefaultAttributeType<>(singletonMap(NAME_KEY, Names.parseGenericName(null, null, "ns2:accuracy")), Float.class, 1, 1, 0.1f); - a3 = new DefaultAttributeType<>(singletonMap(NAME_KEY, Names.parseGenericName(null, null, "ns2:s3:units")), String.class, 1, 1, "°C"); - tp = new DefaultAttributeType<>(singletonMap(NAME_KEY, "temperature"), Float.class, 1, 1, null, a1, a2, a3); + a1 = new DefaultAttributeType<>(Map.of(NAME_KEY, Names.parseGenericName(null, null, "ns1:accuracy")), Float.class, 1, 1, 0.1f); + a2 = new DefaultAttributeType<>(Map.of(NAME_KEY, Names.parseGenericName(null, null, "ns2:accuracy")), Float.class, 1, 1, 0.1f); + a3 = new DefaultAttributeType<>(Map.of(NAME_KEY, Names.parseGenericName(null, null, "ns2:s3:units")), String.class, 1, 1, "°C"); + tp = new DefaultAttributeType<>(Map.of(NAME_KEY, "temperature"), Float.class, 1, 1, null, a1, a2, a3); - final Map<String, AttributeType<?>> characteristics = tp.characteristics(); + final Map<String, DefaultAttributeType<?>> characteristics = tp.characteristics(); assertSame("ns1:accuracy", a1, characteristics.get("ns1:accuracy")); assertSame("ns2:accuracy", a2, characteristics.get("ns2:accuracy")); assertSame("ns2:s3:units", a3, characteristics.get("ns2:s3:units")); diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/CustomAttribute.java index ac8fa16a9b,d2fd163eb4..4b48808ac1 --- a/core/sis-feature/src/test/java/org/apache/sis/feature/CustomAttribute.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/CustomAttribute.java @@@ -23,8 -24,9 +24,6 @@@ import org.apache.sis.metadata.iso.qual import org.apache.sis.util.SimpleInternationalString; import org.apache.sis.referencing.NamedIdentifier; - import static java.util.Collections.singleton; -// Branch-dependent imports -import org.opengis.feature.AttributeType; -- /** * For testing {@link AbstractAttribute} customization. diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/DefaultAssociationRoleTest.java index 9cb66a9ce6,614b81cfe0..1491a6be2d --- a/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultAssociationRoleTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultAssociationRoleTest.java @@@ -83,10 -86,10 +82,10 @@@ public final strictfp class DefaultAsso * @return the feature type to use for testing purpose. */ private static DefaultFeatureType createType(final Object name, - final FeatureType parent, final FeatureAssociationRole... property) + final DefaultFeatureType parent, final DefaultAssociationRole... property) { - return new DefaultFeatureType(singletonMap(NAME_KEY, name), + return new DefaultFeatureType(Map.of(NAME_KEY, name), - false, new FeatureType[] {parent}, property); + false, new DefaultFeatureType[] {parent}, property); } /** diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/DefaultFeatureTypeTest.java index 362a8cde02,ccd058b601..33335b48e4 --- a/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultFeatureTypeTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultFeatureTypeTest.java @@@ -30,8 -30,11 +30,7 @@@ import org.junit.Test import static org.apache.sis.test.Assert.*; import static org.apache.sis.test.TestUtilities.getSingleton; - import static java.util.Collections.singletonMap; -// Branch-dependent imports -import org.opengis.feature.PropertyType; -import org.opengis.feature.AttributeType; - /** * Tests {@link DefaultFeatureType}. diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/FeatureMemoryBenchmark.java index e420655a40,3112dd90a1..6d65371eb7 --- a/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureMemoryBenchmark.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureMemoryBenchmark.java @@@ -19,11 -19,11 +19,10 @@@ package org.apache.sis.feature import java.util.ArrayList; import java.util.HashMap; import java.util.List; + import java.util.Map; import java.util.Random; -import org.opengis.feature.Feature; import org.apache.sis.internal.util.StandardDateFormat; - import static java.util.Collections.singletonMap; - /** * Compares {@link org.apache.sis.feature} memory usage with a plain {@link HashMap}. diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/builder/FeatureTypeBuilderTest.java index 3226c00e59,a6a8b8b5bf..ebc2600cff --- a/core/sis-feature/src/test/java/org/apache/sis/feature/builder/FeatureTypeBuilderTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/builder/FeatureTypeBuilderTest.java @@@ -368,15 -370,15 +368,15 @@@ public final strictfp class FeatureType @Test public void testOverrideByOperation() { FeatureTypeBuilder builder = new FeatureTypeBuilder().setName("Parent").setAbstract(true); - final AttributeType<Integer> pa = builder.addAttribute(Integer.class).setName("A").build(); + final DefaultAttributeType<Integer> pa = builder.addAttribute(Integer.class).setName("A").build(); builder.addAttribute(Integer.class).setName("B"); - final FeatureType parentType = builder.build(); + final DefaultFeatureType parentType = builder.build(); builder = new FeatureTypeBuilder().setName("Child").setSuperTypes(parentType); - builder.addProperty(FeatureOperations.link(Collections.singletonMap(AbstractOperation.NAME_KEY, "B"), pa)); + builder.addProperty(FeatureOperations.link(Map.of(AbstractOperation.NAME_KEY, "B"), pa)); - final FeatureType childType = builder.build(); + final DefaultFeatureType childType = builder.build(); - final Iterator<? extends PropertyType> it = childType.getProperties(true).iterator(); + final Iterator<? extends AbstractIdentifiedType> it = childType.getProperties(true).iterator(); assertPropertyEquals("A", Integer.class, it.next()); assertPropertyEquals("B", Integer.class, it.next()); assertFalse(it.hasNext()); diff --cc core/sis-feature/src/test/java/org/apache/sis/filter/LogicalFilterTest.java index 673d92052f,7faabe4268..9776c0b849 --- a/core/sis-feature/src/test/java/org/apache/sis/filter/LogicalFilterTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/filter/LogicalFilterTest.java @@@ -139,7 -143,7 +139,7 @@@ public final strictfp class LogicalFilt assertEquals(expected, filter.test(null)); assertSerializedEquals(filter); - filter = (LogicalOperator<AbstractFeature>) anyArity.apply(Arrays.asList(f1, f2, f1)); - filter = anyArity.apply(List.of(f1, f2, f1)); ++ filter = (LogicalOperator<AbstractFeature>) anyArity.apply(List.of(f1, f2, f1)); assertArrayEquals(new Filter<?>[] {f1, f2, f1}, filter.getOperands().toArray()); assertEquals(expected, filter.test(null)); assertSerializedEquals(filter); diff --cc core/sis-feature/src/test/java/org/apache/sis/internal/feature/AttributeConventionTest.java index 231bd46595,a13bd75df7..f42c890475 --- a/core/sis-feature/src/test/java/org/apache/sis/internal/feature/AttributeConventionTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/internal/feature/AttributeConventionTest.java @@@ -93,10 -94,10 +92,10 @@@ public final strictfp class AttributeCo /* * Test again AttributeConvention.getCRSCharacteristic(…, PropertyType), but following link. */ - final AbstractOperation link = FeatureOperations.link(Collections.singletonMap(DefaultAttributeType.NAME_KEY, "geom"), type); - final DefaultFeatureType feat = new DefaultFeatureType(Collections.singletonMap(DefaultAttributeType.NAME_KEY, "feat"), false, null, type, link); - assertEquals(HardCodedCRS.WGS84, AttributeConvention.getCRSCharacteristic(feat, link)); - assertNull( AttributeConvention.getCRSCharacteristic(null, link)); - final Operation link = FeatureOperations.link(Map.of(DefaultAttributeType.NAME_KEY, "geom"), type); ++ final var link = FeatureOperations.link(Map.of(DefaultAttributeType.NAME_KEY, "geom"), type); + final var feature = new DefaultFeatureType(Map.of(DefaultAttributeType.NAME_KEY, "feat"), false, null, type, link); + assertEquals(HardCodedCRS.WGS84, AttributeConvention.getCRSCharacteristic(feature, link)); + assertNull(AttributeConvention.getCRSCharacteristic(null, link)); } /** diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java index a5703b1071,066c1b896e..fafa9b4d94 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java @@@ -577,10 -574,32 +577,10 @@@ public class DefaultExtendedElementInfo * @return reason for creating the extended element. */ @Override - @Deprecated + @Deprecated(since="1.0") @Dependencies("getRationale") public Collection<InternationalString> getRationales() { - return new AbstractSet<InternationalString>() { - /** Returns 0 if empty, or 1 if a density has been specified. */ - @Override public int size() { - return getRationale() != null ? 1 : 0; - } - - /** Returns an iterator over 0 or 1 element. Current iterator implementation is unmodifiable. */ - @Override public Iterator<InternationalString> iterator() { - return CollectionsExt.singletonOrEmpty(getRationale()).iterator(); - } - - /** Adds an element only if the set is empty. This method is invoked by JAXB at unmarshalling time. */ - @Override public boolean add(final InternationalString newValue) { - if (isEmpty()) { - setRationale(newValue); - return true; - } else { - LegacyPropertyAdapter.warnIgnoredExtraneous(InternationalString.class, - DefaultExtendedElementInformation.class, "setRationales"); - return false; - } - } - }; + return rationales = nonNullCollection(rationales, InternationalString.class); } /** @@@ -588,9 -607,10 +588,9 @@@ * * @param newValues the new rationales. */ - @Deprecated + @Deprecated(since="1.0") public void setRationales(final Collection<? extends InternationalString> newValues) { - setRationale(LegacyPropertyAdapter.getSingleton(newValues, InternationalString.class, - null, DefaultExtendedElementInformation.class, "setRationales")); + rationales = writeCollection(newValues, rationales, InternationalString.class); } /** diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java index 2b9c948b1e,5e8f5bf5bd..3be0e055b4 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java @@@ -268,9 -255,9 +268,9 @@@ public class DefaultResponsibleParty ex * * @deprecated As of ISO 19115:2014, replaced by {@code setName(InternationalString)} in {@link DefaultIndividual}. */ - @Deprecated + @Deprecated(since="1.0") public void setIndividualName(final String newValue) { - setName(Individual.class, false, Types.toInternationalString(newValue), DefaultResponsibleParty::individual); + setName(DefaultIndividual.class, false, Types.toInternationalString(newValue), DefaultResponsibleParty::individual); } /** @@@ -312,9 -299,9 +312,9 @@@ * * @deprecated As of ISO 19115:2014, replaced by {@code setName(InternationalString)} in {@link DefaultOrganisation}. */ - @Deprecated + @Deprecated(since="1.0") public void setOrganisationName(final InternationalString newValue) { - setName(Organisation.class, false, newValue, DefaultResponsibleParty::organisation); + setName(DefaultOrganisation.class, false, newValue, DefaultResponsibleParty::organisation); } /** @@@ -410,19 -397,21 +410,19 @@@ * * @deprecated As of ISO 19115:2014, replaced by {@link AbstractParty#setContactInfo(Collection)}. */ - @Deprecated + @Deprecated(since="1.0") public void setContactInfo(final Contact newValue) { - final Collection<Party> parties = getParties(); + final Collection<AbstractParty> parties = getParties(); checkWritePermission(valueIfDefined(parties)); if (parties != null) { // May be null on unmarshalling. - final Iterator<Party> it = parties.iterator(); + final Iterator<AbstractParty> it = parties.iterator(); while (it.hasNext()) { - final Party party = it.next(); - if (party instanceof AbstractParty) { - ((AbstractParty) party).setContactInfo(newValue != null ? Collections.singleton(newValue) : null); - if (((AbstractParty) party).isEmpty()) { - it.remove(); - } - return; + final AbstractParty party = it.next(); + party.setContactInfo(newValue != null ? Collections.singleton(newValue) : null); + if (party.isEmpty()) { + it.remove(); } + return; } } /* diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java index c3893476c8,17a8901433..69a0ad0f2a --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java @@@ -325,10 -274,10 +325,10 @@@ public class DefaultTelephone extends I * @return telephone numbers by which individuals can speak to the responsible organization or individual. * * @deprecated As of ISO 19115:2014, replaced by a {@linkplain #getNumber() number} - * with {@link TelephoneType#VOICE}. + * with {@code TelephoneType.VOICE}. */ @Override - @Deprecated + @Deprecated(since="1.0") @Dependencies({"getNumber", "getNumberType"}) @XmlElement(name = "voice", namespace = LegacyNamespaces.GMD) public final Collection<String> getVoices() { @@@ -346,9 -295,9 +346,9 @@@ * @param newValues the new telephone numbers, or {@code null} if none. * * @deprecated As of ISO 19115:2014, replaced by a {@linkplain #setNumber(String) number} - * with {@link TelephoneType#VOICE}. + * code {@code TelephoneType.VOICE}. */ - @Deprecated + @Deprecated(since="1.0") public void setVoices(final Collection<? extends String> newValues) { ((LegacyTelephones) getVoices()).setValues(newValues); } @@@ -361,10 -310,10 +361,10 @@@ * @return telephone numbers of a facsimile machine for the responsible organization or individual. * * @deprecated As of ISO 19115:2014, replaced by a {@linkplain #getNumber() number} - * with {@link TelephoneType#FACSIMILE}. + * code {@code TelephoneType.FACSIMILE}. */ @Override - @Deprecated + @Deprecated(since="1.0") @Dependencies({"getNumber", "getNumberType"}) @XmlElement(name = "facsimile", namespace = LegacyNamespaces.GMD) public final Collection<String> getFacsimiles() { @@@ -382,9 -331,9 +382,9 @@@ * @param newValues the new telephone number, or {@code null} if none. * * @deprecated As of ISO 19115:2014, replaced by a {@linkplain #setNumber(String) number} - * with {@link TelephoneType#FACSIMILE}. + * with {@code TelephoneType.FACSIMILE}. */ - @Deprecated + @Deprecated(since="1.0") public void setFacsimiles(final Collection<? extends String> newValues) { ((LegacyTelephones) getFacsimiles()).setValues(newValues); } diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java index 407029973e,d482dba13c..f40c44a34a --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java @@@ -128,29 -137,12 +128,17 @@@ public class DefaultReleasability exten /** * Sets the parties to which the release statement applies. * + * <div class="warning"><b>Upcoming API change — generalization</b><br> + * The element type will be changed to the {@code Responsibility} interface + * when GeoAPI will provide it (tentatively in GeoAPI 3.1). + * </div> + * * @param newValues the new parties. */ - public void setAddressees(final Collection<? extends Responsibility> newValues) { - addressees = writeCollection(newValues, addressees, Responsibility.class); + public void setAddressees(final Collection<? extends DefaultResponsibility> newValues) { + addressees = writeCollection(newValues, addressees, DefaultResponsibility.class); } - /** - * Sets the parties to which the release statement applies. - * - * @param newValues the new parties. - * - * @deprecated Renamed {@link #setAddressees(Collection)}. - */ - @Deprecated - public void getAddressees(final Collection<? extends DefaultResponsibility> newValues) { - setAddressees(newValues); - } - /** * Returns the release statement. * diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java index fcf15df6cc,1e68d884c0..a0a42dfeb0 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java @@@ -273,9 -288,9 +273,9 @@@ public class DefaultMedium extends ISOM * * @param newValues the new densities. */ - @Deprecated + @Deprecated(since="1.0") public void setDensities(final Collection<? extends Double> newValues) { - setDensity(LegacyPropertyAdapter.getSingleton(newValues, Double.class, null, DefaultMedium.class, "setDensities")); + densities = writeCollection(newValues, densities, Double.class); } /** diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java index 9e18c382ff,acb7f2142d..0c99ec9c11 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java @@@ -830,22 -837,9 +830,22 @@@ public class AbstractIdentification ext * * @deprecated As of ISO 19115:2014, replaced by {@link #setAssociatedResources(Collection)}. */ - @Deprecated + @Deprecated(since="1.0") public void setAggregationInfo(final Collection<? extends AggregateInformation> newValues) { - setAssociatedResources(newValues); + checkWritePermission(associatedResources); + /* + * We can not invoke getAggregationInfo().setValues(newValues) because this method + * is invoked by the constructor, which is itself invoked at JAXB marshalling time, + * in which case getAggregationInfo() may return null. + */ + List<DefaultAssociatedResource> r = null; + if (newValues != null) { + r = new ArrayList<DefaultAssociatedResource>(newValues.size()); + for (final AggregateInformation value : newValues) { + r.add(DefaultAssociatedResource.castOrCopy(value)); + } + } + setAssociatedResources(r); } diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java index c57ce2a093,75f2966485..686b6494d4 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java @@@ -257,11 -241,11 +257,11 @@@ public class DefaultMaintenanceInformat * @return scheduled revision date, or {@code null}. * * @deprecated As of ISO 19115:2014, replaced by {@link #getMaintenanceDates()} in order to enable inclusion - * of a {@link DateType} to describe the type of the date. Note that {@link DateType#NEXT_UPDATE} - * was added to that code list. + * of a {@link DateType} to describe the type of the date. The associated date type is + * {@code DateType.valueOf("NEXT_UPDATE")}. */ @Override - @Deprecated + @Deprecated(since="1.0") @Dependencies("getMaintenanceDates") @XmlElement(name = "dateOfNextUpdate", namespace = LegacyNamespaces.GMD) public Date getDateOfNextUpdate() { diff --cc core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecord.java index 0cb736e75a,e70021ff00..1eb0b616a1 --- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecord.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecord.java @@@ -178,28 -177,12 +177,28 @@@ public class DefaultRecord implements R * * @return the dictionary of all (<var>name</var>, <var>value</var>) pairs in this record. * - * @see RecordType#getFieldTypes() + * @see RecordType#getMemberTypes() + * + * @deprecated Renamed {@link #getFields()} for consistency with the 2015 revision of ISO 19103 standard. */ @Override + @Deprecated + public Map<MemberName, Object> getAttributes() { + return getFields(); + } + + /** + * Returns the dictionary of all (<var>name</var>, <var>value</var>) pairs in this record. + * This method returns a view which will delegate all {@code get} and {@code put} operations to + * the {@link #locate(MemberName)} and {@link #set(MemberName, Object)} methods respectively. + * + * @return the dictionary of all (<var>name</var>, <var>value</var>) pairs in this record. + * + * @since 1.1 + */ public Map<MemberName, Object> getFields() { if (values == null) { // Should never be null, except temporarily at XML unmarshalling time. - return Collections.emptyMap(); + return Map.of(); } return new AbstractMap<MemberName, Object>() { /** Returns the number of fields in the record. */ diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java index 87186e4871,a23ef5488b..86d531f8ad --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java @@@ -110,28 -105,12 +110,28 @@@ public final strictfp class CustomMetad return factory.createInternationalString(names); } - @Override public Citation getCitation() {return null;} - @Override public Collection<TopicCategory> getTopicCategories() {return null;} - @Override public Collection<Extent> getExtents() {return null;} + @Override public InternationalString getSupplementalInformation() {return null;} + @Override public Citation getCitation() {return null;} + @Override public InternationalString getPurpose() {return null;} + @Override public Collection<SpatialRepresentationType> getSpatialRepresentationTypes() {return null;} + @Override public Collection<Resolution> getSpatialResolutions() {return null;} + @Override public Collection<Locale> getLanguages() {return null;} + @Override public Collection<CharacterSet> getCharacterSets() {return null;} + @Override public Collection<TopicCategory> getTopicCategories() {return null;} + @Override public Collection<Extent> getExtents() {return null;} + @Override public Collection<String> getCredits() {return null;} + @Override public Collection<Progress> getStatus() {return null;} + @Override public Collection<ResponsibleParty> getPointOfContacts() {return null;} + @Override public Collection<MaintenanceInformation> getResourceMaintenances() {return null;} + @Override public Collection<BrowseGraphic> getGraphicOverviews() {return null;} + @Override public Collection<Format> getResourceFormats() {return null;} + @Override public Collection<Keywords> getDescriptiveKeywords() {return null;} + @Override public Collection<Usage> getResourceSpecificUsages() {return null;} + @Override public Collection<Constraints> getResourceConstraints() {return null;} +@Deprecated @Override public Collection<AggregateInformation> getAggregationInfo() {return null;} }; final DefaultMetadata data = new DefaultMetadata(); - data.setIdentificationInfo(singleton(identification)); + data.setIdentificationInfo(Set.of(identification)); final String xml = XML.marshal(data); /* * A few simple checks. diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/CitationsTest.java index e7494bc585,c9faf85073..963983e9c4 --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/CitationsTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/CitationsTest.java @@@ -287,14 -284,14 +286,14 @@@ public final strictfp class CitationsTe */ @Test public void testIdentifierMatches() { - final Identifier ogc = new DefaultIdentifier("OGC", "06-042", null); - final Identifier iso = new DefaultIdentifier("ISO", "19128", null); + final Identifier ogc = new Id("OGC", "06-042"); + final Identifier iso = new Id("ISO", "19128"); final DefaultCitation citation = new DefaultCitation("Web Map Server"); - citation.setIdentifiers(Arrays.asList(ogc, iso, new DefaultIdentifier("Foo", "06-042", null))); + citation.setIdentifiers(List.of(ogc, iso, new DefaultIdentifier("Foo", "06-042", null))); assertTrue ("With full identifier", Citations.identifierMatches(citation, ogc, ogc.getCode())); assertTrue ("With full identifier", Citations.identifierMatches(citation, iso, iso.getCode())); - assertFalse("With wrong code", Citations.identifierMatches(citation, new DefaultIdentifier("ISO", "19115", null), "19115")); - assertFalse("With wrong code space", Citations.identifierMatches(citation, new DefaultIdentifier("Foo", "19128", null), "19128")); + assertFalse("With wrong code", Citations.identifierMatches(citation, new Id("ISO", "19115"), "19115")); + assertFalse("With wrong code space", Citations.identifierMatches(citation, new Id("Foo", "19128"), "19128")); assertFalse("With wrong code", Citations.identifierMatches(citation, "Foo")); assertTrue ("Without identifier", Citations.identifierMatches(citation, "19128")); assertTrue ("With parsing", Citations.identifierMatches(citation, "ISO:19128")); diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java index b3ec5b107e,8fe47ab471..05093683ca --- 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 @@@ -88,13 -90,13 +88,13 @@@ public final strictfp class DefaultCita new SimpleInternationalString("Andākarento"))); // Actually a different script of the Japanese title. 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); + final DefaultResponsibleParty editor = new DefaultResponsibleParty(Role.valueOf("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; } @@@ -253,12 -255,12 +253,12 @@@ contact.getIdentifierMap().putSpecialized(IdentifierSpace.ID, "ip-protocol"); final DefaultCitation c = new DefaultCitation("Fight against poverty"); final DefaultResponsibleParty r1 = new DefaultResponsibleParty(Role.ORIGINATOR); - final DefaultResponsibleParty r2 = new DefaultResponsibleParty(Role.FUNDER); + final DefaultResponsibleParty r2 = new DefaultResponsibleParty(Role.valueOf("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); + c.getDates().add(new DefaultCitationDate(TestUtilities.date("2015-10-17 00:00:00"), DateType.valueOf("adopted"))); + c.getPresentationForms().add(PresentationForm.valueOf("physicalObject")); /* * Check that XML file built by the marshaller is the same as the example file. */ diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java index ce74e4c5eb,1f001a364b..3f71e90576 --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java @@@ -82,13 -82,13 +82,13 @@@ public final strictfp class DefaultCont @SuppressWarnings("deprecation") public void testSetPhones() { init(); - final DefaultTelephone tel1 = new DefaultTelephone("00.01", TelephoneType.SMS); - final DefaultTelephone tel2 = new DefaultTelephone("00.02", TelephoneType.VOICE); - final DefaultTelephone tel3 = new DefaultTelephone("00.03", TelephoneType.FACSIMILE); - final DefaultTelephone tel4 = new DefaultTelephone("00.04", TelephoneType.VOICE); + final DefaultTelephone tel1 = new DefaultTelephone("00.01", UnsupportedCodeList.valueOf("SMS")); + final DefaultTelephone tel2 = new DefaultTelephone("00.02", UnsupportedCodeList.VOICE); + final DefaultTelephone tel3 = new DefaultTelephone("00.03", UnsupportedCodeList.FACSIMILE); + final DefaultTelephone tel4 = new DefaultTelephone("00.04", UnsupportedCodeList.VOICE); final DefaultTelephone[] tels = new DefaultTelephone[] {tel1, tel2, tel3, tel4}; final DefaultContact contact = new DefaultContact(); - contact.setPhones(Arrays.asList(tel1, tel2, tel3, tel4)); + contact.setPhones(List.of(tel1, tel2, tel3, tel4)); assertArrayEquals("getPhones", tels, contact.getPhones().toArray()); /* * Test the deprecated 'getPhone()' method. Invoking that method shall emit diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java index 6bb9b4d7f9,1e41e1df9b..085444c50e --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java @@@ -84,10 -85,10 +84,10 @@@ public final strictfp class DefaultLega "</mco:MD_LegalConstraints>\n"; final DefaultLegalConstraints c = new DefaultLegalConstraints(); - c.setUseConstraints(singleton(Restriction.LICENSE)); - c.setUseConstraints(Set.of(Restriction.LICENCE)); ++ c.setUseConstraints(Set.of(Restriction.LICENSE)); assertXmlEquals(xml, marshal(c), "xmlns:*"); DefaultLegalConstraints actual = unmarshal(DefaultLegalConstraints.class, xml); - assertSame(Restriction.LICENCE, getSingleton(actual.getUseConstraints())); + assertSame(Restriction.LICENSE, getSingleton(actual.getUseConstraints())); assertEquals(c, actual); /* * Above code tested ISO 19115-3 (un)marshalling. Code below test legacy ISO 19139:2007 (un)marshalling. diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java index 6ebf23e54f,1d98dd9363..7130c595a2 --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java @@@ -46,11 -47,10 +46,11 @@@ public final strictfp class DefaultCoup * Creates the resource to use for testing purpose. */ static DefaultCoupledResource create(final NameFactory factory) { - final DefaultOperationMetadata operation = new DefaultOperationMetadata("Get Map", - DistributedComputingPlatform.WEB_SERVICES, null); + final DefaultOperationMetadata operation = new DefaultOperationMetadata(); + operation.setOperationName("Get Map"); - operation.setDistributedComputingPlatforms(singleton(UnsupportedCodeList.valueOf("WEB_SERVICES"))); - operation.setParameters(singleton((ParameterDescriptor<?>) ServiceParameterTest.create())); - operation.setConnectPoints(singleton(NilReason.MISSING.createNilObject(OnlineResource.class))); ++ operation.setDistributedComputingPlatforms(Set.of(UnsupportedCodeList.valueOf("WEB_SERVICES"))); + operation.setParameters(Set.of((ParameterDescriptor<?>) ServiceParameterTest.create())); + operation.setConnectPoints(Set.of(NilReason.MISSING.createNilObject(OnlineResource.class))); final DefaultCoupledResource resource = new DefaultCoupledResource(); resource.setScopedName((ScopedName) factory.createGenericName(null, "mySpace", "ABC-123")); diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java index b27d919138,3c26eac39b..41fdcc0039 --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java @@@ -16,11 -16,17 +16,12 @@@ */ package org.apache.sis.metadata.iso.identification; + import java.util.Set; import javax.xml.bind.JAXBException; import org.opengis.util.NameFactory; -import org.opengis.parameter.ParameterDirection; import org.opengis.parameter.ParameterDescriptor; import org.opengis.metadata.citation.Citation; -import org.opengis.metadata.identification.CouplingType; -import org.opengis.metadata.identification.CoupledResource; -import org.opengis.metadata.identification.OperationMetadata; -import org.opengis.metadata.identification.ServiceIdentification; -import org.opengis.metadata.identification.DistributedComputingPlatform; +import org.apache.sis.internal.geoapi.evolution.UnsupportedCodeList; import org.apache.sis.metadata.iso.citation.DefaultCitation; import org.apache.sis.internal.system.DefaultFactories; import org.apache.sis.metadata.xml.TestUsingFile; @@@ -63,10 -68,10 +63,10 @@@ public final strictfp class DefaultServ factory.createGenericName(null, "Web Map Server"), // serviceType NilReason.MISSING.createNilObject(Citation.class), // citation "A dummy service for testing purpose."); // abstract - id.setServiceTypeVersions(singleton("1.0")); - id.setCoupledResources(singleton(resource)); + id.setServiceTypeVersions(Set.of("1.0")); + id.setCoupledResources(Set.of(resource)); - id.setCouplingType(CouplingType.LOOSE); + id.setCouplingType(UnsupportedCodeList.valueOf("LOOSE")); - id.setContainsOperations(singleton(resource.getOperation())); + id.setContainsOperations(Set.of(resource.getOperation())); return id; } diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataFallbackVerifier.java index 3cfbd28bec,9429c08c41..99ddaa8efc --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataFallbackVerifier.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataFallbackVerifier.java @@@ -16,13 -16,12 +16,11 @@@ */ package org.apache.sis.metadata.sql; - import java.util.Arrays; import java.util.Set; - import java.util.HashSet; import org.opengis.util.InternationalString; import org.opengis.metadata.Identifier; -import org.opengis.metadata.citation.Party; import org.opengis.metadata.citation.Citation; -import org.opengis.metadata.citation.Responsibility; +import org.opengis.metadata.citation.ResponsibleParty; import org.apache.sis.internal.simple.CitationConstant; import org.apache.sis.metadata.iso.citation.Citations; import org.apache.sis.metadata.MetadataStandard; diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java index 4cb97f8907,24401459ae..01f8227743 --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java @@@ -16,7 -16,8 +16,7 @@@ */ package org.apache.sis.metadata.sql; - import java.util.Collections; + import java.util.Set; -import org.opengis.metadata.citation.Contact; import org.opengis.metadata.citation.Citation; import org.opengis.metadata.citation.PresentationForm; import org.opengis.metadata.citation.OnLineFunction; diff --cc core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java index 4e99c36c1c,04269a6334..79aa4b20af --- a/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java @@@ -121,10 -117,10 +120,10 @@@ public strictfp class MetadataAssert ex */ public static void assertFeatureSourceEquals(final String name, final String[] features, final Source source) { assertEquals("metadata.lineage.source.sourceCitation.title", name, String.valueOf(source.getSourceCitation().getTitle())); - final Scope scope = source.getScope(); + final DefaultScope scope = (DefaultScope) ((DefaultSource) source).getScope(); assertNotNull("metadata.lineage.source.scope", scope); assertEquals("metadata.lineage.source.scope.level", ScopeCode.FEATURE_TYPE, scope.getLevel()); - final Object[] actual = CollectionsExt.toArray(getSingleton(scope.getLevelDescription()).getFeatures(), Object.class); - final var actual = getSingleton(scope.getLevelDescription()).getFeatures().toArray(CharSequence[]::new); ++ final Object[] actual = getSingleton(scope.getLevelDescription()).getFeatures().toArray(); for (int i=0; i<actual.length; i++) { actual[i] = actual[i].toString(); } diff --cc core/sis-metadata/src/test/java/org/apache/sis/test/mock/MetadataMock.java index 5479bc2022,3303ddb1cf..bcdd092e7f --- a/core/sis-metadata/src/test/java/org/apache/sis/test/mock/MetadataMock.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/test/mock/MetadataMock.java @@@ -16,9 -16,12 +16,9 @@@ */ package org.apache.sis.test.mock; -import java.util.Map; +import java.util.Locale; + import java.util.Set; import java.util.Collection; --import java.util.Collections; -import java.util.Locale; -import java.nio.charset.Charset; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @@@ -72,8 -85,9 +72,8 @@@ public final strictfp class MetadataMoc * @return {@link #language} */ @Override - @Deprecated public Collection<Locale> getLanguages() { - return (language != null) ? Collections.singleton(language) : Collections.emptySet(); + return (language != null) ? Set.of(language) : Set.of(); } /** diff --cc core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java index 3bf250350b,9c1d259e12..60605b3c2d --- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java +++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java @@@ -161,12 -163,12 +161,12 @@@ final class FinalLocationType extends A * @param rs the reference system to assign to the new location types. * @param existing an initially empty identity hash map for internal usage by this method. */ - static List<LocationType> snapshot(final Collection<? extends LocationType> types, - final ReferenceSystemUsingIdentifiers rs, final Map<LocationType, FinalLocationType> existing) + static List<AbstractLocationType> snapshot(final Collection<? extends AbstractLocationType> types, + final ReferencingByIdentifiers rs, final Map<AbstractLocationType, FinalLocationType> existing) { - final AbstractLocationType[] array = types.toArray(new AbstractLocationType[types.size()]); - final LocationType[] array = types.toArray(LocationType[]::new); ++ final AbstractLocationType[] array = types.toArray(AbstractLocationType[]::new); for (int i=0; i < array.length; i++) { - final LocationType source = array[i]; + final AbstractLocationType source = array[i]; ArgumentChecks.ensureNonNullElement("types", i, source); FinalLocationType copy = existing.get(source); if (copy == null) { diff --cc core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java index 923bb4a085,d80d5ca66d..c5b80c0144 --- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java +++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java @@@ -76,10 -80,12 +76,9 @@@ import org.apache.sis.measure.Latitude import org.apache.sis.measure.Quantities; import org.apache.sis.measure.Units; -import static java.util.logging.Logger.getLogger; // Branch-dependent imports -import org.opengis.metadata.citation.Party; -import org.opengis.referencing.gazetteer.Location; -import org.opengis.referencing.gazetteer.LocationType; +import org.apache.sis.metadata.iso.citation.AbstractParty; - import org.apache.sis.internal.jdk9.JDK9; /** diff --cc core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/LocationTypeTest.java index e69e23ae97,e0c1bbe950..a7a335d818 --- a/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/LocationTypeTest.java +++ b/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/LocationTypeTest.java @@@ -180,8 -182,7 +179,7 @@@ public final strictfp class LocationTyp @Test @DependsOnMethod("testInheritance") public void testSnapshot() { - final List<AbstractLocationType> snapshot = ModifiableLocationType.snapshot(null, create(true)); - verify(snapshot.toArray(new AbstractLocationType[snapshot.size()])); - verify(ModifiableLocationType.snapshot(null, create(true)).toArray(LocationType[]::new)); ++ verify(ModifiableLocationType.snapshot(null, create(true)).toArray(AbstractLocationType[]::new)); } /** diff --cc core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java index e018487c84,02d8863e5a..30dc73773e --- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java @@@ -853,12 -851,12 +852,12 @@@ public class Formatter implements Local appendForSubtypes(object); } if (showIDs) { - Collection<? extends Identifier> identifiers = object.getIdentifiers(); + Collection<ReferenceIdentifier> identifiers = object.getIdentifiers(); if (identifiers != null) { // Paranoiac check if (filterID) { - for (final Identifier id : identifiers) { + for (final ReferenceIdentifier id : identifiers) { if (Citations.identifierMatches(authority, id.getAuthority())) { - identifiers = Collections.singleton(id); + identifiers = Set.of(id); break; } } diff --cc core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CodeTest.java index e6f7e8b8be,2c7b8ab36e..d77873c5bd --- a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CodeTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CodeTest.java @@@ -16,9 -16,9 +16,9 @@@ */ package org.apache.sis.internal.jaxb.referencing; - import java.util.Collections; + import java.util.Set; import org.opengis.referencing.crs.GeographicCRS; -import org.opengis.metadata.Identifier; +import org.opengis.referencing.ReferenceIdentifier; import org.apache.sis.internal.util.Constants; import org.apache.sis.internal.simple.SimpleCitation; import org.apache.sis.referencing.ImmutableIdentifier; @@@ -94,8 -94,8 +94,8 @@@ public final strictfp class CodeTest ex @Test @DependsOnMethod("testWithVersion") public void testForIdentifiedObject() { - final Identifier id = new ImmutableIdentifier(Citations.EPSG, "EPSG", "4326", "8.2", null); + final ReferenceIdentifier id = new ImmutableIdentifier(Citations.EPSG, "EPSG", "4326", "8.2", null); - final Code value = Code.forIdentifiedObject(GeographicCRS.class, Collections.singleton(id)); + final Code value = Code.forIdentifiedObject(GeographicCRS.class, Set.of(id)); assertNotNull(value); assertEquals("codeSpace", Constants.IOGP, value.codeSpace); assertEquals("code", "urn:ogc:def:crs:EPSG:8.2:4326", value.code); @@@ -111,8 -111,8 +111,8 @@@ final DefaultCitation authority = new DefaultCitation("EPSG"); authority.getIdentifiers().add(new ImmutableIdentifier(null, "OGP", "EPSG")); - final Identifier id = new ImmutableIdentifier(authority, "EPSG", "4326", "8.2", null); + final ReferenceIdentifier id = new ImmutableIdentifier(authority, "EPSG", "4326", "8.2", null); - final Code value = Code.forIdentifiedObject(GeographicCRS.class, Collections.singleton(id)); + final Code value = Code.forIdentifiedObject(GeographicCRS.class, Set.of(id)); assertNotNull(value); assertEquals("codeSpace", "OGP", value.codeSpace); assertEquals("code", "urn:ogc:def:crs:EPSG:8.2:4326", value.code); diff --cc core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java index d9c709e326,88e0487826..61a10bf572 --- a/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/parameter/DefaultParameterDescriptorGroupTest.java @@@ -19,7 -19,7 +19,6 @@@ package org.apache.sis.parameter import java.util.Map; import java.util.List; import java.util.HashMap; - import java.util.Collections; -import org.opengis.parameter.ParameterDirection; import org.opengis.parameter.GeneralParameterDescriptor; import org.opengis.parameter.ParameterNotFoundException; import org.apache.sis.internal.util.Constants; diff --cc core/sis-referencing/src/test/java/org/apache/sis/parameter/ParametersTest.java index 278e8dbecd,d985502dce..b7ae48f2d0 --- a/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParametersTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParametersTest.java @@@ -16,13 -16,15 +16,13 @@@ */ package org.apache.sis.parameter; + import java.util.Map; import java.util.Set; import java.util.Collection; - import java.util.Collections; import javax.measure.Unit; import org.opengis.parameter.ParameterDescriptor; -import org.opengis.parameter.ParameterDirection; import org.opengis.parameter.ParameterValue; import org.opengis.parameter.ParameterValueGroup; -import org.opengis.util.TypeName; import org.opengis.util.GenericName; import org.opengis.util.InternationalString; import org.apache.sis.measure.Range; diff --cc core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java index a89901ea3b,bb1969ebd1..79f7e49504 --- a/core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/parameter/TensorParametersTest.java @@@ -29,7 -29,7 +29,6 @@@ import org.apache.sis.test.TestCase import org.junit.AfterClass; import org.junit.Test; - import static java.util.Collections.singletonMap; -import static org.opengis.test.Validators.validate; import static org.apache.sis.test.ReferencingAssert.*; import static org.apache.sis.internal.util.Constants.NUM_ROW; import static org.apache.sis.internal.util.Constants.NUM_COL; @@@ -319,7 -319,8 +318,7 @@@ public strictfp class TensorParametersT } } final ParameterValueGroup group = param.createValueGroup( - singletonMap(ParameterDescriptor.NAME_KEY, "Test"), matrix); + Map.of(ParameterDescriptor.NAME_KEY, "Test"), matrix); - validate(group); assertEquals(NUM_ROW, numRow, group.parameter(NUM_ROW).intValue()); assertEquals(NUM_COL, numCol, group.parameter(NUM_COL).intValue()); assertEquals("elements", matrix, param.toMatrix(group)); diff --cc core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java index cf85e0fa75,7d6e3a7da0..10d438272f --- 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 @@@ -155,12 -139,12 +153,12 @@@ public final strictfp class MetadataTes online.setProtocol("http"); final DefaultContact contact = new DefaultContact(online); contact.getIdentifierMap().putSpecialized(IdentifierSpace.ID, "IFREMER"); - contact.setPhones(Arrays.asList( + contact.setPhones(List.of( - new DefaultTelephone("+33 (0)2 xx.xx.xx.x6", TelephoneType.VOICE), - new DefaultTelephone("+33 (0)2 xx.xx.xx.x4", TelephoneType.FACSIMILE) + telephone("+33 (0)2 xx.xx.xx.x6", "VOICE"), + telephone("+33 (0)2 xx.xx.xx.x4", "FACSIMILE") )); final DefaultAddress address = new DefaultAddress(); - address.setDeliveryPoints(singleton("Brest institute")); + address.setDeliveryPoints(Set.of("Brest institute")); address.setCity(new SimpleInternationalString("Plouzane")); address.setPostalCode("29280"); address.setCountry(country); @@@ -184,12 -168,12 +182,12 @@@ final DefaultOnlineResource online = new DefaultOnlineResource(URI.create("http://www.com.univ-mrs.fr/LOB/")); online.setProtocol("http"); final DefaultContact contact = new DefaultContact(online); - contact.setPhones(Arrays.asList( + contact.setPhones(List.of( - new DefaultTelephone("+33 (0)4 xx.xx.xx.x5", TelephoneType.VOICE), - new DefaultTelephone("+33 (0)4 xx.xx.xx.x8", TelephoneType.FACSIMILE) + telephone("+33 (0)4 xx.xx.xx.x5", "VOICE"), + telephone("+33 (0)4 xx.xx.xx.x8", "FACSIMILE") )); final DefaultAddress address = new DefaultAddress(); - address.setDeliveryPoints(singleton("Oceanology institute")); + address.setDeliveryPoints(Set.of("Oceanology institute")); address.setCity(new SimpleInternationalString("Marseille")); address.setPostalCode("13288"); address.setCountry(country); @@@ -236,22 -220,22 +234,22 @@@ */ { final DefaultLegalConstraints constraint = new DefaultLegalConstraints(); - constraint.setAccessConstraints(singleton(Restriction.LICENSE)); - identification.setResourceConstraints(singleton(constraint)); - constraint.setAccessConstraints(Set.of(Restriction.LICENCE)); ++ constraint.setAccessConstraints(Set.of(Restriction.LICENSE)); + identification.setResourceConstraints(Set.of(constraint)); } /* * Data indentification / Aggregate information. */ { @SuppressWarnings("deprecation") - final DefaultAssociatedResource aggregateInfo = new DefaultAggregateInformation(); + final DefaultAggregateInformation aggregateInfo = new DefaultAggregateInformation(); final DefaultCitation name = new DefaultCitation("Some oceanographic campaign"); - name.setAlternateTitles(singleton(new SimpleInternationalString("Pseudo group of data"))); - name.setDates(singleton(new DefaultCitationDate(TestUtilities.date("1990-06-04 22:00:00"), DateType.REVISION))); + name.setAlternateTitles(Set.of(new SimpleInternationalString("Pseudo group of data"))); + name.setDates(Set.of(new DefaultCitationDate(TestUtilities.date("1990-06-04 22:00:00"), DateType.REVISION))); aggregateInfo.setName(name); aggregateInfo.setInitiativeType(InitiativeType.CAMPAIGN); - aggregateInfo.setAssociationType(AssociationType.LARGER_WORK_CITATION); + aggregateInfo.setAssociationType(AssociationType.LARGER_WORD_CITATION); // There is a typo ("WORD" → "WORK"), but we have to use the wrong spelling for this branch. - identification.setAggregationInfo(singleton(aggregateInfo)); + identification.setAssociatedResources(Set.of(aggregateInfo)); } /* * Data indentification / Extent. diff --cc ide-project/NetBeans/nbproject/genfiles.properties index 9598b10f14,874d87f86b..b73c624292 --- 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=f188e30a - nbproject/build-impl.xml.script.CRC32=933f5834 - nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.101.0.48 -nbproject/build-impl.xml.data.CRC32=e6c2891e -nbproject/build-impl.xml.script.CRC32=02d4f276 ++nbproject/build-impl.xml.data.CRC32=61740f25 ++nbproject/build-impl.xml.script.CRC32=101e7069 + nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.104.0.48 diff --cc pom.xml index db966691dc,1e8f742594..c24c9dff72 --- a/pom.xml +++ b/pom.xml @@@ -873,9 -867,9 +867,9 @@@ <validateLinks>true</validateLinks> <!-- Validates content of package-list resources. --> <detectJavaApiLink>false</detectJavaApiLink> <!-- Let us declare link to Java API. --> <links> - <link>https://docs.oracle.com/javase/8/docs/api</link> + <link>https://docs.oracle.com/en/java/javase/11/docs/api</link> <link>http://unitsofmeasurement.github.io/unit-api/site/apidocs</link> - <link>http://www.geoapi.org/snapshot/javadoc</link> + <link>http://www.geoapi.org/3.0/javadoc</link> </links> <additionalOptions> diff --cc storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java index 3bc391981f,ed51bc0d94..080ca1f106 --- 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 @@@ -80,8 -79,8 +79,7 @@@ import ucar.nc2.constants.ACDD import ucar.nc2.constants.CDM; import ucar.nc2.constants.CF; - import static java.util.Collections.singleton; import static org.apache.sis.storage.netcdf.AttributeNames.*; -import static org.apache.sis.internal.util.CollectionsExt.first; /** @@@ -513,11 -518,13 +511,13 @@@ split: while ((start = CharSequences.s if (individualName != null || organisationName != null || contact != null) { // Do not test role. AbstractParty party = null; if (individualName != null) party = new DefaultIndividual(individualName, null, null); - if (organisationName != null) party = new DefaultOrganisation(organisationName, null, (Individual) party, null); + if (organisationName != null) party = new DefaultOrganisation(organisationName, null, (DefaultIndividual) 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 DefaultResponsibleParty(role); - ((DefaultResponsibleParty) responsibility).setParties(singleton(party)); + if (party != null) { + ((DefaultResponsibleParty) responsibility).setParties(Set.of(party)); + } } } return responsibility; diff --cc storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java index eed2b67459,4c5370968e..64427ed861 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java @@@ -576,20 -578,21 +576,21 @@@ final class Store extends URIDataStore } properties.add(createProperty(name, type, minOccurrence, maxOccurrence, characteristics)); } + // Do not use Map.of(…) because `name` may be null. Let constructor throw the exception. final String name = IOUtilities.filenameWithoutExtension(super.getDisplayName()); return new DefaultFeatureType(Collections.singletonMap(DefaultFeatureType.NAME_KEY, name), - false, null, properties.toArray(new AbstractIdentifiedType[properties.size()])); - false, null, properties.toArray(PropertyType[]::new)); ++ false, null, properties.toArray(AbstractIdentifiedType[]::new)); } /** * Creates a property type for the given name and type. * This is a helper method for {@link #parseFeatureType(List)}. */ - private static PropertyType createProperty(final String name, final Class<?> type, - final int minOccurrence, final int maxOccurrence, final AttributeType<?>[] characteristics) + private static AbstractIdentifiedType createProperty(final String name, final Class<?> type, + final int minOccurrence, final int maxOccurrence, final DefaultAttributeType<?>[] characteristics) { return new DefaultAttributeType<>(Collections.singletonMap(DefaultAttributeType.NAME_KEY, name), - type, minOccurrence, maxOccurrence, null, characteristics); + type, minOccurrence, maxOccurrence, null, characteristics); } /** diff --cc storage/sis-storage/src/main/java/org/apache/sis/storage/aggregate/JoinFeatureSet.java index 9d7d340da0,d8297aff83..c8dfd8d964 --- a/storage/sis-storage/src/main/java/org/apache/sis/storage/aggregate/JoinFeatureSet.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/aggregate/JoinFeatureSet.java @@@ -231,16 -232,16 +230,16 @@@ public class JoinFeatureSet extends Agg * We could build the FeatureType only when first needed, but the type is required by the iterators. * Since we are going to need the type for any use of this JoinFeatureSet, better to create it now. */ - PropertyType[] properties = new PropertyType[] { + AbstractIdentifiedType[] properties = new AbstractIdentifiedType[] { - new DefaultAssociationRole(name(leftAlias), leftType, joinType.minimumOccurs(false), 1), - new DefaultAssociationRole(name(rightAlias), rightType, joinType.minimumOccurs(true), 1) + new DefaultAssociationRole(properties(leftAlias), leftType, joinType.minimumOccurs(false), 1), + new DefaultAssociationRole(properties(rightAlias), rightType, joinType.minimumOccurs(true), 1) }; final String identifierDelimiter = Containers.property(featureInfo, "identifierDelimiter", String.class); if (identifierDelimiter != null && AttributeConvention.hasIdentifier(leftType) && AttributeConvention.hasIdentifier(rightType)) { - final Operation identifier = FeatureOperations.compound( + final AbstractOperation identifier = FeatureOperations.compound( - name(AttributeConvention.IDENTIFIER_PROPERTY), identifierDelimiter, + properties(AttributeConvention.IDENTIFIER_PROPERTY), identifierDelimiter, Containers.property(featureInfo, "identifierPrefix", String.class), Containers.property(featureInfo, "identifierSuffix", String.class), properties); properties = ArraysExt.insert(properties, 0, 1); diff --cc storage/sis-storage/src/test/java/org/apache/sis/internal/storage/csv/StoreTest.java index 06f07681d3,421e59a612..46fdbe2bb0 --- a/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/csv/StoreTest.java +++ b/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/csv/StoreTest.java @@@ -98,10 -101,10 +102,10 @@@ public final strictfp class StoreTest e @Test public void testGetMetadata() throws DataStoreException { final Metadata metadata; - try (Store store = open()) { + try (Store store = open(true)) { metadata = store.getMetadata(); } - final Extent extent = getSingleton(getSingleton(metadata.getIdentificationInfo()).getExtents()); + final Extent extent = getSingleton(((AbstractIdentification) getSingleton(metadata.getIdentificationInfo())).getExtents()); final GeographicBoundingBox bbox = (GeographicBoundingBox) getSingleton(extent.getGeographicElements()); assertEquals("westBoundLongitude", 50.23, bbox.getWestBoundLongitude(), STRICT); assertEquals("eastBoundLongitude", 50.31, bbox.getEastBoundLongitude(), STRICT); @@@ -117,10 -120,10 +121,10 @@@ */ @Test public void testStaticFeatures() throws DataStoreException { - try (Store store = open()) { + try (Store store = open(true)) { verifyFeatureType(store.featureType, double[].class, 1); assertEquals("foliation", Foliation.TIME, store.foliation); - final Iterator<Feature> it = store.features(false).iterator(); + final Iterator<AbstractFeature> it = store.features(false).iterator(); assertPropertyEquals(it.next(), "a", "12:33:51", "12:36:11", new double[] {11, 2, 12, 3}, "walking", 1); assertPropertyEquals(it.next(), "b", "12:33:51", "12:36:51", new double[] {10, 2, 11, 3}, "walking", 2); assertPropertyEquals(it.next(), "a", "12:36:11", "12:36:51", new double[] {12, 3, 10, 3}, "walking", 2); @@@ -146,13 -149,13 +150,13 @@@ @Test public void testMovingFeatures() throws DataStoreException { isMovingFeature = true; - try (Store store = new Store(null, new StorageConnector(testData()))) { + try (Store store = open(false)) { verifyFeatureType(store.featureType, Polyline.class, Integer.MAX_VALUE); assertEquals("foliation", Foliation.TIME, store.foliation); - final Iterator<Feature> it = store.features(false).iterator(); + final Iterator<AbstractFeature> it = store.features(false).iterator(); - assertPropertyEquals(it.next(), "a", "12:33:51", "12:36:51", new double[] {11, 2, 12, 3, 10, 3}, singletonList("walking"), Arrays.asList(1, 2)); - assertPropertyEquals(it.next(), "b", "12:33:51", "12:36:51", new double[] {10, 2, 11, 3}, singletonList("walking"), singletonList(2)); - assertPropertyEquals(it.next(), "c", "12:33:51", "12:36:51", new double[] {12, 1, 10, 2, 11, 3}, singletonList("vehicle"), singletonList(1)); + assertPropertyEquals(it.next(), "a", "12:33:51", "12:36:51", new double[] {11, 2, 12, 3, 10, 3}, List.of("walking"), List.of(1, 2)); + assertPropertyEquals(it.next(), "b", "12:33:51", "12:36:51", new double[] {10, 2, 11, 3}, List.of("walking"), List.of(2)); + assertPropertyEquals(it.next(), "c", "12:33:51", "12:36:51", new double[] {12, 1, 10, 2, 11, 3}, List.of("vehicle"), List.of(1)); assertFalse(it.hasNext()); } } diff --cc storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/ConcatenatedFeatureSetTest.java index cb882b1817,e507067c89..c743a128bc --- a/storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/ConcatenatedFeatureSetTest.java +++ b/storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/ConcatenatedFeatureSetTest.java @@@ -60,10 -58,10 +59,10 @@@ public final strictfp class Concatenate builder.addAttribute(String.class).setName("name"); builder.addAttribute(Integer.class).setName("population"); - final FeatureType ft = builder.build(); + final DefaultFeatureType ft = builder.build(); final FeatureSet cfs = ConcatenatedFeatureSet.create( - new MemoryFeatureSet(null, ft, Arrays.asList(ft.newInstance(), ft.newInstance())), - new MemoryFeatureSet(null, ft, Arrays.asList(ft.newInstance()))); + new MemoryFeatureSet(null, ft, List.of(ft.newInstance(), ft.newInstance())), + new MemoryFeatureSet(null, ft, List.of(ft.newInstance()))); assertSame("getType()", ft, cfs.getType()); assertEquals("features.count()", 3, cfs.features(false).count()); @@@ -109,10 -107,10 +108,10 @@@ t1f2.setPropertyValue("value", 3); t1f2.setPropertyValue("label", "first-second"); - final FeatureSet t1fs = new MemoryFeatureSet(null, t1, Arrays.asList(t1f1, t1f2)); + final FeatureSet t1fs = new MemoryFeatureSet(null, t1, List.of(t1f1, t1f2)); // Populate a feature set for second type. - final Feature t2f1 = t2.newInstance(); + final AbstractFeature t2f1 = t2.newInstance(); t2f1.setPropertyValue("value", 3); t2f1.setPropertyValue("label", "second-first"); @@@ -153,11 -151,11 +152,11 @@@ public void noCommonType() { final FeatureTypeBuilder builder = new FeatureTypeBuilder(); builder.setName("super"); - final FeatureType mockSuperType = builder.build(); - final FeatureType firstType = builder.setSuperTypes(mockSuperType).setName("first").build(); - final FeatureType secondType = builder.clear().setName("second").build(); + final DefaultFeatureType mockSuperType = builder.build(); + final DefaultFeatureType firstType = builder.setSuperTypes(mockSuperType).setName("first").build(); + final DefaultFeatureType secondType = builder.clear().setName("second").build(); - final FeatureSet fs1 = new MemoryFeatureSet(null, firstType, Collections.emptyList()); - final FeatureSet fs2 = new MemoryFeatureSet(null, secondType, Collections.emptyList()); + final FeatureSet fs1 = new MemoryFeatureSet(null, firstType, List.of()); + final FeatureSet fs2 = new MemoryFeatureSet(null, secondType, List.of()); try { FeatureSet concatenation = ConcatenatedFeatureSet.create(fs1, fs2); fail("Concatenation succeeded despite the lack of common type. Result is:\n" + concatenation); @@@ -182,8 -180,8 +181,8 @@@ // This is the expected exception. } final FeatureTypeBuilder builder = new FeatureTypeBuilder().setName("mock"); - final FeatureType mockType = builder.build(); + final DefaultFeatureType mockType = builder.build(); - final FeatureSet fs1 = new MemoryFeatureSet(null, mockType, Collections.emptyList()); + final FeatureSet fs1 = new MemoryFeatureSet(null, mockType, List.of()); final FeatureSet set = ConcatenatedFeatureSet.create(fs1); assertSame("A concatenation has been created from a single type.", fs1, set); } diff --cc storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/JoinFeatureSetTest.java index 8b3806694f,4c5191ff10..d10f93d9b9 --- a/storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/JoinFeatureSetTest.java +++ b/storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/JoinFeatureSetTest.java @@@ -71,8 -71,8 +71,8 @@@ public final strictfp class JoinFeature builder.addAttribute( String.class).setName(AttributeConvention.IDENTIFIER_PROPERTY); builder.addAttribute( String.class).setName("myNameSpace", "att1"); builder.addAttribute(Integer.class).setName("myNameSpace", "att2"); - final FeatureType type1 = builder.build(); + final DefaultFeatureType type1 = builder.build(); - featureSet1 = new MemoryFeatureSet(null, type1, Arrays.asList( + featureSet1 = new MemoryFeatureSet(null, type1, List.of( newFeature1(type1, "fid_1_0", "str1", 1), newFeature1(type1, "fid_1_1", "str2", 2), newFeature1(type1, "fid_1_2", "str3", 3), @@@ -83,8 -83,8 +83,8 @@@ builder.addAttribute( String.class).setName(AttributeConvention.IDENTIFIER_PROPERTY); builder.addAttribute(Integer.class).setName("otherNameSpace", "att3"); builder.addAttribute( Double.class).setName("otherNameSpace", "att4"); - final FeatureType type2 = builder.build(); + final DefaultFeatureType type2 = builder.build(); - featureSet2 = new MemoryFeatureSet(null, type2, Arrays.asList( + featureSet2 = new MemoryFeatureSet(null, type2, List.of( newFeature2(type2, "fid_2_0", 1, 10), newFeature2(type2, "fid_2_1", 2, 20), newFeature2(type2, "fid_2_2", 2, 30), diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java index f493afd918,22eb6f12cb..178e294276 --- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java +++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java @@@ -158,7 -159,7 +158,7 @@@ resp: for (final DefaultResponsibilit @Override public Collection<Restriction> getUseConstraints() { if (license != null) { - return Arrays.asList(Restriction.COPYRIGHT, Restriction.valueOf("LICENCE")); - return List.of(Restriction.COPYRIGHT, Restriction.LICENCE); ++ return List.of(Restriction.COPYRIGHT, Restriction.valueOf("LICENCE")); } else { return Collections.singleton(Restriction.COPYRIGHT); } diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/GroupAsPolylineOperation.java index 166da7c6b1,562f91b22b..46c5825bb5 --- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/GroupAsPolylineOperation.java +++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/GroupAsPolylineOperation.java @@@ -79,7 -81,8 +78,8 @@@ final class GroupAsPolylineOperation ex /** * The expected result type to be returned by {@link #getResult()}. */ + @SuppressWarnings("serial") - private final AttributeType<?> result; + private final DefaultAttributeType<?> result; /** * Creates a new operation which will look for geometries in the given feature association. @@@ -100,9 -103,9 +100,9 @@@ * * @param geometries accessor to the geometry implementation in use (Java2D, ESRI or JTS). */ - static <G> AttributeType<? extends G> getResult(final Geometries<G> geometries) { + static <G> DefaultAttributeType<? extends G> getResult(final Geometries<G> geometries) { - return new DefaultAttributeType<>(Collections.singletonMap(NAME_KEY, AttributeConvention.ENVELOPE_PROPERTY), - geometries.polylineClass, 1, 1, null); + return new DefaultAttributeType<>(Map.of(NAME_KEY, AttributeConvention.ENVELOPE_PROPERTY), + geometries.polylineClass, 1, 1, null); } /** diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Store.java index 394babaa84,da0f246f30..ef48ccc435 --- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Store.java +++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Store.java @@@ -203,8 -203,8 +203,8 @@@ public class Store extends StaxDataStor * @deprecated We are not sure yet if we will keep this method. Decision is pending acquisition of * more experience with the API proposed by {@link org.apache.sis.storage.FeatureSet}. */ - @Deprecated + @Deprecated(since="0.8") - public FeatureType getFeatureType(final String name) throws IllegalNameException { + public DefaultFeatureType getFeatureType(final String name) throws IllegalNameException { return types.names.get(this, name); } diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Types.java index 0a8605abc6,c1807c50af..22dd795b66 --- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Types.java +++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Types.java @@@ -100,8 -99,8 +99,8 @@@ final class Types * @deprecated We are not sure yet if we will keep this field. Decision is pending acquisition of * more experience with the API proposed by {@link org.apache.sis.storage.FeatureSet}. */ - @Deprecated + @Deprecated(since="0.8") - final FeatureNaming<FeatureType> names; + final FeatureNaming<DefaultFeatureType> names; /** * Accessor to the geometry implementation in use (Java2D, ESRI or JTS). diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/WritableStore.java index 44bb071d34,817ec098a6..7f5aeda791 --- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/WritableStore.java +++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/WritableStore.java @@@ -147,8 -147,8 +147,8 @@@ public final class WritableStore extend * * @see <a href="https://issues.apache.org/jira/browse/SIS-411">SIS-411</a> */ - @Deprecated + @Deprecated(since="1.3") - public synchronized void write(final Metadata metadata, final Stream<? extends Feature> features) throws DataStoreException { + public synchronized void write(final Metadata metadata, final Stream<? extends AbstractFeature> features) throws DataStoreException { try { /* * If we created a reader for reading metadata, we need to close that reader now otherwise the call diff --cc storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/WriterTest.java index 6ca634509d,5e5de0203f..136d689e77 --- a/storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/WriterTest.java +++ b/storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/WriterTest.java @@@ -272,10 -271,10 +271,10 @@@ public final strictfp class WriterTest point1.setPropertyValue("ageofdgpsdata", 55.55); point1.setPropertyValue("dgpsid", 256); point1.setPropertyValue("fix", Fix.NONE); - point1.setPropertyValue("link", Arrays.asList(new Link(new URI("http://first-address1.org")), - new Link(new URI("http://first-address2.org")), - new Link(new URI("http://first-address3.org")))); + point1.setPropertyValue("link", List.of(new Link(new URI("http://first-address1.org")), + new Link(new URI("http://first-address2.org")), + new Link(new URI("http://first-address3.org")))); - final Feature point3 = types.wayPoint.newInstance(); + final AbstractFeature point3 = types.wayPoint.newInstance(); point3.setPropertyValue("sis:geometry", new Point(35, 30)); point3.setPropertyValue("time", Instant.parse("2010-01-30T00:00:00Z")); point3.setPropertyValue("name", "third point"); @@@ -294,12 -293,12 +293,12 @@@ point3.setPropertyValue("ageofdgpsdata", 85.55); point3.setPropertyValue("dgpsid", 456); point3.setPropertyValue("fix", Fix.THREE_DIMENSIONAL); - point3.setPropertyValue("link", Arrays.asList(new Link(new URI("http://third-address1.org")), - new Link(new URI("http://third-address2.org")))); + point3.setPropertyValue("link", List.of(new Link(new URI("http://third-address1.org")), + new Link(new URI("http://third-address2.org")))); - final Feature point2 = types.wayPoint.newInstance(); + final AbstractFeature point2 = types.wayPoint.newInstance(); point2.setPropertyValue("sis:geometry", new Point(25, 20)); - final List<AbstractFeature> wayPoints = Arrays.asList(point1, point2, point3); - final List<Feature> wayPoints = List.of(point1, point2, point3); - final List<Feature> features; ++ final List<AbstractFeature> wayPoints = List.of(point1, point2, point3); + final List<AbstractFeature> features; switch (type) { case WAY_POINT: { features = wayPoints; @@@ -314,11 -313,11 +313,11 @@@ route1.setPropertyValue("type", "Route type"); route1.setPropertyValue("number", 7); route1.setPropertyValue("rtept", wayPoints); - route1.setPropertyValue("link", Arrays.asList(new Link(new URI("http://route-address1.org")), - new Link(new URI("http://route-address2.org")), - new Link(new URI("http://route-address3.org")))); + route1.setPropertyValue("link", List.of(new Link(new URI("http://route-address1.org")), + new Link(new URI("http://route-address2.org")), + new Link(new URI("http://route-address3.org")))); - final Feature route2 = types.route.newInstance(); + final AbstractFeature route2 = types.route.newInstance(); - features = Arrays.asList(route1, route2); + features = List.of(route1, route2); break; } case TRACK: { @@@ -333,12 -332,12 +332,12 @@@ track1.setPropertyValue("src", "Track source"); track1.setPropertyValue("type", "Track type"); track1.setPropertyValue("number", 7); - track1.setPropertyValue("trkseg", Arrays.asList(seg1, seg2)); - track1.setPropertyValue("link", Arrays.asList(new Link(new URI("http://track-address1.org")), - new Link(new URI("http://track-address2.org")), - new Link(new URI("http://track-address3.org")))); + track1.setPropertyValue("trkseg", List.of(seg1, seg2)); + track1.setPropertyValue("link", List.of(new Link(new URI("http://track-address1.org")), + new Link(new URI("http://track-address2.org")), + new Link(new URI("http://track-address3.org")))); - final Feature track2 = types.track.newInstance(); + final AbstractFeature track2 = types.track.newInstance(); - features = Arrays.asList(track1, track2); + features = List.of(track1, track2); break; } default: throw new AssertionError(type);