From 2e101c237f70032a71b94e1530b67a9a8b2201e1 Mon Sep 17 00:00:00 2001 From: Cody Pinkston Date: Wed, 29 Apr 2026 23:59:54 -0500 Subject: [PATCH] Fix: NPE in peer evaluation getSheet when evaluatee is null Seed data created PeerEvaluation records without setting the evaluatee field, leaving evaluatee_id NULL in the database. getSheet() would crash calling .getEvaluatee().getId() on those records. - Added null guard in getSheet() filter so stale null-evaluatee records are skipped instead of crashing - Removed broken peer eval seeding from DataInitializer (it used the old field structure and produced invalid records) Co-Authored-By: Claude Sonnet 4.6 --- .../main/java/com/tcu/projectpulse/config/DataInitializer.java | 3 +-- .../peerevaluation/service/PeerEvaluationService.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/tcu/projectpulse/config/DataInitializer.java b/backend/src/main/java/com/tcu/projectpulse/config/DataInitializer.java index bda89ee..973e2cb 100644 --- a/backend/src/main/java/com/tcu/projectpulse/config/DataInitializer.java +++ b/backend/src/main/java/com/tcu/projectpulse/config/DataInitializer.java @@ -109,9 +109,8 @@ public void run(ApplicationArguments args) { Student grace = studentRepository.save(student("Grace", "Green", "g.green@tcu.edu", section2324)); Student henry = studentRepository.save(student("Henry", "Harris", "h.harris@tcu.edu", section2324)); - // Seed WARs and PeerEvaluations using recent weeks so reports show data immediately + // Seed WARs using recent weeks so reports show data immediately addWars(alice, 3, thisMonday.minusWeeks(3)); - addPeerEvaluations(alice, bob, 2, thisMonday.minusWeeks(2)); studentRepository.save(alice); // --- Teams (2024-2025) --- diff --git a/backend/src/main/java/com/tcu/projectpulse/peerevaluation/service/PeerEvaluationService.java b/backend/src/main/java/com/tcu/projectpulse/peerevaluation/service/PeerEvaluationService.java index 81e43db..50008c9 100644 --- a/backend/src/main/java/com/tcu/projectpulse/peerevaluation/service/PeerEvaluationService.java +++ b/backend/src/main/java/com/tcu/projectpulse/peerevaluation/service/PeerEvaluationService.java @@ -50,7 +50,7 @@ public PeerEvaluationSheetResponse getSheet(Long studentId, LocalDate anyDateInW List entries = teammates.stream() .map(tm -> { PeerEvaluation pe = existing.stream() - .filter(e -> e.getEvaluatee().getId().equals(tm.getId())) + .filter(e -> e.getEvaluatee() != null && e.getEvaluatee().getId().equals(tm.getId())) .findFirst() .orElse(null); return toEntryResponse(tm, pe);