From a5664db4ca6bb73bb796ffe95f842876f336cd6e Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Wed, 29 Nov 2017 13:38:37 +0000
Subject: [PATCH] SSDM-5721: allow unspecified person id in PersonUpdate in
 case of session user

SVN: 38989
---
 .../v3/executor/person/UpdatePersonExecutor.java     | 12 ++++++++++++
 .../systemtest/asapi/v3/UpdatePersonTest.java        |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/person/UpdatePersonExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/person/UpdatePersonExecutor.java
index 2751d02dc8a..d7d592221ba 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/person/UpdatePersonExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/person/UpdatePersonExecutor.java
@@ -34,6 +34,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.AbstractUpdateEntityExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.CommonUtils;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.batch.MapBatch;
+import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.DataAccessExceptionTranslator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IRoleAssignmentDAO;
@@ -75,6 +76,17 @@ public class UpdatePersonExecutor
     @Override
     protected void checkData(IOperationContext context, PersonUpdate update)
     {
+        if (update.getPersonId() == null)
+        {
+            PersonPE person = context.getSession().tryGetPerson();
+            if (person != null)
+            {
+                update.setPersonId(new PersonPermId(person.getUserId()));
+            } else
+            {
+                throw new UserFailureException("Person to be updated not specified.");
+            }
+        }
     }
 
     @Override
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePersonTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePersonTest.java
index bddaf75fc03..5c340221bef 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePersonTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePersonTest.java
@@ -108,7 +108,7 @@ public class UpdatePersonTest extends AbstractTest
         String sessionToken = v3api.login(TEST_GROUP_OBSERVER, PASSWORD);
         PersonUpdate personUpdate = new PersonUpdate();
         PersonPermId personId = new PersonPermId(TEST_GROUP_OBSERVER);
-        personUpdate.setPersonId(personId);
+//        personUpdate.setPersonId(personId);
         personUpdate.setHomeSpaceId(new SpacePermId("TESTGROUP"));
         
         // When
-- 
GitLab