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 16:46:04 UTC
(sis) branch geoapi-3.1 updated (5dab0950ea -> 269d8e9759)
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a change to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git
from 5dab0950ea Merge branch 'geoapi-4.0' into geoapi-3.1
add ec217ec278 Updates for changes in GeoAPI 4 development branch. The largest change is the replacement of `java.util.Date` by `java.time.temporal.Temporal` in the `TemporalDatum.origin` property. That change has large impact in the whole code base, because of cascading changes in WKT, GML, ISO 19115 metadata, data stores, etc. Other changes are removal of `org.opengis.geometry.coordinate.Position` interface (not anymore part of the ISO 19107:2019 standard) and addition of `DatumEns [...]
add 76bddb705e Introduce a `java.util.Date` subclass as a wrapper around a `Temporal` for situation where we have to mix legacy date API with new time API. Opportunistically move time constants to the `Constants` class.
new 269d8e9759 Merge branch 'geoapi-4.0' into 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:
.../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 +-
.../apache/sis/pending/temporal/DefaultPeriod.java | 4 +-
.../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} | 43 +--
.../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 | 13 +-
.../gazetteer/GeohashReferenceSystemTest.java | 2 +-
.../gazetteer/MilitaryGridReferenceSystemTest.java | 2 +-
.../sis/geometry/AbstractDirectPosition.java | 10 -
.../org/apache/sis/geometry/CoordinateFormat.java | 20 +-
.../org/apache/sis/geometry/DirectPosition2D.java | 10 -
.../main/org/apache/sis/io/wkt/Element.java | 5 +-
.../main/org/apache/sis/io/wkt/Formatter.java | 53 ++-
.../apache/sis/io/wkt/GeodeticObjectParser.java | 24 +-
.../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 | 62 ++--
.../sis/referencing/datum/TimeDependentBWP.java | 42 ++-
.../factory/ConcurrentAuthorityFactory.java | 6 +-
.../referencing/factory/GeodeticObjectFactory.java | 94 +++--
.../factory/MultiAuthoritiesFactory.java | 4 +-
.../sis/referencing/factory/ReferenceKeeper.java | 4 +-
.../referencing/factory/sql/EPSGDataAccess.java | 28 +-
.../sis/referencing/factory/sql/EPSGInstaller.java | 4 +-
.../org/apache/sis/referencing/internal/Epoch.java | 4 +-
.../operation/CoordinateOperationFinder.java | 39 +-
.../operation/builder/LinearTransformBuilder.java | 24 +-
.../sis/referencing/privy/ExtentSelector.java | 23 +-
.../org/apache/sis/referencing/privy/Formulas.java | 9 -
.../referencing/privy/GeodeticObjectBuilder.java | 6 +-
.../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 | 3 +-
.../apache/sis/storage/netcdf/MetadataReader.java | 12 +-
.../apache/sis/storage/netcdf/base/AxisType.java | 3 +-
.../apache/sis/storage/netcdf/base/CRSBuilder.java | 12 +-
.../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 ++-
.../sis/pending/jdk/{JDK17.java => JDK23.java} | 20 +-
.../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} | 27 +-
.../sis/util/privy/StandardDateFormatTest.java | 18 +-
geoapi/snapshot | 2 +-
.../main/org/apache/sis/gui/map/MapCanvas.java | 2 +-
.../sis/gui/metadata/IdentificationInfo.java | 9 +-
.../apache/sis/gui/referencing/AuthorityCodes.java | 6 +-
123 files changed, 1595 insertions(+), 1173 deletions(-)
create mode 100644 endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/gml/TemporalAdapter.java
copy endorsed/src/{org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/UnitConversionTest.java => org.apache.sis.metadata/test/org/apache/sis/metadata/iso/extent/DefaultTemporalExtentTest.java} (52%)
copy endorsed/src/org.apache.sis.util/main/org/apache/sis/pending/jdk/{JDK17.java => JDK23.java} (63%)
create mode 100644 endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/TemporalDate.java
copy endorsed/src/{org.apache.sis.metadata/test/org/apache/sis/metadata/iso/quality/DefaultDomainConsistencyTest.java => org.apache.sis.util/test/org/apache/sis/util/privy/ConstantsTest.java} (56%)
(sis) 01/01: Merge branch 'geoapi-4.0' into 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 geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git
commit 269d8e975979799762d278031fd422db4ddd971e
Merge: 5dab0950ea 76bddb705e
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri May 24 18:45:47 2024 +0200
Merge branch 'geoapi-4.0' into geoapi-3.1
.../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 +-
.../apache/sis/pending/temporal/DefaultPeriod.java | 4 +-
.../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 | 13 +-
.../gazetteer/GeohashReferenceSystemTest.java | 2 +-
.../gazetteer/MilitaryGridReferenceSystemTest.java | 2 +-
.../sis/geometry/AbstractDirectPosition.java | 10 -
.../org/apache/sis/geometry/CoordinateFormat.java | 20 +-
.../org/apache/sis/geometry/DirectPosition2D.java | 10 -
.../main/org/apache/sis/io/wkt/Element.java | 5 +-
.../main/org/apache/sis/io/wkt/Formatter.java | 53 ++-
.../apache/sis/io/wkt/GeodeticObjectParser.java | 24 +-
.../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 | 62 ++--
.../sis/referencing/datum/TimeDependentBWP.java | 42 ++-
.../factory/ConcurrentAuthorityFactory.java | 6 +-
.../referencing/factory/GeodeticObjectFactory.java | 94 +++--
.../factory/MultiAuthoritiesFactory.java | 4 +-
.../sis/referencing/factory/ReferenceKeeper.java | 4 +-
.../referencing/factory/sql/EPSGDataAccess.java | 28 +-
.../sis/referencing/factory/sql/EPSGInstaller.java | 4 +-
.../org/apache/sis/referencing/internal/Epoch.java | 4 +-
.../operation/CoordinateOperationFinder.java | 39 +-
.../operation/builder/LinearTransformBuilder.java | 24 +-
.../sis/referencing/privy/ExtentSelector.java | 23 +-
.../org/apache/sis/referencing/privy/Formulas.java | 9 -
.../referencing/privy/GeodeticObjectBuilder.java | 6 +-
.../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 | 3 +-
.../apache/sis/storage/netcdf/MetadataReader.java | 12 +-
.../apache/sis/storage/netcdf/base/AxisType.java | 3 +-
.../apache/sis/storage/netcdf/base/CRSBuilder.java | 12 +-
.../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 +-
geoapi/snapshot | 2 +-
.../main/org/apache/sis/gui/map/MapCanvas.java | 2 +-
.../sis/gui/metadata/IdentificationInfo.java | 9 +-
.../apache/sis/gui/referencing/AuthorityCodes.java | 6 +-
123 files changed, 1708 insertions(+), 1127 deletions(-)
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
index c2cf029dfc,05df948518..a91ec949e4
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
@@@ -34,14 -34,11 +34,14 @@@ import org.apache.sis.metadata.TitlePro
import org.apache.sis.metadata.iso.ISOMetadata;
import org.apache.sis.util.iso.Types;
import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.privy.LegacyNamespaces;
import org.apache.sis.xml.bind.gml.TM_Primitive;
import org.apache.sis.xml.bind.metadata.MD_Scope;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
import org.apache.sis.pending.temporal.TemporalUtilities;
+// Specific to the main and geoapi-3.1 branches:
+import org.opengis.metadata.citation.ResponsibleParty;
+
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
import org.opengis.metadata.maintenance.Scope;
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/pending/temporal/TemporalUtilities.java
index 9dbd8518ad,baedbaaaed..591aee1ba7
--- 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
@@@ -37,32 -40,39 +40,49 @@@ public final class TemporalUtilities
private TemporalUtilities() {
}
+ /**
+ * Creates an instant for the given date.
+ *
+ * @param time the date for which to create instant, or {@code null}.
+ * @return the instant, or {@code null} if the given time was null.
- * @throws UnsupportedOperationException if the temporal factory is not available on the module path.
+ */
- public static TemporalPrimitive createInstant(final Date time) throws UnsupportedOperationException {
- if (time == null) return null;
- final Instant t = time.toInstant();
- return new DefaultPeriod(t, t);
++ public static TemporalPrimitive createInstant(final Date time) {
++ return (time == null) ? null : createInstant(time.toInstant());
+ }
+
/**
- * Creates a period for the given begin and end dates.
+ * Creates an instant for the given Java temporal instant.
*
- * @param begin the begin date (inclusive), or {@code null}.
- * @param end the end date (inclusive), or {@code null}.
+ * @param time the date for which to create instant, or {@code null}.
+ * @return the instant, or {@code null} if the given time was null.
+ */
+ public static TemporalPrimitive createInstant(final Instant time) {
+ return (time == null) ? null : new DefaultPeriod(time, time);
+ }
+
+ /**
+ * Creates a period for the given begin and end instant.
+ *
+ * @param begin the begin instant (inclusive), or {@code null}.
+ * @param end the end instant (inclusive), or {@code null}.
* @return the period, or {@code null} if both arguments are null.
- * @throws UnsupportedOperationException if the temporal factory is not available on the module path.
*/
- public static TemporalPrimitive createPeriod(final Date begin, final Date end) throws UnsupportedOperationException {
- if (begin == null && end == null) return null;
- return new DefaultPeriod(
- (begin != null) ? begin.toInstant() : null,
- (end != null) ? end.toInstant() : null);
+ public static TemporalPrimitive createPeriod(final Instant begin, final Instant end) {
+ return (begin == null && end == null) ? null : new DefaultPeriod(begin, end);
+ }
+
+ /**
+ * Creates a period for the given begin and end instant.
+ *
+ * @param begin the begin instant (inclusive), or {@code null}.
+ * @param end the end instant (inclusive), or {@code null}.
+ * @return the period, or {@code null} if both arguments are null.
+ *
+ * @todo Needs to avoid assuming UTC timezone.
+ */
+ public static TemporalPrimitive createPeriod(final Temporal begin, final Temporal end) {
+ return createPeriod(TemporalDate.toInstant(begin, ZoneOffset.UTC),
+ TemporalDate.toInstant(end, ZoneOffset.UTC));
}
/**
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java
index 113ee12fe3,efc89b49e2..8b353f26fa
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java
@@@ -575,8 -580,8 +580,8 @@@ public class CoordinateFormat extends C
}
types [i] = DATE;
formats[i] = getFormat(Date.class);
- epochs [i] = ((TemporalCRS) t).getDatum().getOrigin().getTime();
- setConverter(dimension, i, unit.asType(Time.class).getConverterTo(Units.MILLISECOND));
- epochs [i] = TemporalDate.toInstant(((TemporalCRS) t).getDatum().getOrigin(), null);
++ epochs [i] = TemporalDate.toInstant(((TemporalCRS) t).getDatum().getOrigin());
+ setConverter(dimension, i, unit.asType(Time.class).getConverterTo(Units.SECOND));
if (direction == AxisDirection.PAST) {
negate(i);
}
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
index 3644a65a34,0c3a5579d9..5381ff13e1
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
@@@ -40,9 -42,9 +42,12 @@@ import org.apache.sis.metadata.privy.Im
import org.apache.sis.io.wkt.Formatter;
import org.apache.sis.measure.Units;
import org.apache.sis.math.Fraction;
- import static org.apache.sis.util.privy.StandardDateFormat.NANOS_PER_SECOND;
- import static org.apache.sis.util.privy.StandardDateFormat.MILLIS_PER_SECOND;
+ import static org.apache.sis.util.privy.Constants.NANOS_PER_SECOND;
+ import static org.apache.sis.util.privy.Constants.MILLIS_PER_SECOND;
+
++// Specific to the main and geoapi-3.1 branches:
++import org.apache.sis.util.privy.TemporalDate;
+
/**
* A 1-dimensional coordinate reference system used for the recording of time.
@@@ -223,10 -225,10 +228,10 @@@ public class DefaultTemporalCRS extend
*/
private void initializeConverter() {
toSeconds = getUnit().getConverterTo(Units.SECOND);
- long t = datum.getOrigin().getTime();
- origin = t / MILLIS_PER_SECOND;
- t %= MILLIS_PER_SECOND;
- if (t != 0) {
- final Temporal t = datum.getOrigin();
++ final Temporal t = TemporalDate.toTemporal(datum.getOrigin());
+ origin = t.getLong(ChronoField.INSTANT_SECONDS);
+ int r = t.get(ChronoField.NANO_OF_SECOND);
+ if (r != 0) {
/*
* The origin is usually an integer number of days or hours. It rarely has a fractional number of seconds.
* If it happens anyway, put the fractional number of seconds in the converter instead of adding another
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
index cb7a8d5e53,51ebb99c78..cc44c7ebb9
--- 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,6 -34,6 +34,9 @@@ import org.apache.sis.util.ComparisonMo
import org.apache.sis.io.wkt.Formatter;
import org.apache.sis.io.wkt.FormattableObject;
++// 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;
@@@ -162,7 -166,7 +169,7 @@@ public class DefaultTemporalDatum exten
*/
protected DefaultTemporalDatum(final TemporalDatum datum) {
super(datum);
- origin = ImplementationHelper.toMilliseconds(datum.getOrigin());
- origin = datum.getOrigin();
++ origin = TemporalDate.toTemporal(datum.getOrigin());
}
/**
@@@ -202,11 -206,8 +209,8 @@@
* @return the date and time origin of this temporal datum.
*/
@Override
- @XmlSchemaType(name = "dateTime")
- @XmlElement(name = "origin", required = true)
- @XmlJavaTypeAdapter(UniversalTimeAdapter.class)
- public Temporal getOrigin() {
- return origin;
+ public Date getOrigin() {
- return ImplementationHelper.toDate(origin);
++ return TemporalDate.toDate(origin);
}
/**
@@@ -261,7 -262,7 +265,7 @@@
@Override
protected String formatTo(final Formatter formatter) {
super.formatTo(formatter);
-- formatter.append(new Origin(getOrigin()));
++ formatter.append(new Origin(TemporalDate.toTemporal(getOrigin())));
if (formatter.getConvention().majorVersion() == 1) {
formatter.setInvalidWKT(this, null);
}
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
index 82eeff00dc,39a7d78e28..92beac6368
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
@@@ -69,6 -70,6 +70,9 @@@ import org.apache.sis.util.privy.Double
import org.apache.sis.util.resources.Vocabulary;
import static org.apache.sis.util.Utilities.equalsIgnoreMetadata;
++// Specific to the main and geoapi-3.1 branches:
++import org.apache.sis.util.privy.TemporalDate;
++
/**
* Finds a conversion or transformation path from a source CRS to a target CRS.
@@@ -869,9 -866,8 +873,10 @@@ public class CoordinateOperationFinder
* This "epoch shift" is in units of `targetCRS`.
*/
final Unit<Time> targetUnit = targetCS.getAxis(0).getUnit().asType(Time.class);
- DoubleDouble epochShift = DoubleDouble.of(sourceDatum.getOrigin().getTime());
- epochShift = epochShift.subtract(targetDatum.getOrigin().getTime());
- epochShift = DoubleDouble.of(Units.MILLISECOND.getConverterTo(targetUnit).convert(epochShift), true);
- DoubleDouble epochShift = DoubleDouble.of(Duration.between(targetDatum.getOrigin(), sourceDatum.getOrigin()));
++ DoubleDouble epochShift = DoubleDouble.of(Duration.between(
++ TemporalDate.toTemporal(targetDatum.getOrigin()),
++ TemporalDate.toTemporal(sourceDatum.getOrigin())));
+ epochShift = DoubleDouble.of(Units.NANOSECOND.getConverterTo(targetUnit).convert(epochShift), true);
/*
* Check axis directions. The method `swapAndScaleAxes` should returns a matrix of size 2×2.
* The element at index (0,0) may be +1 if source and target axes are in the same direction,
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
index 3b3719cfcd,4610b54611..6356d054c5
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
@@@ -43,8 -43,8 +43,11 @@@ import org.apache.sis.referencing.facto
import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.referencing.operation.transform.LinearTransform;
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 main and geoapi-3.1 branches:
++import org.apache.sis.util.privy.TemporalDate;
+
// Test dependencies
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
@@@ -1065,7 -1065,7 +1068,7 @@@ public final class GeodeticObjectParser
final TemporalDatum timeDatum = timeCRS.getDatum();
assertNameAndIdentifierEqual("Time", 0, timeCRS);
assertNameAndIdentifierEqual("Modified Julian", 0, timeDatum);
- assertEquals(new Date(-40587L * MILLISECONDS_PER_DAY), timeDatum.getOrigin(), "epoch");
- assertEquals(Instant.ofEpochSecond(-40587L * SECONDS_PER_DAY), timeDatum.getOrigin(), "epoch");
++ assertEquals(Instant.ofEpochSecond(-40587L * SECONDS_PER_DAY), TemporalDate.toTemporal(timeDatum.getOrigin()), "epoch");
// No more CRS.
assertFalse(components.hasNext());
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/CommonCRSTest.java
index 206e67dc7d,712918bd4a..d2a66ce416
--- 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
@@@ -50,6 -54,6 +54,7 @@@ import static org.apache.sis.util.privy
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
import org.opengis.referencing.datum.RealizationMethod;
import static org.opengis.test.Assertions.assertAxisDirectionsEqual;
++import org.apache.sis.util.privy.TemporalDate;
/**
@@@ -255,8 -254,20 +255,20 @@@ public final class CommonCRSTest extend
*/
@Test
public void testTemporal() {
- final double julianEpoch = CommonCRS.Temporal.JULIAN.datum().getOrigin().getTime() / DAY_LENGTH;
- assertTrue(julianEpoch < 0);
- final var julianEpoch = (Instant) CommonCRS.Temporal.JULIAN.datum().getOrigin();
++ final var julianEpoch = TemporalDate.toInstant(CommonCRS.Temporal.JULIAN.datum().getOrigin());
+ final double SECONDS_PER_DAY = Constants.SECONDS_PER_DAY;
+ final double julianEpochSecond = julianEpoch.getEpochSecond() / SECONDS_PER_DAY;
+ assertTrue(julianEpochSecond < 0);
+ /*
+ * We need to use `java.text.DateFormat` rather than `Instant.parse(String)` because
+ * they have different policy regarding the calendar for dates before October 15, 1582.
+ * The `java.time` classes use the proleptic Gregorian calendar while `java.text` uses
+ * the prolectic Julian calendar. The latter is what we need for this test.
+ */
+ final var dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CANADA);
+ dateFormat.setTimeZone(TimeZone.getTimeZone(UTC));
+ dateFormat.setLenient(false);
+
for (final CommonCRS.Temporal e : CommonCRS.Temporal.values()) {
final String epoch;
final double days;
@@@ -277,8 -288,8 +289,8 @@@
Validators.validate(crs);
assertSame(datum, e.datum(), name); // Datum before CRS creation.
assertSame(crs.getDatum(), e.datum(), name); // Datum after CRS creation.
- assertEquals(epoch, format(origin), name);
- assertEquals(days, origin.getTime() / DAY_LENGTH - julianEpoch, name);
- assertEquals(epoch, dateFormat.format(Date.from(origin)), name);
- assertEquals(days, origin.getEpochSecond() / SECONDS_PER_DAY - julianEpochSecond, name);
++ assertEquals(epoch, dateFormat.format(origin), name);
++ assertEquals(days, origin.getTime() / (1000*SECONDS_PER_DAY) - julianEpochSecond, name);
switch (e) {
case JAVA: {
assertNameContains(datum, "Unix/POSIX");
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
index 80821b864b,443246a803..58b4981490
--- 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,6 -34,6 +34,9 @@@ 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 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.*;
@@@ -86,7 -88,7 +91,7 @@@ public final class DefaultTemporalDatum
*/
@Test
public void testConsistency() {
- assertEquals(HardCodedDatum.MODIFIED_JULIAN.getOrigin(), new Date(ORIGIN));
- assertEquals(HardCodedDatum.MODIFIED_JULIAN.getOrigin(), ORIGIN.toInstant());
++ assertEquals(TemporalDate.toTemporal(HardCodedDatum.MODIFIED_JULIAN.getOrigin()), ORIGIN.toInstant());
}
/**
@@@ -129,6 -131,6 +134,6 @@@
assertEquals("Modified Julian", datum.getName().getCode());
assertRemarksEquals("Time measured as days since November 17, 1858 at 00:00 UTC.", datum, null);
assertEquals("History.", getScope(datum));
- assertEquals(new Date(ORIGIN), datum.getOrigin());
- assertEquals(ORIGIN, datum.getOrigin());
++ assertEquals(ORIGIN, TemporalDate.toTemporal(datum.getOrigin()));
}
}
diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
index cfb5e1e085,3edb04e959..dedd0764fd
--- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
+++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
@@@ -16,10 -16,9 +16,10 @@@
*/
package org.apache.sis.referencing.datum;
- import java.util.Date;
import java.util.Map;
import java.util.HashMap;
+ import java.time.Instant;
+import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.referencing.NamedIdentifier;
import org.apache.sis.referencing.internal.VerticalDatumTypes;
import org.apache.sis.measure.Units;
diff --cc endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java
index 3ea5a57b36,570b35d2e2..b71b7cc956
--- a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java
+++ b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java
@@@ -27,10 -27,10 +27,10 @@@ import org.apache.sis.metadata.iso.cita
import org.apache.sis.metadata.iso.citation.DefaultCitation;
import org.apache.sis.metadata.iso.citation.DefaultCitationDate;
import org.apache.sis.metadata.iso.constraint.DefaultLegalConstraints;
- import static org.apache.sis.util.privy.StandardDateFormat.MILLISECONDS_PER_DAY;
+ import static org.apache.sis.util.privy.Constants.MILLISECONDS_PER_DAY;
-// Specific to the geoapi-4.0 branch:
-import org.apache.sis.metadata.iso.citation.DefaultResponsibility;
+// Specific to the main and geoapi-3.1 branches:
+import org.apache.sis.metadata.iso.citation.DefaultResponsibleParty;
/**
diff --cc endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/TimeEncoding.java
index 34580953fb,1571c6b88b..8fe13bc062
--- a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/TimeEncoding.java
+++ b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/TimeEncoding.java
@@@ -62,8 -64,8 +64,8 @@@ class TimeEncoding extends SurjectiveCo
* Creates a new time encoding.
*/
TimeEncoding(final TemporalDatum datum, final Unit<Time> unit) {
- this.origin = datum.getOrigin().getTime();
- this.interval = unit.getConverterTo(Units.MILLISECOND).convert(1);
- this.origin = TemporalDate.toInstant(datum.getOrigin(), null);
++ this.origin = TemporalDate.toInstant(datum.getOrigin());
+ this.interval = unit.getConverterTo(Units.SECOND).convert(1);
}
/**
diff --cc geoapi/snapshot
index 80d7264486,ccc41ee613..ed7e9f0463
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 80d72644860facda496cef21b132d13fec65c029
-Subproject commit ccc41ee613b7451366a796fada91c1f74f8f7168
++Subproject commit ed7e9f0463a9b5eb0f9181da5ca070d0b79375ac