From 17b0e2c968aeb81e934268ecf05c1bfeaf93ef59 Mon Sep 17 00:00:00 2001 From: Stephen Kraffmiller Date: Thu, 26 Jun 2025 16:27:28 -0400 Subject: [PATCH] #11546 fix compare separator logic --- .../dataverse/pidproviders/AbstractPidProvider.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/pidproviders/AbstractPidProvider.java b/src/main/java/edu/harvard/iq/dataverse/pidproviders/AbstractPidProvider.java index df2dc965ed9..469b3505165 100644 --- a/src/main/java/edu/harvard/iq/dataverse/pidproviders/AbstractPidProvider.java +++ b/src/main/java/edu/harvard/iq/dataverse/pidproviders/AbstractPidProvider.java @@ -196,7 +196,7 @@ public DvObject generatePid(DvObject dvObject) { + ") doesn't match that of the provider, id: " + getId()); } } - if (dvObject.getAuthority() == null) { + if (dvObject.getAuthority() == null) { dvObject.setAuthority(getAuthority()); } else { if (!dvObject.getAuthority().equals(getAuthority())) { @@ -209,11 +209,19 @@ public DvObject generatePid(DvObject dvObject) { if (dvObject.getSeparator() == null) { dvObject.setSeparator(getSeparator()); } else { - if (!dvObject.getSeparator().equals(getSeparator())) { + //only check separator if identifier is not null because a null authority would be set above... + //SEK 06/26/25 #11546 + if (dvObject.getIdentifier() != null + && !dvObject.getSeparator().equals(getSeparator())) { logger.warning("The separator of the DvObject (" + dvObject.getSeparator() + ") does not match the configured separator (" + getSeparator() + ")"); throw new IllegalArgumentException("The separator of the DvObject (" + dvObject.getSeparator() + ") doesn't match that of the provider, id: " + getId()); + } else { + //we know it's not null so fill it if it's empty + if (dvObject.getSeparator().isEmpty()) { + dvObject.setSeparator(getSeparator()); + } } } if (dvObject.isInstanceofDataset()) {