From 491152376fcea2be864a5abc2f9bdd0e685a0b2d Mon Sep 17 00:00:00 2001 From: RadovanTomik Date: Tue, 19 Mar 2024 21:34:02 +0100 Subject: [PATCH 1/2] fix: unintentional modification of representative resources Signed-off-by: RadovanTomik --- .../java/eu/bbmri_eric/negotiator/database/model/Person.java | 5 +++++ .../negotiator/service/UserNotificationServiceImpl.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java b/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java index 6ce6c0679..3468e75e6 100644 --- a/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java +++ b/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java @@ -16,6 +16,7 @@ import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; import jakarta.validation.constraints.NotNull; +import java.util.Collections; import java.util.HashSet; import java.util.Objects; import java.util.Set; @@ -93,6 +94,10 @@ public void addResource(Resource resource) { resource.getRepresentatives().add(this); } + public Set getResources() { + return Collections.unmodifiableSet(resources); + } + public void removeResource(Resource resource) { this.resources.remove(resource); resource.getRepresentatives().remove(this); diff --git a/src/main/java/eu/bbmri_eric/negotiator/service/UserNotificationServiceImpl.java b/src/main/java/eu/bbmri_eric/negotiator/service/UserNotificationServiceImpl.java index 5e116b8a5..4e03f1dd6 100644 --- a/src/main/java/eu/bbmri_eric/negotiator/service/UserNotificationServiceImpl.java +++ b/src/main/java/eu/bbmri_eric/negotiator/service/UserNotificationServiceImpl.java @@ -38,7 +38,7 @@ public class UserNotificationServiceImpl implements UserNotificationService { private static Set getResourcesInNegotiationRepresentedBy( Negotiation negotiation, Person representative) { - Set overlappingResources = representative.getResources(); + Set overlappingResources = new HashSet<>(representative.getResources()); overlappingResources.retainAll(negotiation.getResources()); return overlappingResources; } From d70f621bbaf02fddb0e48b97fa22d2d0f3b3dabf Mon Sep 17 00:00:00 2001 From: RadovanTomik Date: Wed, 20 Mar 2024 15:15:48 +0100 Subject: [PATCH 2/2] fix(Person): make getResources return unmodifiable set Signed-off-by: RadovanTomik --- .../java/eu/bbmri_eric/negotiator/database/model/Person.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java b/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java index 3468e75e6..2dd1b1c5a 100644 --- a/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java +++ b/src/main/java/eu/bbmri_eric/negotiator/database/model/Person.java @@ -95,7 +95,10 @@ public void addResource(Resource resource) { } public Set getResources() { - return Collections.unmodifiableSet(resources); + if (Objects.isNull(this.resources)) { + return Set.of(); + } + return Collections.unmodifiableSet(this.resources); } public void removeResource(Resource resource) {