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/06/07 10:34:51 UTC
(sis) branch main updated (6e63051a6f -> d4690f7f41)
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/sis.git
from 6e63051a6f Merge branch 'geoapi-3.1'
add c6b08e544d More replacements of `java.util.Date` by `java.time` in metadata.
add 06e105fa45 Merge branch 'geoapi-4.0' into geoapi-3.1.
new d4690f7f41 Merge branch 'geoapi-3.1'.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../apache/sis/metadata/iso/DefaultMetadata.java | 32 ++++++--
.../sis/metadata/iso/acquisition/DefaultEvent.java | 35 ++++++--
.../iso/acquisition/DefaultRequestedDate.java | 50 +++++++++++-
.../iso/acquisition/DefaultRequirement.java | 25 +++++-
.../sis/metadata/iso/acquisition/package-info.java | 1 +
.../sis/metadata/iso/citation/DefaultCitation.java | 26 +++++-
.../metadata/iso/citation/DefaultCitationDate.java | 47 ++++++++---
.../sis/metadata/iso/citation/package-info.java | 1 +
.../distribution/DefaultStandardOrderProcess.java | 40 +++++++++-
.../metadata/iso/distribution/package-info.java | 2 +-
.../metadata/iso/identification/DefaultUsage.java | 93 +++++++++++++++++++---
.../sis/metadata/iso/quality/AbstractResult.java | 6 +-
.../sis/pending/temporal/TemporalUtilities.java | 8 +-
.../apache/sis/metadata/TreeNodeChildrenTest.java | 5 +-
.../iso/citation/DefaultCitationDateTest.java | 8 +-
.../metadata/iso/citation/DefaultCitationTest.java | 15 ++--
.../DefaultDataIdentificationTest.java | 5 +-
.../sis/xml/test/AnnotationConsistencyCheck.java | 7 ++
.../sis/storage/netcdf/MetadataReaderTest.java | 32 ++++++--
.../apache/sis/storage/netcdf/NetcdfStoreTest.java | 2 +-
.../main/org/apache/sis/storage/gpx/Copyright.java | 12 ++-
.../apache/sis/storage/base/MetadataBuilder.java | 2 +-
.../main/org/apache/sis/io/CompoundFormat.java | 66 +++++++++++++--
.../sis/util/collection/TreeTableFormat.java | 7 +-
24 files changed, 439 insertions(+), 88 deletions(-)
(sis) 01/01: Merge branch 'geoapi-3.1'.
Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/sis.git
commit d4690f7f41a20128f65257cf5d092aafd27f7823
Merge: 6e63051a6f 06e105fa45
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri Jun 7 12:34:40 2024 +0200
Merge branch 'geoapi-3.1'.
.../apache/sis/metadata/iso/DefaultMetadata.java | 32 ++++++--
.../sis/metadata/iso/acquisition/DefaultEvent.java | 35 ++++++--
.../iso/acquisition/DefaultRequestedDate.java | 50 +++++++++++-
.../iso/acquisition/DefaultRequirement.java | 25 +++++-
.../sis/metadata/iso/acquisition/package-info.java | 1 +
.../sis/metadata/iso/citation/DefaultCitation.java | 26 +++++-
.../metadata/iso/citation/DefaultCitationDate.java | 47 ++++++++---
.../sis/metadata/iso/citation/package-info.java | 1 +
.../distribution/DefaultStandardOrderProcess.java | 40 +++++++++-
.../metadata/iso/distribution/package-info.java | 2 +-
.../metadata/iso/identification/DefaultUsage.java | 93 +++++++++++++++++++---
.../sis/metadata/iso/quality/AbstractResult.java | 6 +-
.../sis/pending/temporal/TemporalUtilities.java | 8 +-
.../apache/sis/metadata/TreeNodeChildrenTest.java | 5 +-
.../iso/citation/DefaultCitationDateTest.java | 8 +-
.../metadata/iso/citation/DefaultCitationTest.java | 15 ++--
.../DefaultDataIdentificationTest.java | 5 +-
.../sis/xml/test/AnnotationConsistencyCheck.java | 7 ++
.../sis/storage/netcdf/MetadataReaderTest.java | 32 ++++++--
.../apache/sis/storage/netcdf/NetcdfStoreTest.java | 2 +-
.../main/org/apache/sis/storage/gpx/Copyright.java | 12 ++-
.../apache/sis/storage/base/MetadataBuilder.java | 2 +-
.../main/org/apache/sis/io/CompoundFormat.java | 66 +++++++++++++--
.../sis/util/collection/TreeTableFormat.java | 7 +-
24 files changed, 439 insertions(+), 88 deletions(-)
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultMetadata.java
index b7340ebbeb,bb0f817aff..d5876d71b9
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultMetadata.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultMetadata.java
@@@ -358,10 -354,30 +360,30 @@@ public class DefaultMetadata extends IS
* @param contact party responsible for the metadata information.
* @param dateStamp date that the metadata was created.
* @param identificationInfo basic information about the resource to which the metadata applies.
+ *
+ * @deprecated Replaced by {@link #DefaultMetadata(ResponsibleParty, Temporal, Identification)}.
*/
+ @Deprecated(since="1.5", forRemoval=true)
public DefaultMetadata(final ResponsibleParty contact,
- final Date dateStamp,
- final Identification identificationInfo)
+ final Date dateStamp,
+ final Identification identificationInfo)
+ {
+ this(contact, TemporalDate.toTemporal(dateStamp), identificationInfo);
+ }
+
+ /**
+ * Creates a meta data initialized to the specified values.
+ *
+ * @param contact party responsible for the metadata information.
+ * @param dateStamp date that the metadata was created.
+ * @param identificationInfo basic information about the resource to which the metadata applies.
+ *
+ * @since 1.5
+ */
+ @SuppressWarnings("this-escape")
+ public DefaultMetadata(final ResponsibleParty contact,
+ final Temporal dateStamp,
+ final Identification identificationInfo)
{
this.contacts = singleton(contact, ResponsibleParty.class);
this.identificationInfo = singleton(identificationInfo, Identification.class);
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
index f318350ada,3f61f355ef..1b72a5ab4d
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
@@@ -33,6 -33,6 +33,11 @@@ import org.opengis.metadata.acquisition
import org.apache.sis.metadata.iso.ISOMetadata;
import org.apache.sis.util.privy.TemporalDate;
++// Specific to the main branch:
++import org.opengis.annotation.UML;
++import static org.opengis.annotation.Obligation.MANDATORY;
++import static org.opengis.annotation.Specification.ISO_19115_2;
++
/**
* Identification of a significant collection point within an operation.
@@@ -274,9 -272,25 +277,25 @@@ public class DefaultEvent extends ISOMe
* Sets the time the event occurred.
*
* @param newValue the new time value.
+ *
+ * @deprecated Replaced by {@link #setDateOfOccurrence(Temporal)}.
*/
+ @Deprecated(since="1.5")
public void setTime(final Date newValue) {
- setTime(TemporalDate.toTemporal(newValue));
+ setDateOfOccurrence(TemporalDate.toTemporal(newValue));
+ }
+
+ /**
+ * Returns the time the event occurred.
+ *
+ * @return time the event occurred, or {@code null}.
+ *
+ * @since 1.5
+ */
- @Override
+ @XmlElement(name = "time", required = true)
++ @UML(identifier="time", obligation=MANDATORY, specification=ISO_19115_2)
+ public Temporal getDateOfOccurrence() {
+ return time;
}
/**
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
index 42b24c4042,2db4683608..107f978fea
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
@@@ -27,6 -27,6 +27,11 @@@ import org.apache.sis.metadata.TitlePro
import org.apache.sis.metadata.iso.ISOMetadata;
import org.apache.sis.util.privy.TemporalDate;
++// Specific to the main branch:
++import org.opengis.annotation.UML;
++import static org.opengis.annotation.Obligation.MANDATORY;
++import static org.opengis.annotation.Specification.ISO_19115;
++
/**
* Reference date and event used to describe it.
@@@ -119,8 -119,8 +124,12 @@@ public class DefaultCitationDate extend
public DefaultCitationDate(final CitationDate object) {
super(object);
if (object != null) {
-- date = TemporalDate.toTemporal(object.getDate());
dateType = object.getDateType();
++ if (object instanceof DefaultCitationDate) {
++ date = ((DefaultCitationDate) object).getReferenceDate();
++ } else {
++ date = TemporalDate.toTemporal(object.getDate());
++ }
}
}
@@@ -168,9 -166,25 +175,25 @@@
* Sets the reference date for the cited resource.
*
* @param newValue the new date.
+ *
+ * @deprecated Replaced by {@link #setReferenceDate(Temporal)}.
*/
+ @Deprecated(since="1.5")
public void setDate(final Date newValue) {
- setDate(TemporalDate.toTemporal(newValue));
+ setReferenceDate(TemporalDate.toTemporal(newValue));
+ }
+
+ /**
+ * Returns the reference date for the cited resource.
+ *
+ * @return reference date for the cited resource, or {@code null}.
+ *
+ * @since 1.5
+ */
- @Override
+ @XmlElement(name = "date", required = true)
++ @UML(identifier="date", obligation=MANDATORY, specification=ISO_19115)
+ public Temporal getReferenceDate() {
+ return date;
}
/**
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
index 6689ee1496,985cfdb18e..d2f256f7de
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
@@@ -247,10 -243,40 +249,40 @@@ public class DefaultStandardOrderProces
* Sets the date and time when the dataset will be available.
*
* @param newValue the new planned available time.
+ *
+ * @deprecated Replaced by {@link #setPlannedAvailableDate(Temporal)}.
*/
+ @Deprecated(since="1.5")
public void setPlannedAvailableDateTime(final Date newValue) {
+ setPlannedAvailableDate(TemporalDate.toTemporal(newValue));
+ }
+
+ /**
+ * Returns the date and time when the dataset will be available.
+ *
+ * @return date and time when the dataset will be available, or {@code null}.
+ *
+ * @since 1.5
+ */
- @Override
+ @XmlElement(name = "plannedAvailableDateTime")
++ @UML(identifier="plannedAvailableDateTime", obligation=OPTIONAL, specification=ISO_19115)
+ public Temporal getPlannedAvailableDate() {
+ return plannedAvailableDateTime;
+ }
+
+ /**
+ * Sets the date and time when the dataset will be available.
+ * The specified value should be an instance of {@link java.time.LocalDate}, {@link java.time.LocalDateTime},
+ * {@link java.time.OffsetDateTime} or {@link java.time.ZonedDateTime}, depending whether hours are defined
+ * and how the timezone (if any) is defined. But other types are also allowed.
+ *
+ * @param newValue the new planned available time.
+ *
+ * @since 1.5
+ */
+ public void setPlannedAvailableDate(final Temporal newValue) {
checkWritePermission(plannedAvailableDateTime);
- plannedAvailableDateTime = TemporalDate.toTemporal(newValue);
+ plannedAvailableDateTime = newValue;
}
/**
diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
index 8c6ea0c521,02574b2e61..06b4b7afc0
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
@@@ -34,11 -41,6 +41,12 @@@ import org.apache.sis.util.privy.Tempor
// Specific to the main and geoapi-3.1 branches:
import org.opengis.metadata.citation.ResponsibleParty;
+// Specific to the main branch:
+import org.opengis.annotation.UML;
+import static org.opengis.annotation.Obligation.OPTIONAL;
+import static org.opengis.annotation.Specification.ISO_19115;
++import org.apache.sis.pending.temporal.DefaultPeriod;
+
/**
* Brief description of ways in which the resource(s) is/are currently or has been used.
@@@ -164,15 -167,12 +173,20 @@@ public class DefaultUsage extends ISOMe
super(object);
if (object != null) {
specificUsage = object.getSpecificUsage();
- usageDate = TemporalDate.toTemporal(object.getUsageDate());
- usageDates = copyCollection(object.getUsageDates(), TemporalPrimitive.class);
userDeterminedLimitations = object.getUserDeterminedLimitations();
userContactInfo = copyCollection(object.getUserContactInfo(), ResponsibleParty.class);
- responses = copyCollection(object.getResponses(), InternationalString.class);
- additionalDocumentation = copyCollection(object.getAdditionalDocumentation(), Citation.class);
- identifiedIssues = copyCollection(object.getIdentifiedIssues(), Citation.class);
+ if (object instanceof DefaultUsage) {
- final DefaultUsage c = (DefaultUsage) object;
++ final var c = (DefaultUsage) object;
++ usageDates = copyCollection(c.getUsageDates(), TemporalPrimitive.class);
+ responses = copyCollection(c.getResponses(), InternationalString.class);
+ additionalDocumentation = copyCollection(c.getAdditionalDocumentation(), Citation.class);
+ identifiedIssues = copyCollection(c.getIdentifiedIssues(), Citation.class);
++ } else {
++ TemporalPrimitive t = TemporalUtilities.createInstant(TemporalDate.toTemporal(object.getUsageDate()));
++ if (t != null) {
++ usageDates = List.of(t);
++ }
+ }
}
}
@@@ -226,21 -226,80 +240,82 @@@
* Returns the date and time of the first use or range of uses of the resource and/or resource series.
*
* @return date of the first use of the resource, or {@code null}.
+ *
+ * @deprecated Replaced by {@link #getUsageDates()}.
*/
@Override
- @XmlElement(name = "usageDateTime")
+ @Deprecated(since="1.5")
+ @Dependencies("getUsageDates")
+ @XmlElement(name = "usageDateTime", namespace = LegacyNamespaces.GMD)
public Date getUsageDate() {
- return TemporalDate.toDate(usageDate);
+ if (FilterByVersion.LEGACY_METADATA.accept()) {
+ @SuppressWarnings("LocalVariableHidesMemberVariable")
+ final Collection<TemporalPrimitive> usageDates = getUsageDates();
+ if (usageDates != null) {
+ for (TemporalPrimitive t : usageDates) {
- Date p = TemporalDate.toDate(t.position().orElse(null));
- if (p != null) {
- return p;
++ if (t instanceof DefaultPeriod) {
++ Date p = TemporalDate.toDate(((DefaultPeriod) t).getBeginning());
++ if (p != null) {
++ return p;
++ }
+ }
+ }
+ }
+ }
+ return null;
}
/**
* Sets the date and time of the first use.
*
* @param newValue the new usage date.
+ *
+ * @deprecated Replaced by {@link #setUsageDates(Collection)}.
*/
+ @Deprecated(since="1.5")
public void setUsageDate(final Date newValue) {
- checkWritePermission(usageDate);
- usageDate = TemporalDate.toTemporal(newValue);
+ setUsageDates(newValue == null ? List.of() : List.of(TemporalUtilities.createInstant(TemporalDate.toTemporal(newValue))));
+ }
+
+ /**
+ * Returns the date and time of the first use or range of uses of the resource and/or resource series.
+ *
+ * @return date of the first use of the resource.
+ *
+ * @since 1.5
+ */
- @Override
+ @XmlElement(name = "usageDateTime")
+ @XmlJavaTypeAdapter(TM_Primitive.Since2014.class)
++ @UML(identifier="usageDateTime", obligation=OPTIONAL, specification=ISO_19115)
+ public Collection<TemporalPrimitive> getUsageDates() {
+ return usageDates = nonNullCollection(usageDates, TemporalPrimitive.class);
+ }
+
+ /**
+ * Sets the date and time of the first use or range of uses of the resource and/or resource series.
+ *
+ * @param newValues date of the first use of the resource.
+ *
+ * @since 1.5
+ */
+ public void setUsageDates(final Collection<TemporalPrimitive> newValues) {
+ usageDates = writeCollection(usageDates, newValues, TemporalPrimitive.class);
+ }
+
+ /**
+ * Adds a period for the range of uses of the resource and/or resource series.
+ * This is a convenience method for adding a temporal period.
+ *
+ * @param beginning the begin instant (inclusive), or {@code null}.
+ * @param ending the end instant (inclusive), or {@code null}.
+ *
+ * @since 1.5
+ */
+ public void addUsageDates(final Temporal beginning, final Temporal ending) {
+ TemporalPrimitive period = TemporalUtilities.createPeriod(beginning, ending);
+ if (period != null) {
+ getUsageDates().add(period);
+ }
}
/**
diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/DefaultCitationDateTest.java
index 4788d6caf9,5545fd5921..ba41a58185
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/DefaultCitationDateTest.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/DefaultCitationDateTest.java
@@@ -16,11 -16,14 +16,14 @@@
*/
package org.apache.sis.metadata.iso.citation;
- import java.util.Date;
++import java.time.Instant;
import org.opengis.metadata.citation.DateType;
import org.opengis.metadata.citation.CitationDate;
import org.apache.sis.util.ComparisonMode;
-// Specific to the geoapi-4.0 branch:
-import java.time.Instant;
-import java.time.temporal.Temporal;
++// Specific to the main branch:
++import java.util.Date;
+
// Test dependencies
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
@@@ -45,13 -48,13 +48,12 @@@ public final class DefaultCitationDateT
@Test
public void testCopyConstructor() {
final CitationDate original = new CitationDate() {
- @Override public Temporal getReferenceDate() {return Instant.ofEpochMilli(1305716658508L);}
- @Override public DateType getDateType() {return DateType.CREATION;}
+ @Override public Date getDate() {return new Date(1305716658508L);}
+ @Override public DateType getDateType() {return DateType.CREATION;}
};
final DefaultCitationDate copy = new DefaultCitationDate(original);
- assertEquals(new Date(1305716658508L), copy.getDate());
+ assertEquals(Instant.ofEpochMilli(1305716658508L), copy.getReferenceDate());
assertEquals(DateType.CREATION, copy.getDateType());
-- assertTrue (copy.equals(original, ComparisonMode.BY_CONTRACT));
assertFalse(copy.equals(original, ComparisonMode.STRICT)); // Opportunist test.
}
}
diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java
index 4dc32ca905,ece19ad314..fc40401f9f
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/DefaultCitationTest.java
@@@ -251,14 -253,14 +252,14 @@@ public final class DefaultCitationTest
final var contact = new DefaultContact(rs);
contact.setContactInstructions(new SimpleInternationalString("Send carrier pigeon."));
contact.getIdentifierMap().putSpecialized(IdentifierSpace.ID, "ip-protocol");
- final DefaultCitation c = new DefaultCitation("Fight against poverty");
- final DefaultResponsibleParty r1 = new DefaultResponsibleParty(Role.ORIGINATOR);
- final DefaultResponsibleParty r2 = new DefaultResponsibleParty(Role.valueOf("funder"));
+ final var c = new DefaultCitation("Fight against poverty");
+ final var r1 = new DefaultResponsibleParty(Role.ORIGINATOR);
- final var r2 = new DefaultResponsibleParty(Role.FUNDER);
++ final var r2 = new DefaultResponsibleParty(Role.valueOf("funder"));
r1.setParties(Set.of(new DefaultIndividual("Maid Marian", null, contact)));
r2.setParties(Set.of(new DefaultIndividual("Robin Hood", null, contact)));
c.setCitedResponsibleParties(List.of(r1, r2));
- c.getDates().add(new DefaultCitationDate(TestUtilities.date("2015-10-17 00:00:00"), DateType.valueOf("adopted")));
- c.getDates().add(new DefaultCitationDate(OffsetDateTime.of(2015, 10, 17, 2, 0, 0, 0, ZoneOffset.ofHours(2)), DateType.ADOPTED));
- c.getPresentationForms().add(PresentationForm.PHYSICAL_OBJECT);
++ c.getDates().add(new DefaultCitationDate(OffsetDateTime.of(2015, 10, 17, 2, 0, 0, 0, ZoneOffset.ofHours(2)), DateType.valueOf("adopted")));
+ c.getPresentationForms().add(PresentationForm.valueOf("physicalObject"));
/*
* Check that XML file built by the marshaller is the same as the example file.
*/
@@@ -305,12 -307,12 +306,12 @@@
public static void verifyUnmarshalledCitation(final Citation c) {
assertTitleEquals("Fight against poverty", c, "citation");
-- final CitationDate date = getSingleton(c.getDates());
- assertEquals(date.getDate(), TestUtilities.date("2015-10-17 00:00:00"));
++ final var date = (DefaultCitationDate) getSingleton(c.getDates());
+ assertEquals(date.getReferenceDate(), OffsetDateTime.of(2015, 10, 17, 2, 0, 0, 0, ZoneOffset.ofHours(2)));
- assertEquals(DateType.ADOPTED, date.getDateType());
- assertEquals(PresentationForm.PHYSICAL_OBJECT, getSingleton(c.getPresentationForms()));
+ assertEquals(DateType.valueOf("adopted"), date.getDateType());
+ assertEquals(PresentationForm.valueOf("physicalObject"), getSingleton(c.getPresentationForms()));
- final Iterator<? extends Responsibility> it = c.getCitedResponsibleParties().iterator();
+ final Iterator<? extends ResponsibleParty> it = c.getCitedResponsibleParties().iterator();
final Contact contact = assertResponsibilityEquals(Role.ORIGINATOR, "Maid Marian", it.next());
assertEquals("Send carrier pigeon.", String.valueOf(contact.getContactInstructions()));
diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/AnnotationConsistencyCheck.java
index 3627078887,4c11f61a32..3e481db041
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/AnnotationConsistencyCheck.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/AnnotationConsistencyCheck.java
@@@ -609,8 -591,15 +609,15 @@@ public abstract class AnnotationConsist
* We do not duplicate the Java methods only for that.
*/
case "getDerivedElements": {
- return org.opengis.metadata.quality.Metaquality.class.isAssignableFrom(method.getDeclaringClass());
+ return true;
}
+ /*
+ * Property which exists in a deprecated and a non-deprecated version,
+ * with the same name but different namespace.
+ */
+ case "usageDateTime": {
+ return method.isAnnotationPresent(Deprecated.class);
+ }
/*
* - "resultContent" is a property in the ISO 10157 model but not yet in the XML schema.
* - "resultFormat" and "resultFile" differ in XML schema compared to abstract model (different obligation).
diff --cc endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
index e1e6b7da98,3550322273..da4760b701
--- a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
+++ b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
@@@ -36,11 -39,10 +39,10 @@@ import org.junit.jupiter.api.Test
import static org.junit.jupiter.api.Assertions.*;
import org.apache.sis.storage.netcdf.base.TestCase;
import org.apache.sis.storage.netcdf.classic.ChannelDecoderTest;
- import static org.apache.sis.test.TestUtilities.date;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.test.dataset.ContentVerifier;
-import org.opengis.test.dataset.TestData;
+// Specific to the main branch:
+import org.apache.sis.storage.netcdf.base.TestData;
+import org.apache.sis.test.ContentVerifier;
/**
@@@ -77,7 -79,7 +79,7 @@@ public final class MetadataReaderTest e
final Decoder input = ChannelDecoderTest.createChannelDecoder(TestData.NETCDF_2D_GEOGRAPHIC);
final Metadata metadata = new MetadataReader(input).read();
input.close(new DataStoreMock("lock"));
- compareToExpected(metadata);
- compareToExpected(metadata, false).assertMetadataEquals();
++ compareToExpected(metadata, false);
}
/**
@@@ -92,14 -94,30 +94,28 @@@
final Decoder input = createDecoder(TestData.NETCDF_2D_GEOGRAPHIC);
final Metadata metadata = new MetadataReader(input).read();
input.close(new DataStoreMock("lock"));
- compareToExpected(metadata);
- final ContentVerifier verifier = compareToExpected(metadata, true);
- verifier.addExpectedValue("identificationInfo[0].resourceFormat[0].formatSpecificationCitation.alternateTitle[1]", "NetCDF-3/CDM");
- verifier.assertMetadataEquals();
++ compareToExpected(metadata, true);
}
/**
- * Compares the string representation of the given metadata object with the expected one.
+ * Converts the given object to the actual type stored in the metadata.
+ *
+ * @param expected the expected date to convert.
+ * @param ucar whether the UCAR wrapper is used.
+ * @return the given date converted to the expected type.
+ */
+ private static Temporal actual(final LocalDateTime expected, final boolean ucar) {
+ return ucar ? expected.toInstant(ZoneOffset.UTC) : expected;
+ }
+
+ /**
+ * Creates comparator for the string representation of the given metadata object with the expected one.
* The given metadata shall have been created from the {@link TestData#NETCDF_2D_GEOGRAPHIC} dataset.
+ *
+ * @param actual the metadata which have been read.
+ * @param ucar whether the UCAR wrapper is used.
*/
- static void compareToExpected(final Metadata actual) {
- static ContentVerifier compareToExpected(final Metadata actual, final boolean ucar) {
++ static void compareToExpected(final Metadata actual, final boolean ucar) {
final ContentVerifier verifier = new ContentVerifier();
verifier.addPropertyToIgnore(Metadata.class, "metadataStandard");
verifier.addPropertyToIgnore(Metadata.class, "referenceSystemInfo");
diff --cc endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreTest.java
index 3aa4af465d,a2ea937da1..43f4498715
--- a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreTest.java
+++ b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreTest.java
@@@ -66,7 -66,7 +66,7 @@@ public final class NetcdfStoreTest exte
metadata = store.getMetadata();
assertSame(metadata, store.getMetadata(), "Should be cached.");
}
- MetadataReaderTest.compareToExpected(metadata);
- MetadataReaderTest.compareToExpected(metadata, false).assertMetadataEquals();
++ MetadataReaderTest.compareToExpected(metadata, false);
loggings.skipNextLogIfContains("EPSG:4019"); // Deprecated EPSG code.
loggings.assertNoUnexpectedLog();
}
diff --cc endorsed/src/org.apache.sis.storage.xml/main/org/apache/sis/storage/gpx/Copyright.java
index ddc9e23d27,88bc82ca4e..4ea89e49c1
--- a/endorsed/src/org.apache.sis.storage.xml/main/org/apache/sis/storage/gpx/Copyright.java
+++ b/endorsed/src/org.apache.sis.storage.xml/main/org/apache/sis/storage/gpx/Copyright.java
@@@ -20,9 -20,11 +20,12 @@@ import java.net.URI
import java.util.List;
import java.util.Collection;
import java.util.Collections;
- import java.util.Date;
import java.util.Locale;
import java.util.Objects;
++import java.util.Date;
+ import java.time.Year;
+ import java.time.temporal.Temporal;
+ import java.time.temporal.ChronoField;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import org.opengis.metadata.Identifier;
@@@ -37,14 -39,11 +40,15 @@@ import org.opengis.metadata.constraint.
import org.opengis.util.InternationalString;
import org.apache.sis.util.iso.Types;
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.metadata.citation.Party;
-import org.opengis.metadata.citation.Responsibility;
-import org.opengis.metadata.identification.BrowseGraphic;
-import org.apache.sis.util.SimpleInternationalString;
+// Specific to the main branch:
+import org.opengis.metadata.citation.Contact;
+import org.opengis.metadata.citation.Series;
+import org.opengis.metadata.citation.ResponsibleParty;
++import org.apache.sis.util.privy.TemporalDate;
+import org.apache.sis.metadata.iso.citation.AbstractParty;
+import org.apache.sis.metadata.iso.citation.DefaultCitation;
+import org.apache.sis.metadata.iso.citation.DefaultResponsibility;
+import org.apache.sis.metadata.iso.constraint.DefaultConstraints;
/**
@@@ -109,11 -111,11 +113,11 @@@ resp: for (final DefaultResponsibilit
if (author != null) break resp;
}
}
- for (final Citation ci : c.getReferences()) {
+ for (final Citation ci : ((DefaultConstraints) c).getReferences()) {
for (final CitationDate d : ci.getDates()) {
- final Date date = d.getDate();
- final Temporal date = d.getReferenceDate();
++ final Temporal date = TemporalDate.toTemporal(d.getDate());
if (date != null) {
- year = date.getYear() + 1900;
+ year = date.get(ChronoField.YEAR);
break;
}
}
@@@ -303,9 -301,9 +307,9 @@@
* @return reference date for the cited resource.
*/
@Override
- public Temporal getReferenceDate() {
+ public Date getDate() {
if (year != null) {
- return new Date(year - 1900, 0, 1);
- return Year.of(year);
++ return TemporalDate.toDate(Year.of(year));
}
return null;
}