From: Mathieu Baudier Date: Wed, 20 Dec 2023 08:00:33 +0000 (+0100) Subject: Merge remote-tracking branch 'origin/unstable' into testing X-Git-Tag: v2.1.116~2 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=bd79aaa6f342553778a6051313580ab9841f4d3b;hp=f9300eb8ca77f2e486b1b7f5deabd23348fd1327;p=lgpl%2Fargeo-commons.git Merge remote-tracking branch 'origin/unstable' into testing --- diff --git a/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java b/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java index cd4d5cee8..935be167a 100644 --- a/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java +++ b/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java @@ -14,6 +14,7 @@ import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionIdListener; import javax.servlet.http.HttpSessionListener; +import org.argeo.api.cms.CmsLog; import org.argeo.cms.jetty.CmsJettyServer; import org.eclipse.equinox.http.servlet.HttpServiceServlet; import org.eclipse.jetty.ee8.nested.SessionHandler; @@ -23,6 +24,7 @@ import org.osgi.framework.Constants; /** A {@link CmsJettyServer} integrating with Equinox HTTP framework. */ public class EquinoxJettyServer extends CmsJettyServer { + private final static CmsLog log = CmsLog.getLog(EquinoxJettyServer.class); private static final String INTERNAL_CONTEXT_CLASSLOADER = "org.eclipse.equinox.http.jetty.internal.ContextClassLoader"; @Override @@ -95,6 +97,10 @@ public class EquinoxJettyServer extends CmsJettyServer { thread.setContextClassLoader(contextLoader); try { httpServiceServlet.service(req, res); + } catch (IllegalStateException e) { + // context is probably in shutdown + if (log.isTraceEnabled()) + log.error("Cannot process request", e); } finally { thread.setContextClassLoader(current); } diff --git a/sdk/branches/unstable.bnd b/sdk/branches/unstable.bnd index b8300134b..c52ff887e 100644 --- a/sdk/branches/unstable.bnd +++ b/sdk/branches/unstable.bnd @@ -1,7 +1,7 @@ major=2 minor=3 micro=27 -qualifier= +qualifier=.next Bundle-Copyright= \ Copyright 2007-2023 Mathieu Baudier, \ diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java index 3a91dbc23..d97bc4c35 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java @@ -61,6 +61,8 @@ public class CmsSwtUtils { } public static CmsView getCmsView(Control parent) { + if (parent.isDisposed()) + return null; // find parent shell Shell topShell = parent.getShell(); while (topShell.getParent() != null) @@ -219,7 +221,7 @@ public class CmsSwtUtils { /** Style widget */ public static T style(T widget, String style) { - if (style == null) + if (style == null || widget.isDisposed()) return widget;// does nothing EclipseUiSpecificUtils.setStyleData(widget, style); if (widget instanceof Control) { diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/SwtTabbedArea.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/SwtTabbedArea.java index b65bc3b6a..83cb46984 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/SwtTabbedArea.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/SwtTabbedArea.java @@ -231,7 +231,7 @@ public class SwtTabbedArea extends Composite { public Content getCurrentContext() { SwtSection section = getCurrentSection(); - if (section != null) { + if (section != null && !section.isDisposed()) { return section.getContent(); } else { return null; 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 9c94da8f3..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 @@ -276,7 +276,9 @@ 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; @@ -285,7 +287,8 @@ public class CmsWebEntryPoint extends AbstractSwtCmsView implements EntryPoint, } catch (SWTError e) { SWTError swtError = (SWTError) e; if (swtError.code == SWT.ERROR_FUNCTION_DISPOSED) { - log.error("Unexpected SWT error in event loop, ignoring it. " + e.getMessage()); + 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);