From 5f7999f6aaf243f9eaadb684dc5200aeeff662bf Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Mon, 26 Mar 2018 08:25:36 +0200
Subject: [PATCH] SSDM-2366: bug fixed in CreateDataSetTypesExecutor.
 ReportingServiceTest fixed.

---
 .../api/v3/ReportingServiceTest.java          |  1 +
 .../dataset/CreateDataSetTypesExecutor.java   | 15 ++++++++++++--
 .../AbstractCreateEntityTypeExecutor.java     |  2 +-
 .../CommonAuthorizationSystemTestService.java | 20 +++++++++++++++++++
 4 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/ReportingServiceTest.java b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/ReportingServiceTest.java
index 624c038e39e..09141aa5def 100644
--- a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/ReportingServiceTest.java
+++ b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/ReportingServiceTest.java
@@ -110,6 +110,7 @@ public class ReportingServiceTest extends AbstractFileTest
         List<String> allDataSetTypeCodes = as.searchDataSetTypes(sessionToken, new DataSetTypeSearchCriteria(),
                 new DataSetTypeFetchOptions()).getObjects().stream().map(t -> t.getCode()).collect(Collectors.toList());
         Collections.sort(allDataSetTypeCodes);
+        System.err.println(allDataSetTypeCodes);
 
         // When
         List<ReportingService> services = as.searchReportingServices(sessionToken, searchCriteria, fetchOptions).getObjects();
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetTypesExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetTypesExecutor.java
index c938d62c3e6..1454df00f72 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetTypesExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetTypesExecutor.java
@@ -16,12 +16,15 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset;
 
+import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetTypeCreation;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.AbstractCreateEntityTypeExecutor;
+import ch.systemsx.cisd.openbis.generic.server.DataStoreServiceRegistrator;
+import ch.systemsx.cisd.openbis.generic.server.IDataStoreServiceRegistrator;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypeBO;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
@@ -32,12 +35,19 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
  */
 @Component
 public class CreateDataSetTypesExecutor extends AbstractCreateEntityTypeExecutor<DataSetTypeCreation, DataSetType, DataSetTypePE>
-        implements ICreateDataSetTypeExecutor
+        implements ICreateDataSetTypeExecutor, InitializingBean
 {
-
     @Autowired
     private IDataSetTypeAuthorizationExecutor authorizationExecutor;
 
+    private IDataStoreServiceRegistrator dataStoreServiceRegistrator;
+
+    @Override
+    public void afterPropertiesSet() throws Exception
+    {
+        dataStoreServiceRegistrator = new DataStoreServiceRegistrator(daoFactory);
+    }
+
     @Override
     protected ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind getPEEntityKind()
     {
@@ -75,6 +85,7 @@ public class CreateDataSetTypesExecutor extends AbstractCreateEntityTypeExecutor
         IEntityTypeBO typeBO = businessObjectFactory.createEntityTypeBO(context.getSession());
         typeBO.define(type);
         typeBO.save();
+        dataStoreServiceRegistrator.register(type);
     }
 
     @Override
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractCreateEntityTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractCreateEntityTypeExecutor.java
index 4961683ca57..0acad5bb582 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractCreateEntityTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractCreateEntityTypeExecutor.java
@@ -58,7 +58,7 @@ public abstract class AbstractCreateEntityTypeExecutor<CREATION extends IEntityT
 {
 
     @Autowired
-    private IDAOFactory daoFactory;
+    protected IDAOFactory daoFactory;
 
     @Resource(name = ComponentNames.COMMON_BUSINESS_OBJECT_FACTORY)
     protected ICommonBusinessObjectFactory businessObjectFactory;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/CommonAuthorizationSystemTestService.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/CommonAuthorizationSystemTestService.java
index 925891f6641..57c6a533170 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/CommonAuthorizationSystemTestService.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/CommonAuthorizationSystemTestService.java
@@ -26,10 +26,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+import ch.systemsx.cisd.openbis.generic.server.DataStoreServiceRegistrator;
+import ch.systemsx.cisd.openbis.generic.server.IDataStoreServiceRegistrator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Deletion;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletionType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
@@ -66,6 +69,17 @@ public class CommonAuthorizationSystemTestService
     private ICommonServer commonServer;
 
     private List<IIdHolder> createdObjects;
+    
+    private IDataStoreServiceRegistrator dataStoreServiceRegistrator;
+    
+    private IDataStoreServiceRegistrator getDataStoreServiceRegistrator()
+    {
+        if (dataStoreServiceRegistrator == null)
+        {
+            dataStoreServiceRegistrator = new DataStoreServiceRegistrator(daoFactory);
+        }
+        return dataStoreServiceRegistrator;
+    }
 
     @Transactional
     public void createPerson(PersonPE person)
@@ -115,6 +129,12 @@ public class CommonAuthorizationSystemTestService
     public void createType(EntityTypePE entityType, EntityKind entityKind)
     {
         daoFactory.getEntityTypeDAO(entityKind).createOrUpdateEntityType(entityType);
+        if (EntityKind.DATA_SET.equals(entityKind))
+        {
+            DataSetType dataSetType = new DataSetType();
+            dataSetType.setCode(entityType.getCode());
+            getDataStoreServiceRegistrator().register(dataSetType);
+        }
         createdObjects.add(entityType);
     }
 
-- 
GitLab