Merge tag 'v2.3.11' into testing
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 9 Nov 2023 10:53:59 +0000 (11:53 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 9 Nov 2023 10:53:59 +0000 (11:53 +0100)
12 files changed:
Makefile
Makefile-graalvm.mk [new file with mode: 0644]
NOTICE
org.argeo.slc.cms/src/org/argeo/slc/deb/DebFile.java [new file with mode: 0644]
sdk/argeo-build
sdk/branches/unstable.bnd
swt/rap/org.argeo.tool.server/META-INF/native-image/jni-config.json [new file with mode: 0644]
swt/rap/org.argeo.tool.server/META-INF/native-image/predefined-classes-config.json [new file with mode: 0644]
swt/rap/org.argeo.tool.server/META-INF/native-image/proxy-config.json [new file with mode: 0644]
swt/rap/org.argeo.tool.server/META-INF/native-image/reflect-config.json [new file with mode: 0644]
swt/rap/org.argeo.tool.server/META-INF/native-image/resource-config.json [new file with mode: 0644]
swt/rap/org.argeo.tool.server/META-INF/native-image/serialization-config.json [new file with mode: 0644]

index 279bf3732fe99416e11f33decb8347c3b79325a0..492b524d1e23fab2aa6966c2c35ac6367e33cae0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -52,25 +52,6 @@ clean:
        $(MAKE) -C jni clean
        $(MAKE) -f Makefile-rcp.mk clean
 
-GRAALVM_HOME = /opt/graalvm-ce
-A2_BUNDLES_CLASSPATH = $(subst $(space),$(pathsep),$(strip $(A2_BUNDLES)))
-
-graalvm-custom:
-       $(GRAALVM_HOME)/bin/java -jar $(ECJ_JAR) @$(SDK_SRC_BASE)/sdk/argeo-build/ecj.args -cp $(A2_CLASSPATH) \
-               graalvm/org.argeo.slc.graalvm/src[-d $(SDK_BUILD_BASE)/$(A2_CATEGORY)/graalvm/bin]
-
-tool-server: osgi graalvm-custom
-       mkdir -p $(A2_OUTPUT)/libexec/$(A2_CATEGORY)
-       cd $(A2_OUTPUT)/libexec/$(A2_CATEGORY) && $(GRAALVM_HOME)/bin/native-image \
-               -cp $(A2_CLASSPATH):$(A2_BUNDLES_CLASSPATH):$(SDK_BUILD_BASE)/$(A2_CATEGORY)/graalvm/bin \
-               --enable-url-protocols=http,https \
-               -H:AdditionalSecurityProviders=sun.security.jgss.SunProvider \
-               --initialize-at-build-time=org.argeo.init.logging.ThinLogging,org.slf4j.LoggerFactory \
-               --no-fallback \
-               -Dargeo.logging.synchronous=true \
-                org.argeo.tool.server.ArgeoServer \
-                argeo
-
 native-deps-debian:
        sudo apt install uuid-dev
 
diff --git a/Makefile-graalvm.mk b/Makefile-graalvm.mk
new file mode 100644 (file)
index 0000000..9861b05
--- /dev/null
@@ -0,0 +1,58 @@
+include sdk.mk
+
+## THE BUNDLES MUST FIRST HAVE BEEN BUILT
+
+A2_CATEGORY = org.argeo.slc
+
+#GRAALVM_HOME = /opt/graalvm-community-openjdk-17
+GRAALVM_HOME = /opt/mandrel-java17
+
+DEP_CATEGORIES = \
+log/syslogger/org.argeo.tp \
+org.argeo.tp \
+org.argeo.tp.httpd \
+osgi/api/org.argeo.tp.osgi \
+osgi/equinox/org.argeo.tp.eclipse \
+swt/rap/org.argeo.tp.swt \
+org.argeo.cms \
+swt/org.argeo.cms \
+swt/rap/org.argeo.cms \
+swt/rap/org.argeo.slc \
+
+#      $(foreach a2_base, $(A2_BASE), # TODO when ThinLogging is fixed, use deployed jars
+DEP_JARS = $(foreach category, $(DEP_CATEGORIES), \
+       $(foreach a2_base, $(A2_OUTPUT), \
+               $(shell find $(a2_base)/$(category) -name '*.jar') \
+       ) \
+)
+DEP_CLASSPATH = $(subst $(space),$(pathsep),$(strip $(DEP_JARS)))
+
+graalvm-custom:
+       $(GRAALVM_HOME)/bin/java -jar $(ECJ_JAR) @$(SDK_SRC_BASE)/sdk/argeo-build/ecj.args -cp $(A2_CLASSPATH) \
+               graalvm/org.argeo.slc.graalvm/src[-d $(SDK_BUILD_BASE)/$(A2_CATEGORY)/graalvm/bin]
+
+#tool-server: osgi graalvm-custom
+#:$(SDK_BUILD_BASE)/$(A2_CATEGORY)/graalvm/bin
+
+LIBEXEC_DIR=$(A2_OUTPUT)/libexec/linux/x86_64/$(A2_CATEGORY)
+
+tool-server: 
+       mkdir -p $(LIBEXEC_DIR)
+       cd $(LIBEXEC_DIR) && $(GRAALVM_HOME)/bin/native-image \
+               -cp $(DEP_CLASSPATH) \
+               --enable-url-protocols=http,https \
+               -H:AdditionalSecurityProviders=sun.security.jgss.SunProvider \
+               --initialize-at-build-time=org.argeo.init.logging.ThinLogging,org.argeo.init.logging.ThinLogging$LogEntryPublisher,org.slf4j.LoggerFactory \
+               --no-fallback \
+               -Dargeo.logging.synchronous=true \
+                org.argeo.tool.server.ArgeoServer \
+                argeo
+
+#              --static \
+
+#              -H:+StaticExecutableWithDynamicLibC \
+#              -H:Name=argeo \
+
+# Use --verbose in order to see whcih configurations are used 
+                
+include  $(SDK_SRC_BASE)/sdk/argeo-build/osgi.mk
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
index 739b808be44f1c401a17d7aa0c841fe784e28cd6..1044c1a624a27438af7b76942419fad8d5ae5739 100644 (file)
--- a/NOTICE
+++ b/NOTICE
@@ -39,6 +39,27 @@ whether to do so. The GNU General Public License gives permission to release a
 modified version without this exception; this exception also makes it possible 
 to release a modified version which carries forward this exception.
 
+# Apache License Permission
+
+Linking Argeo SLC statically or dynamically with other modules is making a 
+combined work based on Argeo SLC. Thus, the terms and conditions of the GNU 
+General Public License cover the whole combination when this license becomes 
+applicable.
+
+In addition, as a special exception, the copyright holders of Argeo SLC give 
+you permission to combine Argeo SLC with any program released under the 
+terms and conditions of the Apache License v2.0 or any later version of this 
+license. You may copy and distribute such a system following the terms of 
+the GNU GPL for Argeo SLC and the licenses of the other code concerned, 
+provided that you include the source code of that other code when and as 
+the GNU GPL requires distribution of source code.
+
+Note that people who make modified versions of Argeo SLC are not obligated 
+to grant this special exception for their modified versions; it is their choice 
+whether to do so. The GNU General Public License gives permission to release a 
+modified version without this exception; this exception also makes it possible 
+to release a modified version which carries forward this exception.
+
 # Java Content Repository API version 2.0 Permission
 
 Linking Argeo SLC statically or dynamically with other modules is making a 
diff --git a/org.argeo.slc.cms/src/org/argeo/slc/deb/DebFile.java b/org.argeo.slc.cms/src/org/argeo/slc/deb/DebFile.java
new file mode 100644 (file)
index 0000000..c51cea8
--- /dev/null
@@ -0,0 +1,136 @@
+package org.argeo.slc.deb;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.function.Consumer;
+
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.ArchiveInputStream;
+import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
+import org.apache.commons.compress.archivers.ar.ArArchiveInputStream;
+import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
+import org.apache.commons.compress.compressors.CompressorException;
+import org.apache.commons.compress.compressors.CompressorStreamFactory;
+
+public class DebFile {
+       private URL url;
+
+       public DebFile(URL url) {
+               this.url = url;
+       }
+
+       public void printDataArchive() {
+               openDataArchive((tarIn) -> {
+                       try {
+                               ArchiveEntry entry = null;
+                               while ((entry = tarIn.getNextEntry()) != null) {
+                                       System.out.println(entry.getName());
+                               }
+                       } catch (IOException e) {
+                               throw new UncheckedIOException(e);
+                       }
+               });
+       }
+
+       public void printControlArchive() {
+               openControlArchive((tarIn) -> {
+                       try {
+                               ArchiveEntry entry = null;
+                               while ((entry = tarIn.getNextEntry()) != null) {
+                                       System.out.println(entry.getName());
+                               }
+                       } catch (IOException e) {
+                               throw new UncheckedIOException(e);
+                       }
+               });
+       }
+
+       public void printControlFile() {
+               openControlArchive((tarIn) -> {
+                       try {
+                               ArchiveEntry entry = null;
+                               while ((entry = tarIn.getNextEntry()) != null) {
+                                       if ("./control".equals(entry.getName())) {
+                                               String controlFileStr = new String(tarIn.readAllBytes(), StandardCharsets.UTF_8);
+                                               System.out.println(controlFileStr);
+                                       }
+                               }
+                       } catch (IOException e) {
+                               throw new UncheckedIOException(e);
+                       }
+               });
+       }
+
+       protected void openDataArchive(Consumer<ArchiveInputStream> process) {
+               try (ArArchiveInputStream arIn = new ArArchiveInputStream(new BufferedInputStream(url.openStream()))) {
+                       // order is specified, so we don't verify entry names
+                       ArArchiveEntry debianBinaryEntry = arIn.getNextArEntry();
+                       assert "debian-binary".equals(debianBinaryEntry.getName());
+                       checkVersion(arIn);
+                       arIn.getNextArEntry();// control archive
+                       ArArchiveEntry dataArchiveEntry = arIn.getNextArEntry();
+                       processArArchiveEntry(dataArchiveEntry, arIn, process);
+               } catch (IOException | CompressorException e) {
+                       throw new RuntimeException("Cannot open data archive of " + url, e);
+               }
+       }
+
+       protected void openControlArchive(Consumer<ArchiveInputStream> process) {
+               try (ArArchiveInputStream arIn = new ArArchiveInputStream(new BufferedInputStream(url.openStream()))) {
+                       // order is specified, so we don't verify entry names
+                       ArArchiveEntry debianBinaryEntry = arIn.getNextArEntry();
+                       assert "debian-binary".equals(debianBinaryEntry.getName());
+                       checkVersion(arIn);
+                       ArArchiveEntry controlArchiveEntry = arIn.getNextArEntry();
+                       processArArchiveEntry(controlArchiveEntry, arIn, process);
+               } catch (IOException | CompressorException e) {
+                       throw new RuntimeException("Cannot open control archive of " + url, e);
+               }
+       }
+
+       protected void processArArchiveEntry(ArchiveEntry archiveEntry, ArArchiveInputStream arIn,
+                       Consumer<ArchiveInputStream> process) throws IOException, CompressorException {
+               String dataArchiveName = archiveEntry.getName();
+               String compressionType = null;
+               if (dataArchiveName.endsWith(".xz"))
+                       compressionType = CompressorStreamFactory.XZ;
+               else if (dataArchiveName.endsWith(".gz"))
+                       compressionType = CompressorStreamFactory.GZIP;
+               else if (dataArchiveName.endsWith(".bzip2"))
+                       compressionType = CompressorStreamFactory.BZIP2;
+               else if (dataArchiveName.endsWith(".lzma"))
+                       compressionType = CompressorStreamFactory.LZMA;
+
+               if (compressionType == null) {
+                       try (TarArchiveInputStream tarIn = new TarArchiveInputStream(arIn)) {
+                               process.accept(tarIn);
+                       }
+               } else {
+                       try (TarArchiveInputStream tarIn = new TarArchiveInputStream(
+                                       new CompressorStreamFactory().createCompressorInputStream(compressionType, arIn))) {
+                               process.accept(tarIn);
+                       }
+               }
+       }
+
+       protected void checkVersion(ArArchiveInputStream arIn) throws IOException {
+               String version = new String(arIn.readAllBytes(), StandardCharsets.US_ASCII).trim();
+               if (!"2.0".equals(version))
+                       throw new IllegalStateException("Deb " + version + " is not supported");
+       }
+
+       public static void main(String[] args) throws Exception {
+//             URL url = Paths
+//                             .get(System.getProperty("user.home")+"/qa/git/argeo-qa-unstable/build/repo/deb/platform/2.3/argeo-cms_2.3.18_all.deb")
+//                             .toUri().toURL();
+               URL url = new URL("http://repo.netiket.eu/deb/pool/bullseye/platform/2.3/argeo-cms_2.3.18_all.deb");
+               DebFile debFile = new DebFile(url);
+               debFile.printControlArchive();
+               debFile.printControlFile();
+               debFile.printDataArchive();
+       }
+
+}
index d9cae87d811258d5a13e43eea8492f3792377ce4..d5943f556d6fba9db0dd63d4c4cfceef89e4888e 160000 (submodule)
@@ -1 +1 @@
-Subproject commit d9cae87d811258d5a13e43eea8492f3792377ce4
+Subproject commit d5943f556d6fba9db0dd63d4c4cfceef89e4888e
index 503ec512e4373a9ef3d28fcf520110d0106c8132..9bcaa0d1933c8970556e114356a54e273c9c44c8 100644 (file)
@@ -1,7 +1,7 @@
 major=2
 minor=3
-micro=10
-qualifier=.next
+micro=11
+qualifier=
 
 Bundle-Copyright= \
 Copyright 2007-2023 Mathieu Baudier, \
@@ -9,4 +9,4 @@ Copyright 2012-2023 Argeo GmbH
 
 SPDX-License-Identifier= \
 GPL-2.0-or-later \
-OR LicenseRef-argeo2-GPL-2.0-or-later-with-EPL-and-JCR-permissions
+OR LicenseRef-argeo2-GPL-2.0-or-later-with-EPL-and-Apache-and-JCR-permissions
diff --git a/swt/rap/org.argeo.tool.server/META-INF/native-image/jni-config.json b/swt/rap/org.argeo.tool.server/META-INF/native-image/jni-config.json
new file mode 100644 (file)
index 0000000..c8b0813
--- /dev/null
@@ -0,0 +1,10 @@
+[
+{
+  "name":"java.lang.Boolean",
+  "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"sun.management.VMManagementImpl",
+  "fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}]
+}
+]
diff --git a/swt/rap/org.argeo.tool.server/META-INF/native-image/predefined-classes-config.json b/swt/rap/org.argeo.tool.server/META-INF/native-image/predefined-classes-config.json
new file mode 100644 (file)
index 0000000..0e79b2c
--- /dev/null
@@ -0,0 +1,8 @@
+[
+  {
+    "type":"agent-extracted",
+    "classes":[
+    ]
+  }
+]
+
diff --git a/swt/rap/org.argeo.tool.server/META-INF/native-image/proxy-config.json b/swt/rap/org.argeo.tool.server/META-INF/native-image/proxy-config.json
new file mode 100644 (file)
index 0000000..44991de
--- /dev/null
@@ -0,0 +1,8 @@
+[
+  {
+    "interfaces":["javax.servlet.http.HttpServletRequest"]
+  },
+  {
+    "interfaces":["javax.servlet.http.HttpServletResponse"]
+  }
+]
diff --git a/swt/rap/org.argeo.tool.server/META-INF/native-image/reflect-config.json b/swt/rap/org.argeo.tool.server/META-INF/native-image/reflect-config.json
new file mode 100644 (file)
index 0000000..cb73f1b
--- /dev/null
@@ -0,0 +1,393 @@
+[
+{
+  "name":"[B"
+},
+{
+  "name":"[Ljava.lang.String;"
+},
+{
+  "name":"[Lorg.eclipse.jetty.server.Handler;"
+},
+{
+  "name":"[Lorg.eclipse.jetty.server.handler.ContextHandlerCollection$Branch;"
+},
+{
+  "name":"[Lorg.eclipse.jetty.servlet.FilterHolder;"
+},
+{
+  "name":"[Lorg.eclipse.swt.widgets.TableColumn;"
+},
+{
+  "name":"[Lorg.eclipse.swt.widgets.TreeColumn;"
+},
+{
+  "name":"[Lsun.security.pkcs.SignerInfo;"
+},
+{
+  "name":"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.Boolean",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.Byte",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.Class"
+},
+{
+  "name":"java.lang.Double",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.Float",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.Integer",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.Long",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.Object",
+  "methods":[{"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.Short",
+  "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.String"
+},
+{
+  "name":"java.lang.System",
+  "methods":[{"name":"getSecurityManager","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.Thread",
+  "fields":[{"name":"threadLocalRandomProbe"}],
+  "methods":[{"name":"isVirtual","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.management.ManagementFactory",
+  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.management.RuntimeMXBean",
+  "methods":[{"name":"getUptime","parameterTypes":[] }]
+},
+{
+  "name":"java.security.AccessController",
+  "methods":[{"name":"doPrivileged","parameterTypes":["java.security.PrivilegedAction"] }]
+},
+{
+  "name":"java.security.AlgorithmParametersSpi"
+},
+{
+  "name":"java.security.SecureRandomParameters"
+},
+{
+  "name":"java.security.interfaces.DSAPrivateKey"
+},
+{
+  "name":"java.security.interfaces.DSAPublicKey"
+},
+{
+  "name":"java.security.interfaces.RSAPrivateKey"
+},
+{
+  "name":"java.security.interfaces.RSAPublicKey"
+},
+{
+  "name":"java.security.spec.DSAParameterSpec"
+},
+{
+  "name":"java.util.Date"
+},
+{
+  "name":"java.util.concurrent.Executors",
+  "methods":[{"name":"newVirtualThreadPerTaskExecutor","parameterTypes":[] }]
+},
+{
+  "name":"java.util.concurrent.ForkJoinTask",
+  "fields":[{"name":"aux"}, {"name":"status"}]
+},
+{
+  "name":"java.util.concurrent.atomic.AtomicBoolean",
+  "fields":[{"name":"value"}]
+},
+{
+  "name":"java.util.concurrent.atomic.AtomicReference",
+  "fields":[{"name":"value"}]
+},
+{
+  "name":"java.util.concurrent.atomic.Striped64",
+  "fields":[{"name":"base"}, {"name":"cellsBusy"}]
+},
+{
+  "name":"javax.security.auth.login.Configuration$Parameters"
+},
+{
+  "name":"javax.security.auth.x500.X500Principal",
+  "fields":[{"name":"thisX500Name"}],
+  "methods":[{"name":"<init>","parameterTypes":["sun.security.x509.X500Name"] }]
+},
+{
+  "name":"javax.servlet.ServletRequest",
+  "methods":[{"name":"getAsyncContext","parameterTypes":[] }, {"name":"getAttribute","parameterTypes":["java.lang.String"] }, {"name":"getAttributeNames","parameterTypes":[] }, {"name":"getCharacterEncoding","parameterTypes":[] }, {"name":"getContentLength","parameterTypes":[] }, {"name":"getContentLengthLong","parameterTypes":[] }, {"name":"getContentType","parameterTypes":[] }, {"name":"getDispatcherType","parameterTypes":[] }, {"name":"getInputStream","parameterTypes":[] }, {"name":"getLocalAddr","parameterTypes":[] }, {"name":"getLocalName","parameterTypes":[] }, {"name":"getLocalPort","parameterTypes":[] }, {"name":"getLocale","parameterTypes":[] }, {"name":"getLocales","parameterTypes":[] }, {"name":"getParameter","parameterTypes":["java.lang.String"] }, {"name":"getParameterMap","parameterTypes":[] }, {"name":"getParameterNames","parameterTypes":[] }, {"name":"getParameterValues","parameterTypes":["java.lang.String"] }, {"name":"getProtocol","parameterTypes":[] }, {"name":"getReader","parameterTypes":[] }, {"name":"getRealPath","parameterTypes":["java.lang.String"] }, {"name":"getRemoteAddr","parameterTypes":[] }, {"name":"getRemoteHost","parameterTypes":[] }, {"name":"getRemotePort","parameterTypes":[] }, {"name":"getRequestDispatcher","parameterTypes":["java.lang.String"] }, {"name":"getScheme","parameterTypes":[] }, {"name":"getServerName","parameterTypes":[] }, {"name":"getServerPort","parameterTypes":[] }, {"name":"getServletContext","parameterTypes":[] }, {"name":"isAsyncStarted","parameterTypes":[] }, {"name":"isAsyncSupported","parameterTypes":[] }, {"name":"isSecure","parameterTypes":[] }, {"name":"removeAttribute","parameterTypes":["java.lang.String"] }, {"name":"setAttribute","parameterTypes":["java.lang.String","java.lang.Object"] }, {"name":"setCharacterEncoding","parameterTypes":["java.lang.String"] }, {"name":"startAsync","parameterTypes":[] }, {"name":"startAsync","parameterTypes":["javax.servlet.ServletRequest","javax.servlet.ServletResponse"] }]
+},
+{
+  "name":"javax.servlet.ServletResponse"
+},
+{
+  "name":"javax.servlet.http.HttpServletRequest",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.reflect.InvocationHandler"] }, {"name":"authenticate","parameterTypes":["javax.servlet.http.HttpServletResponse"] }, {"name":"changeSessionId","parameterTypes":[] }, {"name":"getAuthType","parameterTypes":[] }, {"name":"getContextPath","parameterTypes":[] }, {"name":"getCookies","parameterTypes":[] }, {"name":"getDateHeader","parameterTypes":["java.lang.String"] }, {"name":"getHeader","parameterTypes":["java.lang.String"] }, {"name":"getHeaderNames","parameterTypes":[] }, {"name":"getHeaders","parameterTypes":["java.lang.String"] }, {"name":"getHttpServletMapping","parameterTypes":[] }, {"name":"getIntHeader","parameterTypes":["java.lang.String"] }, {"name":"getMethod","parameterTypes":[] }, {"name":"getPart","parameterTypes":["java.lang.String"] }, {"name":"getParts","parameterTypes":[] }, {"name":"getPathInfo","parameterTypes":[] }, {"name":"getPathTranslated","parameterTypes":[] }, {"name":"getQueryString","parameterTypes":[] }, {"name":"getRemoteUser","parameterTypes":[] }, {"name":"getRequestURI","parameterTypes":[] }, {"name":"getRequestURL","parameterTypes":[] }, {"name":"getRequestedSessionId","parameterTypes":[] }, {"name":"getServletPath","parameterTypes":[] }, {"name":"getSession","parameterTypes":[] }, {"name":"getSession","parameterTypes":["boolean"] }, {"name":"getTrailerFields","parameterTypes":[] }, {"name":"getUserPrincipal","parameterTypes":[] }, {"name":"isRequestedSessionIdFromCookie","parameterTypes":[] }, {"name":"isRequestedSessionIdFromURL","parameterTypes":[] }, {"name":"isRequestedSessionIdFromUrl","parameterTypes":[] }, {"name":"isRequestedSessionIdValid","parameterTypes":[] }, {"name":"isTrailerFieldsReady","parameterTypes":[] }, {"name":"isUserInRole","parameterTypes":["java.lang.String"] }, {"name":"login","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"logout","parameterTypes":[] }, {"name":"newPushBuilder","parameterTypes":[] }, {"name":"upgrade","parameterTypes":["java.lang.Class"] }]
+},
+{
+  "name":"javax.servlet.http.HttpServletResponse"
+},
+{
+  "name":"org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.xerces.impl.dv.dtd.XML11DTDDVFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.xerces.impl.xs.XSMessageFormatter",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.xerces.parsers.XIncludeAwareParserConfiguration",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.argeo.cms.auth.AnonymousLoginModule",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.argeo.cms.auth.DataAdminLoginModule",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.argeo.cms.auth.IdentLoginModule",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.argeo.cms.auth.RemoteSessionLoginModule",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.argeo.cms.auth.UserAdminLoginModule",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.jetty.servlet.DefaultServlet",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.jetty.util.TypeUtil",
+  "methods":[{"name":"getClassLoaderLocation","parameterTypes":["java.lang.Class"] }, {"name":"getCodeSourceLocation","parameterTypes":["java.lang.Class"] }, {"name":"getModuleLocation","parameterTypes":["java.lang.Class"] }, {"name":"getSystemClassLoaderLocation","parameterTypes":["java.lang.Class"] }]
+},
+{
+  "name":"org.eclipse.jetty.websocket.javax.common.JavaxWebSocketSession",
+  "methods":[{"name":"filterReturnType","parameterTypes":["java.lang.Object"] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.client.BrowserNavigationImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.client.ClientInfoImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.client.ExitConfirmationImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.client.StartupParametersImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.client.WebClientMessages",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle",
+  "methods":[{"name":"<init>","parameterTypes":["org.eclipse.rap.rwt.internal.application.ApplicationContextImpl"] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.lifecycle.RequestCounter",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.remote.RemoteObjectRegistry",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.serverpush.ServerPushManager",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.rap.rwt.internal.textsize.ProbeResultStore",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.SWT",
+  "allDeclaredFields":true
+},
+{
+  "name":"org.eclipse.swt.graphics.Color",
+  "methods":[{"name":"<init>","parameterTypes":["int"] }]
+},
+{
+  "name":"org.eclipse.swt.graphics.Font",
+  "methods":[{"name":"<init>","parameterTypes":["org.eclipse.swt.graphics.FontData"] }]
+},
+{
+  "name":"org.eclipse.swt.internal.image.GIFFileFormat",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.image.JPEGFileFormat",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.image.PNGFileFormat",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.image.WinBMPFileFormat",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.image.WinICOFileFormat",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.widgets.IdGenerator",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.widgets.displaykit.DisplayLCA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.widgets.scrollbarkit.ScrollBarThemeAdapter",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.widgets.shellkit.ShellThemeAdapter",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.widgets.tablekit.TableThemeAdapter",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.eclipse.swt.internal.widgets.treekit.TreeThemeAdapter",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.ConfigFile$Spi",
+  "methods":[{"name":"<init>","parameterTypes":["javax.security.auth.login.Configuration$Parameters"] }]
+},
+{
+  "name":"sun.security.provider.DRBG",
+  "methods":[{"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+  "name":"sun.security.provider.DSA$SHA1withDSA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.DSA$SHA256withDSA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.DSAKeyFactory",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.DSAParameters",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.NativePRNG",
+  "methods":[{"name":"<init>","parameterTypes":[] }, {"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+  "name":"sun.security.provider.SHA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.SHA2$SHA256",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.X509Factory",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.rsa.RSAKeyFactory$Legacy",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.rsa.RSASignature$SHA256withRSA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.util.ObjectIdentifier"
+},
+{
+  "name":"sun.security.x509.AuthorityInfoAccessExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.AuthorityKeyIdentifierExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.BasicConstraintsExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.CRLDistributionPointsExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.CertificateExtensions"
+},
+{
+  "name":"sun.security.x509.CertificatePoliciesExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.ExtendedKeyUsageExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.KeyUsageExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.NetscapeCertTypeExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.SubjectAlternativeNameExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+  "name":"sun.security.x509.SubjectKeyIdentifierExtension",
+  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+}
+]
diff --git a/swt/rap/org.argeo.tool.server/META-INF/native-image/resource-config.json b/swt/rap/org.argeo.tool.server/META-INF/native-image/resource-config.json
new file mode 100644 (file)
index 0000000..adfcdc0
--- /dev/null
@@ -0,0 +1,496 @@
+{
+  "resources":{
+  "includes":[{
+    "pattern":"\\QMETA-INF/MANIFEST.MF\\E"
+  }, {
+    "pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
+  }, {
+    "pattern":"\\QMETA-INF/services/javax.xml.parsers.DocumentBuilderFactory\\E"
+  }, {
+    "pattern":"\\QMETA-INF/services/javax.xml.validation.SchemaFactory\\E"
+  }, {
+    "pattern":"\\QMETA-INF/services/org.eclipse.jetty.http.HttpFieldPreEncoder\\E"
+  }, {
+    "pattern":"\\QMETA-INF/services/org.eclipse.jetty.websocket.core.Extension\\E"
+  }, {
+    "pattern":"\\Qclient.files\\E"
+  }, {
+    "pattern":"\\Qclient.js\\E"
+  }, {
+    "pattern":"\\Qjetty-dir.css\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/DSMLv2.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/SVG.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/XMLSchema.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/cr.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/schema-for-xslt20.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/xlink.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/acr/schemas/xml.xsd\\E"
+  }, {
+    "pattern":"\\Qorg/argeo/cms/internal/runtime/jaas.cfg\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/jetty/http/encoding.properties\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/jetty/http/mime.properties\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/jetty/version/build.properties\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/nebula/widgets/grid/internal/gridkit/Grid.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/nebula/widgets/grid/internal/gridkit/Grid.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/nebula/widgets/grid/internal/gridkit/Grid.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/service/rwt-index.html\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/widgets/dropdownkit/DropDown.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/widgets/dropdownkit/DropDown.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/widgets/dropdownkit/DropDown.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/widgets/fileuploadkit/FileUpload.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/widgets/fileuploadkit/FileUpload.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/rap/rwt/internal/widgets/fileuploadkit/FileUpload.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/browser/browserkit/Browser.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/browser/browserkit/Browser.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/browser/browserkit/Browser.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/ccombokit/CCombo.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/ccombokit/CCombo.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/ccombokit/CCombo.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/clabelkit/CLabel.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/clabelkit/CLabel.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/clabelkit/CLabel.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/ctabfolderkit/CTabFolder.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/ctabfolderkit/CTabFolder.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/ctabfolderkit/CTabFolder.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/custom/scrolledcompositekit/ScrolledComposite.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/buttonkit/Button.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/buttonkit/Button.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/buttonkit/Button.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/combokit/Combo.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/combokit/Combo.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/combokit/Combo.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/compositekit/Composite.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/compositekit/Composite.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/compositekit/Composite.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/controlkit/Control.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/controlkit/Control.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/coolbarkit/CoolBar.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/coolbarkit/CoolBar.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/coolbarkit/CoolBar.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/datetimekit/DateTime.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/datetimekit/DateTime.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/datetimekit/DateTime.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/expandbarkit/ExpandBar.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/expandbarkit/ExpandBar.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/expandbarkit/ExpandBar.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/groupkit/Group.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/groupkit/Group.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/groupkit/Group.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/labelkit/Label.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/labelkit/Label.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/labelkit/Label.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/linkkit/Link.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/linkkit/Link.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/linkkit/Link.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/listkit/List.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/listkit/List.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/listkit/List.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/menukit/Menu.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/menukit/Menu.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/menukit/Menu.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/progressbarkit/ProgressBar.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/progressbarkit/ProgressBar.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/progressbarkit/ProgressBar.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/sashkit/Sash.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/sashkit/Sash.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/sashkit/Sash.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/scalekit/Scale.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/scalekit/Scale.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/scalekit/Scale.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/scrollbarkit/ScrollBar.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/scrollbarkit/ScrollBar.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/scrollbarkit/ScrollBar.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/shellkit/Shell.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/shellkit/Shell.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/shellkit/Shell.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/sliderkit/Slider.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/sliderkit/Slider.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/sliderkit/Slider.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/spinnerkit/Spinner.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/spinnerkit/Spinner.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/spinnerkit/Spinner.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tabfolderkit/TabFolder.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tabfolderkit/TabFolder.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tabfolderkit/TabFolder.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tablekit/Table.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tablekit/Table.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tablekit/Table.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/textkit/Text.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/textkit/Text.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/textkit/Text.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/toolbarkit/ToolBar.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/toolbarkit/ToolBar.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/toolbarkit/ToolBar.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tooltipkit/ToolTip.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tooltipkit/ToolTip.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/tooltipkit/ToolTip.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/treekit/Tree.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/treekit/Tree.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/treekit/Tree.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/widgetkit/Widget.appearances.js\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/widgetkit/Widget.default.css\\E"
+  }, {
+    "pattern":"\\Qorg/eclipse/swt/internal/widgets/widgetkit/Widget.theme.xml\\E"
+  }, {
+    "pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"
+  }, {
+    "pattern":"\\Qresource/static/html/blank.html\\E"
+  }, {
+    "pattern":"\\Qresource/static/image/blank.gif\\E"
+  }, {
+    "pattern":"\\Qresource/theme/default.css\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/chevron-left-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/chevron-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/chevron-right-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/chevron-right.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/tooltip-down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/tooltip-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/tooltip-right.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/arrows/tooltip-up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/arrow-down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/arrow-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/arrow-right.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/arrow-up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/check-grayed-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/check-grayed.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/check-selected-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/check-selected.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/check-unselected-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/check-unselected.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/radio-selected-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/radio-selected.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/radio-unselected-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/button/radio-unselected.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/lastMonth-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/lastMonth.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/lastYear-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/lastYear.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/nextMonth-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/nextMonth.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/nextYear-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/calendar/nextYear.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ccombo/down-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ccombo/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/column/sort-indicator-down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/column/sort-indicator-up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/combo/down-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/combo/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/close.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/close_hover.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/ctabfolder-dropdown-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/ctabfolder-dropdown-left-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/ctabfolder-dropdown-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/ctabfolder-dropdown.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/maximize.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/minimize.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/ctabfolder/restore.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/cursors/alias.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/cursors/copy.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/cursors/move.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/cursors/nodrop.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/cursors/up_arrow.cur\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/datetime/down-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/datetime/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/datetime/up-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/datetime/up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/dialog/error.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/dialog/information.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/dialog/question.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/dialog/warning.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/display/browser_bg.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/display/loading.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/expanditem/expanditem-collapse-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/expanditem/expanditem-collapse.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/expanditem/expanditem-expand-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/expanditem/expanditem-expand.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/menu/arrow-left.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/menu/arrow-right.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/menu/checkbox.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/menu/radiobutton.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/progressbar/progressbar-background.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/sash/sash-handle-horizontal.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/sash/sash-handle-vertical.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scale/h_line.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scale/v_line.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scrollbar/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scrollbar/left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scrollbar/right.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scrollbar/scrollbar-background.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/scrollbar/up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/slider/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/slider/left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/slider/right.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/slider/slider-background.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/slider/up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/spinner/down-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/spinner/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/spinner/up-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/spinner/up.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/text/clear.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/text/find.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/toolbar/down.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tooltip/error.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tooltip/information.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tooltip/warning.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/loading.gif\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-collapsed-hover-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-collapsed-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-collapsed-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-collapsed.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-expanded-hover-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-expanded-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-expanded-left.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/tree/tree-expanded.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-close-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-close.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-max-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-max.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-min-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-min.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-restore-hover.png\\E"
+  }, {
+    "pattern":"\\Qresource/widget/rap/window/shell-restore.png\\E"
+  }, {
+    "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/nfkc.nrm\\E"
+  }]},
+  "bundles":[{
+    "name":"javax.servlet.LocalStrings",
+    "locales":[""]
+  }, {
+    "name":"javax.servlet.http.LocalStrings",
+    "locales":[""]
+  }, {
+    "name":"org.apache.xerces.impl.msg.DOMMessages",
+    "locales":["", "en"]
+  }, {
+    "name":"org.apache.xerces.impl.msg.XMLMessages",
+    "locales":["", "en"]
+  }, {
+    "name":"org.apache.xerces.impl.msg.XMLSerializerMessages",
+    "locales":["", "en"]
+  }, {
+    "name":"org.eclipse.rap.rwt.internal.RWTMessages",
+    "locales":[""]
+  }, {
+    "name":"sun.security.util.Resources",
+    "classNames":["sun.security.util.Resources"]
+  }]
+}
diff --git a/swt/rap/org.argeo.tool.server/META-INF/native-image/serialization-config.json b/swt/rap/org.argeo.tool.server/META-INF/native-image/serialization-config.json
new file mode 100644 (file)
index 0000000..f3d7e06
--- /dev/null
@@ -0,0 +1,8 @@
+{
+  "types":[
+  ],
+  "lambdaCapturingTypes":[
+  ],
+  "proxies":[
+  ]
+}