[#10744] Improve String comparison in DSpaceObjectServiceImpl

This commit is contained in:
Kim Shepherd
2025-05-14 16:48:09 +02:00
parent 4311354171
commit b089fd6442

View File

@@ -187,11 +187,11 @@ public abstract class DSpaceObjectServiceImpl<T extends DSpaceObject> implements
String authority) { String authority) {
List<MetadataValue> metadata = getMetadata(dso, schema, element, qualifier, lang); List<MetadataValue> metadata = getMetadata(dso, schema, element, qualifier, lang);
List<MetadataValue> result = new ArrayList<>(metadata); List<MetadataValue> result = new ArrayList<>(metadata);
if (!authority.equals(Item.ANY)) { if (!Item.ANY.equals(authority)) {
Iterator<MetadataValue> iterator = result.iterator(); Iterator<MetadataValue> iterator = result.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
MetadataValue metadataValue = iterator.next(); MetadataValue metadataValue = iterator.next();
if (!authority.equals(metadataValue.getAuthority())) { if (!StringUtils.equals(authority, metadataValue.getAuthority())) {
iterator.remove(); iterator.remove();
} }
} }
@@ -509,7 +509,7 @@ public abstract class DSpaceObjectServiceImpl<T extends DSpaceObject> implements
MetadataField metadataField = metadataValue.getMetadataField(); MetadataField metadataField = metadataValue.getMetadataField();
MetadataSchema metadataSchema = metadataField.getMetadataSchema(); MetadataSchema metadataSchema = metadataField.getMetadataSchema();
// We will attempt to disprove a match - if we can't we have a match // We will attempt to disprove a match - if we can't we have a match
if (!element.equals(Item.ANY) && !element.equals(metadataField.getElement())) { if (!Item.ANY.equals(element) && !StringUtils.equals(element, metadataField.getElement())) {
// Elements do not match, no wildcard // Elements do not match, no wildcard
return false; return false;
} }
@@ -520,9 +520,9 @@ public abstract class DSpaceObjectServiceImpl<T extends DSpaceObject> implements
// Value is qualified, so no match // Value is qualified, so no match
return false; return false;
} }
} else if (!qualifier.equals(Item.ANY)) { } else if (!Item.ANY.equals(qualifier)) {
// Not a wildcard, so qualifier must match exactly // Not a wildcard, so qualifier must match exactly
if (!qualifier.equals(metadataField.getQualifier())) { if (!StringUtils.equals(qualifier, metadataField.getQualifier())) {
return false; return false;
} }
} }
@@ -533,15 +533,15 @@ public abstract class DSpaceObjectServiceImpl<T extends DSpaceObject> implements
// Value is qualified, so no match // Value is qualified, so no match
return false; return false;
} }
} else if (!language.equals(Item.ANY)) { } else if (!Item.ANY.equals(language)) {
// Not a wildcard, so language must match exactly // Not a wildcard, so language must match exactly
if (!language.equals(metadataValue.getLanguage())) { if (!StringUtils.equals(language, metadataValue.getLanguage())) {
return false; return false;
} }
} }
if (!schema.equals(Item.ANY)) { if (!Item.ANY.equals(schema)) {
if (metadataSchema != null && !metadataSchema.getName().equals(schema)) { if (!StringUtils.equals(schema, metadataSchema.getName())) {
// The namespace doesn't match // The namespace doesn't match
return false; return false;
} }