From aca96149e776b4e32efb23343773ea3e6bb58f4c Mon Sep 17 00:00:00 2001 From: milanmajchrak Date: Wed, 18 Mar 2026 15:33:06 +0100 Subject: [PATCH] fix: truncate nanoseconds from OAI-PMH responseDate (port of DSpace#11438) DateUtils.format(Instant) produced timestamps with fractional seconds (e.g. 2025-10-09T18:53:58.376565922Z) which violates the OAI-PMH spec requiring YYYY-MM-DDThh:mm:ssZ format, causing validation failures at Open Archives. Also add oai_dc metadata format to the openaire4 context in xoai.xml, as oai_dc is required by the OAI-PMH specification for every endpoint. --- .../src/main/java/org/dspace/xoai/util/DateUtils.java | 9 +++------ dspace/config/crosswalks/oai/xoai.xml | 1 + 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java b/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java index 6de7993774f1..4645b5be16d1 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java @@ -10,6 +10,7 @@ import java.time.Instant; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.time.temporal.ChronoUnit; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -34,12 +35,8 @@ private DateUtils() { } * @return UTC date string */ public static String format(Instant date) { - // NOTE: OAI-PMH REQUIRES that all dates be expressed in UTC format - // as YYYY-MM-DDThh:mm:ssZ For more details, see - // http://www.openarchives.org/OAI/openarchivesprotocol.html#DatestampsResponses - - // toString returns the correct format - return date.toString(); + Instant truncated = date.truncatedTo(ChronoUnit.SECONDS); + return DateTimeFormatter.ISO_INSTANT.format(truncated); } /** diff --git a/dspace/config/crosswalks/oai/xoai.xml b/dspace/config/crosswalks/oai/xoai.xml index 7140c029c7f3..f0cf7e0358da 100644 --- a/dspace/config/crosswalks/oai/xoai.xml +++ b/dspace/config/crosswalks/oai/xoai.xml @@ -87,6 +87,7 @@ + This contexts complies with Openaire Guidelines for Literature Repositories v4.0.