From e7f9ee82eea034d295959d012fb1771e01047a00 Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Mon, 25 Sep 2023 12:31:35 +0200
Subject: [PATCH] SSDM-14065 : UsageReportingTask fails with NPE if samples
 without space were created

---
 .../generic/server/task/UsageGatherer.java        | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UsageGatherer.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UsageGatherer.java
index 8ee4dfa9099..7d823e5de67 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UsageGatherer.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UsageGatherer.java
@@ -131,7 +131,7 @@ public class UsageGatherer
         fetchOptions.withSpace();
         fetchOptions.withRegistrator();
         List<Sample> samples = service.searchSamples(sessionToken, searchCriteria, fetchOptions).getObjects();
-        Function<Sample, String> spaceExtractor = sample -> sample.getSpace().getCode();
+        Function<Sample, String> spaceExtractor = sample -> sample.getSpace() != null ? sample.getSpace().getCode() : null;
         gatherUsage(usageByUsersAndSpaces, samples, spaceExtractor, UsageInfo::addNewSample);
     }
 
@@ -155,8 +155,15 @@ public class UsageGatherer
                     if (experiment != null)
                     {
                         return experiment.getProject().getSpace().getCode();
-                    } 
-                    return dataSet.getSample().getSpace().getCode();
+                    }
+
+                    Sample sample = dataSet.getSample();
+                    if (sample != null)
+                    {
+                        return sample.getSpace() != null ? sample.getSpace().getCode() : null;
+                    }
+
+                    return null;
                 }
             };
         gatherUsage(usageByUsersAndSpaces, dataSets, spaceExtractor, UsageInfo::addNewDataSet);
@@ -172,7 +179,7 @@ public class UsageGatherer
             if (usageBySpaces != null)
             {
                 String space = spaceExtractor.apply(entity);
-                if (spacesToBeIgnored.contains(space) == false)
+                if (space != null && spacesToBeIgnored.contains(space) == false)
                 {
                     UsageInfo usageInfo = usageBySpaces.get(space);
                     if (usageInfo == null)
-- 
GitLab