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());