From 4a07cf954dc7160cdf515e19c6c873341a4f06e7 Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Tue, 24 May 2016 14:26:01 +0000 Subject: [PATCH] SSDM-3543 : V3 AS API - improve context information in exceptions - show context information when V3 based data set registration via dropbox fails SVN: 36567 --- .../server/asapi/v3/utils/ExceptionUtils.java | 6 +++--- .../generic/server/ServiceForDataStoreServer.java | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) 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 33351696784..f041f16ad98 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 faaf4aaf78e..cf7dfbb9178 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) -- GitLab