From: Mathieu Baudier Date: Wed, 20 Dec 2023 07:46:39 +0000 (+0100) Subject: Make logging less verbose and better check disposed status of widgets X-Git-Tag: v2.1.116^2~1 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=d79209267ad5221c1b9f5f58af9de1fb8353cc4e Make logging less verbose and better check disposed status of widgets --- 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/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 d0f4d41f8..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 @@ -287,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);