X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fweb%2FCmsWebApp.java;h=a4088eedccbb61188b6807ab6c8fcdf8b10cfd22;hb=b5644c1dac96afe8b9bdcd68068c054a9f780926;hp=03ac353df248ab5952daa0ad559747d477131532;hpb=10f1603677f125c014c06cfd3ab956b5589d6e55;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java b/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java index 03ac353df..a4088eedc 100644 --- a/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java +++ b/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java @@ -9,17 +9,20 @@ import org.apache.commons.logging.LogFactory; import org.argeo.cms.ui.CmsApp; import org.argeo.cms.ui.CmsAppListener; import org.argeo.cms.ui.CmsTheme; +import org.argeo.cms.ui.CmsView; import org.argeo.util.LangUtils; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.Application; import org.eclipse.rap.rwt.application.ApplicationConfiguration; +import org.eclipse.rap.rwt.application.ExceptionHandler; import org.eclipse.rap.rwt.client.WebClient; +import org.eclipse.swt.widgets.Display; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; import org.osgi.service.event.EventAdmin; /** An RWT web app integrating with a {@link CmsApp}. */ -public class CmsWebApp implements ApplicationConfiguration, CmsAppListener { +public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, CmsAppListener { private final static Log log = LogFactory.getLog(CmsWebApp.class); private BundleContext bundleContext; @@ -59,6 +62,18 @@ public class CmsWebApp implements ApplicationConfiguration, CmsAppListener { } + @Override + public void handleException(Throwable throwable) { + Display display = Display.getCurrent(); + if (display != null && !display.isDisposed()) { + CmsView cmsView = CmsView.getCmsView(display.getActiveShell()); + cmsView.exception(throwable); + } else { + log.error("Unexpected exception outside an UI thread", throwable); + } + + } + protected void addEntryPoints(Application application, Map commonProperties) { for (String uiName : cmsApp.getUiNames()) { Map properties = new HashMap<>(commonProperties);