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 <martin.desruisse...@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());


Reply via email to