From 913692f94724449ff6647bdddb074a705ca377e8 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Wed, 10 Aug 2016 09:22:57 +0200 Subject: [PATCH 01/10] lock session on error showing error notification Signed-off-by: Michael Hirsch --- .../hawkbit/ui/components/HawkbitUIErrorHandler.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 7729b72a4..bd56aba42 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -21,6 +21,7 @@ import com.google.common.base.Optional; import com.vaadin.server.DefaultErrorHandler; import com.vaadin.server.ErrorEvent; import com.vaadin.server.Page; +import com.vaadin.server.VaadinSession; import com.vaadin.ui.Component; /** @@ -40,7 +41,13 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { if (originError.isPresent()) { final HawkbitErrorNotificationMessage message = buildNotification(getRootExceptionFrom(event)); - message.show(originError.get()); + final VaadinSession current = VaadinSession.getCurrent(); + current.lock(); + try { + message.show(originError.get()); + } finally { + current.unlock(); + } } } From 9cc63ce1281e8f7818a6e9ad4ab803b2af789478 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 13:25:24 +0200 Subject: [PATCH 02/10] Refactor UI Error Handler. Need to put UI in constructor. So the message is shown in the same browser window. Signed-off-by: Melanie Retter --- .../ui/components/HawkbitUIErrorHandler.java | 24 ++++++++++++++++--- .../targettable/BulkUploadHandler.java | 9 ++++--- .../TargetBulkUpdateWindowLayout.java | 3 ++- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 7729b72a4..643d662eb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -18,10 +18,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Optional; +import com.vaadin.server.ClientConnector.ConnectorErrorEvent; import com.vaadin.server.DefaultErrorHandler; import com.vaadin.server.ErrorEvent; import com.vaadin.server.Page; +import com.vaadin.shared.Connector; +import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Component; +import com.vaadin.ui.Notification.Type; +import com.vaadin.ui.UI; /** * Default handler for SP UI. @@ -38,10 +43,23 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { final Optional originError = getPageOriginError(event); + final HawkbitErrorNotificationMessage message = buildNotification(getRootExceptionFrom(event)); + if (originError.isPresent()) { - final HawkbitErrorNotificationMessage message = buildNotification(getRootExceptionFrom(event)); - message.show(originError.get()); + final Connector connector = ((ConnectorErrorEvent) event).getConnector(); + // in case of BulkUpload + if (connector instanceof UI) { + ((UI) (((ConnectorErrorEvent) event).getConnector())).access(() -> message.show(originError.get())); + return; + } + // Other UI components + if (connector instanceof AbstractComponent) { + ((AbstractComponent) connector).getUI().access(() -> message.show(originError.get())); + return; + } } + // Default + HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), Type.HUMANIZED_MESSAGE); } private static Throwable getRootExceptionFrom(final ErrorEvent event) { @@ -66,7 +84,7 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { return Optional.fromNullable(errorOrigin.getUI().getPage()); } - return Optional.of(Page.getCurrent()); + return Optional.absent(); } protected HawkbitErrorNotificationMessage buildNotification(final Throwable exception) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java index 83082be01..116853afb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java @@ -100,6 +100,7 @@ public class BulkUploadHandler extends CustomComponent final TargetBulkUpdateWindowLayout targetBulkUpdateWindowLayout; private transient EntityFactory entityFactory; + private final UI uiInstance; /** * @@ -111,8 +112,9 @@ public class BulkUploadHandler extends CustomComponent */ public BulkUploadHandler(final TargetBulkUpdateWindowLayout targetBulkUpdateWindowLayout, final TargetManagement targetManagement, final ManagementUIState managementUIState, - final DeploymentManagement deploymentManagement, final I18N i18n) { + final DeploymentManagement deploymentManagement, final I18N i18n, final UI uiInstance) { this.targetBulkUpdateWindowLayout = targetBulkUpdateWindowLayout; + this.uiInstance = uiInstance; this.comboBox = targetBulkUpdateWindowLayout.getDsNamecomboBox(); this.descTextArea = targetBulkUpdateWindowLayout.getDescTextArea(); this.targetManagement = targetManagement; @@ -213,7 +215,6 @@ public class BulkUploadHandler extends CustomComponent * below event. */ eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.BULK_UPLOAD_PROCESS_STARTED)); - while ((line = reader.readLine()) != null) { innerCounter++; readEachLine(line, innerCounter, totalFileSize); @@ -222,9 +223,7 @@ public class BulkUploadHandler extends CustomComponent } catch (final IOException e) { LOG.error("Error reading file {}", tempFile.getName(), e); } catch (final RuntimeException e) { - if (UI.getCurrent() != null) { - UI.getCurrent().getErrorHandler().error(new com.vaadin.server.ErrorEvent(e)); - } + uiInstance.getErrorHandler().error(new ConnectorErrorEvent(uiInstance, e)); } finally { deleteFile(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java index b77576411..bfc889e7f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java @@ -52,6 +52,7 @@ import com.vaadin.ui.Label; import com.vaadin.ui.Link; import com.vaadin.ui.ProgressBar; import com.vaadin.ui.TextArea; +import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; import com.vaadin.ui.themes.ValoTheme; @@ -174,7 +175,7 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { private BulkUploadHandler getBulkUploadHandler() { final BulkUploadHandler bulkUploadHandler = new BulkUploadHandler(this, targetManagement, managementUIState, - deploymentManagement, i18n); + deploymentManagement, i18n, UI.getCurrent()); bulkUploadHandler.buildLayout(); bulkUploadHandler.addStyleName(SPUIStyleDefinitions.BULK_UPLOAD_BUTTON); return bulkUploadHandler; From 6205126279ef807ada376a1577a6a52edb1b651b Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 13:54:28 +0200 Subject: [PATCH 03/10] Lock is only needed when BulkUpload Signed-off-by: Melanie Retter --- .../hawkbit/ui/components/HawkbitUIErrorHandler.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 6eb37df3d..dcea17f8a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -23,7 +23,6 @@ import com.vaadin.server.DefaultErrorHandler; import com.vaadin.server.ErrorEvent; import com.vaadin.server.Page; import com.vaadin.shared.Connector; -import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Component; import com.vaadin.ui.Notification.Type; import com.vaadin.ui.UI; @@ -47,16 +46,14 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { if (originError.isPresent()) { final Connector connector = ((ConnectorErrorEvent) event).getConnector(); - // in case of BulkUpload + // in case of BulkUpload: BulkUpload needs a look to show the + // notification if (connector instanceof UI) { ((UI) (((ConnectorErrorEvent) event).getConnector())).access(() -> message.show(originError.get())); return; } - // Other UI components - if (connector instanceof AbstractComponent) { - ((AbstractComponent) connector).getUI().access(() -> message.show(originError.get())); - return; - } + message.show(originError.get()); + return; } // Default HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), Type.HUMANIZED_MESSAGE); From ff39ecfc753432c8653b1b8f8d51a4bddb050b03 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 14:15:19 +0200 Subject: [PATCH 04/10] Correct typo Signed-off-by: Melanie Retter --- .../eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index dcea17f8a..127063243 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -46,7 +46,7 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { if (originError.isPresent()) { final Connector connector = ((ConnectorErrorEvent) event).getConnector(); - // in case of BulkUpload: BulkUpload needs a look to show the + // in case of BulkUpload: BulkUpload needs a lock to show the // notification if (connector instanceof UI) { ((UI) (((ConnectorErrorEvent) event).getConnector())).access(() -> message.show(originError.get())); From 0d632d598a07a0918197e701cfd3155a43042bd5 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 14:33:34 +0200 Subject: [PATCH 05/10] Delete empty rows in Java Doc Signed-off-by: Melanie Retter --- .../eclipse/hawkbit/repository/jpa/RolloutManagementTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java index b5cc84c9e..a23ada6e6 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java @@ -56,9 +56,6 @@ import ru.yandex.qatools.allure.annotations.Stories; /** * Junit tests for RolloutManagment. - * - * @author Michael Hirsch - * */ @Features("Component Tests - Repository") @Stories("Rollout Management") @@ -923,7 +920,6 @@ public class RolloutManagementTest extends AbstractJpaIntegrationTest { private void validateStatus(final TotalTargetCountStatus totalTargetCountStatus, final Map expectedTotalCountStates) { - for (final Map.Entry entry : expectedTotalCountStates.entrySet()) { final Long countReady = totalTargetCountStatus.getTotalTargetCountByStatus(entry.getKey()); assertThat(countReady).isEqualTo(entry.getValue()); From 92fb82129acdf5e15ad07a083c8552d9971894c6 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 16:05:22 +0200 Subject: [PATCH 06/10] Refactoring HawkbitUiErrorHandler Signed-off-by: Melanie Retter --- .../hawkbit/ui/components/HawkbitUIErrorHandler.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 127063243..209e84790 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -46,16 +46,13 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { if (originError.isPresent()) { final Connector connector = ((ConnectorErrorEvent) event).getConnector(); - // in case of BulkUpload: BulkUpload needs a lock to show the - // notification if (connector instanceof UI) { - ((UI) (((ConnectorErrorEvent) event).getConnector())).access(() -> message.show(originError.get())); + ((UI) connector).access(() -> message.show(originError.get())); return; } message.show(originError.get()); return; } - // Default HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), Type.HUMANIZED_MESSAGE); } @@ -86,10 +83,6 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { protected HawkbitErrorNotificationMessage buildNotification(final Throwable exception) { LOG.error("Error in UI: ", exception); - return createHawkbitErrorNotificationMessage(exception); - } - - protected HawkbitErrorNotificationMessage createHawkbitErrorNotificationMessage(final Throwable exception) { final I18N i18n = SpringContextHelper.getBean(I18N.class); return new HawkbitErrorNotificationMessage(STYLE, i18n.get("caption.error"), i18n.get("message.error.temp", exception.getClass().getSimpleName()), false); From 643eb238395c5b9e5df7e8922e6f9ce687ea18d4 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 16:25:12 +0200 Subject: [PATCH 07/10] Revert method deletion Signed-off-by: Melanie Retter --- .../eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 209e84790..15159cc8c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -83,6 +83,10 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { protected HawkbitErrorNotificationMessage buildNotification(final Throwable exception) { LOG.error("Error in UI: ", exception); + return createHawkbitErrorNotificationMessage(exception); + } + + protected HawkbitErrorNotificationMessage createHawkbitErrorNotificationMessage(final Throwable exception) { final I18N i18n = SpringContextHelper.getBean(I18N.class); return new HawkbitErrorNotificationMessage(STYLE, i18n.get("caption.error"), i18n.get("message.error.temp", exception.getClass().getSimpleName()), false); From c3145bed58885f8675b38e06ac6025dad316cc57 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 11 Aug 2016 17:51:39 +0200 Subject: [PATCH 08/10] Refactor: Log message can be overwritten Signed-off-by: Melanie Retter --- .../ui/components/HawkbitUIErrorHandler.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 15159cc8c..229f85bf5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -61,13 +61,13 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { return getRootCauseOf(event.getThrowable()); } - private static Throwable getRootCauseOf(final Throwable exception) { + private static Throwable getRootCauseOf(final Throwable ex) { - if (exception.getCause() != null) { - return getRootCauseOf(exception.getCause()); + if (ex.getCause() != null) { + return getRootCauseOf(ex.getCause()); } - return exception; + return ex; } private static Optional getPageOriginError(final ErrorEvent event) { @@ -81,15 +81,16 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { return Optional.absent(); } - protected HawkbitErrorNotificationMessage buildNotification(final Throwable exception) { - LOG.error("Error in UI: ", exception); - return createHawkbitErrorNotificationMessage(exception); - } + protected HawkbitErrorNotificationMessage buildNotification(final Throwable ex) { + + log(ex); - protected HawkbitErrorNotificationMessage createHawkbitErrorNotificationMessage(final Throwable exception) { final I18N i18n = SpringContextHelper.getBean(I18N.class); return new HawkbitErrorNotificationMessage(STYLE, i18n.get("caption.error"), - i18n.get("message.error.temp", exception.getClass().getSimpleName()), false); + i18n.get("message.error.temp", ex.getClass().getSimpleName()), false); } + protected void log(final Throwable exception) { + LOG.error("Error in UI: ", exception); + } } From 5d250a03be89f0e3601d2c17ce786e02f6bd1e3f Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Fri, 12 Aug 2016 14:28:25 +0200 Subject: [PATCH 09/10] Refactoring for error handler Signed-off-by: Jonathan Philip Knoblauch --- .../ui/components/HawkbitUIErrorHandler.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 229f85bf5..964ed3646 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -41,19 +41,22 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { public void error(final ErrorEvent event) { final Optional originError = getPageOriginError(event); - final HawkbitErrorNotificationMessage message = buildNotification(getRootExceptionFrom(event)); - if (originError.isPresent()) { + if (!originError.isPresent()) { + HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), + Type.HUMANIZED_MESSAGE); + return; + } + + if (event instanceof ConnectorErrorEvent) { final Connector connector = ((ConnectorErrorEvent) event).getConnector(); if (connector instanceof UI) { ((UI) connector).access(() -> message.show(originError.get())); return; } - message.show(originError.get()); - return; } - HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), Type.HUMANIZED_MESSAGE); + message.show(originError.get()); } private static Throwable getRootExceptionFrom(final ErrorEvent event) { From 971b0aecb6058ce56ded8dac4ac7296c93176e60 Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Fri, 12 Aug 2016 16:08:44 +0200 Subject: [PATCH 10/10] Refactoring error handler Signed-off-by: Jonathan Philip Knoblauch --- .../ui/components/HawkbitUIErrorHandler.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java index 964ed3646..cdbd04034 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/HawkbitUIErrorHandler.java @@ -40,27 +40,26 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { @Override public void error(final ErrorEvent event) { - final Optional originError = getPageOriginError(event); final HawkbitErrorNotificationMessage message = buildNotification(getRootExceptionFrom(event)); - - if (!originError.isPresent()) { - HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), - Type.HUMANIZED_MESSAGE); - return; - } - if (event instanceof ConnectorErrorEvent) { final Connector connector = ((ConnectorErrorEvent) event).getConnector(); if (connector instanceof UI) { - ((UI) connector).access(() -> message.show(originError.get())); + final UI uiInstance = (UI) connector; + uiInstance.access(() -> message.show(uiInstance.getPage())); return; } } - message.show(originError.get()); + + final Optional originError = getPageOriginError(event); + if (originError.isPresent()) { + message.show(originError.get()); + return; + } + + HawkbitErrorNotificationMessage.show(message.getCaption(), message.getDescription(), Type.HUMANIZED_MESSAGE); } private static Throwable getRootExceptionFrom(final ErrorEvent event) { - return getRootCauseOf(event.getThrowable()); } @@ -84,16 +83,18 @@ public class HawkbitUIErrorHandler extends DefaultErrorHandler { return Optional.absent(); } + /** + * Method to build a notification based on an exception. + * + * @param ex + * the throwable + * @return a hawkbit error notification message + */ protected HawkbitErrorNotificationMessage buildNotification(final Throwable ex) { - - log(ex); - + LOG.error("Error in UI: ", ex); final I18N i18n = SpringContextHelper.getBean(I18N.class); return new HawkbitErrorNotificationMessage(STYLE, i18n.get("caption.error"), i18n.get("message.error.temp", ex.getClass().getSimpleName()), false); } - protected void log(final Throwable exception) { - LOG.error("Error in UI: ", exception); - } }