X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Frap%2Forg.argeo.cms.swt.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fweb%2FCmsWebEntryPoint.java;h=02e5da3666edd040753a53d34a1331165cac96ad;hb=bd79aaa6f342553778a6051313580ab9841f4d3b;hp=d63aeeea53471ea6a62731daed32cb47129f7168;hpb=92e952dc93d7be465e8b7c03b78a857d33ab5ae0;p=lgpl%2Fargeo-commons.git diff --git a/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java b/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java index d63aeeea5..02e5da366 100644 --- a/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java +++ b/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java @@ -2,6 +2,8 @@ package org.argeo.cms.web; import static org.eclipse.rap.rwt.internal.service.ContextProvider.getApplicationContext; +import java.net.URI; +import java.net.URISyntaxException; import java.security.PrivilegedAction; import java.util.Locale; import java.util.UUID; @@ -17,8 +19,8 @@ import org.argeo.api.cms.CmsLog; import org.argeo.api.cms.CmsSession; import org.argeo.api.cms.ux.CmsImageManager; import org.argeo.api.cms.ux.CmsView; +import org.argeo.cms.CurrentUser; import org.argeo.cms.LocaleUtils; -import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.RemoteAuthCallbackHandler; import org.argeo.cms.servlet.ServletHttpRequest; import org.argeo.cms.servlet.ServletHttpResponse; @@ -241,6 +243,15 @@ public class CmsWebEntryPoint extends AbstractSwtCmsView implements EntryPoint, return cmsSession; } + @Override + public URI toBackendUri(String url) { + try { + return new URI(url); + } catch (URISyntaxException e) { + throw new IllegalArgumentException("Cannot convert " + url, e); + } + } + /* * EntryPoint IMPLEMENTATION */ @@ -265,33 +276,37 @@ public class CmsWebEntryPoint extends AbstractSwtCmsView implements EntryPoint, Subject.doAs(loginContext.getSubject(), new PrivilegedAction() { @Override public Void run() { + // TODO rather loop here, until there is an auth change if (!display.readAndDispatch()) { + // TODO update UI last access here display.sleep(); } return null; } }); - } catch (Throwable e) { - if (e instanceof SWTError) { - SWTError swtError = (SWTError) e; - if (swtError.code == SWT.ERROR_FUNCTION_DISPOSED) { + } catch (SWTError e) { + SWTError swtError = (SWTError) e; + if (swtError.code == SWT.ERROR_FUNCTION_DISPOSED) { + if (log.isTraceEnabled()) log.error("Unexpected SWT error in event loop, ignoring it. " + e.getMessage()); - continue eventLoop; - } else { - log.error("Unexpected SWT error in event loop, shutting down...", e); - break eventLoop; - } - } else if (e instanceof ThreadDeath) { - throw (ThreadDeath) e; - } else if (e instanceof Error) { - log.error("Unexpected error in event loop, shutting down...", e); - break eventLoop; - } else { - log.error("Unexpected exception in event loop, ignoring it. " + e.getMessage()); continue eventLoop; + } else { + log.error("Unexpected SWT error in event loop, shutting down...", e); + break eventLoop; } + } catch (ThreadDeath e) { + // ThreadDeath is expected when the UI thread terminates + throw (ThreadDeath) e; + } catch (Error e) { + log.error("Unexpected error in event loop, shutting down...", e); + break eventLoop; + } catch (Throwable e) { + log.error("Unexpected exception in event loop, ignoring it. " + e.getMessage()); + continue eventLoop; } } + if (serverPushSession != null) + serverPushSession.stop(); if (!display.isDisposed()) display.dispose(); }