From 3828846674877d5f88284e20475dc9a9ca6d3344 Mon Sep 17 00:00:00 2001
From: rushtong <grushton@broadinstitute.org>
Date: Thu, 11 Jan 2024 13:52:13 -0500
Subject: [PATCH 1/3] handle null datasets on a study update

---
 .../consent/http/service/DatasetRegistrationService.java       | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java b/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java
index b44100da65..dcffcc0914 100644
--- a/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java
+++ b/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java
@@ -738,6 +738,9 @@ public List<Dataset> createdDatasetsFromUpdatedStudy(Study updatedStudy,
       List<DatasetServiceDAO.DatasetUpdate> datasetUpdates) {
     List<Integer> datasetUpdateIds = datasetUpdates.stream()
         .map(DatasetServiceDAO.DatasetUpdate::datasetId).toList();
+    if (updatedStudy.getDatasets() == null) {
+      return List.of();
+    }
     return updatedStudy.getDatasets().stream().filter(
         dataset -> !datasetUpdateIds.contains(dataset.getDataSetId())).toList();
   }

From 08eb5b67f102dba6d7215331585d9b1c6ebaf245 Mon Sep 17 00:00:00 2001
From: rushtong <grushton@broadinstitute.org>
Date: Thu, 11 Jan 2024 13:58:56 -0500
Subject: [PATCH 2/3] handle null dataset updates

---
 .../consent/http/service/DatasetRegistrationService.java     | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java b/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java
index dcffcc0914..a4429f5444 100644
--- a/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java
+++ b/src/main/java/org/broadinstitute/consent/http/service/DatasetRegistrationService.java
@@ -736,8 +736,9 @@ private List<DatasetProperty> convertConsentGroupToDatasetProperties(ConsentGrou
    */
   public List<Dataset> createdDatasetsFromUpdatedStudy(Study updatedStudy,
       List<DatasetServiceDAO.DatasetUpdate> datasetUpdates) {
-    List<Integer> datasetUpdateIds = datasetUpdates.stream()
-        .map(DatasetServiceDAO.DatasetUpdate::datasetId).toList();
+    List<Integer> datasetUpdateIds = (datasetUpdates == null) ?
+        List.of() :
+        datasetUpdates.stream().map(DatasetServiceDAO.DatasetUpdate::datasetId).toList();
     if (updatedStudy.getDatasets() == null) {
       return List.of();
     }

From 024b37dcb5b0e530b2b69cfc074417709f100991 Mon Sep 17 00:00:00 2001
From: rushtong <grushton@broadinstitute.org>
Date: Thu, 11 Jan 2024 13:59:26 -0500
Subject: [PATCH 3/3] test for null conditions

---
 .../http/service/DatasetRegistrationServiceTest.java  | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/test/java/org/broadinstitute/consent/http/service/DatasetRegistrationServiceTest.java b/src/test/java/org/broadinstitute/consent/http/service/DatasetRegistrationServiceTest.java
index f8f0043362..d582a0e8f1 100644
--- a/src/test/java/org/broadinstitute/consent/http/service/DatasetRegistrationServiceTest.java
+++ b/src/test/java/org/broadinstitute/consent/http/service/DatasetRegistrationServiceTest.java
@@ -342,6 +342,17 @@ public void testCreatedDatasetsFromUpdatedStudy() {
     assertEquals(expectedIds, actualIds);
   }
 
+  @Test
+  public void testCreatedDatasetsFromUpdatedStudyNoDatasets() {
+    Study study = mock();
+    List<DatasetUpdate> updatedDatasets = null;
+    initService();
+    when(study.getDatasets()).thenReturn(null);
+    List<Dataset> datasets = datasetRegistrationService.createdDatasetsFromUpdatedStudy(study,
+        updatedDatasets);
+    assertTrue(datasets.isEmpty());
+  }
+
   @Test
   public void testInsertAccessManagement() throws Exception {
     User user = mock();