From 80f6468d5299ee036cd7d7f8758a38dc1e1783aa Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 6 Jun 2026 11:05:45 +0200 Subject: [PATCH] refactor(tag): use orElseThrow over Optional.get in findOrCreate (#730) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lowest-id tie-break stream is guarded non-empty, so .get() never throws — but the project bans Optional.get(). Switch to .orElseThrow() for the project idiom. No behaviour change. Co-Authored-By: Claude Opus 4.8 --- .../main/java/org/raddatz/familienarchiv/tag/TagService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java b/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java index 8ac6a622..0a077a2d 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java @@ -68,7 +68,7 @@ public class TagService { if (exact.isPresent()) return exact.get(); // exact-case wins (edit round-trip replays the stored name) List caseInsensitive = tagRepository.findAllByNameIgnoreCase(cleanName); if (!caseInsensitive.isEmpty()) { - return caseInsensitive.stream().min(Comparator.comparing(Tag::getId)).get(); // deterministic tie-break by id — never throw + return caseInsensitive.stream().min(Comparator.comparing(Tag::getId)).orElseThrow(); // deterministic tie-break by id — list is non-empty, never throws } return tagRepository.save(Tag.builder().name(cleanName).build()); // create-when-absent (orphan tag: null sourceRef/parentId) }