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 c2bcdb964f0ef8343b5df422e2ac03acb612a3c5
Merge: 4b753152a6 b03b235825
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Mon Sep 25 18:15:54 2023 +0200

    Merge branch 'geoapi-4.0' into geoapi-3.1.
    Contains the beginning of a migration to JUnit 5, the beginning of an ISO 
19111 upgrade,
    documentation fixes and some deprecations in preparation for SIS 1.4 
release proposal.

 endorsed/build.gradle.kts                          |   3 +-
 .../org.apache.sis.console/main/module-info.java   |   2 +
 .../main/org/apache/sis/console/CommandRunner.java |   2 +-
 .../org/apache/sis/console/TransformCommand.java   |  17 +-
 .../sis/coverage/grid/GridCoverageBuilder.java     |   2 +-
 .../apache/sis/coverage/grid/ImageRenderer.java    |   7 +-
 .../apache/sis/feature/builder/TypeBuilder.java    |   4 +-
 .../apache/sis/geometry/wrapper/Geometries.java    |   2 +-
 .../apache/sis/image/BandedSampleConverter.java    |  12 +-
 .../main/org/apache/sis/image/ComputedImage.java   |   2 +-
 .../test/org/apache/sis/filter/PeriodLiteral.java  |   2 +-
 .../org.apache.sis.metadata/main/module-info.java  |   2 +-
 .../metadata/internal/ImplementationHelper.java    |  25 +-
 .../iso/DefaultApplicationSchemaInformation.java   |   2 +-
 .../apache/sis/metadata/iso/DefaultIdentifier.java |   2 +-
 .../apache/sis/metadata/iso/extent/Extents.java    |  47 +++-
 .../metadata/simple/SimpleIdentifiedObject.java    |   6 +
 .../org/apache/sis/xml/TransformingWriter.java     |   2 +-
 .../main/org/apache/sis/xml/XML.java               |   6 +-
 .../metadata/replace/ReferenceSystemMetadata.java  |   3 +-
 .../sis/metadata/iso/citation/CitationsTest.java   |   2 +-
 .../metadata/iso/citation/DefaultCitationTest.java |   2 +-
 .../org/apache/sis/metadata/xml/TestUsingFile.java |   2 +-
 .../sis/test/xml/AnnotationConsistencyCheck.java   |   2 +-
 .../apache/sis/util/iso/DefaultLocalNameTest.java  |   2 +-
 .../main/module-info.java                          |   3 +-
 .../main/org/apache/sis/openoffice/CalcAddins.java |   2 +-
 .../sis/openoffice/ReferencingFunctions.java       |  37 +--
 .../org/apache/sis/portrayal/CanvasFollower.java   |   3 +-
 .../main/org/apache/sis/style/se1/Graphic.java     |   2 +-
 .../org/apache/sis/style/se1/PointPlacement.java   |   2 +-
 .../gazetteer/GeohashReferenceSystem.java          |   8 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |   6 +-
 .../main/org/apache/sis/geometry/Envelopes.java    |   2 +-
 .../main/org/apache/sis/geometry/Shapes2D.java     |   2 +-
 .../main/org/apache/sis/io/wkt/Formatter.java      |  65 +++--
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |   2 +-
 .../sis/referencing/AbstractIdentifiedObject.java  | 238 +++++++++++++----
 .../sis/referencing/AbstractReferenceSystem.java   | 183 +------------
 .../main/org/apache/sis/referencing/CRS.java       |  44 +--
 .../main/org/apache/sis/referencing/CommonCRS.java |   2 +-
 .../sis/referencing/DefaultObjectDomain.java       | 297 +++++++++++++++++++++
 .../apache/sis/referencing/IdentifiedObjects.java  |  13 +-
 .../org/apache/sis/referencing/NameIterator.java   |  32 ++-
 .../org/apache/sis/referencing/Properties.java     |  89 +++---
 .../apache/sis/referencing/crs/AbstractCRS.java    |  31 +--
 .../sis/referencing/crs/DefaultCompoundCRS.java    |  26 +-
 .../sis/referencing/crs/DefaultDerivedCRS.java     |  41 +--
 .../sis/referencing/crs/DefaultEngineeringCRS.java |  26 +-
 .../sis/referencing/crs/DefaultGeocentricCRS.java  |  26 +-
 .../sis/referencing/crs/DefaultGeographicCRS.java  |  26 +-
 .../sis/referencing/crs/DefaultImageCRS.java       |  26 +-
 .../sis/referencing/crs/DefaultParametricCRS.java  |  26 +-
 .../sis/referencing/crs/DefaultProjectedCRS.java   |  26 +-
 .../sis/referencing/crs/DefaultTemporalCRS.java    |  26 +-
 .../sis/referencing/crs/DefaultVerticalCRS.java    |  26 +-
 .../org/apache/sis/referencing/cs/AbstractCS.java  |  86 +++---
 .../apache/sis/referencing/cs/AxesConvention.java  |  12 +-
 .../sis/referencing/cs/CoordinateSystems.java      |   3 +-
 .../apache/sis/referencing/cs/DefaultAffineCS.java |  12 +-
 .../sis/referencing/cs/DefaultCartesianCS.java     |  38 +--
 .../sis/referencing/cs/DefaultCompoundCS.java      |  12 +-
 .../cs/DefaultCoordinateSystemAxis.java            |  24 +-
 .../sis/referencing/cs/DefaultCylindricalCS.java   |  12 +-
 .../sis/referencing/cs/DefaultEllipsoidalCS.java   |  12 +-
 .../apache/sis/referencing/cs/DefaultLinearCS.java |  12 +-
 .../sis/referencing/cs/DefaultParametricCS.java    |  12 +-
 .../apache/sis/referencing/cs/DefaultPolarCS.java  |  12 +-
 .../sis/referencing/cs/DefaultSphericalCS.java     |  12 +-
 .../apache/sis/referencing/cs/DefaultTimeCS.java   |  12 +-
 .../sis/referencing/cs/DefaultUserDefinedCS.java   |  12 +-
 .../sis/referencing/cs/DefaultVerticalCS.java      |  12 +-
 .../sis/referencing/datum/AbstractDatum.java       | 129 ++-------
 .../sis/referencing/datum/DefaultEllipsoid.java    |  31 ++-
 .../referencing/datum/DefaultEngineeringDatum.java |  32 +--
 .../referencing/datum/DefaultGeodeticDatum.java    |  40 +--
 .../sis/referencing/datum/DefaultImageDatum.java   |  29 +-
 .../referencing/datum/DefaultParametricDatum.java  |  32 +--
 .../referencing/datum/DefaultPrimeMeridian.java    |  12 +-
 .../referencing/datum/DefaultTemporalDatum.java    |  32 +--
 .../referencing/datum/DefaultVerticalDatum.java    |  34 +--
 .../referencing/factory/GeodeticObjectFactory.java |  54 ++--
 .../operation/AbstractCoordinateOperation.java     | 122 +--------
 .../operation/CoordinateOperationRegistry.java     |   2 +-
 .../operation/DefaultConcatenatedOperation.java    |  32 +--
 .../referencing/operation/DefaultConversion.java   |   9 +-
 .../DefaultCoordinateOperationFactory.java         |  36 +--
 .../operation/DefaultOperationMethod.java          |  18 +-
 .../operation/DefaultPassThroughOperation.java     |   6 +-
 .../operation/DefaultTransformation.java           |  12 +-
 .../operation/builder/LocalizationGridBuilder.java |   4 +-
 .../sis/referencing/operation/provider/NTv2.java   |   6 +-
 .../org/apache/sis/referencing/util/Formulas.java  |   6 +-
 .../apache/sis/referencing/util/WKTKeywords.java   |   3 +-
 .../apache/sis/referencing/util/j2d/Bezier.java    |   4 +-
 .../test/org/apache/sis/io/wkt/WKTFormatTest.java  |   2 +-
 .../referencing/datum/DefaultEllipsoidTest.java    |  12 +-
 .../operation/CoordinateOperationFinderTest.java   |   2 +-
 .../operation/provider/MapProjectionTest.java      |   2 +-
 .../apache/sis/referencing/util/FormulasTest.java  |  12 +-
 .../apache/sis/storage/landsat/LandsatStore.java   |   2 +-
 .../org/apache/sis/storage/geotiff/GeoTIFF.java    |   2 +-
 .../apache/sis/storage/geotiff/GeoTiffStore.java   |   2 +-
 .../apache/sis/storage/geotiff/NativeMetadata.java |   2 +-
 .../org/apache/sis/storage/geotiff/Reader.java     |   4 +-
 .../sis/storage/geotiff/internal/Compression.java  |   2 +-
 .../sis/storage/geotiff/SelfConsistencyTest.java   |   2 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |   2 +-
 .../org/apache/sis/storage/netcdf/base/Grid.java   |   3 +-
 .../sis/storage/netcdf/base/FeatureSetTest.java    |   2 +-
 .../main/org/apache/sis/storage/sql/SQLStore.java  |   2 +-
 .../sis/storage/sql/postgis/ObjectGetter.java      |   2 +-
 .../org/apache/sis/storage/gpx/WritableStore.java  |   7 +-
 .../sis/storage/xml/stream/RewriteOnUpdate.java    |  22 +-
 .../org/apache/sis/storage/gpx/UpdaterTest.java    |   4 +-
 .../apache/sis/io/stream/ChannelDataOutput.java    |   2 +-
 .../org/apache/sis/io/stream/ChannelFactory.java   |  22 +-
 .../main/org/apache/sis/io/stream/IOUtilities.java |  18 ++
 .../apache/sis/io/stream/InternalOptionKey.java    |  12 +-
 .../sis/storage/DataStoreContentException.java     |   2 +-
 .../org/apache/sis/storage/DataStoreProvider.java  |  15 +-
 .../org/apache/sis/storage/DataStoreRegistry.java  | 152 +++++++----
 .../main/org/apache/sis/storage/DataStores.java    |  49 +++-
 .../org/apache/sis/storage/ProbeProviderPair.java  |  37 ++-
 .../main/org/apache/sis/storage/ProbeResult.java   |   2 +-
 .../org/apache/sis/storage/StorageConnector.java   |  96 ++++++-
 .../org/apache/sis/storage/WritableFeatureSet.java |  14 +-
 .../org/apache/sis/storage/base/Capability.java    |   2 +-
 .../main/org/apache/sis/storage/base/CodeType.java |   4 +-
 .../apache/sis/storage/base/MetadataBuilder.java   |   2 +-
 .../apache/sis/storage/base/StoreUtilities.java    |  10 +-
 .../apache/sis/storage/base/TiledGridResource.java |   2 +-
 .../sis/storage/csv/MovingFeatureBuilder.java      |   4 +-
 .../apache/sis/storage/image/DataStoreFilter.java  |  83 ++++++
 .../org/apache/sis/storage/image/FormatFilter.java |  14 +-
 .../org/apache/sis/storage/image/FormatFinder.java |  34 ++-
 .../sis/storage/image/WorldFileResource.java       |   2 +-
 .../sis/storage/image/WorldFileStoreProvider.java  |   4 +-
 .../storage/image/WritableSingleImageStore.java    |   4 +-
 .../apache/sis/storage/image/WritableStore.java    |   6 +-
 .../storage/internal/WritableResourceSupport.java  |   2 +-
 .../test/module-info.java                          |   1 +
 .../main/org/apache/sis/measure/UnitDimension.java |  73 ++++-
 .../main/org/apache/sis/measure/UnitRegistry.java  |  55 +++-
 .../main/org/apache/sis/measure/Units.java         |   2 +-
 .../main/org/apache/sis/setup/About.java           |   2 +-
 .../main/org/apache/sis/util/ArgumentChecks.java   |   6 +-
 .../main/org/apache/sis/util/ArraysExt.java        | 172 +++++-------
 .../main/org/apache/sis/util/CharSequences.java    |   4 +-
 .../org/apache/sis/util/NullArgumentException.java |   8 +
 .../main/org/apache/sis/util/StringBuilders.java   |  10 +-
 .../main/org/apache/sis/util/Version.java          |   2 +-
 .../apache/sis/util/collection/TreeNodeList.java   |   2 +-
 .../org/apache/sis/util/collection/WeakEntry.java  |  14 +-
 .../apache/sis/util/collection/WeakHashSet.java    |   5 +-
 .../sis/util/collection/WeakValueHashMap.java      | 153 ++++++-----
 .../resources/ResourceInternationalString.java     |   4 +-
 .../org/apache/sis/util/resources/Vocabulary.java  |  30 ++-
 .../sis/util/resources/Vocabulary.properties       |   2 +-
 .../sis/util/resources/Vocabulary_fr.properties    |   2 +-
 .../org/apache/sis/measure/UnitFormatTest.java     |   4 +-
 .../test/org/apache/sis/test/TestRunner.java       |   2 +-
 .../org/apache/sis/util/ArgumentChecksTest.java    |  49 ++--
 geoapi/snapshot                                    |   2 +-
 incubator/build.gradle.kts                         |   3 +-
 .../test/module-info.java                          |   2 +
 netbeans-project/build.xml                         |   7 +-
 netbeans-project/ivy.xml                           |   1 +
 netbeans-project/nbproject/project.properties      |  35 +--
 optional/build.gradle.kts                          |   3 +-
 .../sis/gui/coverage/StyledRenderingData.java      |   2 +-
 .../org/apache/sis/gui/dataset/WindowHandler.java  |   2 +-
 .../apache/sis/gui/internal/DataStoreOpener.java   |   2 +-
 .../apache/sis/gui/internal/io/FileAccessView.java |  12 +-
 .../org/apache/sis/gui/referencing/CRSChooser.java |   2 +-
 .../test/module-info.java                          |   2 +
 settings.gradle.kts                                |   1 +
 177 files changed, 2120 insertions(+), 1720 deletions(-)

diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ReferenceSystemMetadata.java
index b5ec9c4565,8ee59f4dda..be34eabc91
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ReferenceSystemMetadata.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ReferenceSystemMetadata.java
@@@ -26,9 -26,10 +26,10 @@@ import org.apache.sis.xml.Namespaces
  import org.apache.sis.xml.bind.FilterByVersion;
  import org.apache.sis.util.ComparisonMode;
  import org.apache.sis.util.Utilities;
+ import org.apache.sis.util.collection.Containers;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
index 1a6c9dd3c4,9740d40462..983ddf23cf
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
@@@ -68,9 -74,9 +74,12 @@@ import static org.apache.sis.util.inter
  import static org.apache.sis.util.internal.CollectionsExt.nonEmpty;
  import static org.apache.sis.util.internal.CollectionsExt.immutableSet;
  
 +// 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.referencing.ObjectDomain;
+ 
  
  /**
   * Base class for objects identified by a name or a code. Those objects are 
typically
@@@ -204,8 -212,22 +215,22 @@@ public class AbstractIdentifiedObject e
       * @see #getIdentifier()
       */
      @SuppressWarnings("serial")         // Most SIS implementations are 
serializable.
 -    private Set<Identifier> identifiers;
 +    private Set<ReferenceIdentifier> identifiers;
  
+     /**
+      * Scope and area for which this object is valid, or {@code null} if none.
+      * We must be prepared to handle either null or an empty set for "domains"
+      * because we may get both on unmarshalling.
+      *
+      * <p><b>Consider this field as final!</b>
+      * This field is modified only at unmarshalling time by {@link 
#setScope(InternationalString)}
+      * and {@link #setDomainOfValidity(Extent)}.</p>
+      *
+      * @see #getDomains()
+      */
+     @SuppressWarnings("serial")         // Most SIS implementations are 
serializable.
+     private Collection<ObjectDomain> domains;
+ 
      /**
       * Comments on or information about this object, or {@code null} if none.
       *
@@@ -248,13 -268,11 +271,11 @@@
       *     <th>Property name</th>
       *     <th>Value type</th>
       *     <th>Returned by</th>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
       *     <td>{@value org.opengis.referencing.IdentifiedObject#NAME_KEY}</td>
 -     *     <td>{@link Identifier} or {@link String}</td>
 +     *     <td>{@link ReferenceIdentifier} or {@link String}</td>
       *     <td>{@link #getName()}</td>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
       *     <td>{@value org.opengis.metadata.Identifier#AUTHORITY_KEY}</td>
       *     <td>{@link String} or {@link Citation}</td>
       *     <td>{@link NamedIdentifier#getAuthority()} on the {@linkplain 
#getName() name}</td>
@@@ -263,18 -280,15 +283,15 @@@
       *     <td>{@value org.opengis.metadata.Identifier#CODE_KEY}</td>
       *     <td>{@link String}</td>
       *     <td>{@link NamedIdentifier#getCode()} on the {@linkplain 
#getName() name}</td>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
 -     *     <td>{@value org.opengis.metadata.Identifier#CODESPACE_KEY}</td>
 +     *     <td>{@value 
org.opengis.referencing.ReferenceIdentifier#CODESPACE_KEY}</td>
       *     <td>{@link String}</td>
       *     <td>{@link NamedIdentifier#getCodeSpace()} on the {@linkplain 
#getName() name}</td>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
 -     *     <td>{@value org.opengis.metadata.Identifier#VERSION_KEY}</td>
 +     *     <td>{@value 
org.opengis.referencing.ReferenceIdentifier#VERSION_KEY}</td>
       *     <td>{@link String}</td>
       *     <td>{@link NamedIdentifier#getVersion()} on the {@linkplain 
#getName() name}</td>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
       *     <td>{@value org.opengis.metadata.Identifier#DESCRIPTION_KEY}</td>
       *     <td>{@link String}</td>
       *     <td>{@link NamedIdentifier#getDescription()} on the {@linkplain 
#getName() name}</td>
@@@ -283,13 -296,23 +299,23 @@@
       *     <td>{@value 
org.opengis.referencing.IdentifiedObject#ALIAS_KEY}</td>
       *     <td>{@link GenericName} or {@link CharSequence} (optionally as 
array)</td>
       *     <td>{@link #getAlias()}</td>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
       *     <td>{@value 
org.opengis.referencing.IdentifiedObject#IDENTIFIERS_KEY}</td>
 -     *     <td>{@link Identifier} (optionally as array)</td>
 +     *     <td>{@link ReferenceIdentifier} (optionally as array)</td>
       *     <td>{@link #getIdentifiers()}</td>
-      *   </tr>
-      *   <tr>
+      *   </tr><tr>
+      *     <td>{@value 
org.opengis.referencing.IdentifiedObject#DOMAINS_KEY}</td>
+      *     <td>{@link ObjectDomain} (optionally as array)</td>
+      *     <td>{@link #getDomains()}</td>
+      *   </tr><tr>
+      *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
+      *     <td>{@link String} or {@link InternationalString}</td>
+      *     <td>{@link ObjectDomain#getScope()} on the {@linkplain 
#getDomains() domain}</td>
+      *   </tr><tr>
+      *     <td>{@value 
org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
+      *     <td>{@link Extent}</td>
+      *     <td>{@link ObjectDomain#getDomainOfValidity()} on the {@linkplain 
#getDomains() domain}</td>
+      *   </tr><tr>
       *     <td>{@value 
org.opengis.referencing.IdentifiedObject#REMARKS_KEY}</td>
       *     <td>{@link InternationalString} or {@link String}</td>
       *     <td>{@link #getRemarks()}</td>
@@@ -360,13 -388,11 +391,11 @@@
          // "identifiers": Identifier or Identifier[]
          // -----------------------------------------
          value = properties.get(IDENTIFIERS_KEY);
-         if (value == null) {
-             identifiers = null;
-         } else if (value instanceof ReferenceIdentifier) {
 -        if (value instanceof Identifier) {
 -            identifiers = Collections.singleton((Identifier) value);
 -        } else if (value instanceof Identifier[]) {
 -            identifiers = immutableSet(true, (Identifier[]) value);
++        if (value instanceof ReferenceIdentifier) {
 +            identifiers = Collections.singleton((ReferenceIdentifier) value);
 +        } else if (value instanceof ReferenceIdentifier[]) {
 +            identifiers = immutableSet(true, (ReferenceIdentifier[]) value);
-         } else {
+         } else if (value != null) {
              throw illegalPropertyType(properties, IDENTIFIERS_KEY, value);
          }
  
@@@ -999,15 -1060,13 +1063,13 @@@
       * Invoked by JAXB at unmarshalling time for setting the identifier.
       */
      private void setIdentifier(final Code identifier) {
-         if (identifiers == null) {
-             if (identifier != null) {
-                 final ReferenceIdentifier id = identifier.getIdentifier();
-                 if (id != null) {
-                     identifiers = Collections.singleton(id);
-                 }
+         if (identifiers != null) {
+             propertyAlreadySet("setIdentifier", "identifier");
+         } else if (identifier != null) {
 -            final Identifier id = identifier.getIdentifier();
++            final ReferenceIdentifier id = identifier.getIdentifier();
+             if (id != null) {
+                 identifiers = Collections.singleton(id);
              }
-         } else {
-             
ImplementationHelper.propertyAlreadySet(AbstractIdentifiedObject.class, 
"setIdentifier", "identifier");
          }
      }
  
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/NameIterator.java
index 817323ddb1,082ce983fb..cad528c04b
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/NameIterator.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/NameIterator.java
@@@ -40,10 -41,10 +41,10 @@@ import org.opengis.referencing.Referenc
   * <p>This class also opportunistically provide helper methods for {@link 
AbstractIdentifiedObject} marshalling.</p>
   *
   * @author  Martin Desruisseaux (Geomatys)
-  * @version 0.7
+  * @version 1.4
   * @since   0.4
   */
 -final class NameIterator implements Iterator<Identifier> {
 +final class NameIterator implements Iterator<ReferenceIdentifier> {
      /**
       * The next element to return, or {@code null} if we reached the end of 
iteration.
       */
@@@ -144,10 -145,13 +145,13 @@@
       * @param  alias        the identified object aliases, or {@code null} if 
none.
       * @param  identifiers  the identifiers, or {@code null} if none.
       * @return proposed value for {@code gml:id} attribute, or {@code null} 
if none.
+      *
+      * @see AbstractIdentifiedObject#getID()
       */
-     static String getID(final Context context, final IdentifiedObject object, 
final ReferenceIdentifier name,
 -    static String getID(final IdentifiedObject object, final Identifier name,
 -            final Collection<? extends GenericName> alias, final Collection<? 
extends Identifier> identifiers)
++    static String getID(final IdentifiedObject object, final 
ReferenceIdentifier name,
 +            final Collection<? extends GenericName> alias, final Collection<? 
extends ReferenceIdentifier> identifiers)
      {
+         final Context context = Context.current();
          String candidate = Context.getObjectID(context, object);
          if (candidate == null) {
              final StringBuilder id = new StringBuilder();
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Properties.java
index 61e9aed557,815c29047c..bc8ba8e182
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Properties.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Properties.java
@@@ -32,9 -33,10 +33,12 @@@ import org.apache.sis.util.Deprecable
  import org.apache.sis.util.internal.AbstractMap;
  import org.apache.sis.referencing.util.CoordinateOperations;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
+ // Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
+ import org.opengis.referencing.ObjectDomain;
+ 
  
  /**
   * An immutable map fetching all properties from the specified identified 
object.
@@@ -126,33 -129,12 +131,12 @@@ final class Properties extends Abstract
      final Object getAt(final int key) {
          if ((excludeMask & (1 << key)) == 0) {
              switch (key) {
-                 case 0: {   // NAME_KEY
-                     return object.getName();
-                 }
-                 case 1: {   // IDENTIFIERS_KEY
-                     final Collection<ReferenceIdentifier> c = 
object.getIdentifiers();
-                     if (c != null) {
-                         final int size = c.size();
-                         if (size != 0) {
-                             return c.toArray(new ReferenceIdentifier[size]);
-                         }
-                     }
-                     break;
-                 }
-                 case 2: {   // ALIAS_KEY
-                     final Collection<GenericName> c = object.getAlias();
-                     if (c != null) {
-                         final int size = c.size();
-                         if (size != 0) {
-                             return c.toArray(new GenericName[size]);
-                         }
-                     }
-                     break;
-                 }
-                 case 3: {   // REMARKS_KEY
-                     return object.getRemarks();
-                 }
-                 case 4: {   // SCOPE_KEY
+                 case 0: return         object.getName();                      
          // NAME_KEY
 -                case 1: return toArray(object.getIdentifiers(), 
Identifier[]::new);     // IDENTIFIERS_KEY
++                case 1: return toArray(object.getIdentifiers(), 
ReferenceIdentifier[]::new);     // IDENTIFIERS_KEY
+                 case 2: return toArray(object.getAlias(),      
GenericName[]::new);     // ALIAS_KEY
+                 case 3: return toArray(object.getDomains(),   
ObjectDomain[]::new);     // DOMAINS_KEY
+                 case 4: return         object.getRemarks();                   
          // REMARKS_KEY
+                 case 5: {   // SCOPE_KEY
                      if (object instanceof ReferenceSystem) {
                          return ((ReferenceSystem) object).getScope();
                      } else if (object instanceof Datum) {
diff --cc geoapi/snapshot
index 28aa186401,28c89910b3..9f7fe1ab89
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 28aa186401a38bfcf4cf95136c6c2f5caa36e7bc
 -Subproject commit 28c89910b35b3b3cba2ce4aeeeba1fabc732122b
++Subproject commit 9f7fe1ab89f54f5bfa243616ba4f035708ecc573

Reply via email to