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/05/24 17:31:53 UTC
(sis) 01/01: Merge branch 'geoapi-3.1'. This is mostly about changing the type of `TemporalDatum.origin` to `java.time`, at least internally.
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 c1009799e750c86a53e16c0e76c4c4d6d775f93a
Merge: 485bf63bb3 269d8e9759
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri May 24 19:30:32 2024 +0200
Merge branch 'geoapi-3.1'.
This is mostly about changing the type of `TemporalDatum.origin` to `java.time`, at least internally.
.../main/org/apache/sis/console/AboutCommand.java | 4 +-
.../apache/sis/feature/FeatureMemoryBenchmark.java | 4 +-
.../test/org/apache/sis/filter/PeriodLiteral.java | 8 +-
.../org/apache/sis/filter/TemporalFilterTest.java | 2 +-
.../sis/metadata/iso/acquisition/DefaultEvent.java | 34 +-
.../sis/metadata/iso/acquisition/package-info.java | 2 +-
.../metadata/iso/citation/DefaultCitationDate.java | 55 ++-
.../sis/metadata/iso/citation/package-info.java | 2 +-
.../metadata/iso/extent/DefaultTemporalExtent.java | 101 +++--
.../apache/sis/metadata/iso/extent/Extents.java | 131 ++++---
.../sis/metadata/iso/legacy/TemporalToDate.java | 13 +-
.../metadata/iso/lineage/DefaultProcessStep.java | 4 +-
.../maintenance/DefaultMaintenanceInformation.java | 4 +-
.../sis/metadata/privy/ImplementationHelper.java | 2 +-
.../sis/pending/temporal/TemporalUtilities.java | 50 ++-
.../org/apache/sis/xml/bind/gml/TM_Primitive.java | 33 +-
.../apache/sis/xml/bind/gml/TemporalAdapter.java | 67 ++++
.../apache/sis/xml/bind/gml/TimePeriodBound.java | 1 +
.../sis/xml/bind/gml/UniversalTimeAdapter.java | 2 +-
.../org/apache/sis/xml/privy/XmlUtilities.java | 33 +-
.../sis/metadata/iso/extent/DefaultExtentTest.java | 25 +-
.../iso/extent/DefaultTemporalExtentTest.java | 59 +++
.../apache/sis/xml/bind/gml/TimePeriodTest.java | 31 +-
.../apache/sis/xml/bind/lan/LanguageCodeTest.java | 2 +-
.../org/apache/sis/xml/privy/XmlUtilitiesTest.java | 14 +-
.../referencing/gazetteer/AbstractLocation.java | 6 +-
.../sis/referencing/gazetteer/LocationFormat.java | 17 +-
.../gazetteer/MilitaryGridReferenceSystem.java | 2 +-
.../sis/referencing/gazetteer/SimpleLocation.java | 3 +-
.../gazetteer/GeohashReferenceSystemTest.java | 2 +-
.../gazetteer/MilitaryGridReferenceSystemTest.java | 2 +-
.../org/apache/sis/geometry/CoordinateFormat.java | 20 +-
.../main/org/apache/sis/io/wkt/Element.java | 5 +-
.../main/org/apache/sis/io/wkt/Formatter.java | 52 ++-
.../apache/sis/io/wkt/GeodeticObjectParser.java | 17 +-
.../main/org/apache/sis/io/wkt/WKTFormat.java | 2 +-
.../main/org/apache/sis/referencing/CommonCRS.java | 26 +-
.../sis/referencing/GeodesicsOnEllipsoid.java | 4 +-
.../apache/sis/referencing/GeodeticCalculator.java | 48 +--
.../sis/referencing/crs/DefaultTemporalCRS.java | 19 +-
.../sis/referencing/datum/BursaWolfParameters.java | 16 +-
.../referencing/datum/DefaultGeodeticDatum.java | 10 +-
.../referencing/datum/DefaultTemporalDatum.java | 77 ++--
.../sis/referencing/datum/TimeDependentBWP.java | 42 ++-
.../factory/ConcurrentAuthorityFactory.java | 6 +-
.../factory/MultiAuthoritiesFactory.java | 2 +
.../sis/referencing/factory/ReferenceKeeper.java | 4 +-
.../referencing/factory/sql/EPSGDataAccess.java | 23 +-
.../sis/referencing/factory/sql/EPSGInstaller.java | 4 +-
.../org/apache/sis/referencing/internal/Epoch.java | 4 +-
.../operation/CoordinateOperationFinder.java | 39 +-
.../sis/referencing/privy/ExtentSelector.java | 23 +-
.../org/apache/sis/referencing/privy/Formulas.java | 9 -
.../referencing/privy/GeodeticObjectBuilder.java | 11 +-
.../sis/referencing/privy/TemporalAccessor.java | 4 +-
.../test/org/apache/sis/io/wkt/ElementTest.java | 6 +-
.../sis/io/wkt/GeodeticObjectParserTest.java | 9 +-
.../org/apache/sis/referencing/CommonCRSTest.java | 30 +-
.../referencing/crs/DefaultTemporalCRSTest.java | 10 +-
.../referencing/datum/BursaWolfParametersTest.java | 5 +-
.../datum/DefaultTemporalDatumTest.java | 25 +-
.../sis/referencing/datum/HardCodedDatum.java | 8 +-
.../referencing/datum/TimeDependentBWPTest.java | 21 +-
.../factory/ConcurrentAuthorityFactoryTest.java | 2 +-
.../internal/ServicesForMetadataTest.java | 41 +--
.../operation/CoordinateOperationFinderTest.java | 3 +-
.../projection/MercatorMethodComparison.java | 2 +-
.../operation/projection/ProjectionBenchmark.java | 5 +-
.../sis/referencing/privy/ExtentSelectorTest.java | 10 +-
.../apache/sis/referencing/privy/FormulasTest.java | 8 -
.../apache/sis/test/integration/MetadataTest.java | 4 +-
.../apache/sis/storage/landsat/MetadataReader.java | 10 +-
.../sis/storage/geotiff/ImageFileDirectory.java | 2 +-
.../sis/storage/geotiff/reader/CRSBuilder.java | 1 +
.../apache/sis/storage/netcdf/MetadataReader.java | 12 +-
.../apache/sis/storage/netcdf/base/AxisType.java | 3 +-
.../apache/sis/storage/netcdf/base/CRSBuilder.java | 5 +-
.../apache/sis/storage/netcdf/base/Convention.java | 3 +-
.../apache/sis/storage/netcdf/base/Decoder.java | 25 +-
.../sis/storage/netcdf/base/GridMapping.java | 7 +-
.../org/apache/sis/storage/netcdf/base/HYCOM.java | 8 +-
.../apache/sis/storage/netcdf/base/Variable.java | 3 +-
.../sis/storage/netcdf/classic/ChannelDecoder.java | 40 +-
.../sis/storage/netcdf/ucar/DecoderWrapper.java | 13 +-
.../sis/storage/netcdf/base/DecoderTest.java | 21 +-
.../apache/sis/storage/netcdf/base/TestCase.java | 12 +-
.../sis/storage/sql/feature/ValueGetter.java | 10 +-
.../sis/storage/xml/stream/StaxStreamReader.java | 2 +-
.../sis/storage/AbstractGridCoverageResource.java | 4 +-
.../org/apache/sis/storage/base/LegalSymbols.java | 2 +-
.../apache/sis/storage/base/MetadataBuilder.java | 39 +-
.../main/org/apache/sis/storage/csv/Store.java | 7 +-
.../org/apache/sis/storage/csv/TimeEncoding.java | 27 +-
.../sis/storage/test/CoverageReadConsistency.java | 4 +-
.../main/org/apache/sis/io/CompoundFormat.java | 2 +-
.../main/org/apache/sis/measure/RangeFormat.java | 6 +-
.../org/apache/sis/measure/UnitNames.properties | 1 +
.../org/apache/sis/measure/UnitNames_fr.properties | 1 +
.../main/org/apache/sis/measure/Units.java | 50 ++-
.../main/org/apache/sis/pending/jdk/JDK23.java | 47 +++
.../main/org/apache/sis/setup/About.java | 2 +-
.../apache/sis/util/logging/MonolineFormatter.java | 2 +-
.../main/org/apache/sis/util/privy/Constants.java | 48 +++
.../org/apache/sis/util/privy/DoubleDouble.java | 11 +
.../apache/sis/util/privy/StandardDateFormat.java | 120 +-----
.../org/apache/sis/util/privy/TemporalDate.java | 236 ++++++++++++
.../main/org/apache/sis/util/resources/Errors.java | 408 ++++++++++-----------
.../org/apache/sis/measure/RangeFormatTest.java | 2 +-
.../org/apache/sis/measure/UnitFormatTest.java | 1 +
.../test/org/apache/sis/test/TestUtilities.java | 15 +-
.../org/apache/sis/util/collection/CacheTest.java | 4 +-
.../apache/sis/util/collection/RangeSetTest.java | 4 +-
.../org/apache/sis/util/privy/ConstantsTest.java | 51 +++
.../sis/util/privy/StandardDateFormatTest.java | 18 +-
.../main/org/apache/sis/gui/map/MapCanvas.java | 2 +-
.../sis/gui/metadata/IdentificationInfo.java | 9 +-
.../apache/sis/gui/referencing/AuthorityCodes.java | 6 +-
117 files changed, 1635 insertions(+), 1042 deletions(-)
diff --cc endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/PeriodLiteral.java
index 3c5b646d5b,b52d8494e7..faa3eb8cf3
--- a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/PeriodLiteral.java
+++ b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/PeriodLiteral.java
@@@ -19,14 -19,18 +19,10 @@@ package org.apache.sis.filter
import java.time.Instant;
import java.io.Serializable;
- // Test dependencies
- import org.apache.sis.test.TestUtilities;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import java.time.temporal.TemporalAmount;
-import org.opengis.feature.Feature;
-import org.opengis.filter.Expression;
-import org.opengis.filter.Literal;
-import org.opengis.temporal.Period;
-import org.opengis.temporal.RelativePosition;
-import org.opengis.temporal.TemporalPrimitive;
-import org.opengis.temporal.TemporalGeometricPrimitive;
--
-// Specific to the geoapi-3.1 branch:
-import org.opengis.referencing.ReferenceIdentifier;
+// Specific to the main branch:
+import org.apache.sis.feature.AbstractFeature;
+import org.apache.sis.pending.geoapi.filter.Literal;
+import org.apache.sis.pending.geoapi.temporal.Period;
/**
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
index d5690b8aed,43024032b8..2d45a32079
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
@@@ -65,14 -70,14 +70,15 @@@ import org.apache.sis.util.Static
import org.apache.sis.util.iso.Types;
import org.apache.sis.util.resources.Vocabulary;
import org.apache.sis.util.resources.Errors;
- import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
+ import org.apache.sis.util.privy.TemporalDate;
import static org.apache.sis.util.privy.CollectionsExt.nonNull;
+ import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
import static org.apache.sis.metadata.privy.ReferencingServices.AUTHALIC_RADIUS;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.datum.RealizationMethod;
-import org.opengis.coordinate.MismatchedCoordinateMetadataException;
+// Specific to the main branch:
+import org.opengis.metadata.identification.DataIdentification;
+import org.opengis.referencing.datum.VerticalDatumType;
+import org.apache.sis.pending.geoapi.evolution.Interim;
/**
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
index 2cec5bf660,889d8a7229..2d813be6dc
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
@@@ -305,7 -291,8 +306,8 @@@ public class DefaultMaintenanceInformat
}
}
if (newValue != null) {
- final CitationDate date = new DefaultCitationDate(newValue, NEXT_UPDATE);
+ @SuppressWarnings("removal")
- final var date = new DefaultCitationDate(newValue, DateType.NEXT_UPDATE);
++ final var date = new DefaultCitationDate(newValue, NEXT_UPDATE);
if (dates != null) {
dates.add(date);
} else {
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/pending/temporal/TemporalUtilities.java
index c83c97fd8a,591aee1ba7..aaa0a1b921
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/pending/temporal/TemporalUtilities.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/pending/temporal/TemporalUtilities.java
@@@ -18,10 -18,13 +18,13 @@@ package org.apache.sis.pending.temporal
import java.util.Date;
import java.time.Instant;
+ import java.time.ZoneOffset;
+ import java.time.temporal.Temporal;
import org.opengis.temporal.TemporalPrimitive;
+ import org.apache.sis.util.privy.TemporalDate;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.temporal.Period;
+// Specific to the main branch:
+import org.apache.sis.pending.geoapi.temporal.Period;
/**
diff --cc endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/AbstractLocation.java
index ac8490e7f7,7f225d0bc6..59a73d204c
--- a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/AbstractLocation.java
+++ b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/AbstractLocation.java
@@@ -196,7 -189,8 +196,7 @@@ public abstract class AbstractLocation
*
* @return coordinates of a representative point for the location instance, or {@code null} if none.
*/
- public Position getPosition() {
- @Override
+ public DirectPosition getPosition() {
final Envelope envelope = getEnvelope();
if (envelope == null) {
return null;
diff --cc endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java
index 758af9a609,596fce1e66..e22fd2318f
--- a/endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java
+++ b/endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java
@@@ -249,10 -253,10 +249,10 @@@ public final class GeohashReferenceSyst
*/
private void testDecode(final GeohashReferenceSystem.Coder coder, final int λi, final int φi) throws TransformException {
for (final Place place : PLACES) {
- final Location location = coder.decode(place.geohash);
+ final AbstractLocation location = coder.decode(place.geohash);
- final DirectPosition result = location.getPosition().getDirectPosition();
+ final DirectPosition result = location.getPosition();
- assertEquals(place.longitude, result.getCoordinate(λi), TOLERANCE, place.name);
- assertEquals(place.latitude, result.getCoordinate(φi), TOLERANCE, place.name);
+ assertEquals(place.longitude, result.getOrdinate(λi), TOLERANCE, place.name);
+ assertEquals(place.latitude, result.getOrdinate(φi), TOLERANCE, place.name);
}
}
diff --cc endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java
index 236099957d,03a81be028..50b3000681
--- a/endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java
+++ b/endorsed/src/org.apache.sis.referencing.gazetteer/test/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java
@@@ -212,9 -216,9 +212,9 @@@ public final class MilitaryGridReferenc
private static DirectPosition decode(final MilitaryGridReferenceSystem.Coder coder, final String reference)
throws TransformException
{
- final Location loc = coder.decode(reference);
+ final AbstractLocation loc = coder.decode(reference);
final Envelope2D envelope = new Envelope2D(loc.getEnvelope());
- final DirectPosition2D pos = new DirectPosition2D(loc.getPosition().getDirectPosition());
+ final DirectPosition2D pos = new DirectPosition2D(loc.getPosition());
assertTrue(envelope.contains(pos), reference);
return pos;
}
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Formatter.java
index 55c7bffe29,b4205a4604..949957acd5
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Formatter.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Formatter.java
@@@ -1569,11 -1592,15 +1594,12 @@@ public class Formatter implements Local
} else {
append(number.doubleValue());
}
- } else if (value instanceof ControlledVocabulary) {
- append((ControlledVocabulary) value);
- } else if (value instanceof Date) {
- append((Date) value);
- } else if (value instanceof Temporal) {
- append((Temporal) value);
- } else if (value instanceof Boolean) {
- append((Boolean) value);
- } else if (value instanceof CharSequence) {
+ }
+ else if (value instanceof CodeList<?>) append((CodeList<?>) value);
+ else if (value instanceof Date) append((Date) value);
++ else if (value instanceof Temporal) append((Temporal) value);
+ else if (value instanceof Boolean) append((Boolean) value);
+ else if (value instanceof CharSequence) {
append((value instanceof InternationalString) ?
((InternationalString) value).toString(locale) : value.toString(), null);
} else if (value.getClass().isArray()) {
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
index ddd4ca6e36,dc6a74fc02..30ab63bb88
--- 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
@@@ -87,10 -87,8 +87,11 @@@ import org.apache.sis.util.iso.Types
// 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;
+// Specific to the main branch:
+import org.opengis.referencing.ReferenceSystem;
++import org.apache.sis.util.privy.TemporalDate;
+import org.apache.sis.referencing.internal.ServicesForMetadata;
+import org.apache.sis.referencing.factory.GeodeticObjectFactory;
/**
@@@ -1499,7 -1484,7 +1500,7 @@@ class GeodeticObjectParser extends Math
origin.close(ignoredElements);
final DatumFactory datumFactory = factories.getDatumFactory();
try {
-- return datumFactory.createTemporalDatum(parseAnchorAndClose(element, name), epoch);
++ return datumFactory.createTemporalDatum(parseAnchorAndClose(element, name), TemporalDate.toDate(epoch));
} catch (FactoryException exception) {
throw element.parseFailed(exception);
}
@@@ -2056,9 -2044,10 +2057,9 @@@
* A ParametricCRS can be either a "normal" one (with a non-null datum), or a DerivedCRS of kind ParametricCRS.
* In the latter case, the datum is null and we have instead DerivingConversion element from a BaseParametricCRS.
*/
- Datum datum = null;
- SingleCRS baseCRS = null;
- Conversion fromBase = null;
- ParametricDatum datum = null;
- DatumEnsemble<ParametricDatum> datumEnsemble = null; // TODO
++ Datum datum = null;
+ SingleCRS baseCRS = null;
+ Conversion fromBase = null;
if (!isBaseCRS) {
/*
* UNIT[…] in DerivedCRS parameters are mandatory according ISO 19162 and the specification does not said
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CommonCRS.java
index 45db156e13,f9f1937210..62c37c6d07
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CommonCRS.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CommonCRS.java
@@@ -84,11 -84,10 +84,11 @@@ import org.apache.sis.util.logging.Logg
import org.apache.sis.math.MathFunctions;
import org.apache.sis.measure.Latitude;
import org.apache.sis.measure.Units;
- import static org.apache.sis.util.privy.StandardDateFormat.MILLISECONDS_PER_DAY;
+ import static org.apache.sis.util.privy.Constants.SECONDS_PER_DAY;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.datum.RealizationMethod;
+// Specific to the main branch:
+import org.opengis.referencing.crs.GeocentricCRS;
+import org.opengis.referencing.datum.VerticalDatumType;
/**
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
index f7aade22ba,cc44c7ebb9..5f958725ce
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
@@@ -34,9 -34,12 +34,12 @@@ import org.apache.sis.util.ComparisonMo
import org.apache.sis.io.wkt.Formatter;
import org.apache.sis.io.wkt.FormattableObject;
+// Specific to the main branch:
+import org.opengis.referencing.ReferenceIdentifier;
+
+ // Specific to the main and geoapi-3.1 branches:
+ import org.apache.sis.util.privy.TemporalDate;
+
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.metadata.Identifier;
-
/**
* Defines the origin of a temporal coordinate reference system.
@@@ -143,12 -150,12 +150,27 @@@ public class DefaultTemporalDatum exten
* @param origin the date and time origin of this temporal datum.
*
* @see org.apache.sis.referencing.factory.GeodeticObjectFactory#createTemporalDatum(Map, Date)
++ *
++ * @since 1.5
*/
- public DefaultTemporalDatum(final Map<String,?> properties, final Date origin) {
+ public DefaultTemporalDatum(final Map<String,?> properties, final Temporal origin) {
super(properties);
- this.origin = origin.getTime();
+ this.origin = origin;
+ }
+
++ /**
++ * Creates a temporal datum from the given properties.
++ *
++ * @param properties the properties to be given to the identified object.
++ * @param origin the date and time origin of this temporal datum.
++ *
++ * @deprecated Use {@link #DefaultTemporalDatum(Map, Temporal)} instead.
++ */
++ @Deprecated(since="1.5")
++ public DefaultTemporalDatum(final Map<String,?> properties, final Date origin) {
++ this(properties, TemporalDate.toTemporal(origin));
+ }
+
/**
* Creates a new datum with the same values as the specified one.
* This copy constructor provides a way to convert an arbitrary implementation into a SIS one
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
index 8cd976b798,d0ca972b72..e64088be40
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
@@@ -118,15 -117,13 +117,16 @@@ import org.apache.sis.measure.Measureme
import org.apache.sis.measure.NumberRange;
import org.apache.sis.measure.Units;
import org.apache.sis.pending.jdk.JDK16;
+ import static org.apache.sis.util.privy.Constants.UTC;
import static org.apache.sis.util.Utilities.equalsIgnoreMetadata;
- import static org.apache.sis.util.privy.StandardDateFormat.UTC;
import static org.apache.sis.referencing.internal.ServicesForMetadata.CONNECTION;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.metadata.Identifier;
-import org.opengis.referencing.ObjectDomain;
+// Specific to the main branch:
++import org.apache.sis.util.privy.TemporalDate;
+import org.apache.sis.referencing.internal.ServicesForMetadata;
+import org.apache.sis.referencing.cs.DefaultParametricCS;
+import org.apache.sis.referencing.datum.DefaultParametricDatum;
+import org.apache.sis.referencing.factory.GeodeticObjectFactory;
/**
@@@ -1726,15 -1720,12 +1720,12 @@@ codes: for (int i=0; i<codes.length; i
if (Strings.isNullOrEmpty(anchor)) {
throw new FactoryDataException(resources().getString(Resources.Keys.DatumOriginShallBeDate));
}
- if (dateFormat == null) {
- dateFormat = new StandardDateFormat(); // Default to UTC timezone.
- }
try {
- originDate = dateFormat.parse(anchor);
- } catch (ParseException e) {
+ originDate = StandardDateFormat.parseBest(anchor);
+ } catch (RuntimeException e) {
throw new FactoryDataException(resources().getString(Resources.Keys.DatumOriginShallBeDate), e);
}
-- datum = datumFactory.createTemporalDatum(properties, originDate);
++ datum = datumFactory.createTemporalDatum(properties, TemporalDate.toDate(originDate));
break;
}
/*
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/GeodeticObjectBuilder.java
index 020b7dfaa2,778b40195b..42c5ae51e6
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/GeodeticObjectBuilder.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/GeodeticObjectBuilder.java
@@@ -61,6 -61,9 +61,9 @@@ import org.apache.sis.referencing.cs.Ax
import org.apache.sis.referencing.internal.Resources;
import org.apache.sis.parameter.Parameters;
-// 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.util.privy.TemporalDate;
+
/**
* Helper methods for building Coordinate Reference Systems and related objects.
@@@ -582,7 -585,7 +585,7 @@@ public class GeodeticObjectBuilder exte
if (datum == null) {
final Object remarks = properties.remove(TemporalCRS.REMARKS_KEY);
final Object identifier = properties.remove(TemporalCRS.IDENTIFIERS_KEY);
-- datum = factories.getDatumFactory().createTemporalDatum(properties, origin);
++ datum = factories.getDatumFactory().createTemporalDatum(properties, TemporalDate.toDate(origin));
properties.put(TemporalCRS.IDENTIFIERS_KEY, identifier);
properties.put(TemporalCRS.REMARKS_KEY, remarks);
properties.put(TemporalCRS.NAME_KEY, datum.getName()); // Share the Identifier instance.
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/CommonCRSTest.java
index 14faed48b6,d2a66ce416..a4d9837cf6
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/CommonCRSTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/CommonCRSTest.java
@@@ -46,10 -49,12 +49,12 @@@ import org.apache.sis.test.TestCase
import static org.apache.sis.test.Assertions.assertEqualsIgnoreMetadata;
import static org.apache.sis.test.Assertions.assertMessageContains;
import static org.apache.sis.test.TestUtilities.*;
+ import static org.apache.sis.util.privy.Constants.UTC;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.datum.RealizationMethod;
-import static org.opengis.test.Assertions.assertAxisDirectionsEqual;
+// Specific to the main branch:
+import org.opengis.referencing.datum.VerticalDatumType;
+ import org.apache.sis.util.privy.TemporalDate;
+import static org.apache.sis.test.GeoapiAssert.assertAxisDirectionsEqual;
/**
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
index fbf6feebb5,58b4981490..0adab084ed
--- 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
@@@ -34,10 -34,14 +34,13 @@@ import static org.apache.sis.referencin
import static org.apache.sis.test.TestUtilities.getSingleton;
import static org.apache.sis.test.TestUtilities.getScope;
+// Specific to the main branch:
+import static org.opengis.referencing.ReferenceSystem.*;
+import static org.apache.sis.test.GeoapiAssert.assertIdentifierEquals;
+
+ // Specific to the main and geoapi-3.1 branches:
+ import org.apache.sis.util.privy.TemporalDate;
+
-// 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;
-
/**
* Tests the {@link DefaultTemporalDatum} class.
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/TimeDependentBWPTest.java
index 471c5fbc69,662d94215c..9aca8652fd
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/TimeDependentBWPTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/TimeDependentBWPTest.java
@@@ -27,10 -29,9 +29,9 @@@ import static org.apache.sis.util.privy
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.apache.sis.test.TestCase;
- import static org.apache.sis.test.TestUtilities.date;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import static org.opengis.test.Assertions.assertMatrixEquals;
+// Specific to the main branch:
+import static org.apache.sis.test.GeoapiAssert.assertMatrixEquals;
/**
diff --cc endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/CRSBuilder.java
index 24a489a0fa,c508fd5bee..2f2a65fbe5
--- a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/CRSBuilder.java
+++ b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/CRSBuilder.java
@@@ -1141,7 -1141,8 +1141,8 @@@ public final class CRSBuilder extends R
if (!Units.METRE.equals(linearUnit)) {
cs = replaceLinearUnit(cs, linearUnit);
}
+ // TODO: datum should be DatumEnsemble for some case such as EPSG:4326.
- final GeodeticCRS crs = getCRSFactory().createGeodeticCRS(properties(getOrDefault(names, GCRS)), datum, null, cs);
+ final GeodeticCRS crs = getCRSFactory().createGeocentricCRS(properties(getOrDefault(names, GCRS)), datum, cs);
lastName = crs.getName();
return crs;
}
diff --cc endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
index 843266b131,e8cdfc64e5..1e280ae0a4
--- a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
+++ b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
@@@ -60,8 -59,8 +59,9 @@@ import org.apache.sis.util.resources.Er
import org.apache.sis.measure.NumberRange;
import org.apache.sis.measure.Units;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.referencing.operation.CoordinateOperationFactory;
+// Specific to the main branch:
++import org.apache.sis.util.privy.TemporalDate;
+import org.apache.sis.referencing.factory.GeodeticObjectFactory;
/**
@@@ -968,7 -973,7 +969,7 @@@ previous: for (int i=components.size(
datum = c.datum();
} else {
properties = properties("Time since " + epoch);
- datum = factory.createTemporalDatum(properties, Date.from(epoch));
- datum = factory.createTemporalDatum(properties, epoch);
++ datum = factory.createTemporalDatum(properties, TemporalDate.toDate(epoch));
}
}
}
diff --cc endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DecoderTest.java
index fb88162814,607ef179a5..cc731299b6
--- a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DecoderTest.java
+++ b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DecoderTest.java
@@@ -24,8 -24,10 +24,7 @@@ import static org.apache.sis.storage.ne
// Test dependencies
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
- import static org.apache.sis.test.TestUtilities.date;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.test.dataset.TestData;
-
/**
* Tests the {@link Decoder} implementation. The default implementation tests
diff --cc endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/TestCase.java
index 892938ee66,8a251001bd..d5ae778b65
--- a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/TestCase.java
+++ b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/TestCase.java
@@@ -39,7 -40,11 +40,8 @@@ import org.junit.jupiter.api.TestInstan
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
+ import org.apache.sis.storage.DataStoreMock;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.test.dataset.TestData;
-
/**
* Base class of netCDF tests. The base class uses the UCAR decoder, which is taken as a reference implementation.
diff --cc optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
index 28491f1b81,92b01353e6..fce63c7307
--- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
+++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
@@@ -89,10 -89,10 +89,10 @@@ import org.apache.sis.portrayal.PlanarC
import org.apache.sis.portrayal.RenderException;
import org.apache.sis.portrayal.TransformChangeEvent;
import static org.apache.sis.gui.internal.LogHandler.LOGGER;
- import static org.apache.sis.util.privy.StandardDateFormat.NANOS_PER_MILLISECOND;
+ import static org.apache.sis.util.privy.Constants.NANOS_PER_MILLISECOND;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.coordinate.MismatchedDimensionException;
+// Specific to the main branch:
+import org.opengis.geometry.MismatchedDimensionException;
/**
diff --cc optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
index e5617a1c59,855e981b4e..7a32422577
--- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
+++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
@@@ -362,9 -365,9 +363,9 @@@ final class IdentificationInfo extends
*/
text = null;
Identifier identifier = null;
- Range<Date> timeRange = null;
+ Range<Instant> timeRange = null;
Range<Double> heights = null;
- for (final Extent extent : nonNull(info.getExtents())) {
+ for (final Extent extent : nonNull(dataInfo != null ? dataInfo.getExtents() : null)) {
if (extent != null) {
if (text == null) {
text = owner.string(extent.getDescription());