diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java index 7ab4bb22958426418807b316b66d8c4500e87b3a..4472bcfcad15b4088d898c1e30644065454a9002 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java @@ -1144,6 +1144,27 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD MetaprojectTranslator.translate(metaprojects), managedPropertyEvaluatorFactory); } + @Override + @RolesAllowed(value = + { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + public AbstractExternalData tryGetThinDataSet(String sessionToken, String dataSetCode) throws UserFailureException + { + assert sessionToken != null : "Unspecified session token."; + assert dataSetCode != null : "Unspecified data set code."; + + Session session = getSession(sessionToken); // assert authenticated + + IDataBO dataBO = businessObjectFactory.createDataBO(session); + dataBO.loadByCode(dataSetCode); + DataPE dataPE = dataBO.tryGetData(); + if (null == dataPE) + { + return null; + } + return DataSetTranslator.translate(dataPE, session.getBaseIndexURL(), + Collections.<Metaproject> emptyList(), managedPropertyEvaluatorFactory); + } + @Override @RolesAllowed(RoleWithHierarchy.INSTANCE_ADMIN) public void checkInstanceAdminAuthorization(String sessionToken) throws UserFailureException diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java index afb07a8f07472b29dc12c08885427d74c57e4b94..d5041d48e16d34b3d8c35c8976fe2ce7b08daa26 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerLogger.java @@ -356,6 +356,13 @@ public class ServiceForDataStoreServerLogger extends AbstractServerLogger implem return null; } + @Override + public AbstractExternalData tryGetThinDataSet(String sessionToken, String dataSetCode) throws UserFailureException + { + logAccess(sessionToken, "tryGetThinDataSet", "DATA_SET(%s)", dataSetCode); + return null; + } + @Override public AbstractExternalData tryGetLocalDataSet(String sessionToken, String dataSetCode, String dataStore) throws UserFailureException diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java index ad7173e12cda8752c06abc77b1a2901aa5e62004..5e4febeb2b6e6d3cb697ce2f5fc947a7a82ee274 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IServiceForDataStoreServer.java @@ -362,6 +362,13 @@ public interface IServiceForDataStoreServer extends IServer, ISessionProvider public AbstractExternalData tryGetDataSet(String sessionToken, String dataSetCode) throws UserFailureException; + /** + * Tries to return the data set specified by its code, but without any fetch options. + */ + @Transactional(readOnly = true) + public AbstractExternalData tryGetThinDataSet(String sessionToken, String dataSetCode) + throws UserFailureException; + /** * Tries to return the data set specified by its code, but only if it belongs to the data store of the caller. */