diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java index b13f39b08549f2acc42b8ff9351d935a301b8bad..da2c68c2da03b0bdff57788ddca52c0f8e736ec5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java @@ -70,20 +70,21 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T> final AbstractAsyncCallback<Object> callback, final String failureMessage, final Throwable throwable) { - + String message = GWTUtils.translateToHtmlLineBreaks(failureMessage); if (throwable instanceof UserFailureException) { UserFailureException userException = (UserFailureException) throwable; - String details = userException.getDetails(); + String details = + GWTUtils.translateToHtmlLineBreaks(userException.getDetails()); if (details != null) { GWTUtils.createErrorMessageWithDetailsDialog(messageProvider, - failureMessage, details).show(); + message, details).show(); return; } } // no details - show simple error message box - MessageBox.alert("Error", failureMessage, null); + MessageBox.alert("Error", message, null); } }; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java index 936db0dfabbe013a23acd38f8984941f9befc082..bd7c3df808002ba27033565f7692be857b3f8110 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java @@ -313,9 +313,9 @@ public final class GWTUtils component.setToolTip(config); } - public static String translateToHtmlLineBreaks(String text) + public static String translateToHtmlLineBreaks(String textOrNull) { - return text.replace("\n", "<br>"); + return textOrNull != null ? textOrNull.replace("\n", "<br>") : null; } /** @return specified model from the list if it's found, null otherwise */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index c0eabd56c185ac7d21f4a850477306561d913512..7dc1af66d712a99214d99a234c481bd01fcc0747 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -2218,7 +2218,14 @@ public final class CommonClientService extends AbstractClientService implements public void revertDeletions(List<TechId> deletionIds) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { - commonServer.revertDeletions(getSessionToken(), deletionIds); + try + { + commonServer.revertDeletions(getSessionToken(), deletionIds); + } catch (UserFailureException ex) + { + throw new ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException( + ex.getMessage() + "\n\nTry reverting the dependent deletion first."); + } } public void deletePermanently(List<TechId> deletionIds)