Skip to content

Commit d0762e7

Browse files
Merge branch 'develop' into 12258-publish-submit-contains-files
2 parents cb9728a + 7054b64 commit d0762e7

3 files changed

Lines changed: 4 additions & 24 deletions

File tree

src/main/java/edu/harvard/iq/dataverse/DatasetFieldValidator.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -59,25 +59,9 @@ public boolean isValid(DatasetField value, ConstraintValidatorContext context) {
5959
}
6060

6161
// if value is not primitive or not empty
62-
// For controlled vocabulary fields, check that actual CV values are selected,
63-
// not just that datasetFieldValues contains something (which might be an invalid N/A placeholder)
64-
// See https://github.com/IQSS/dataverse/issues/11900
65-
if (!dsfType.isPrimitive()) {
62+
if (!dsfType.isPrimitive() || !StringUtils.isBlank(value.getValue())) {
6663
return true;
6764
}
68-
69-
if (dsfType.isControlledVocabulary()) {
70-
// For CV fields, check if there are actual controlled vocabulary values selected
71-
if (value.getControlledVocabularyValues() != null && !value.getControlledVocabularyValues().isEmpty()) {
72-
return true;
73-
}
74-
// If no CV values, fall through to required field check below
75-
} else {
76-
// For non-CV primitive fields, check if value is not blank
77-
if (!StringUtils.isBlank(value.getValue())) {
78-
return true;
79-
}
80-
}
8165

8266
if (value.isRequired()) {
8367
String errorMessage = null;

src/main/java/edu/harvard/iq/dataverse/DatasetPage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4039,8 +4039,8 @@ public String save() {
40394039
dataset.setOwner(ownerId != null ? dataverseService.find(ownerId) : null);
40404040
}
40414041
// Validate
4042-
workingVersion.validate(); // add validation messages to dataset fields
4043-
if (!workingVersion.isValid()) {
4042+
Set<ConstraintViolation> constraintViolations = workingVersion.validate();
4043+
if (!constraintViolations.isEmpty()) {
40444044
FacesContext.getCurrentInstance().validationFailed();
40454045
return "";
40464046
}

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,10 @@ 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 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
113+
// populate invalid fields with N/A
117114
constraintViolations.stream()
118115
.filter(cv -> cv.getRootBean() instanceof DatasetField)
119116
.map(cv -> ((DatasetField) cv.getRootBean()))
120-
.filter(f -> !f.getDatasetFieldType().isControlledVocabulary())
121117
.forEach(f -> f.setSingleValue(DatasetField.NA_VALUE));
122118

123119
} else {

0 commit comments

Comments
 (0)