From 13659e7ad9d41996455499ab46ec4b5b5771f06b Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 20 Oct 2011 14:56:13 +0000
Subject: [PATCH] LMS-2587 Implementation of Query API uses ICommonServer for
 creating reports, because it does authorization checks.

SVN: 23368
---
 .../generic/server/CommonServiceProvider.java   |  4 +++-
 .../query/server/api/v1/QueryApiServer.java     | 17 +++++++----------
 .../query/shared/api/v1/IQueryApiServer.java    |  9 +--------
 3 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java
index e7c37797f34..cd4e0f90129 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java
@@ -20,6 +20,7 @@ import org.springframework.context.ApplicationContext;
 
 import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
+import ch.systemsx.cisd.openbis.generic.shared.ResourceNames;
 
 /**
  * Provider of common openBIS server services.
@@ -37,7 +38,8 @@ public class CommonServiceProvider
 
     public static ICommonServerForInternalUse getCommonServer()
     {
-        return (ICommonServerForInternalUse) applicationContext.getBean("common-server");
+        return (ICommonServerForInternalUse) applicationContext
+                .getBean(ResourceNames.COMMON_SERVER);
     }
 
     public static IDAOFactory getDAOFactory()
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/api/v1/QueryApiServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/api/v1/QueryApiServer.java
index 5fb2a28b1d2..9834ed6ceaf 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/api/v1/QueryApiServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/api/v1/QueryApiServer.java
@@ -29,12 +29,11 @@ import org.springframework.stereotype.Component;
 
 import ch.systemsx.cisd.common.spring.IInvocationLoggerContext;
 import ch.systemsx.cisd.openbis.generic.server.AbstractServer;
-import ch.systemsx.cisd.openbis.generic.server.ComponentNames;
-import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory;
-import ch.systemsx.cisd.openbis.generic.server.business.bo.IDataSetTable;
+import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell;
@@ -47,7 +46,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServicePE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 import ch.systemsx.cisd.openbis.plugin.query.shared.IQueryServer;
 import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.IQueryApiServer;
@@ -68,8 +66,8 @@ public class QueryApiServer extends AbstractServer<IQueryApiServer> implements I
     @Resource(name = ch.systemsx.cisd.openbis.plugin.query.shared.ResourceNames.QUERY_PLUGIN_SERVER)
     private IQueryServer queryServer;
 
-    @Resource(name = ComponentNames.COMMON_BUSINESS_OBJECT_FACTORY)
-    private ICommonBusinessObjectFactory boFactory;
+    @Resource(name = ch.systemsx.cisd.openbis.generic.shared.ResourceNames.COMMON_SERVER)
+    private ICommonServer commonServer;
 
     public IQueryApiServer createLogger(IInvocationLoggerContext context)
     {
@@ -153,10 +151,9 @@ public class QueryApiServer extends AbstractServer<IQueryApiServer> implements I
     public QueryTableModel createReportFromDataSets(String sessionToken, String dataStoreCode,
             String serviceKey, List<String> dataSetCodes)
     {
-        Session session = getSession(sessionToken);
-        IDataSetTable dataSetTable = boFactory.createDataSetTable(session);
-        return translate(dataSetTable.createReportFromDatasets(serviceKey, dataStoreCode,
-                dataSetCodes));
+        return translate(commonServer.createReportFromDatasets(sessionToken,
+                DatastoreServiceDescription.reporting(serviceKey, "", new String[0], dataStoreCode,
+                        null), dataSetCodes));
     }
 
     public int getMajorVersion()
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/IQueryApiServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/IQueryApiServer.java
index 82db59af362..cd609b74a3d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/IQueryApiServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/IQueryApiServer.java
@@ -22,10 +22,6 @@ import java.util.Map;
 import org.springframework.transaction.annotation.Transactional;
 
 import ch.systemsx.cisd.common.api.IRpcService;
-import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.AuthorizationGuard;
-import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed;
-import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.DataSetCodeCollectionPredicate;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
 import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryDescription;
 import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryTableModel;
 import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.ReportDescription;
@@ -91,10 +87,7 @@ public interface IQueryApiServer extends IRpcService
      * @param serviceKey Key of the data store service.
      */
     @Transactional(readOnly = true)
-    @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
     public QueryTableModel createReportFromDataSets(String sessionToken, String dataStoreCode,
-            String serviceKey,
-            @AuthorizationGuard(guardClass = DataSetCodeCollectionPredicate.class)
-            List<String> dataSetCodes);
+            String serviceKey, List<String> dataSetCodes);
 
 }
-- 
GitLab