This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-3.1 in repository https://gitbox.apache.org/repos/asf/sis.git
commit 99f667e72beb6b521ff0e247a9a318cbc23a5f47 Merge: fadb6e856b daa2c40eaa Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sat Feb 10 13:02:43 2024 +0100 Merge branch 'geoapi-4.0' into geoapi-3.1. The changes are mostly cleanups. .../sis/buildtools/coding/ReorganizeImports.java | 5 +- .../org/apache/sis/cloud/aws/s3/FileService.java | 2 +- .../main/org/apache/sis/console/SIS.java | 2 +- .../org/apache/sis/coverage/BandedCoverage.java | 2 +- .../main/org/apache/sis/coverage/Category.java | 11 +- .../main/org/apache/sis/coverage/CategoryList.java | 12 +- .../org/apache/sis/coverage/ConvertedCategory.java | 2 +- .../org/apache/sis/coverage/CoverageCombiner.java | 2 - .../org/apache/sis/coverage/SampleDimension.java | 26 +- .../sis/coverage/grid/BufferedGridCoverage.java | 7 +- .../coverage/grid/CoordinateOperationFinder.java | 5 +- .../apache/sis/coverage/grid/DefaultEvaluator.java | 6 +- .../sis/coverage/grid/DimensionalityReduction.java | 20 +- .../apache/sis/coverage/grid/DomainLinearizer.java | 22 +- .../apache/sis/coverage/grid/GridClippingMode.java | 2 +- .../sis/coverage/grid/GridCoordinatesView.java | 5 +- .../org/apache/sis/coverage/grid/GridCoverage.java | 16 +- .../apache/sis/coverage/grid/GridCoverage2D.java | 8 +- .../sis/coverage/grid/GridCoverageBuilder.java | 19 +- .../sis/coverage/grid/GridCoverageProcessor.java | 14 +- .../apache/sis/coverage/grid/GridDerivation.java | 15 +- .../org/apache/sis/coverage/grid/GridExtent.java | 34 +- .../org/apache/sis/coverage/grid/GridGeometry.java | 33 +- .../apache/sis/coverage/grid/GridOrientation.java | 4 +- .../apache/sis/coverage/grid/ImageRenderer.java | 21 +- .../apache/sis/coverage/grid/PixelTranslation.java | 14 +- .../apache/sis/coverage/grid/ReshapedImage.java | 2 - .../sis/coverage/grid/j2d/ColorsForRange.java | 3 +- .../sis/coverage/grid/j2d/ImageUtilities.java | 8 +- .../sis/coverage/grid/j2d/TilePlaceholder.java | 5 +- .../org/apache/sis/coverage/grid/package-info.java | 4 +- .../sis/coverage/internal/CompoundTransform.java | 1 - .../apache/sis/feature/AbstractAssociation.java | 3 - .../org/apache/sis/feature/AbstractAttribute.java | 5 +- .../org/apache/sis/feature/AbstractFeature.java | 6 +- .../apache/sis/feature/AbstractIdentifiedType.java | 11 +- .../org/apache/sis/feature/CharacteristicMap.java | 5 - .../apache/sis/feature/CharacteristicTypeMap.java | 9 +- .../apache/sis/feature/DefaultAssociationRole.java | 10 +- .../apache/sis/feature/DefaultAttributeType.java | 8 +- .../org/apache/sis/feature/DefaultFeatureType.java | 11 +- .../main/org/apache/sis/feature/DenseFeature.java | 6 +- .../main/org/apache/sis/feature/FeatureFormat.java | 2 +- .../org/apache/sis/feature/FeatureOperations.java | 4 +- .../main/org/apache/sis/feature/Field.java | 2 - .../sis/feature/FoliationRepresentation.java | 4 +- .../main/org/apache/sis/feature/LinkOperation.java | 2 - .../apache/sis/feature/MultiValuedAssociation.java | 2 +- .../org/apache/sis/feature/OperationResult.java | 3 +- .../main/org/apache/sis/feature/SparseFeature.java | 6 +- .../apache/sis/feature/StringJoinOperation.java | 5 +- .../main/org/apache/sis/feature/package-info.java | 12 +- .../main/org/apache/sis/filter/BinaryFunction.java | 8 +- .../apache/sis/filter/BinaryGeometryFilter.java | 10 +- .../org/apache/sis/filter/BinarySpatialFilter.java | 11 +- .../main/org/apache/sis/filter/Capabilities.java | 12 +- .../org/apache/sis/filter/ComparisonFilter.java | 5 +- .../org/apache/sis/filter/DefaultSortProperty.java | 8 +- .../main/org/apache/sis/filter/DistanceFilter.java | 11 +- .../main/org/apache/sis/filter/LikeFilter.java | 7 +- .../main/org/apache/sis/filter/LogicalFilter.java | 6 +- .../main/org/apache/sis/filter/UnaryFunction.java | 7 +- .../apache/sis/filter/internal/CopyVisitor.java | 10 +- .../sis/filter/internal/GeometryConverter.java | 8 +- .../main/org/apache/sis/filter/package-info.java | 2 +- .../sis/geometry/wrapper/GeometryWrapper.java | 6 +- .../geometry/wrapper/SpatialOperationContext.java | 4 +- .../org/apache/sis/geometry/wrapper/jts/JTS.java | 7 +- .../sis/geometry/wrapper/jts/ShapeAdapter.java | 3 +- .../apache/sis/image/BandedSampleConverter.java | 2 +- .../main/org/apache/sis/image/ComputedImage.java | 7 +- .../main/org/apache/sis/image/ComputedTiles.java | 1 - .../main/org/apache/sis/image/DataType.java | 2 - .../main/org/apache/sis/image/ImageAdapter.java | 7 +- .../main/org/apache/sis/image/ImageCombiner.java | 8 +- .../main/org/apache/sis/image/ImageProcessor.java | 26 +- .../main/org/apache/sis/image/PixelIterator.java | 15 +- .../main/org/apache/sis/image/PlanarImage.java | 5 +- .../sis/image/PositionalConsistencyImage.java | 4 +- .../main/org/apache/sis/image/ResamplingGrid.java | 2 +- .../main/org/apache/sis/image/UserProperties.java | 5 +- .../main/org/apache/sis/image/package-info.java | 2 +- .../org/apache/sis/index/tree/NodeIterator.java | 1 - .../main/org/apache/sis/index/tree/PointTree.java | 9 +- .../org/apache/sis/index/tree/PointTreeNode.java | 6 +- .../apache/sis/coverage/grid/GridGeometryTest.java | 6 +- .../apache/sis/feature/test/FeatureComparator.java | 10 +- .../sis/image/processing/isoline/StepsViewer.java | 1 - .../org/apache/sis/index/tree/PointTreeTest.java | 6 +- .../org/apache/sis/metadata/AbstractMetadata.java | 2 +- .../org/apache/sis/metadata/MetadataStandard.java | 10 +- .../apache/sis/metadata/ModifiableMetadata.java | 9 +- .../org/apache/sis/metadata/PropertyAccessor.java | 32 +- .../main/org/apache/sis/metadata/TreeNode.java | 8 +- .../org/apache/sis/metadata/TreeNodeChildren.java | 2 +- .../org/apache/sis/metadata/TypeValuePolicy.java | 2 +- .../apache/sis/metadata/internal/AxisNames.java | 4 +- .../org/apache/sis/metadata/internal/Merger.java | 17 +- .../sis/metadata/internal/NameToIdentifier.java | 4 +- .../apache/sis/metadata/iso/DefaultMetadata.java | 4 +- .../sis/metadata/iso/citation/Citations.java | 2 +- .../sis/metadata/iso/citation/DefaultContact.java | 2 +- .../iso/content/DefaultSampleDimension.java | 4 +- .../DefaultDigitalTransferOptions.java | 2 +- .../iso/extent/AbstractGeographicExtent.java | 6 +- .../sis/metadata/iso/extent/DefaultExtent.java | 12 +- .../iso/extent/DefaultGeographicBoundingBox.java | 13 +- .../metadata/iso/extent/DefaultVerticalExtent.java | 2 - .../apache/sis/metadata/iso/extent/Extents.java | 4 +- .../iso/identification/DefaultResolution.java | 2 +- .../metadata/iso/legacy/LegacyPropertyAdapter.java | 4 +- .../maintenance/DefaultMaintenanceInformation.java | 4 +- .../iso/maintenance/DefaultScopeDescription.java | 34 +- .../sis/metadata/iso/maintenance/package-info.java | 2 +- .../iso/quality/DefaultEvaluationMethod.java | 4 +- .../sis/metadata/iso/spatial/DefaultGCP.java | 2 +- .../apache/sis/metadata/sql/MetadataSource.java | 5 +- .../apache/sis/metadata/sql/MetadataWriter.java | 2 +- .../org/apache/sis/metadata/sql/package-info.java | 2 +- .../apache/sis/metadata/sql/util/ScriptRunner.java | 1 - .../org/apache/sis/util/iso/DefaultLocalName.java | 6 +- .../org/apache/sis/util/iso/DefaultMemberName.java | 4 +- .../apache/sis/util/iso/DefaultNameFactory.java | 1 - .../org/apache/sis/util/iso/DefaultNameSpace.java | 5 +- .../org/apache/sis/util/iso/DefaultRecord.java | 5 +- .../apache/sis/util/iso/DefaultRecordSchema.java | 4 +- .../org/apache/sis/util/iso/DefaultRecordType.java | 12 +- .../org/apache/sis/util/iso/DefaultScopedName.java | 1 - .../main/org/apache/sis/util/iso/Names.java | 4 +- .../org/apache/sis/util/iso/RecordDefinition.java | 5 +- .../main/org/apache/sis/util/iso/Types.java | 7 +- .../main/org/apache/sis/util/iso/package-info.java | 2 +- .../main/org/apache/sis/xml/IdentifierSpace.java | 4 +- .../main/org/apache/sis/xml/MarshallerPool.java | 7 +- .../main/org/apache/sis/xml/Namespaces.java | 5 +- .../org/apache/sis/xml/TransformingNamespaces.java | 6 +- .../main/org/apache/sis/xml/XML.java | 6 +- .../apache/sis/xml/bind/AdapterReplacement.java | 2 +- .../main/org/apache/sis/xml/bind/Context.java | 1 - .../apache/sis/xml/bind/IdentifierMapAdapter.java | 7 +- .../sis/xml/bind/ModifiableIdentifierMap.java | 2 +- .../org/apache/sis/xml/bind/gco/PropertyType.java | 2 +- .../org/apache/sis/xml/bind/gco/package-info.java | 2 +- .../apache/sis/xml/bind/lan/LocaleAndCharset.java | 23 +- .../bind/metadata/replace/QualityParameter.java | 2 +- .../apache/sis/metadata/PropertyAccessorTest.java | 2 +- .../sis/xml/test/AnnotationConsistencyCheck.java | 4 +- .../main/org/apache/sis/portrayal/Canvas.java | 22 +- .../org/apache/sis/portrayal/CanvasExtent.java | 4 +- .../org/apache/sis/portrayal/CanvasFollower.java | 12 +- .../org/apache/sis/portrayal/PlanarCanvas.java | 12 +- .../apache/sis/portrayal/TransformChangeEvent.java | 5 +- .../org/apache/sis/style/se1/StyleElement.java | 5 +- .../org/apache/sis/style/se1/StyleFactory.java | 5 +- .../apache/sis/profile/france/FrenchProfile.java | 2 +- .../sis/profile/japan/netcdf/FactoryForUCAR.java | 2 + .../apache/sis/profile/japan/netcdf/GCOM_C.java | 2 +- .../referencing/gazetteer/FinalLocationType.java | 6 +- .../gazetteer/GeohashReferenceSystem.java | 3 +- .../sis/referencing/gazetteer/LocationFormat.java | 2 +- .../gazetteer/MilitaryGridReferenceSystem.java | 9 +- .../gazetteer/ModifiableLocationType.java | 10 +- .../gazetteer/ReferenceVerifyException.java | 4 +- .../gazetteer/ReferencingByIdentifiers.java | 4 +- .../sis/referencing/gazetteer/SimpleLocation.java | 2 +- .../sis/referencing/gazetteer/package-info.java | 2 +- .../sis/geometry/AbstractDirectPosition.java | 12 +- .../org/apache/sis/geometry/AbstractEnvelope.java | 33 +- .../org/apache/sis/geometry/ArrayEnvelope.java | 28 +- .../org/apache/sis/geometry/CoordinateFormat.java | 17 +- .../org/apache/sis/geometry/DirectPosition1D.java | 4 +- .../org/apache/sis/geometry/DirectPosition2D.java | 8 +- .../main/org/apache/sis/geometry/Envelope2D.java | 20 +- .../main/org/apache/sis/geometry/Envelopes.java | 6 +- .../apache/sis/geometry/GeneralDirectPosition.java | 2 +- .../org/apache/sis/geometry/GeneralEnvelope.java | 54 ++- .../org/apache/sis/geometry/ImmutableEnvelope.java | 4 +- .../main/org/apache/sis/geometry/SubEnvelope.java | 14 +- .../apache/sis/geometry/WraparoundAdjustment.java | 8 +- .../apache/sis/geometry/WraparoundInEnvelope.java | 1 - .../main/org/apache/sis/geometry/package-info.java | 2 +- .../main/org/apache/sis/io/wkt/AbstractParser.java | 8 +- .../main/org/apache/sis/io/wkt/Colors.java | 2 +- .../main/org/apache/sis/io/wkt/Convention.java | 4 +- .../main/org/apache/sis/io/wkt/Element.java | 4 +- .../main/org/apache/sis/io/wkt/ElementKind.java | 2 +- .../org/apache/sis/io/wkt/FormattableObject.java | 17 +- .../main/org/apache/sis/io/wkt/Formatter.java | 2 +- .../apache/sis/io/wkt/GeodeticObjectParser.java | 30 +- .../org/apache/sis/io/wkt/MathTransformParser.java | 4 +- .../main/org/apache/sis/io/wkt/Symbols.java | 7 +- .../main/org/apache/sis/io/wkt/Transliterator.java | 8 +- .../sis/io/wkt/UnparsableObjectException.java | 2 +- .../main/org/apache/sis/io/wkt/VerticalInfo.java | 6 +- .../main/org/apache/sis/io/wkt/WKTDictionary.java | 5 +- .../main/org/apache/sis/io/wkt/WKTFormat.java | 4 +- .../main/org/apache/sis/io/wkt/Warnings.java | 8 +- .../main/org/apache/sis/io/wkt/package-info.java | 4 +- .../sis/parameter/AbstractParameterDescriptor.java | 2 +- .../sis/parameter/DefaultParameterDescriptor.java | 9 +- .../parameter/DefaultParameterDescriptorGroup.java | 1 - .../sis/parameter/DefaultParameterValue.java | 8 +- .../sis/parameter/DefaultParameterValueGroup.java | 19 +- .../org/apache/sis/parameter/ParameterBuilder.java | 11 +- .../org/apache/sis/parameter/ParameterFormat.java | 13 +- .../apache/sis/parameter/ParameterValueList.java | 17 +- .../org/apache/sis/parameter/TensorParameters.java | 13 +- .../org/apache/sis/parameter/TensorValues.java | 2 +- .../parameter/UnmodifiableParameterValueGroup.java | 7 +- .../org/apache/sis/parameter/package-info.java | 4 +- .../sis/referencing/AbstractIdentifiedObject.java | 18 +- .../sis/referencing/AbstractReferenceSystem.java | 2 +- .../main/org/apache/sis/referencing/Builder.java | 41 ++- .../main/org/apache/sis/referencing/CRS.java | 14 +- .../main/org/apache/sis/referencing/CommonCRS.java | 12 +- .../sis/referencing/DefaultObjectDomain.java | 2 +- .../sis/referencing/GeodesicsOnEllipsoid.java | 4 +- .../apache/sis/referencing/GeodeticCalculator.java | 6 +- .../apache/sis/referencing/IdentifiedObjects.java | 2 +- .../sis/referencing/ImmutableIdentifier.java | 11 +- .../apache/sis/referencing/NamedIdentifier.java | 3 +- .../apache/sis/referencing/crs/AbstractCRS.java | 11 +- .../sis/referencing/crs/AbstractDerivedCRS.java | 2 +- .../sis/referencing/crs/DefaultCompoundCRS.java | 6 +- .../sis/referencing/crs/DefaultDerivedCRS.java | 2 +- .../sis/referencing/crs/DefaultEngineeringCRS.java | 7 +- .../sis/referencing/crs/DefaultGeocentricCRS.java | 2 +- .../sis/referencing/crs/DefaultGeodeticCRS.java | 10 +- .../sis/referencing/crs/DefaultGeographicCRS.java | 2 +- .../sis/referencing/crs/DefaultImageCRS.java | 7 +- .../sis/referencing/crs/DefaultParametricCRS.java | 7 +- .../sis/referencing/crs/DefaultProjectedCRS.java | 2 +- .../sis/referencing/crs/DefaultTemporalCRS.java | 7 +- .../sis/referencing/crs/DefaultVerticalCRS.java | 7 +- .../org/apache/sis/referencing/cs/AbstractCS.java | 13 +- .../apache/sis/referencing/cs/AxesConvention.java | 21 +- .../org/apache/sis/referencing/cs/AxisName.java | 2 +- .../sis/referencing/cs/CoordinateSystems.java | 11 +- .../sis/referencing/cs/DefaultCompoundCS.java | 5 +- .../cs/DefaultCoordinateSystemAxis.java | 6 +- .../sis/referencing/cs/DefaultEllipsoidalCS.java | 4 +- .../apache/sis/referencing/cs/DefaultTimeCS.java | 2 +- .../sis/referencing/cs/DefaultVerticalCS.java | 2 +- .../sis/referencing/cs/DirectionAlongMeridian.java | 7 +- .../org/apache/sis/referencing/cs/Normalizer.java | 4 +- .../org/apache/sis/referencing/cs/SubTypes.java | 4 +- .../sis/referencing/datum/AbstractDatum.java | 4 +- .../sis/referencing/datum/BursaWolfParameters.java | 26 +- .../sis/referencing/datum/DatumShiftGrid.java | 5 +- .../sis/referencing/datum/DefaultEllipsoid.java | 4 +- .../referencing/datum/DefaultEngineeringDatum.java | 2 +- .../referencing/datum/DefaultGeodeticDatum.java | 18 +- .../sis/referencing/datum/DefaultImageDatum.java | 6 +- .../referencing/datum/DefaultParametricDatum.java | 2 +- .../referencing/datum/DefaultPrimeMeridian.java | 8 +- .../referencing/datum/DefaultTemporalDatum.java | 4 +- .../referencing/datum/DefaultVerticalDatum.java | 6 +- .../sis/referencing/datum/TimeDependentBWP.java | 7 +- .../org/apache/sis/referencing/datum/formulas.html | 2 +- .../factory/CommonAuthorityFactory.java | 6 +- .../factory/ConcurrentAuthorityFactory.java | 2 +- .../factory/GeodeticAuthorityFactory.java | 6 +- .../referencing/factory/GeodeticObjectFactory.java | 12 +- .../factory/IdentifiedObjectFinder.java | 13 +- .../referencing/factory/IdentifiedObjectSet.java | 9 +- .../sis/referencing/factory/package-info.java | 6 +- .../sis/referencing/factory/sql/BursaWolfInfo.java | 2 +- .../factory/sql/CoordinateOperationSet.java | 2 +- .../referencing/factory/sql/EPSGCodeFinder.java | 14 +- .../referencing/factory/sql/EPSGDataAccess.java | 15 +- .../sis/referencing/factory/sql/EPSGFactory.java | 7 +- .../factory/sql/InstallationScriptProvider.java | 6 +- .../sis/referencing/factory/sql/SQLTranslator.java | 8 +- .../referencing/internal/PositionTransformer.java | 6 +- .../operation/AbstractCoordinateOperation.java | 4 +- .../operation/AbstractSingleOperation.java | 3 +- .../operation/CoordinateOperationContext.java | 2 +- .../operation/CoordinateOperationFinder.java | 22 +- .../operation/CoordinateOperationRegistry.java | 22 +- .../operation/DefaultConcatenatedOperation.java | 1 - .../referencing/operation/DefaultConversion.java | 8 +- .../DefaultCoordinateOperationFactory.java | 5 +- .../sis/referencing/operation/DefaultFormula.java | 10 +- .../operation/DefaultOperationMethod.java | 18 +- .../operation/builder/LinearTransformBuilder.java | 26 +- .../operation/builder/LocalizationGridBuilder.java | 15 +- .../operation/builder/ProjectedTransformTry.java | 8 +- .../operation/builder/TransformBuilder.java | 2 +- .../operation/builder/package-info.java | 2 +- .../referencing/operation/gridded/GridGroup.java | 5 +- .../referencing/operation/gridded/LoadedGrid.java | 5 +- .../operation/matrix/AffineTransforms2D.java | 20 +- .../sis/referencing/operation/matrix/Matrices.java | 15 +- .../referencing/operation/matrix/MatrixSIS.java | 12 +- .../matrix/MismatchedMatrixSizeException.java | 2 +- .../operation/matrix/NonSquareMatrix.java | 2 +- .../matrix/NoninvertibleMatrixException.java | 2 +- .../referencing/operation/matrix/package-info.java | 8 +- .../sis/referencing/operation/package-info.java | 8 +- .../operation/projection/AlbersEqualArea.java | 2 +- .../operation/projection/AuthalicConversion.java | 8 +- .../operation/projection/CassiniSoldner.java | 2 +- .../operation/projection/ConformalProjection.java | 4 +- .../operation/projection/CylindricalEqualArea.java | 2 +- .../operation/projection/Initializer.java | 17 +- .../projection/LambertConicConformal.java | 2 +- .../operation/projection/LongitudeWraparound.java | 2 +- .../referencing/operation/projection/Mercator.java | 4 +- .../operation/projection/MeridianArcBased.java | 4 +- .../projection/ModifiedAzimuthalEquidistant.java | 2 +- .../operation/projection/NormalizedProjection.java | 72 ++-- .../operation/projection/ObliqueStereographic.java | 2 +- .../operation/projection/PolarStereographic.java | 4 +- .../operation/projection/Polyconic.java | 2 +- .../operation/projection/SatelliteTracking.java | 2 +- .../operation/projection/Sinusoidal.java | 2 +- .../operation/projection/TransverseMercator.java | 2 +- .../operation/projection/package-info.java | 16 +- .../operation/provider/AbstractProvider.java | 2 +- .../operation/provider/Geographic3Dto2D.java | 2 +- .../operation/provider/MapProjection.java | 4 +- .../sis/referencing/operation/provider/NTv2.java | 4 +- .../operation/provider/NorthPoleRotation.java | 2 +- .../provider/TransverseMercatorSouth.java | 4 +- .../operation/transform/AbstractMathTransform.java | 10 +- .../operation/transform/ConcatenatedTransform.java | 9 +- .../operation/transform/ContextualParameters.java | 29 +- .../operation/transform/DatumShiftTransform.java | 8 +- .../transform/DefaultMathTransformFactory.java | 31 +- .../operation/transform/DomainDefinition.java | 4 +- .../transform/EllipsoidToCentricTransform.java | 21 +- .../transform/ExponentialTransform1D.java | 2 +- .../transform/InterpolatedGeocentricTransform.java | 5 +- .../operation/transform/InterpolatedTransform.java | 13 +- .../operation/transform/LinearTransform.java | 2 +- .../transform/LogarithmicTransform1D.java | 2 +- .../operation/transform/MathTransforms.java | 15 +- .../operation/transform/MolodenskyTransform.java | 9 +- .../operation/transform/PassThroughTransform.java | 2 +- .../operation/transform/PoleRotation.java | 6 +- .../transform/SpecializableTransform.java | 2 +- .../operation/transform/TransferFunction.java | 28 +- .../operation/transform/TransformSeparator.java | 7 +- .../referencing/operation/transform/formulas.html | 2 +- .../org/apache/sis/referencing/package-info.java | 4 +- .../sis/referencing/util/AxisDirections.java | 12 +- .../sis/referencing/util/CoordinateOperations.java | 6 +- .../org/apache/sis/referencing/util/Formulas.java | 2 +- .../referencing/util/GeodeticObjectBuilder.java | 4 +- .../sis/referencing/util/ReferencingUtilities.java | 8 +- .../sis/referencing/util/WraparoundApplicator.java | 4 +- .../referencing/util/j2d/AffineTransform2D.java | 4 +- .../referencing/util/j2d/IntervalRectangle.java | 2 +- .../referencing/util/j2d/ParameterizedAffine.java | 2 +- .../org/apache/sis/referencing/util/j2d/Tile.java | 4 +- .../sis/referencing/util/j2d/TileOrganizer.java | 8 +- .../referencing/CC_GeneralOperationParameter.java | 9 +- .../referencing/CC_OperationParameterGroup.java | 6 +- .../apache/sis/geometry/AbstractEnvelopeTest.java | 366 ++++++++++----------- .../org/apache/sis/referencing/Assertions.java | 6 +- .../apache/sis/referencing/ClenshawSummation.java | 6 +- .../operation/transform/MathTransformWrapper.java | 6 +- .../referencing/util/CoordinateOperationsTest.java | 23 +- .../util/PositionalAccuracyConstantTest.java | 20 +- .../org/apache/sis/storage/geotiff/DataSubset.java | 1 + .../apache/sis/storage/geotiff/GeoTiffStore.java | 2 +- .../sis/storage/geotiff/ImageFileDirectory.java | 12 +- .../sis/storage/geotiff/MultiResolutionImage.java | 2 +- .../org/apache/sis/storage/geotiff/Reader.java | 8 +- .../apache/sis/storage/geotiff/WritableStore.java | 2 +- .../org/apache/sis/storage/geotiff/Writer.java | 4 +- .../geotiff/reader/GridGeometryBuilder.java | 8 +- .../sis/storage/geotiff/reader/XMLMetadata.java | 2 +- .../sis/storage/geotiff/spi/SchemaModifier.java | 2 +- .../sis/storage/geotiff/writer/GeoEncoder.java | 2 +- .../sis/storage/geotiff/writer/TileMatrix.java | 1 - .../org/apache/sis/storage/geotiff/WriterTest.java | 2 +- .../apache/sis/storage/netcdf/AttributeNames.java | 2 +- .../apache/sis/storage/netcdf/MetadataReader.java | 2 +- .../org/apache/sis/storage/netcdf/base/Axis.java | 4 +- .../apache/sis/storage/netcdf/base/AxisType.java | 4 +- .../apache/sis/storage/netcdf/base/CRSBuilder.java | 8 +- .../apache/sis/storage/netcdf/base/Convention.java | 4 +- .../apache/sis/storage/netcdf/base/Decoder.java | 7 +- .../sis/storage/netcdf/base/GridMapping.java | 2 +- .../apache/sis/storage/netcdf/base/Variable.java | 4 +- .../sis/storage/netcdf/classic/ChannelDecoder.java | 10 +- .../apache/sis/storage/netcdf/package-info.java | 14 +- .../sis/storage/netcdf/ucar/DecoderWrapper.java | 4 +- .../apache/sis/storage/sql/SQLStoreProvider.java | 14 +- .../sis/storage/sql/feature/FeatureIterator.java | 1 + .../sis/storage/sql/feature/FeatureStream.java | 5 +- .../org/apache/sis/storage/sql/feature/Table.java | 5 +- .../sis/storage/sql/feature/ValueGetter.java | 5 +- .../sis/storage/sql/postgis/RasterFormat.java | 2 +- .../sis/storage/sql/postgis/RasterReader.java | 4 +- .../sis/storage/sql/postgis/RasterWriter.java | 6 +- .../sis/storage/sql/postgis/package-info.java | 2 +- .../apache/sis/util/stream/BaseStreamWrapper.java | 5 +- .../main/org/apache/sis/storage/gpx/Person.java | 4 +- .../main/org/apache/sis/storage/gpx/Store.java | 5 +- .../sis/storage/xml/stream/StaxStreamIO.java | 5 +- .../sis/storage/xml/stream/StaxStreamReader.java | 3 +- .../sis/storage/xml/stream/StaxStreamWriter.java | 1 - .../sis/storage/xml/stream/package-info.java | 2 +- .../org/apache/sis/io/stream/ChannelDataInput.java | 4 +- .../org/apache/sis/io/stream/ChannelFactory.java | 2 +- .../main/org/apache/sis/storage/Aggregate.java | 4 +- .../main/org/apache/sis/storage/CoverageQuery.java | 17 +- .../main/org/apache/sis/storage/DataStore.java | 8 +- .../org/apache/sis/storage/DataStoreProvider.java | 4 +- .../main/org/apache/sis/storage/FeatureNaming.java | 7 +- .../main/org/apache/sis/storage/FeatureQuery.java | 37 +-- .../main/org/apache/sis/storage/FeatureSet.java | 5 +- .../apache/sis/storage/GridCoverageResource.java | 22 +- .../main/org/apache/sis/storage/Query.java | 2 +- .../org/apache/sis/storage/StorageConnector.java | 16 +- .../org/apache/sis/storage/WritableAggregate.java | 2 +- .../aggregate/BandAggregateGridResource.java | 2 +- .../storage/aggregate/ConcatenatedFeatureSet.java | 1 - .../sis/storage/aggregate/CoverageAggregator.java | 2 +- .../org/apache/sis/storage/base/LegalSymbols.java | 217 ++++++++++++ .../apache/sis/storage/base/MemoryFeatureSet.java | 8 +- .../sis/storage/base/MemoryGridResource.java | 9 +- .../apache/sis/storage/base/MetadataBuilder.java | 207 +----------- .../apache/sis/storage/base/MetadataFetcher.java | 2 +- .../org/apache/sis/storage/base/PRJDataStore.java | 5 +- .../sis/storage/base/WritableAggregateSupport.java | 5 +- .../storage/base/WritableGridCoverageSupport.java | 6 +- .../main/org/apache/sis/storage/csv/Store.java | 2 +- .../org/apache/sis/storage/csv/StoreProvider.java | 2 - .../apache/sis/storage/event/StoreListeners.java | 26 +- .../org/apache/sis/storage/event/WarningEvent.java | 5 +- .../main/org/apache/sis/storage/folder/Store.java | 2 +- .../apache/sis/storage/folder/StoreProvider.java | 2 - .../apache/sis/storage/folder/WritableStore.java | 5 +- .../apache/sis/storage/image/WorldFileStore.java | 6 +- .../apache/sis/storage/image/WritableStore.java | 4 +- .../org/apache/sis/storage/image/package-info.java | 2 +- .../org/apache/sis/storage/tiling/TileMatrix.java | 2 +- .../apache/sis/storage/tiling/TileMatrixSet.java | 2 +- .../apache/sis/storage/xml/GeographicEnvelope.java | 2 +- .../src/org.apache.sis.util/main/module-info.java | 9 +- .../apache/sis/converter/ConverterRegistry.java | 4 +- .../apache/sis/converter/FallbackConverter.java | 2 +- .../org/apache/sis/converter/StringConverter.java | 1 - .../org/apache/sis/converter/package-info.java | 2 +- .../main/org/apache/sis/io/Appender.java | 5 +- .../main/org/apache/sis/io/CompoundFormat.java | 6 +- .../main/org/apache/sis/io/LineAppender.java | 7 +- .../main/org/apache/sis/io/TableAppender.java | 17 +- .../main/org/apache/sis/io/TabularFormat.java | 2 +- .../main/org/apache/sis/math/ArrayVector.java | 2 +- .../main/org/apache/sis/math/DecimalFunctions.java | 6 +- .../main/org/apache/sis/math/FunctionProperty.java | 20 +- .../main/org/apache/sis/math/Line.java | 1 - .../main/org/apache/sis/math/MathFunctions.java | 15 +- .../main/org/apache/sis/math/Plane.java | 6 +- .../main/org/apache/sis/math/RepeatedVector.java | 5 +- .../main/org/apache/sis/math/SequenceVector.java | 8 +- .../main/org/apache/sis/math/Statistics.java | 6 +- .../main/org/apache/sis/math/Vector.java | 11 +- .../org/apache/sis/measure/AbstractConverter.java | 2 - .../main/org/apache/sis/measure/Angle.java | 10 +- .../main/org/apache/sis/measure/AngleFormat.java | 10 +- .../apache/sis/measure/ConcatenatedConverter.java | 2 - .../org/apache/sis/measure/ConventionalUnit.java | 18 +- .../org/apache/sis/measure/ElevationAngle.java | 6 +- .../sis/measure/FormattedCharacterIterator.java | 15 +- .../org/apache/sis/measure/IdentityConverter.java | 5 +- .../main/org/apache/sis/measure/Latitude.java | 16 +- .../org/apache/sis/measure/LinearConverter.java | 11 +- .../main/org/apache/sis/measure/Longitude.java | 4 +- .../main/org/apache/sis/measure/Quantities.java | 2 - .../org/apache/sis/measure/QuantityFormat.java | 11 +- .../main/org/apache/sis/measure/Range.java | 11 +- .../main/org/apache/sis/measure/RangeFormat.java | 12 +- .../apache/sis/measure/SexagesimalConverter.java | 14 +- .../main/org/apache/sis/measure/SystemUnit.java | 7 +- .../main/org/apache/sis/measure/UnitDimension.java | 1 - .../main/org/apache/sis/measure/UnitFormat.java | 20 +- .../main/org/apache/sis/measure/UnitServices.java | 4 +- .../main/org/apache/sis/pending/jdk/JDK19.java | 22 ++ .../main/org/apache/sis/pending/jdk/JDK21.java | 27 +- .../main/org/apache/sis/setup/Configuration.java | 9 +- .../apache/sis/setup/InstallationResources.java | 2 +- .../main/org/apache/sis/setup/OptionKey.java | 10 +- .../org/apache/sis/system/OptionalDependency.java | 1 - .../{internal => }/ArgumentCheckByAssertion.java | 21 +- .../main/org/apache/sis/util/ArgumentChecks.java | 42 ++- .../main/org/apache/sis/util/ArraysExt.java | 1 - .../main/org/apache/sis/util/CharSequences.java | 15 +- .../main/org/apache/sis/util/Characters.java | 4 +- .../main/org/apache/sis/util/Classes.java | 6 +- .../main/org/apache/sis/util/ComparisonMode.java | 4 +- ...heckByAssertion.java => ConditionallySafe.java} | 17 +- .../sis/util/DefaultInternationalString.java | 2 +- .../main/org/apache/sis/util/Exceptions.java | 2 +- .../org/apache/sis/util/LenientComparable.java | 8 +- .../main/org/apache/sis/util/Locales.java | 13 +- .../main/org/apache/sis/util/Numbers.java | 4 +- .../main/org/apache/sis/util/ObjectConverter.java | 2 +- .../main/org/apache/sis/util/ObjectConverters.java | 13 +- .../main/org/apache/sis/util/Printable.java | 2 +- .../sis/util/ResourceInternationalString.java | 4 +- .../apache/sis/util/SimpleInternationalString.java | 4 +- .../main/org/apache/sis/util/Static.java | 2 +- .../main/org/apache/sis/util/StringBuilders.java | 14 +- .../sis/util/UnconvertibleObjectException.java | 2 +- .../main/org/apache/sis/util/Version.java | 4 +- .../main/org/apache/sis/util/collection/Cache.java | 12 +- .../org/apache/sis/util/collection/Containers.java | 38 +-- .../sis/util/collection/DefaultTreeTable.java | 22 +- .../org/apache/sis/util/collection/DerivedMap.java | 2 +- .../org/apache/sis/util/collection/DerivedSet.java | 2 +- .../apache/sis/util/collection/IntegerList.java | 14 +- .../org/apache/sis/util/collection/RangeSet.java | 8 +- .../apache/sis/util/collection/TableColumn.java | 8 +- .../apache/sis/util/collection/TreeNodeList.java | 23 +- .../org/apache/sis/util/collection/TreeTable.java | 4 +- .../org/apache/sis/util/collection/TreeTables.java | 1 - .../apache/sis/util/collection/WeakHashSet.java | 47 ++- .../apache/sis/util/internal/CheckedArrayList.java | 11 +- .../apache/sis/util/internal/CheckedHashSet.java | 9 +- .../apache/sis/util/internal/CollectionsExt.java | 10 +- .../apache/sis/util/internal/DefinitionURI.java | 6 +- .../org/apache/sis/util/internal/DoubleDouble.java | 2 +- .../org/apache/sis/util/internal/Numerics.java | 4 +- .../sis/util/internal/SimpleCharacterIterator.java | 1 - .../sis/util/internal/UnmodifiableArrayList.java | 23 +- .../main/org/apache/sis/util/internal/Unsafe.java | 106 ++++++ .../main/org/apache/sis/util/internal/X364.java | 4 +- .../main/org/apache/sis/util/logging/Logging.java | 1 - .../apache/sis/util/logging/MonolineFormatter.java | 8 +- .../apache/sis/util/resources/package-info.java | 2 +- .../test/org/apache/sis/test/TestRunner.java | 4 +- .../test/org/apache/sis/test/TestUtilities.java | 2 +- .../org/apache/sis/map/ExceptionPresentation.java | 10 +- .../main/org/apache/sis/map/SEPortrayer.java | 5 +- .../apache/sis/map/service/GraphicsPortrayer.java | 15 +- .../main/org/apache/sis/map/service/Scene2D.java | 8 +- .../sis/map/service/se1/PresentationToScene2D.java | 9 +- .../sis/storage/shapefile/ShapefileStore.java | 4 +- .../apache/sis/gui/controls/SyncWindowList.java | 2 +- .../apache/sis/gui/controls/ValueColorMapper.java | 1 + .../apache/sis/gui/coverage/CoverageCanvas.java | 1 + .../apache/sis/gui/coverage/CoverageControls.java | 6 +- .../apache/sis/gui/coverage/CoverageExplorer.java | 13 +- .../apache/sis/gui/coverage/CoverageStyling.java | 1 - .../org/apache/sis/gui/coverage/GridViewSkin.java | 1 - .../org/apache/sis/gui/coverage/ImageRequest.java | 8 +- .../apache/sis/gui/coverage/IsolineRenderer.java | 1 - .../org/apache/sis/gui/dataset/WindowHandler.java | 3 - .../org/apache/sis/gui/internal/ColorName.java | 2 +- .../org/apache/sis/gui/internal/GUIUtilities.java | 2 +- .../org/apache/sis/gui/internal/PropertyView.java | 1 - .../main/org/apache/sis/gui/map/MapCanvas.java | 26 +- .../main/org/apache/sis/gui/map/MapCanvasAWT.java | 1 + .../main/org/apache/sis/gui/map/MapMenu.java | 17 +- .../main/org/apache/sis/gui/map/StatusBar.java | 11 +- .../sis/gui/metadata/IdentificationInfo.java | 4 +- .../org/apache/sis/gui/metadata/MetadataTree.java | 4 +- .../sis/gui/metadata/StandardMetadataTree.java | 1 - .../gui/referencing/PositionableProjection.java | 2 - .../org/apache/sis/gui/referencing/WKTPane.java | 1 - 565 files changed, 2452 insertions(+), 2655 deletions(-) diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/internal/NameToIdentifier.java index 48b7c7f270,7913e21064..bae94b4215 --- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/internal/NameToIdentifier.java +++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/internal/NameToIdentifier.java @@@ -28,12 -28,8 +28,11 @@@ import org.opengis.metadata.citation.Ci import org.apache.sis.metadata.iso.citation.Citations; import org.apache.sis.util.CharSequences; import org.apache.sis.util.iso.DefaultNameSpace; - import static org.apache.sis.util.ArgumentChecks.ensureNonNull; import static org.apache.sis.util.Characters.Filter.LETTERS_AND_DIGITS; +// Specific to the main and geoapi-3.1 branches: +import org.opengis.referencing.ReferenceIdentifier; + /** * Does the unobvious mapping between {@link Identifier} properties and {@link GenericName} ones. diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java index 9f3c5bf2d7,1ed6037e7b..9e61cd69a9 --- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java +++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java @@@ -574,22 -522,20 +574,22 @@@ public class DefaultScopeDescription ex } } setDataset(description); - } else if (ScopeCode.FEATURE_TYPE.equals(level)) { + } else if (level == ScopeCode.FEATURE_TYPE) { - setFeatures(newValues); + setFeatures(LegacyFeatureType.wrapAll(newValues)); - } else if (ScopeCode.ATTRIBUTE_TYPE.equals(level)) { + } else if (level == ScopeCode.ATTRIBUTE_TYPE) { - setAttributes(newValues); + setAttributes(LegacyFeatureType.wrapAll(newValues)); - } else if (ScopeCode.FEATURE.equals(level)) { + } else if (level == ScopeCode.FEATURE) { - setFeatureInstances(newValues); + setFeatureInstances(LegacyFeatureType.wrapAll(newValues)); - } else if (ScopeCode.ATTRIBUTE.equals(level)) { + } else if (level == ScopeCode.ATTRIBUTE) { - setAttributeInstances(newValues); + setAttributeInstances(LegacyFeatureType.wrapAll(newValues)); } else { - InternationalString description = null; + String description = null; if (newValues != null) { - for (CharSequence value : newValues) { - if (value != null) { - description = value.toString(); + for (CharSequence v : newValues) { - description = Types.toInternationalString(v); - if (description != null) break; ++ if (v != null) { ++ description = v.toString(); + break; + } } } setOther(description); diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java index e5b3cb101c,cef0cb0664..1dfae323b4 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java @@@ -455,22 -453,17 +456,17 @@@ class GeodeticObjectParser extends Math * (for example "WGS84" for the datum instead of "World Geodetic System 1984"), * so the name in WKT is often not compliant with the name actually defined by the authority. */ - final ImmutableIdentifier id = new ImmutableIdentifier(Citations.fromName(authority), + final var id = new ImmutableIdentifier(Citations.fromName(authority), codeSpace, code, (version != null) ? version.toString() : null, null); - final Object previous = properties.put(IdentifiedObject.IDENTIFIERS_KEY, id); - if (previous != null) { - ReferenceIdentifier[] identifiers; + properties.merge(IdentifiedObject.IDENTIFIERS_KEY, id, (previous, toAdd) -> { - final var more = (Identifier) toAdd; - if (previous instanceof Identifier) { - return new Identifier[] {(Identifier) previous, more}; ++ final var more = (ReferenceIdentifier) toAdd; + if (previous instanceof ReferenceIdentifier) { - identifiers = new ReferenceIdentifier[] {(ReferenceIdentifier) previous, id}; ++ return new ReferenceIdentifier[] {(ReferenceIdentifier) previous, more}; } else { - identifiers = (ReferenceIdentifier[]) previous; - final int n = identifiers.length; - identifiers = Arrays.copyOf(identifiers, n + 1); - identifiers[n] = id; - return ArraysExt.append((Identifier[]) previous, more); ++ return ArraysExt.append((ReferenceIdentifier[]) previous, more); } - properties.put(IdentifiedObject.IDENTIFIERS_KEY, identifiers); - // REMINDER: values associated to IDENTIFIERS_KEY shall be recognized by `toIdentifier(Object)`. - } + }); + // REMINDER: values associated to IDENTIFIERS_KEY shall be recognized by `toIdentifier(Object)`. } /* * Other metadata (SCOPE, AREA, etc.). ISO 19162 said that at most one of each type shall be present, diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterFormat.java index c2aa138be7,74a38bfdf8..0e609f7ac7 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterFormat.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterFormat.java @@@ -56,11 -57,8 +57,11 @@@ import org.apache.sis.util.internal.Col import org.apache.sis.util.internal.X364; import org.apache.sis.referencing.IdentifiedObjects; import org.apache.sis.metadata.internal.NameToIdentifier; - import static org.apache.sis.util.collection.Containers.hashMapCapacity; + import org.apache.sis.pending.jdk.JDK19; +// Specific to the main and geoapi-3.1 branches: +import org.opengis.referencing.ReferenceIdentifier; + // Specific to the geoapi-3.1 and geoapi-4.0 branches: import org.opengis.util.ControlledVocabulary; diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Builder.java index 19393f5a85,73893af8bf..7a844ec307 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Builder.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Builder.java @@@ -37,11 -40,7 +40,10 @@@ import org.apache.sis.util.ArgumentChec import org.apache.sis.util.iso.DefaultNameFactory; import org.apache.sis.util.iso.Types; import org.apache.sis.util.resources.Errors; - import static org.apache.sis.util.ArgumentChecks.*; +// Specific to the main and geoapi-3.1 branches: +import org.opengis.referencing.ReferenceIdentifier; + /** * Base class of builders for various kinds of {@link IdentifiedObject}. This class provides convenience methods @@@ -94,8 -93,8 +96,8 @@@ * The result is a {@linkplain org.apache.sis.util.iso.DefaultScopedName scoped name} or identifier, * in which the code space information is shown by the {@code toString()} method.</li> * - * <li>The {@code addIdentifier(Identifier)}, {@code addName(Identifier)} and {@link #addName(GenericName)} - * methods take the given object <cite>as-is</cite>. Any authority, code space, version or description - * <li>The {@link #addIdentifier(Identifier)}, {@link #addName(Identifier)} and {@link #addName(GenericName)} ++ * <li>The {@link #addIdentifier(ReferenceIdentifier)}, {@link #addName(ReferenceIdentifier)} and {@link #addName(GenericName)} + * methods take the given object <em>as-is</em>. Any authority, code space, version or description * information given to the {@code Builder} are ignored.</li> * </ul> * @@@ -581,9 -579,8 +584,8 @@@ public abstract class Builder<B extend * @param name the {@code IdentifiedObject} name as an identifier. * @return {@code this}, for method call chaining. */ - public B addName(final Identifier name) { + public B addName(final ReferenceIdentifier name) { - ensureNonNull("name", name); - if (properties.putIfAbsent(IdentifiedObject.NAME_KEY, name) != null) { + if (properties.putIfAbsent(IdentifiedObject.NAME_KEY, Objects.requireNonNull(name)) != null) { // A primary name is already present. Add the given name as an alias instead. aliases.add(name instanceof GenericName ? (GenericName) name : new NamedIdentifier(name)); } @@@ -673,9 -670,8 +675,8 @@@ * @param identifier the {@code IdentifiedObject} identifier. * @return {@code this}, for method call chaining. */ - public B addIdentifier(final Identifier identifier) { + public B addIdentifier(final ReferenceIdentifier identifier) { - ensureNonNull("identifier", identifier); - identifiers.add(identifier); + identifiers.add(Objects.requireNonNull(identifier)); return self(); } @@@ -702,8 -698,7 +703,7 @@@ * @since 0.6 */ public B addNamesAndIdentifiers(final IdentifiedObject object) { - ensureNonNull("object", object); - for (final Identifier id : object.getIdentifiers()) { + for (final ReferenceIdentifier id : object.getIdentifiers()) { if (isValid(id)) { addIdentifier(id); } @@@ -731,9 -726,8 +731,8 @@@ * @since 1.1 */ public B addNameAndIdentifier(final Citation authority, final IdentifiedObject object) { - ensureNonNull("authority", authority); - ensureNonNull("object", object); + ArgumentChecks.ensureNonNull("authority", authority); - for (final Identifier id : object.getIdentifiers()) { + for (final ReferenceIdentifier id : object.getIdentifiers()) { if (isValid(id) && authority.equals(id.getAuthority())) { addIdentifier(id); } diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/ImmutableIdentifier.java index c2d6e03534,3e46929f8c..1c357a918c --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/ImmutableIdentifier.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/ImmutableIdentifier.java @@@ -36,12 -36,8 +36,11 @@@ import org.apache.sis.io.wkt.Formattabl import org.apache.sis.io.wkt.Formatter; import org.apache.sis.io.wkt.Convention; import org.apache.sis.io.wkt.ElementKind; - import static org.apache.sis.util.ArgumentChecks.ensureNonNull; import static org.apache.sis.util.collection.Containers.property; +// Specific to the main and geoapi-3.1 branches: +import org.opengis.referencing.ReferenceIdentifier; + /** * Immutable value uniquely identifying an object within a namespace, together with a version. diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractProvider.java index 4b693fcb27,9aa1f91739..efc54c97ba --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractProvider.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractProvider.java @@@ -165,13 -165,13 +165,13 @@@ public abstract class AbstractProvider */ @Workaround(library="JDK", version="1.7") private static Map<String,Object> toMap(final IdentifiedObject parameters) { - ArgumentChecks.ensureNonNull("parameters", parameters); + // Implicit null value check below. final Map<String,Object> properties = new HashMap<>(4); properties.put(NAME_KEY, parameters.getName()); - final Collection<Identifier> identifiers = parameters.getIdentifiers(); + final Collection<ReferenceIdentifier> identifiers = parameters.getIdentifiers(); int size = identifiers.size(); if (size != 0) { - properties.put(IDENTIFIERS_KEY, identifiers.toArray(new Identifier[size])); + properties.put(IDENTIFIERS_KEY, identifiers.toArray(new ReferenceIdentifier[size])); } final Collection<GenericName> aliases = parameters.getAlias(); size = aliases.size(); diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java index 18e79d0926,5188a62e3b..1bfad11b97 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java @@@ -1645,23 -1643,9 +1643,22 @@@ public class DefaultMathTransformFactor return unique(tr); } + /** + * There is no XML format for math transforms. + * + * @param xml math transform encoded in XML format. + * @throws FactoryException if the object creation failed. + */ + @Override + @Deprecated + public MathTransform createFromXML(String xml) throws FactoryException { + lastMethod.remove(); + throw new FactoryException(Errors.format(Errors.Keys.UnsupportedOperation_1, "createFromXML")); + } + /** * Creates a math transform object from a - * <a href="http://www.geoapi.org/snapshot/javadoc/org/opengis/referencing/doc-files/WKT.html"><cite>Well - * Known Text</cite> (WKT)</a>. + * <a href="http://www.geoapi.org/snapshot/javadoc/org/opengis/referencing/doc-files/WKT.html">Well Known Text (WKT)</a>. * If the given text contains non-fatal anomalies (unknown or unsupported WKT elements, * inconsistent unit definitions, <i>etc.</i>), warnings may be reported in a * {@linkplain java.util.logging.Logger logger} named {@code "org.apache.sis.io.wkt"}. diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CC_GeneralOperationParameter.java index 3906b3fcb5,716af63e88..46a4d4ca60 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CC_GeneralOperationParameter.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CC_GeneralOperationParameter.java @@@ -45,11 -44,8 +44,11 @@@ import org.apache.sis.xml.IdentifiedObj import org.apache.sis.xml.IdentifierSpace; import org.apache.sis.xml.bind.Context; import org.apache.sis.xml.bind.gco.PropertyType; - import org.apache.sis.util.resources.Errors; + import org.apache.sis.pending.jdk.JDK19; +// Specific to the main and geoapi-3.1 branches: +import org.opengis.referencing.ReferenceIdentifier; + /** * JAXB adapter mapping implementing class to the GeoAPI interface. See diff --cc endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java index 0000000000,c2916e1a64..8f6675256b mode 000000,100644..100644 --- a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java +++ b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java @@@ -1,0 -1,216 +1,217 @@@ + /* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.sis.storage.base; + + import java.time.LocalDate; + import java.util.Date; + import java.util.Collections; + import org.opengis.metadata.citation.*; + import org.opengis.metadata.constraint.*; + import org.apache.sis.util.CharSequences; + import org.apache.sis.metadata.iso.citation.*; + import org.apache.sis.metadata.iso.constraint.*; + import static org.apache.sis.util.internal.StandardDateFormat.MILLISECONDS_PER_DAY; + + + /** + * Elements to omit in the legal notice to be parsed by {@link MetadataBuilder#parseLegalNotice(String)}. + * Some of those elements are implied by the metadata were the legal notice will be stored. + * + * @author Martin Desruisseaux (Geomatys) + */ + final class LegalSymbols { + /** + * Symbols associated to restrictions. + */ + private static final LegalSymbols[] VALUES = { + new LegalSymbols(Restriction.COPYRIGHT, "COPYRIGHT", "(C)", "©", "All rights reserved"), + new LegalSymbols(Restriction.TRADEMARK, "TRADEMARK", "(TM)", "™", "(R)", "®") + }; + + /** + * The restriction to use if an item in the {@linkplain #symbols} list is found. + */ + private final Restriction restriction; + + /** + * Symbols to use as an indication that the {@linkplain #restriction} applies. + */ + private final String[] symbols; + + /** + * Creates a new enumeration value for the given symbol. + */ + private LegalSymbols(final Restriction restriction, final String... symbols) { + this.restriction = restriction; + this.symbols = symbols; + } + + /** + * Returns {@code true} if the given character is a space or a punctuation of category "other". + * The punctuation characters include coma, dot, semi-colon, <i>etc.</i> but do not include + * parenthesis or connecting punctuation. + * + * @param c the Unicode code point of the character to test. + */ + private static boolean isSpaceOrPunctuation(final int c) { + switch (Character.getType(c)) { + case Character.LINE_SEPARATOR: + case Character.SPACE_SEPARATOR: + case Character.PARAGRAPH_SEPARATOR: + case Character.OTHER_PUNCTUATION: return true; + default: return false; + } + } + + /** + * Implementation of {@link MetadataBuilder#parseLegalNotice(String)}, provided here for reducing + * the number of class loading in the common case where there is no legal notice to parse. + */ + static void parse(final String notice, final DefaultLegalConstraints constraints) { + final int length = notice.length(); + final StringBuilder buffer = new StringBuilder(length); + int year = 0; // The copyright year, or 0 if none. + int quoteLevel = 0; // Incremented on ( [ « characters, decremented on ) ] » characters. + boolean isCopyright = false; // Whether the word parsed by previous iteration was "Copyright" or "(C)". + boolean wasSeparator = true; // Whether the caracter parsed by the previous iteration was a word separator. + boolean wasPunctuation = true; // Whether the previous character was a punctuation of Unicode category "other". + boolean skipNextChars = true; // Whether the next spaces and some punction characters should be ignored. + parse: for (int i = 0; i < length;) { + final int c = notice.codePointAt(i); + final int n = Character.charCount(c); + int quoteChange = 0; + boolean isSeparator = false; + boolean isPunctuation; + switch (Character.getType(c)) { + case Character.INITIAL_QUOTE_PUNCTUATION: + case Character.START_PUNCTUATION: { + quoteChange = +1; // ( [ « etc. + skipNextChars = false; + isPunctuation = false; + break; + } + case Character.FINAL_QUOTE_PUNCTUATION: + case Character.END_PUNCTUATION: { + quoteChange = -1; // ) ] » etc. + skipNextChars = false; + isPunctuation = false; + break; + } + default: { // Letter, digit, hyphen, etc. + skipNextChars = false; + isPunctuation = false; + break; + } + case Character.OTHER_PUNCTUATION: { // , . : ; / " etc. but not -. + isPunctuation = true; + isSeparator = true; + break; + } + case Character.LINE_SEPARATOR: + case Character.SPACE_SEPARATOR: + case Character.PARAGRAPH_SEPARATOR: { + isPunctuation = wasPunctuation; + isSeparator = true; + break; + } + } + if (wasSeparator && !isSeparator && quoteLevel == 0) { + /* + * Found the beginning of a new word. Ignore textes like "(C)" or "All rights reserved". + * Some of those textes are implied by the metadata where the legal notice will be stored. + */ + for (final LegalSymbols r : VALUES) { + for (final String symbol : r.symbols) { + if (notice.regionMatches(true, i, symbol, 0, symbol.length())) { + final int after = i + symbol.length(); + if (after >= length || isSpaceOrPunctuation(notice.codePointAt(after))) { + isCopyright |= (r.restriction == Restriction.COPYRIGHT); + constraints.getUseConstraints().add(r.restriction); + wasPunctuation = true; // Pretend that "Copyright" was followed by a coma. + skipNextChars = true; // Ignore spaces and punctuations until the next word. + i = after; // Skip the "Copyright" (or other) word. + continue parse; + } + } + } + } + /* + * If a copyright notice is followed by digits, assume that those digits are the copyright year. + * We require the year is followed by punctuations or non-breaking space in order to reduce the + * risk of confusion with postal addresses. So this block should accept "John, 1992." but not + * "1992-1 Nowhere road". + */ + if (isCopyright && wasPunctuation && year == 0 && c >= '0' && c <= '9') { + int endOfDigits = i + n; // After the last digit in sequence. + while (endOfDigits < length) { + final int d = notice.codePointAt(endOfDigits); + if (d < '0' || d > '9') break; + endOfDigits++; // No need to use Character.charCount(s) here. + } + // Verify if the digits are followed by a punctuation. + final int endOfToken = CharSequences.skipLeadingWhitespaces(notice, endOfDigits, length); + if (endOfToken > endOfDigits || isSpaceOrPunctuation(notice.codePointAt(endOfToken))) try { + year = Integer.parseInt(notice.substring(i, endOfDigits)); + if (year >= 1800 && year <= 9999) { // Those limits are arbitrary. + skipNextChars = true; + i = endOfToken; + continue; + } + year = 0; // Reject as not a copyright year. + } catch (NumberFormatException e) { + // Not an integer - ignore, will be handled as text. + } + } + } + /* + * End of the block that was executed at the beginning of each new word. + * Following is executed for every characters, except if the above block + * skipped a portion of the input string. + */ + wasPunctuation = isPunctuation; + wasSeparator = isSeparator; + quoteLevel += quoteChange; + if (!skipNextChars && !Character.isIdentifierIgnorable(c)) { + buffer.appendCodePoint(c); + } + i += n; + } + /* + * End of parsing. Omit trailing spaces and some punctuations if any, then store the result. + */ + int i = buffer.length(); + while (i > 0) { + final int c = buffer.codePointBefore(i); + if (!isSpaceOrPunctuation(c)) break; + i -= Character.charCount(c); + } + final DefaultCitation c = new DefaultCitation(notice); + if (year != 0) { + final Date date = new Date(LocalDate.of(year, 1, 1).toEpochDay() * MILLISECONDS_PER_DAY); + c.setDates(Collections.singleton(new DefaultCitationDate(date, DateType.IN_FORCE))); + } + if (i != 0) { + buffer.setLength(i); + // Same limitation as MetadataBuilder.party(). + final AbstractParty party = new AbstractParty(buffer, null); - final DefaultResponsibility r = new DefaultResponsibility(Role.OWNER, null, party); ++ final var r = new DefaultResponsibleParty(Role.OWNER); ++ r.setParties(Collections.singleton(party)); + c.setCitedResponsibleParties(Collections.singleton(r)); + } + constraints.getReferences().add(c); + } + } diff --cc endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java index 8f319d7c4c,76aebaa558..e22d14dae3 --- a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java +++ b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java @@@ -1520,10 -1511,9 +1511,9 @@@ public class MetadataBuilder * @param contact means of communication with party associated with the resource, or {@code null} for no-operation. * @param scope whether the contact applies to data, to metadata or to both. */ - public final void addPointOfContact(final Responsibility contact, final Scope scope) { + public final void addPointOfContact(final ResponsibleParty contact, final Scope scope) { - ArgumentChecks.ensureNonNull("scope", scope); if (contact != null) { - if (scope != Scope.RESOURCE) addIfNotPresent(metadata().getContacts(), contact); + if (scope != Scope.RESOURCE) addIfNotPresent(metadata().getContacts(), contact); if (scope != Scope.METADATA) addIfNotPresent(identification().getPointOfContacts(), contact); } }