diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java index 333516967842411a19f933ecfe6220361e31f792..f041f16ad9815b734d20f1b8845580b1b00d1a58 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java @@ -15,12 +15,12 @@ */ package ch.ethz.sis.openbis.generic.server.asapi.v3.utils; -import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.OperationContext; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext; import ch.systemsx.cisd.common.exceptions.UserFailureException; public class ExceptionUtils { - public static RuntimeException create(OperationContext context, Throwable t) + public static RuntimeException create(IOperationContext context, Throwable t) { if (t instanceof UserFailureException) { @@ -29,7 +29,7 @@ public class ExceptionUtils return new RuntimeException(createMessage(context, t), t); } - private static String createMessage(OperationContext context, Throwable t) + private static String createMessage(IOperationContext context, Throwable t) { String message = t.getMessage() == null ? t.toString() : t.getMessage(); return message + " (Context: " + context.getProgressStack().toString() + ")"; 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 faaf4aaf78e1a961db55ca1a50bf1640a983416c..cf7dfbb91789c6ef1e565d36b81c7543d3780e46 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 @@ -55,6 +55,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.OperationContext; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset.ICreateDataSetExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample.ListSampleTechIdByIdentifier; +import ch.ethz.sis.openbis.generic.server.asapi.v3.utils.ExceptionUtils; import ch.rinn.restrictions.Private; import ch.systemsx.cisd.authentication.DefaultSessionManager; import ch.systemsx.cisd.authentication.DummyAuthenticationService; @@ -1419,7 +1420,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD DATASET_FETCH_OPTIONS_FILE_DATASETS); return SimpleDataSetHelper.filterAndTranslate(dataSets); } - + @Override @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public List<SimpleDataSetInformationDTO> listPhysicalDataSetsWithUnknownSize(String sessionToken, String dataStoreCode, int chunkSize, @@ -2638,8 +2639,15 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD creations.add(creation); } - List<DataSetPermId> ids = createDataSetExecutor.create(context, creations); - return ids.size(); + try + { + List<DataSetPermId> ids = createDataSetExecutor.create(context, creations); + daoFactory.getSessionFactory().getCurrentSession().flush(); + return ids.size(); + } catch (Throwable t) + { + throw ExceptionUtils.create(context, t); + } } private void injectSampleId(DataSetCreation creation, NewExternalData newData)