You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2024/04/09 11:25:34 UTC
(sis) branch main updated (129054c2fa -> 3403855d45)
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/sis.git
from 129054c2fa Merge automatic import reorganization (for isolating the difference between branches).
add cb2e0de6f8 Fix an import order.
add 938f77504b Avoid usage of `getScope()` and `getDomainOfValidity()` methods, which are deprecated in GeoAPI 3.1 and removed in GeoAPI 4.0. They are replaced by `ObjectDomain`.
add abe39d4ffc Merge branch 'geoapi-4.0' into geoapi-3.1. This merge avoid deprecated `getScope()` and `getDomainOfValidity()` methods. Those methods are replaced by `getDomains()`.
new 3403855d45 Merge branch 'geoapi-3.1'.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../sis/buildtools/coding/ReorganizeImports.java | 1 +
.../apache/sis/coverage/grid/GridExtentCRS.java | 2 +-
.../sis/metadata/iso/extent/DefaultExtent.java | 3 +-
.../apache/sis/metadata/iso/extent/Extents.java | 4 ++
.../gazetteer/ModifiableLocationType.java | 2 +-
.../gazetteer/ReferencingByIdentifiers.java | 31 +++++--------
.../gazetteer/ReferencingByIdentifiersTest.java | 2 +-
.../main/org/apache/sis/io/wkt/ElementKind.java | 50 +++++++++++++--------
.../main/org/apache/sis/referencing/CRS.java | 23 +++-------
.../apache/sis/referencing/IdentifiedObjects.java | 51 +++++++++++++++++++++
.../org/apache/sis/referencing/Properties.java | 3 +-
.../apache/sis/referencing/crs/AbstractCRS.java | 5 +--
.../sis/referencing/crs/DefaultDerivedCRS.java | 2 +-
.../sis/referencing/datum/BursaWolfParameters.java | 3 ++
.../operation/AbstractCoordinateOperation.java | 5 +--
.../operation/AbstractSingleOperation.java | 3 +-
.../operation/CoordinateOperationFinder.java | 3 +-
.../operation/CoordinateOperationSorter.java | 3 +-
.../operation/DefaultConcatenatedOperation.java | 3 +-
.../referencing/operation/DefaultConversion.java | 2 +-
.../DefaultCoordinateOperationFactory.java | 14 +++---
.../operation/DefaultPassThroughOperation.java | 3 +-
.../operation/DefaultTransformation.java | 2 +-
.../operation/InverseOperationMethod.java | 6 ++-
.../operation/transform/MathTransforms.java | 2 +-
.../privy/EllipsoidalHeightCombiner.java | 2 +-
.../referencing/privy/NilReferencingObject.java | 22 ++++++---
.../sis/xml/bind/referencing/CS_UserDefinedCS.java | 1 -
.../referencing/AbstractReferenceSystemTest.java | 10 +++--
.../sis/referencing/GeodeticObjectVerifier.java | 45 ++++++++++++++-----
.../referencing/crs/DefaultGeodeticCRSTest.java | 3 +-
.../referencing/crs/DefaultProjectedCRSTest.java | 3 +-
.../datum/DefaultGeodeticDatumTest.java | 12 +++--
.../datum/DefaultTemporalDatumTest.java | 15 ++++---
.../datum/DefaultVerticalDatumTest.java | 5 ++-
.../sis/referencing/datum/HardCodedDatum.java | 21 +++++++--
.../operation/SingleOperationMarshallingTest.java | 12 ++---
.../sis/test/integration/MetadataVerticalTest.java | 5 ++-
.../apache/sis/storage/base/MetadataBuilder.java | 5 ++-
.../main/org/apache/sis/util/ComparisonMode.java | 4 +-
.../org/apache/sis/util/LenientComparable.java | 3 +-
.../test/org/apache/sis/test/TestUtilities.java | 52 ++++++++++++++++++++++
.../org/apache/sis/gui/referencing/CRSChooser.java | 20 +++++----
.../gui/referencing/RecentReferenceSystems.java | 2 +-
.../main/org/apache/sis/gui/referencing/Utils.java | 21 +++++----
45 files changed, 331 insertions(+), 160 deletions(-)
(sis) 01/01: Merge branch 'geoapi-3.1'.
Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/sis.git
commit 3403855d4538f69120d0adf2829a8187799de9d2
Merge: 129054c2fa abe39d4ffc
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Tue Apr 9 13:22:51 2024 +0200
Merge branch 'geoapi-3.1'.
.../sis/buildtools/coding/ReorganizeImports.java | 1 +
.../apache/sis/coverage/grid/GridExtentCRS.java | 2 +-
.../sis/metadata/iso/extent/DefaultExtent.java | 3 +-
.../apache/sis/metadata/iso/extent/Extents.java | 4 ++
.../gazetteer/ModifiableLocationType.java | 2 +-
.../gazetteer/ReferencingByIdentifiers.java | 31 +++++--------
.../gazetteer/ReferencingByIdentifiersTest.java | 2 +-
.../main/org/apache/sis/io/wkt/ElementKind.java | 50 +++++++++++++--------
.../main/org/apache/sis/referencing/CRS.java | 23 +++-------
.../apache/sis/referencing/IdentifiedObjects.java | 51 +++++++++++++++++++++
.../org/apache/sis/referencing/Properties.java | 3 +-
.../apache/sis/referencing/crs/AbstractCRS.java | 5 +--
.../sis/referencing/crs/DefaultDerivedCRS.java | 2 +-
.../sis/referencing/datum/BursaWolfParameters.java | 3 ++
.../operation/AbstractCoordinateOperation.java | 5 +--
.../operation/AbstractSingleOperation.java | 3 +-
.../operation/CoordinateOperationFinder.java | 3 +-
.../operation/CoordinateOperationSorter.java | 3 +-
.../operation/DefaultConcatenatedOperation.java | 3 +-
.../referencing/operation/DefaultConversion.java | 2 +-
.../DefaultCoordinateOperationFactory.java | 14 +++---
.../operation/DefaultPassThroughOperation.java | 3 +-
.../operation/DefaultTransformation.java | 2 +-
.../operation/InverseOperationMethod.java | 6 ++-
.../operation/transform/MathTransforms.java | 2 +-
.../privy/EllipsoidalHeightCombiner.java | 2 +-
.../referencing/privy/NilReferencingObject.java | 22 ++++++---
.../sis/xml/bind/referencing/CS_UserDefinedCS.java | 1 -
.../referencing/AbstractReferenceSystemTest.java | 10 +++--
.../sis/referencing/GeodeticObjectVerifier.java | 45 ++++++++++++++-----
.../referencing/crs/DefaultGeodeticCRSTest.java | 3 +-
.../referencing/crs/DefaultProjectedCRSTest.java | 3 +-
.../datum/DefaultGeodeticDatumTest.java | 12 +++--
.../datum/DefaultTemporalDatumTest.java | 15 ++++---
.../datum/DefaultVerticalDatumTest.java | 5 ++-
.../sis/referencing/datum/HardCodedDatum.java | 21 +++++++--
.../operation/SingleOperationMarshallingTest.java | 12 ++---
.../sis/test/integration/MetadataVerticalTest.java | 5 ++-
.../apache/sis/storage/base/MetadataBuilder.java | 5 ++-
.../main/org/apache/sis/util/ComparisonMode.java | 4 +-
.../org/apache/sis/util/LenientComparable.java | 3 +-
.../test/org/apache/sis/test/TestUtilities.java | 52 ++++++++++++++++++++++
.../org/apache/sis/gui/referencing/CRSChooser.java | 20 +++++----
.../gui/referencing/RecentReferenceSystems.java | 2 +-
.../main/org/apache/sis/gui/referencing/Utils.java | 21 +++++----
45 files changed, 331 insertions(+), 160 deletions(-)
diff --cc endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
index e11b6372c8,cacfa9b7fa..ae28430fdb
--- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
+++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
@@@ -178,12 -181,12 +178,12 @@@ final class GridExtentCRS
/*
* Put everything together: parameters, conversion and finally the derived CRS.
*/
- final HashMap<String,Object> properties = new HashMap<>(8);
+ final var properties = new HashMap<String,Object>(8);
properties.put(IdentifiedObject.NAME_KEY, METHOD.getName());
properties.put(DefaultConversion.LOCALE_KEY, locale);
- properties.put(ObjectDomain.SCOPE_KEY, SCOPE);
+ properties.put(Conversion.SCOPE_KEY, SCOPE);
gg.getGeographicExtent().ifPresent((domain) -> {
- properties.put(ObjectDomain.DOMAIN_OF_VALIDITY_KEY,
+ properties.put(Conversion.DOMAIN_OF_VALIDITY_KEY,
new DefaultExtent(null, domain, null, null));
});
final ParameterValueGroup params = METHOD.getParameters().createValue();
diff --cc endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/ReferencingByIdentifiers.java
index 7d35fb2f14,0d526a2fd7..b348bd7770
--- a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/ReferencingByIdentifiers.java
+++ b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/ReferencingByIdentifiers.java
@@@ -133,21 -120,17 +133,17 @@@ public abstract class ReferencingByIden
* <th>Property name</th>
* <th>Value type</th>
* <th>Returned by</th>
- * </tr>
- * <tr>
+ * </tr><tr>
- * <td>{@value org.opengis.referencing.gazetteer.ReferenceSystemUsingIdentifiers#THEME_KEY}</td>
+ * <td>"theme"</td>
* <td>{@link String} or {@link InternationalString}</td>
* <td>{@link #getTheme()}</td>
- * </tr>
- * <tr>
+ * </tr><tr>
- * <td>{@value org.opengis.referencing.gazetteer.ReferenceSystemUsingIdentifiers#OVERALL_OWNER_KEY}</td>
- * <td>{@link Party}</td>
+ * <td>"overallOwner"</td>
+ * <td>{@code Party}</td>
* <td>{@link #getOverallOwner()}</td>
- * </tr>
- * <tr>
+ * </tr><tr>
* <th colspan="3" class="hsep">Defined in parent class (reminder)</th>
- * </tr>
- * <tr>
+ * </tr><tr>
* <td>{@value org.opengis.referencing.IdentifiedObject#NAME_KEY}</td>
* <td>{@link org.opengis.metadata.Identifier} or {@link String}</td>
* <td>{@link #getName()}</td>
@@@ -166,16 -146,14 +159,14 @@@
* <td>{@value org.opengis.referencing.IdentifiedObject#REMARKS_KEY}</td>
* <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
* <td>{@link #getRemarks()}</td>
- * </tr>
- * <tr>
+ * </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#DOMAIN_OF_VALIDITY_KEY}</td>
+ * <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
* <td>{@link org.opengis.metadata.extent.Extent}</td>
- * <td>{@link #getDomainOfValidity()}</td>
- * </tr>
- * <tr>
+ * <td>{@link org.apache.sis.referencing.DefaultObjectDomain#getDomainOfValidity()}</td>
+ * </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#SCOPE_KEY}</td>
+ * <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
* <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
- * <td>{@link #getScope()}</td>
+ * <td>{@link org.apache.sis.referencing.DefaultObjectDomain#getScope()}</td>
* </tr>
* </table>
*
diff --cc endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/ReferencingByIdentifiersTest.java
index 4bbacde137,04e97af060..756f05d2cc
--- a/endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/ReferencingByIdentifiersTest.java
+++ b/endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/ReferencingByIdentifiersTest.java
@@@ -49,9 -52,9 +49,9 @@@ public final class ReferencingByIdentif
private static ReferencingByIdentifiers create(final boolean inherit) {
final Map<String,Object> properties = new HashMap<>();
assertNull(properties.put(ReferencingByIdentifiers.NAME_KEY, "UK property addressing"));
- assertNull(properties.put(ReferencingByIdentifiers.DOMAIN_OF_VALIDITY_KEY, new DefaultExtent("UK", null, null, null)));
assertNull(properties.put(ReferencingByIdentifiers.THEME_KEY, "property"));
assertNull(properties.put(ReferencingByIdentifiers.OVERALL_OWNER_KEY, new DefaultOrganisation("Office for National Statistics", null, null, null)));
- assertNull(properties.put(ObjectDomain.DOMAIN_OF_VALIDITY_KEY, new DefaultExtent("UK", null, null, null)));
++ assertNull(properties.put(ReferencingByIdentifiers.DOMAIN_OF_VALIDITY_KEY, new DefaultExtent("UK", null, null, null)));
return new ReferencingByIdentifiers(properties, LocationTypeTest.create(inherit)) {
@Override public ReferencingByIdentifiers.Coder createCoder() {
throw new UnsupportedOperationException();
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
index 644aac07e6,6ffbe5671c..d425ff7add
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
@@@ -91,10 -91,13 +91,9 @@@ import org.apache.sis.util.privy.Numeri
import org.apache.sis.util.resources.Errors;
import org.apache.sis.util.logging.Logging;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.geometry.Geometry;
-import org.opengis.referencing.ObjectDomain;
-import org.opengis.referencing.datum.DynamicReferenceFrame;
-import org.opengis.metadata.extent.BoundingPolygon;
-import org.opengis.metadata.extent.GeographicExtent;
-import org.opengis.coordinate.CoordinateMetadata;
+// Specific to the main branch:
- import org.apache.sis.referencing.internal.Legacy;
+import org.apache.sis.pending.geoapi.referencing.DynamicReferenceFrame;
+import org.apache.sis.coordinate.DefaultCoordinateMetadata;
/**
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/IdentifiedObjects.java
index b06543dc03,c8b2c0c321..38b841055f
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/IdentifiedObjects.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/IdentifiedObjects.java
@@@ -53,8 -59,8 +59,9 @@@ import org.apache.sis.referencing.facto
import org.apache.sis.referencing.factory.UnavailableFactoryException;
import org.apache.sis.referencing.factory.NoSuchAuthorityFactoryException;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.ObjectDomain;
+// Specific to the main branch:
+import org.opengis.referencing.ReferenceIdentifier;
++import org.apache.sis.referencing.internal.Legacy;
/**
@@@ -433,6 -439,50 +440,50 @@@ public final class IdentifiedObjects ex
return name;
}
+ /**
+ * Returns the domain of validity of the given object.
+ * If the object specifies more than one domain of validity,
+ * then this method computes their intersection (note that this is the opposite of
+ * {@link #getGeographicBoundingBox(IdentifiedObject)}, which computes the union).
+ * If there is no intersection, then the returned object implements {@link Emptiable}
+ * and the {@link Emptiable#isEmpty()} method returns {@code true}.
+ *
+ * @param object the object for which to get the domain of validity, or {@code null}.
+ * @return the domain of validity where the object is valid, or empty if unspecified.
+ *
+ * @since 1.5
+ */
+ public static Optional<Extent> getDomainOfValidity(final IdentifiedObject object) {
+ Extent domain = null;
+ if (object != null) {
- for (ObjectDomain obj : object.getDomains()) {
++ for (DefaultObjectDomain obj : Legacy.getDomains(object)) {
+ domain = Extents.intersection(domain, obj.getDomainOfValidity());
+ }
+ }
+ return Optional.ofNullable(domain);
+ }
+
+ /**
+ * Returns the geographic bounding box computed from the domains of the given object.
+ * If the given object contains more than one domain, then this method computes their union.
+ * Note that this is the opposite of {@link #getDomainOfValidity(IdentifiedObject)},
+ * which computes the intersection.
+ *
+ * @param object the object for which to get the domain of validity, or {@code null}.
+ * @return the geographic area where the object is valid, or empty if unspecified.
+ *
+ * @see IdentifiedObject#getDomains()
+ * @see Extents#getGeographicBoundingBox(Stream)
+ *
+ * @since 1.5
+ */
+ public static Optional<GeographicBoundingBox> getGeographicBoundingBox(final IdentifiedObject object) {
+ if (object == null) {
+ return Optional.empty();
+ }
- return Extents.getGeographicBoundingBox(object.getDomains().stream().map(ObjectDomain::getDomainOfValidity));
++ return Extents.getGeographicBoundingBox(Legacy.getDomains(object).stream().map(DefaultObjectDomain::getDomainOfValidity));
+ }
+
/**
* Looks up a URN, such as {@code "urn:ogc:def:crs:EPSG:9.1:4326"}, of the specified object.
* This method searches in all {@linkplain org.apache.sis.referencing.factory.GeodeticAuthorityFactory geodetic
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
index 7b97f75f51,1cc86465d3..2606e972ce
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
@@@ -209,9 -211,9 +209,9 @@@ public class DefaultDerivedCRS extends
* <td>{@link org.opengis.metadata.Identifier} (optionally as array)</td>
* <td>{@code this.getIdentifiers()}</td>
* </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#DOMAIN_OF_VALIDITY_KEY}</td>
+ * <td>{@value org.opengis.referencing.operation.CoordinateOperation#DOMAIN_OF_VALIDITY_KEY}</td>
* <td>{@link org.opengis.metadata.extent.Extent}</td>
- * <td>{@code conversionFromBase.getDomainOfValidity()}</td>
+ * <td>{@code domain.getDomainOfValidity()}</td>
* </tr>
* </table>
*
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/BursaWolfParameters.java
index ed4ff0171f,42a36c2251..848558d6a2
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/BursaWolfParameters.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/BursaWolfParameters.java
@@@ -609,9 -611,10 +611,10 @@@ public class BursaWolfParameters extend
*
* @see org.apache.sis.metadata.iso.extent.DefaultExtent
*/
+ @OptionalCandidate
public Extent getDomainOfValidity() {
if (domainOfValidity == null && targetDatum != null) {
- return IdentifiedObjects.getDomainOfValidity(targetDatum).orElse(null);
+ return targetDatum.getDomainOfValidity();
}
return domainOfValidity;
}
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
index b8b3e081d2,0c5331ca99..29a6f003a8
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
@@@ -113,9 -113,9 +113,9 @@@ public class DefaultConversion extends
* <td>{@link org.opengis.metadata.Identifier} (optionally as array)</td>
* <td>{@link #getIdentifiers()}</td>
* </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#DOMAIN_OF_VALIDITY_KEY}</td>
+ * <td>{@value org.opengis.referencing.operation.CoordinateOperation#DOMAIN_OF_VALIDITY_KEY}</td>
* <td>{@link org.opengis.metadata.extent.Extent}</td>
- * <td>{@link #getDomainOfValidity()}</td>
+ * <td>{@link org.apache.sis.referencing.DefaultObjectDomain#getDomainOfValidity()}</td>
* </tr>
* </table>
*
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
index 2f6d30370f,b4f4c42b55..aa00964495
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
@@@ -377,9 -390,9 +377,9 @@@ public class DefaultCoordinateOperation
* <td>{@link org.opengis.metadata.Identifier} (optionally as array)</td>
* <td>{@link DefaultConversion#getIdentifiers()}</td>
* </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#DOMAIN_OF_VALIDITY_KEY}</td>
+ * <td>{@value org.opengis.referencing.operation.CoordinateOperation#DOMAIN_OF_VALIDITY_KEY}</td>
* <td>{@link org.opengis.metadata.extent.Extent}</td>
- * <td>{@link DefaultConversion#getDomainOfValidity()}</td>
+ * <td>{@link org.apache.sis.referencing.DefaultObjectDomain#getDomainOfValidity()}</td>
* </tr>
* </table>
*
@@@ -467,9 -480,9 +467,9 @@@ next: for (int i=components.size(); -
* <td>{@link org.opengis.metadata.Identifier} (optionally as array)</td>
* <td>{@link DefaultConversion#getIdentifiers()}</td>
* </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#DOMAIN_OF_VALIDITY_KEY}</td>
+ * <td>{@value org.opengis.referencing.operation.CoordinateOperation#DOMAIN_OF_VALIDITY_KEY}</td>
* <td>{@link org.opengis.metadata.extent.Extent}</td>
- * <td>{@link DefaultConversion#getDomainOfValidity()}</td>
+ * <td>{@link org.apache.sis.referencing.DefaultObjectDomain#getDomainOfValidity()}</td>
* </tr>
* </table>
*
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultTransformation.java
index e25994c584,d3bdca7358..058f19493d
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultTransformation.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultTransformation.java
@@@ -87,9 -87,9 +87,9 @@@ public class DefaultTransformation exte
* <td>{@link org.opengis.metadata.quality.PositionalAccuracy} (optionally as array)</td>
* <td>{@link #getCoordinateOperationAccuracy()}</td>
* </tr><tr>
- * <td>{@value org.opengis.referencing.ObjectDomain#DOMAIN_OF_VALIDITY_KEY}</td>
+ * <td>{@value org.opengis.referencing.operation.CoordinateOperation#DOMAIN_OF_VALIDITY_KEY}</td>
* <td>{@link org.opengis.metadata.extent.Extent}</td>
- * <td>{@link #getDomainOfValidity()}</td>
+ * <td>{@link org.apache.sis.referencing.DefaultObjectDomain#getDomainOfValidity()}</td>
* </tr>
* </table>
*
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/InverseOperationMethod.java
index 967e44a047,2ada34c583..ed43dac223
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/InverseOperationMethod.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/InverseOperationMethod.java
@@@ -40,6 -40,9 +40,10 @@@ import org.apache.sis.referencing.opera
import org.apache.sis.util.Deprecable;
import org.apache.sis.util.collection.Containers;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.ObjectDomain;
++// Specific to the main branch:
++import org.apache.sis.referencing.internal.Legacy;
++import org.apache.sis.referencing.DefaultObjectDomain;
+
/**
* Description of the inverse of another method. This class should be used only when no operation is defined
@@@ -135,7 -138,7 +139,7 @@@ final class InverseOperationMethod exte
* @param target where to store the properties of the inverse operation.
*/
static void properties(final SingleOperation source, final Map<String,Object> target) {
- target.put(SingleOperation.DOMAIN_OF_VALIDITY_KEY, source.getDomainOfValidity());
- target.put(SingleOperation.DOMAINS_KEY, source.getDomains().toArray(ObjectDomain[]::new));
++ target.put("domains", Legacy.getDomains(source).toArray(DefaultObjectDomain[]::new));
final Collection<PositionalAccuracy> accuracy = source.getCoordinateOperationAccuracy();
if (!Containers.isNullOrEmpty(accuracy)) {
target.put(SingleOperation.COORDINATE_OPERATION_ACCURACY_KEY,
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/EllipsoidalHeightCombiner.java
index 9d0f450bf9,0780da7d33..0f1dbbf49a
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/EllipsoidalHeightCombiner.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/EllipsoidalHeightCombiner.java
@@@ -217,11 -220,13 +217,11 @@@ public final class EllipsoidalHeightCom
ArgumentChecks.ensureNonNullElement("components", i, crs);
if (i != 0) name.append(" + ");
name.append(crs.getName().getCode());
- for (ObjectDomain obj : crs.getDomains()) {
- domain = Extents.intersection(domain, obj.getDomainOfValidity());
- }
+ domain = Extents.intersection(domain, crs.getDomainOfValidity());
}
- final Map<String,Object> properties = new HashMap<>(2);
+ final var properties = new HashMap<String,Object>(4);
properties.put(CoordinateReferenceSystem.NAME_KEY, name.toString());
- properties.put(ObjectDomain.DOMAIN_OF_VALIDITY_KEY, domain);
+ properties.put(CoordinateReferenceSystem.DOMAIN_OF_VALIDITY_KEY, domain);
return properties;
}
}
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/NilReferencingObject.java
index efc6503e34,6d95249674..51e1ebc998
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/NilReferencingObject.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/NilReferencingObject.java
@@@ -74,26 -67,20 +74,36 @@@ public final class NilReferencingObjec
return NilReason.TEMPLATE;
}
- /*
- * Simple properties. Not all of them are optional, but SIS is tolerant to null values.
- * Returning null for collection are okay in the particular case of SIS implementation,
- * because the constructor will replace empty collections by null references anyway.
+ /**
+ * Returns the localized "unnamed" name because this property is mandatory.
*/
- @Override public ReferenceIdentifier getName() {return UNNAMED;}
+ @Override
+ public ReferenceIdentifier getName() {
+ return UNNAMED;
+ }
+
+ /**
+ * For avoiding ambiguity.
+ */
+ @Override
+ @Deprecated
+ public InternationalString getScope() {
+ return null;
+ }
++
+ @Override public Collection<GenericName> getAlias() {return null;}
+ @Override public Set<ReferenceIdentifier> getIdentifiers() {return null;}
+ @Override public InternationalString getRemarks() {return null;}
- @Override public InternationalString getScope() {return null;}
+ @Override public Extent getDomainOfValidity() {return null;}
+
+ /**
+ * Throws the exception in all cases.
+ *
+ * @return never return.
+ * @throws UnformattableObjectException always thrown.
+ */
+ @Override
+ public String toWKT() throws UnformattableObjectException {
+ throw new UnformattableObjectException();
+ }
}
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
index c1022ef664,c1022ef664..9312025284
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
@@@ -30,7 -30,7 +30,6 @@@ import org.opengis.referencing.cs.UserD
*
* @author Martin Desruisseaux (Geomatys)
*/
--@SuppressWarnings("deprecation")
public final class CS_UserDefinedCS extends PropertyType<CS_UserDefinedCS, UserDefinedCS> {
/**
* Empty constructor for JAXB only.
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/AbstractReferenceSystemTest.java
index b4814290ef,5314c05016..7b40839761
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/AbstractReferenceSystemTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/AbstractReferenceSystemTest.java
@@@ -19,7 -19,7 +19,8 @@@ package org.apache.sis.referencing
import java.util.Map;
import java.util.HashMap;
import java.util.Locale;
+ import org.opengis.util.InternationalString;
+import static org.opengis.referencing.ReferenceSystem.*;
import org.apache.sis.io.wkt.Convention;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.metadata.iso.extent.DefaultExtent;
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
index 63c6dfb55a,d5a6fc3dd1..7b726e2c70
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
@@@ -20,6 -20,6 +20,7 @@@ import org.opengis.metadata.Identifier
import org.opengis.metadata.extent.Extent;
import org.opengis.metadata.extent.GeographicExtent;
import org.opengis.metadata.extent.GeographicBoundingBox;
++import org.opengis.referencing.IdentifiedObject;
import org.opengis.referencing.datum.Ellipsoid;
import org.opengis.referencing.datum.PrimeMeridian;
import org.opengis.referencing.datum.GeodeticDatum;
@@@ -34,6 -34,10 +35,11 @@@ import org.opengis.referencing.crs.Geod
import org.apache.sis.metadata.privy.AxisNames;
import org.apache.sis.measure.Units;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.ObjectDomain;
-import org.opengis.referencing.IdentifiedObject;
++// Specific to the main branch:
++import org.opengis.referencing.datum.Datum;
++import org.opengis.referencing.ReferenceSystem;
++import org.opengis.referencing.operation.CoordinateOperation;
+
// Test dependencies
import static org.junit.jupiter.api.Assertions.*;
@@@ -54,8 -58,21 +60,27 @@@ public final class GeodeticObjectVerifi
}
/**
- * Asserts that all {@link GeographicBoundingBox}, if any,
- * {@linkplain #assertIsWorld(GeographicBoundingBox) encompasses the world}.
+ * Asserts that the first geographic bounding box, if any, encompasses the world.
+ *
+ * @param object the object to verify, or {@code null} if none.
+ * @param isMandatory {@code true} if an absence of world extent is a failure.
+ */
+ private static void assertIsWorld(final IdentifiedObject object, boolean isMandatory) {
- for (ObjectDomain domain : object.getDomains()) {
- assertIsWorld(domain.getDomainOfValidity(), isMandatory);
- isMandatory = false;
++ final Extent extent;
++ if (object instanceof ReferenceSystem) {
++ extent = ((ReferenceSystem) object).getDomainOfValidity();
++ } else if (object instanceof Datum) {
++ extent = ((Datum) object).getDomainOfValidity();
++ } else if (object instanceof CoordinateOperation) {
++ extent = ((CoordinateOperation) object).getDomainOfValidity();
++ } else {
++ extent = null;
+ }
- assertFalse(isMandatory, "Expected a world extent element.");
++ assertIsWorld(extent, isMandatory);
+ }
+
+ /**
+ * Asserts that the first geographic bounding box, if any, encompasses the world.
*
* <p><b>Note:</b> a future version of this method may accept other kinds of extent,
* for example a polygon encompassing the world.</p>
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
index 13c935f3cb,887c1f8870..d7fabb12d4
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
@@@ -32,9 -31,12 +31,11 @@@ import org.apache.sis.xml.test.TestCase
import org.apache.sis.metadata.iso.citation.HardCodedCitations;
import static org.apache.sis.referencing.Assertions.assertWktEquals;
import static org.apache.sis.test.TestUtilities.getSingleton;
+ import static org.apache.sis.test.TestUtilities.getScope;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import static org.opengis.referencing.ObjectDomain.*;
-import static org.opengis.referencing.IdentifiedObject.*;
-import static org.opengis.test.Assertions.assertIdentifierEquals;
+// Specific to the main branch:
++import static org.opengis.referencing.ReferenceSystem.*;
+import static org.apache.sis.test.GeoapiAssert.assertIdentifierEquals;
/**
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java
index b680ce4011,9ced366669..1cc9107bea
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java
@@@ -47,11 -47,13 +47,13 @@@ import org.opengis.test.Validators
import org.apache.sis.xml.bind.referencing.CC_OperationParameterGroupTest;
import org.apache.sis.xml.test.TestCase;
import static org.apache.sis.test.TestUtilities.getSingleton;
+ import static org.apache.sis.test.TestUtilities.getScope;
+ import static org.apache.sis.test.TestUtilities.getDomainOfValidity;
import static org.apache.sis.metadata.Assertions.assertXmlEquals;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import static org.opengis.test.Assertions.assertIdentifierEquals;
-import static org.opengis.test.Assertions.assertMatrixEquals;
+// Specific to the main branch:
+import static org.apache.sis.test.GeoapiAssert.assertIdentifierEquals;
+import static org.apache.sis.test.GeoapiAssert.assertMatrixEquals;
/**
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/MetadataVerticalTest.java
index 67408e5c26,57d29028b3..8cb6ee88d1
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/MetadataVerticalTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/MetadataVerticalTest.java
@@@ -44,11 -44,12 +44,12 @@@ import org.apache.sis.xml.NilReason
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.apache.sis.xml.test.TestCase;
+ import static org.apache.sis.test.TestUtilities.getScope;
import static org.apache.sis.test.TestUtilities.getSingleton;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import java.nio.charset.StandardCharsets;
-import static org.opengis.test.Assertions.assertIdentifierEquals;
+// Specific to the main branch:
+import org.opengis.metadata.identification.CharacterSet;
+import static org.apache.sis.test.GeoapiAssert.assertIdentifierEquals;
/**
diff --cc endorsed/src/org.apache.sis.util/test/org/apache/sis/test/TestUtilities.java
index 9a75478ef5,d8e2de7ce1..75faeb8601
--- a/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/TestUtilities.java
+++ b/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/TestUtilities.java
@@@ -36,6 -36,10 +36,9 @@@ import java.text.Format
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+ import org.opengis.util.InternationalString;
+ import org.opengis.referencing.IdentifiedObject;
-import org.opengis.metadata.extent.GeographicExtent;
+ import org.opengis.metadata.extent.GeographicBoundingBox;
import org.apache.sis.util.Debug;
import org.apache.sis.util.Static;
import org.apache.sis.util.CharSequences;
@@@ -46,6 -50,9 +49,12 @@@ import org.apache.sis.util.collection.T
import org.apache.sis.util.privy.X364;
import static org.apache.sis.util.privy.StandardDateFormat.UTC;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.ObjectDomain;
++// Specific to the main branch:
++import org.opengis.metadata.extent.Extent;
++import org.opengis.referencing.datum.Datum;
++import org.opengis.referencing.ReferenceSystem;
++import org.opengis.referencing.operation.CoordinateOperation;
+
// Test dependencies
import static org.junit.jupiter.api.Assertions.*;
@@@ -351,6 -358,31 +360,49 @@@ public final class TestUtilities extend
return element;
}
+ /**
+ * Returns the scope of the given object. Exactly one scope shall exist.
+ *
+ * @param object the object for which to get the scope.
+ * @return the single scope of the given object.
+ */
+ public static String getScope(final IdentifiedObject object) {
- InternationalString scope = getSingleton(object.getDomains()).getScope();
++ final InternationalString scope;
++ if (object instanceof ReferenceSystem) {
++ scope = ((ReferenceSystem) object).getScope();
++ } else if (object instanceof Datum) {
++ scope = ((Datum) object).getScope();
++ } else if (object instanceof CoordinateOperation) {
++ scope = ((CoordinateOperation) object).getScope();
++ } else {
++ scope = null;
++ }
+ assertNotNull(scope, "Missing scope.");
+ return scope.toString();
+ }
+
+ /**
+ * Returns the domain of validity of the given object. Exactly one domain shall exist,
+ * and that domain shall be a geographic bounding box.
+ *
+ * @param object the object for which to get the domain of validity.
+ * @return the single domain of validity of the given object.
+ */
+ public static GeographicBoundingBox getDomainOfValidity(final IdentifiedObject object) {
- ObjectDomain domain = getSingleton(object.getDomains());
- GeographicExtent extent = getSingleton(domain.getDomainOfValidity().getGeographicElements());
- return assertInstanceOf(GeographicBoundingBox.class, extent);
++ final Extent extent;
++ if (object instanceof ReferenceSystem) {
++ extent = ((ReferenceSystem) object).getDomainOfValidity();
++ } else if (object instanceof Datum) {
++ extent = ((Datum) object).getDomainOfValidity();
++ } else if (object instanceof CoordinateOperation) {
++ extent = ((CoordinateOperation) object).getDomainOfValidity();
++ } else {
++ extent = null;
++ }
++ assertNotNull(extent, "Missing extent.");
++ return assertInstanceOf(GeographicBoundingBox.class, getSingleton(extent.getGeographicElements()));
+ }
+
/**
* Returns a copy of the given array with the last coordinate values dropped for each coordinates.
*
diff --cc optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
index 64ba82974f,313f1ac979..3a85d0c22c
--- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
+++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
@@@ -345,13 -347,17 +344,16 @@@ public class CRSChooser extends Dialog<
/**
* Sets the text that describes the domain of validity.
*/
- private void setDomainOfValidity(final Extent domainOfValidity, final Locale locale) {
- String text = Extents.getDescription(domainOfValidity, locale);
- String tip = text;
+ private void setDomainOfValidity(final CoordinateReferenceSystem crs, final Locale locale) {
+ String extent = null;
- for (ObjectDomain c : crs.getDomains()) {
- extent = Extents.getDescription(c.getDomainOfValidity(), locale);
- if (extent != null) break;
++ if (crs != null) {
++ extent = Extents.getDescription(crs.getDomainOfValidity(), locale);
+ }
+ String tip = extent;
Color color = Styles.NORMAL_TEXT;
- if (!Utils.intersects(areaOfInterest, domainOfValidity)) {
+ if (!Utils.intersects(areaOfInterest, crs)) {
tip = Resources.forLocale(locale).getString(Resources.Keys.DoesNotCoverAOI);
- text = Styles.WARNING_ICON + " " + (text != null ? text : tip);
+ extent = Styles.WARNING_ICON + " " + (extent != null ? extent : tip);
color = Styles.ERROR_TEXT;
}
domain.setTextFill(color);
diff --cc optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/Utils.java
index 41d5c19be6,ecf7ceaf8e..f11cc31dbf
--- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/Utils.java
+++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/Utils.java
@@@ -81,14 -83,20 +80,20 @@@ final class Utils
* The reason for returning {@code true} is because it will usually result in no action from the caller,
* while {@code false} results in warning emitted or CRS filtered out.
*/
- static boolean intersects(final ImmutableEnvelope areaOfInterest, final Extent domainOfValidity) {
+ static boolean intersects(final ImmutableEnvelope areaOfInterest, final ReferenceSystem crs) {
+ boolean conservative = true;
if (areaOfInterest != null) {
- final GeographicBoundingBox bbox = Extents.getGeographicBoundingBox(domainOfValidity);
- if (bbox != null) {
- return areaOfInterest.intersects(new ImmutableEnvelope(bbox));
- for (final ObjectDomain domain : crs.getDomains()) {
- final GeographicBoundingBox bbox = Extents.getGeographicBoundingBox(domain.getDomainOfValidity());
++ if (crs != null) {
++ final GeographicBoundingBox bbox = Extents.getGeographicBoundingBox(crs.getDomainOfValidity());
+ if (bbox != null) {
+ if (areaOfInterest.intersects(new ImmutableEnvelope(bbox))) {
+ return true;
+ }
+ conservative = false;
+ }
}
}
- return true;
+ return conservative;
}
/**