From: Mathieu Baudier Date: Wed, 8 May 2024 07:00:57 +0000 (+0200) Subject: Janitor thread per instance X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=refs%2Fremotes%2Fgithub%2Funstable;hp=351a8e89926757e93b86502e25dff975e3fb31c8;p=gpl%2Fargeo-suite.git Janitor thread per instance --- diff --git a/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java b/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java index 4645649..be4238f 100644 --- a/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java +++ b/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java @@ -1,21 +1,16 @@ package org.argeo.app.core; -import static java.lang.System.Logger.Level.ERROR; - import java.net.MalformedURLException; -import java.net.URI; import java.net.URL; import java.util.Objects; import org.argeo.api.acr.spi.ContentNamespace; -import org.argeo.cms.acr.CmsContentNamespace; public enum SuiteContentNamespace implements ContentNamespace { // // ARGEO // - ENTITY("entity", "http://www.argeo.org/ns/entity", - "platform:/plugin/org.argeo.app.api/org/argeo/api/app/entity.xsd", null), + ENTITY("entity", "http://www.argeo.org/ns/entity", "/org/argeo/app/api/entity.xsd", null), // ARGEO_DBK("argeodbk", "http://www.argeo.org/ns/argeodbk", null, null), // @@ -70,22 +65,28 @@ public enum SuiteContentNamespace implements ContentNamespace { Objects.requireNonNull(namespace); this.namespace = namespace; if (resourceFileName != null) { - try { - // FIXME workaround when in nested OSGi frameworks - // we should use class path, as before - if (!resourceFileName.startsWith("platform:")) { - resource = URI.create("platform:/plugin/org.argeo.app.core" + RESOURCE_BASE + resourceFileName) - .toURL(); - } else { - resource = URI.create(resourceFileName).toURL(); - } - } catch (MalformedURLException e) { - resource = null; - System.getLogger(CmsContentNamespace.class.getName()).log(ERROR, - "Cannot load " + resourceFileName + ": " + e.getMessage()); - // throw new IllegalArgumentException("Cannot convert " + resourceFileName + " - // to URL"); - } + if (!resourceFileName.startsWith("/")) + resource = getClass().getResource(RESOURCE_BASE + resourceFileName); + else + resource = getClass().getResource(resourceFileName); +// Objects.requireNonNull(resource); + +// try { +// // FIXME workaround when in nested OSGi frameworks +// // we should use class path, as before +// if (!resourceFileName.startsWith("platform:")) { +// resource = URI.create("platform:/plugin/org.argeo.app.core" + RESOURCE_BASE + resourceFileName) +// .toURL(); +// } else { +// resource = URI.create(resourceFileName).toURL(); +// } +// } catch (MalformedURLException e) { +// resource = null; +// System.getLogger(CmsContentNamespace.class.getName()).log(ERROR, +// "Cannot load " + resourceFileName + ": " + e.getMessage()); +// // throw new IllegalArgumentException("Cannot convert " + resourceFileName + " +// // to URL"); +// } // Objects.requireNonNull(resource); } if (publicUrl != null) diff --git a/sdk/branches/unstable.bnd b/sdk/branches/unstable.bnd index 060ef94..2838996 100644 --- a/sdk/branches/unstable.bnd +++ b/sdk/branches/unstable.bnd @@ -1,7 +1,7 @@ major=2 minor=3 micro=24 -qualifier= +qualifier=.next Bundle-Copyright= \ Copyright 2014-2023 Argeo GmbH, \ diff --git a/swt/org.argeo.app.swt/src/org/argeo/app/swt/ux/SwtArgeoApp.java b/swt/org.argeo.app.swt/src/org/argeo/app/swt/ux/SwtArgeoApp.java index d123aa0..851d686 100644 --- a/swt/org.argeo.app.swt/src/org/argeo/app/swt/ux/SwtArgeoApp.java +++ b/swt/org.argeo.app.swt/src/org/argeo/app/swt/ux/SwtArgeoApp.java @@ -95,7 +95,9 @@ public class SwtArgeoApp extends AbstractArgeoApp implements CmsEventSubscriber // private CmsUserManager cmsUserManager; // TODO make more optimal or via CmsSession/CmsView - private static Timer janitorTimer = new Timer(true); + // It works if static, but there is no clean way to get rid of it, so we open + // one per app + private Timer janitorTimer = new Timer(true); private Map> managedUis = new HashMap<>(); // ACR @@ -189,6 +191,8 @@ public class SwtArgeoApp extends AbstractArgeoApp implements CmsEventSubscriber if (log.isDebugEnabled()) log.info("Argeo Suite App stopped"); + // clean janitor timer so that th thread is not kept + janitorTimer.cancel(); } @Override