From c0cf8d7952be55aa7a0cc30722933d01ce05c346 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 8 Apr 2026 13:22:33 +0200 Subject: [PATCH] fix(service): add @Nullable to findOrCreateByAlias and filter nulls in caller Add @Nullable annotation to findOrCreateByAlias() return type. Filter null results (from SKIP classification) in MassImportService receiver list to prevent null elements in the receivers collection. Co-Authored-By: Claude Sonnet 4.6 --- .../org/raddatz/familienarchiv/service/MassImportService.java | 2 ++ .../org/raddatz/familienarchiv/service/PersonService.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/MassImportService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/MassImportService.java index 9f35733b..5f3cb792 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/MassImportService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/MassImportService.java @@ -3,6 +3,7 @@ package org.raddatz.familienarchiv.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; +import java.util.Objects; import org.raddatz.familienarchiv.exception.DomainException; import org.raddatz.familienarchiv.exception.ErrorCode; import org.raddatz.familienarchiv.model.Document; @@ -301,6 +302,7 @@ public class MassImportService { Person sender = senderRaw.isBlank() ? null : findOrCreatePerson(senderRaw); List receivers = PersonNameParser.parseReceivers(receiversRaw).stream() .map(this::findOrCreatePerson) + .filter(Objects::nonNull) .toList(); Tag tag = null; diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java index 590f10b9..aa6c49f8 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java @@ -1,9 +1,12 @@ package org.raddatz.familienarchiv.service; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.UUID; +import org.springframework.lang.Nullable; + import org.raddatz.familienarchiv.dto.PersonNameAliasDTO; import org.raddatz.familienarchiv.dto.PersonSummaryDTO; import org.raddatz.familienarchiv.dto.PersonUpdateDTO; @@ -59,6 +62,7 @@ public class PersonService { return personRepository.findByFirstNameIgnoreCaseAndLastNameIgnoreCase(firstName, lastName); } + @Nullable @Transactional public Person findOrCreateByAlias(String rawName) { String alias = rawName.trim();