From 99407eabba6f246432cd34e86be3bd099a4a1d7c Mon Sep 17 00:00:00 2001
From: alaskowski <alaskowski@ethz.ch>
Date: Tue, 1 Aug 2023 14:20:12 +0200
Subject: [PATCH] SSDM-55: Fixed SamplePropertyTranslator

---
 .../translator/property/SamplePropertyTranslator.java | 11 +++++++----
 .../systemtest/asapi/v3/UpdateDataSetTest.java        |  6 ++++--
 .../systemtest/asapi/v3/UpdateExperimentTest.java     |  8 ++++----
 .../openbis/systemtest/asapi/v3/UpdateSampleTest.java |  6 ++++--
 4 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/SamplePropertyTranslator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/SamplePropertyTranslator.java
index 158cda52d2e..fcd83e2a3a6 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/SamplePropertyTranslator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/SamplePropertyTranslator.java
@@ -56,11 +56,14 @@ public abstract class SamplePropertyTranslator extends
         Map<Long, Map<String, List<Sample>>> samplePropertiesTmp = new HashMap<Long, Map<String, List<Sample>>>();
 
         for (SamplePropertyRecord record : records) {
-            Map<String, List<Sample>> properties =
-                    samplePropertiesTmp.computeIfAbsent(record.objectId, k -> new HashMap<>());
             Sample sample = samples.get(record.propertyValue);
-            properties.computeIfAbsent(record.propertyCode, x -> new ArrayList<>());
-            properties.get(record.propertyCode).add(sample);
+            if(sample != null)
+            {
+                Map<String, List<Sample>> properties =
+                        samplePropertiesTmp.computeIfAbsent(record.objectId, k -> new HashMap<>());
+                properties.computeIfAbsent(record.propertyCode, x -> new ArrayList<>());
+                properties.get(record.propertyCode).add(sample);
+            }
         }
 
         for(Map.Entry<Long, Map<String, List<Sample>>> entry : samplePropertiesTmp.entrySet()) {
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java
index 9c19f0fae51..54ff31f8483 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java
@@ -1211,7 +1211,8 @@ public class UpdateDataSetTest extends AbstractDataSetTest
         fetchOptions.withSampleProperties();
         DataSet dataSet = v3api.getDataSets(sessionToken, Arrays.asList(dataSetPermId), fetchOptions).get(dataSetPermId);
         assertEquals(dataSet.getProperties().toString(), "{" + propertyType.getPermId() + "=200811050924898-997}");
-        assertEquals(dataSet.getSampleProperties().toString(), "{" + propertyType.getPermId() + "=Sample 200811050924898-997}");
+        assertEquals(dataSet.getSampleProperties().get(propertyType.getPermId()).length, 1);
+        assertEquals(dataSet.getSampleProperties().get(propertyType.getPermId())[0].toString(), "Sample 200811050924898-997");
     }
 
     @Test
@@ -1241,7 +1242,8 @@ public class UpdateDataSetTest extends AbstractDataSetTest
         fetchOptions.withHistory().withAuthor();
         DataSet dataSet = v3api.getDataSets(sessionToken, Arrays.asList(dataSetPermId), fetchOptions).get(dataSetPermId);
         assertEquals(dataSet.getProperties().toString(), "{" + propertyType.getPermId() + "=200811050924898-997}");
-        assertEquals(dataSet.getSampleProperties().toString(), "{" + propertyType.getPermId() + "=Sample 200811050924898-997}");
+        assertEquals(dataSet.getSampleProperties().get(propertyType.getPermId()).length, 1);
+        assertEquals(dataSet.getSampleProperties().get(propertyType.getPermId())[0].toString(), "Sample 200811050924898-997");
 
         List<HistoryEntry> history = dataSet.getHistory();
         assertEquals(history.size(), 3);
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java
index 0d9f8c5aa99..a3b707013a2 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java
@@ -1157,8 +1157,8 @@ public class UpdateExperimentTest extends AbstractExperimentTest
                         .get(experimentPermId);
         assertEquals(experiment.getProperties().toString(),
                 "{" + propertyType.getPermId() + "=200811050924898-997}");
-        assertEquals(experiment.getSampleProperties().toString(),
-                "{" + propertyType.getPermId() + "=Sample 200811050924898-997}");
+        assertEquals(experiment.getSampleProperties().get(propertyType.getPermId()).length, 1);
+        assertEquals(experiment.getSampleProperties().get(propertyType.getPermId())[0].toString(), "Sample 200811050924898-997");
     }
 
     @Test
@@ -1193,8 +1193,8 @@ public class UpdateExperimentTest extends AbstractExperimentTest
                         .get(experimentPermId);
         assertEquals(experiment.getProperties().toString(),
                 "{" + propertyType.getPermId() + "=200811050924898-997}");
-        assertEquals(experiment.getSampleProperties().toString(),
-                "{" + propertyType.getPermId() + "=Sample 200811050924898-997}");
+        assertEquals(experiment.getSampleProperties().get(propertyType.getPermId()).length, 1);
+        assertEquals(experiment.getSampleProperties().get(propertyType.getPermId())[0].toString(), "Sample 200811050924898-997");
 
         List<HistoryEntry> history = experiment.getHistory();
         assertEquals(history.size(), 3);
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java
index 44a32afc172..3bb6351d55c 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java
@@ -918,7 +918,8 @@ public class UpdateSampleTest extends AbstractSampleTest
         fetchOptions.withHistory().withAuthor();
         Sample sample = v3api.getSamples(sessionToken, Arrays.asList(samplePermId), fetchOptions).get(samplePermId);
         assertEquals(sample.getProperties().toString(), "{" + propertyType.getPermId() + "=200811050924898-997}");
-        assertEquals(sample.getSampleProperties().toString(), "{" + propertyType.getPermId() + "=Sample 200811050924898-997}");
+        assertEquals(sample.getSampleProperties().get(propertyType.getPermId()).length, 1);
+        assertEquals(sample.getSampleProperties().get(propertyType.getPermId())[0].toString(), "Sample 200811050924898-997");
 
         List<HistoryEntry> history = sample.getHistory();
         assertEquals(history.size(), 1);
@@ -952,7 +953,8 @@ public class UpdateSampleTest extends AbstractSampleTest
         fetchOptions.withHistory().withAuthor();
         Sample sample = v3api.getSamples(sessionToken, Arrays.asList(samplePermId), fetchOptions).get(samplePermId);
         assertEquals(sample.getProperties().toString(), "{" + propertyType.getPermId() + "=200811050924898-997}");
-        assertEquals(sample.getSampleProperties().toString(), "{" + propertyType.getPermId() + "=Sample 200811050924898-997}");
+        assertEquals(sample.getSampleProperties().get(propertyType.getPermId()).length, 1);
+        assertEquals(sample.getSampleProperties().get(propertyType.getPermId())[0].toString(), "Sample 200811050924898-997");
 
         List<HistoryEntry> history = sample.getHistory();
         assertEquals(history.size(), 2);
-- 
GitLab