Skip to content

Commit 09c55ce

Browse files
committed
Improve CVOC value validation by preventing N/A population in controlled vocabulary fields
1 parent 667596d commit 09c55ce

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractDatasetCommand.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,14 @@ protected void validateOrDie(DatasetVersion dsv, Boolean lenient) throws Command
110110
Set<ConstraintViolation> constraintViolations = dsv.validate();
111111
if (!constraintViolations.isEmpty()) {
112112
if (lenient) {
113-
// populate invalid fields with N/A
113+
// populate invalid primitive fields with N/A
114+
// Note: controlled vocabulary fields should NOT get N/A values in datasetfieldvalue,
115+
// as this creates an inconsistent state where the CV field appears valid but is empty.
116+
// See https://github.com/IQSS/dataverse/issues/11900
114117
constraintViolations.stream()
115118
.filter(cv -> cv.getRootBean() instanceof DatasetField)
116119
.map(cv -> ((DatasetField) cv.getRootBean()))
120+
.filter(f -> !f.getDatasetFieldType().isControlledVocabulary())
117121
.forEach(f -> f.setSingleValue(DatasetField.NA_VALUE));
118122

119123
} else {

0 commit comments

Comments
 (0)