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