From: Mathieu Baudier Date: Tue, 1 Nov 2022 07:11:09 +0000 (+0100) Subject: Move RAP and RCP cli from Argeo Commons to SLC X-Git-Tag: v2.3.6~20 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=02f5d9030b0cb78111320a54a205870b9e747d6c;p=gpl%2Fargeo-slc.git Move RAP and RCP cli from Argeo Commons to SLC --- diff --git a/Makefile b/Makefile index f3c2fcd6e..1aea6cc2a 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ include sdk.mk .PHONY: clean all osgi all: osgi + $(MAKE) -f Makefile-rcp.mk all A2_CATEGORY = org.argeo.slc @@ -13,10 +14,12 @@ org.argeo.slc.cms \ org.argeo.slc.repo \ org.argeo.slc.rpmfactory \ org.argeo.slc.jcr \ +swt/rap/org.argeo.tool.rap.cli \ swt/rap/org.argeo.tool.server \ clean: rm -rf $(BUILD_BASE) + $(MAKE) -f Makefile-rcp.mk clean DEP_CATEGORIES = \ org.argeo.tp \ @@ -32,6 +35,7 @@ org.argeo.tp.formats \ org.argeo.tp.gis \ org.argeo.cms \ org.argeo.cms.jcr \ +swt/org.argeo.cms \ swt/rap/org.argeo.cms \ GRAALVM_HOME = /opt/graalvm-ce diff --git a/Makefile-rcp.mk b/Makefile-rcp.mk index 77c25317b..24203cc64 100644 --- a/Makefile-rcp.mk +++ b/Makefile-rcp.mk @@ -6,6 +6,7 @@ all: osgi A2_CATEGORY = org.argeo.slc BUNDLES = \ +swt/rcp/org.argeo.tool.rcp.cli \ swt/rcp/org.argeo.tool.desktop \ clean: diff --git a/swt/rap/org.argeo.tool.rap.cli/.classpath b/swt/rap/org.argeo.tool.rap.cli/.classpath new file mode 100644 index 000000000..81fe078c2 --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/swt/rap/org.argeo.tool.rap.cli/.project b/swt/rap/org.argeo.tool.rap.cli/.project new file mode 100644 index 000000000..ea553de2e --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/.project @@ -0,0 +1,28 @@ + + + org.argeo.tool.rap.cli + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/jni-config.json b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/jni-config.json new file mode 100644 index 000000000..25530bb80 --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/jni-config.json @@ -0,0 +1,33 @@ +[ +{ + "name":"java.lang.Boolean", + "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.ClassLoader", + "methods":[ + {"name":"getPlatformClassLoader","parameterTypes":[] }, + {"name":"loadClass","parameterTypes":["java.lang.String"] } + ] +}, +{ + "name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" +}, +{ + "name":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints", + "methods":[{"name":"getClassName","parameterTypes":["java.lang.Class"] }] +}, +{ + "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.rap.cli/META-INF/native-image/predefined-classes-config.json b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/predefined-classes-config.json new file mode 100644 index 000000000..0e79b2c5d --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/predefined-classes-config.json @@ -0,0 +1,8 @@ +[ + { + "type":"agent-extracted", + "classes":[ + ] + } +] + diff --git a/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/proxy-config.json b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/proxy-config.json new file mode 100644 index 000000000..5d1d13de3 --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/proxy-config.json @@ -0,0 +1,8 @@ +[ + { + "interfaces":["javax.servlet.http.HttpServletRequest"]} + , + { + "interfaces":["javax.servlet.http.HttpServletResponse"]} + +] diff --git a/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/reflect-config.json b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/reflect-config.json new file mode 100644 index 000000000..e9910e1c2 --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/reflect-config.json @@ -0,0 +1,393 @@ +[ +{ + "name":"[B" +}, +{ + "name":"[Ljava.lang.String;" +}, +{ + "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":"","parameterTypes":[] }] +}, +{ + "name":"java.lang.Boolean", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Byte", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Class" +}, +{ + "name":"java.lang.Double", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Float", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Integer", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Long", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Object", + "queriedMethods":[ + {"name":"equals","parameterTypes":["java.lang.Object"] }, + {"name":"hashCode","parameterTypes":[] }, + {"name":"toString","parameterTypes":[] } + ] +}, +{ + "name":"java.lang.Short", + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.String" +}, +{ + "name":"java.lang.management.ManagementFactory", + "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }] +}, +{ + "name":"java.lang.management.RuntimeMXBean", + "methods":[{"name":"getUptime","parameterTypes":[] }] +}, +{ + "name":"java.security.AlgorithmParametersSpi" +}, +{ + "name":"java.security.SecureRandomParameters" +}, +{ + "name":"java.util.Date" +}, +{ + "name":"javax.security.auth.login.Configuration$Parameters" +}, +{ + "name":"javax.security.auth.x500.X500Principal", + "fields":[{"name":"thisX500Name"}], + "queriedMethods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] +}, +{ + "name":"javax.servlet.ServletRequest", + "queriedMethods":[ + {"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":"","parameterTypes":["java.lang.reflect.InvocationHandler"] }], + "queriedMethods":[ + {"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":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.xerces.impl.dv.dtd.XML11DTDDVFactoryImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.xerces.impl.dv.xs.ExtendedSchemaDVFactoryImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.xerces.impl.dv.xs.SchemaDVFactoryImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.xerces.impl.xs.XSMessageFormatter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.xerces.parsers.XIncludeAwareParserConfiguration", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.argeo.cms.auth.AnonymousLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.argeo.cms.auth.DataAdminLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.argeo.cms.auth.IdentLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.argeo.cms.auth.RemoteSessionLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.argeo.cms.auth.UserAdminLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.jetty.servlet.DefaultServlet", + "methods":[{"name":"","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.rap.rwt.internal.client.BrowserNavigationImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.client.ClientInfoImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.client.ExitConfirmationImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.client.StartupParametersImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.client.WebClientMessages", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle", + "methods":[{"name":"","parameterTypes":["org.eclipse.rap.rwt.internal.application.ApplicationContextImpl"] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.lifecycle.RequestCounter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.remote.RemoteObjectRegistry", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.serverpush.ServerPushManager", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.rap.rwt.internal.textsize.ProbeResultStore", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.SWT", + "allDeclaredFields":true +}, +{ + "name":"org.eclipse.swt.graphics.Color", + "methods":[{"name":"","parameterTypes":["int"] }] +}, +{ + "name":"org.eclipse.swt.graphics.Font", + "methods":[{"name":"","parameterTypes":["org.eclipse.swt.graphics.FontData"] }] +}, +{ + "name":"org.eclipse.swt.internal.image.GIFFileFormat", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.image.JPEGFileFormat", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.image.PNGFileFormat", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.image.WinBMPFileFormat", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.image.WinICOFileFormat", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.widgets.IdGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.widgets.displaykit.DisplayLCA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.widgets.scrollbarkit.ScrollBarThemeAdapter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.widgets.shellkit.ShellThemeAdapter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.widgets.tablekit.TableThemeAdapter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.eclipse.swt.internal.widgets.treekit.TreeThemeAdapter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.ConfigFile$Spi", + "methods":[{"name":"","parameterTypes":["javax.security.auth.login.Configuration$Parameters"] }] +}, +{ + "name":"sun.security.provider.DRBG", + "methods":[{"name":"","parameterTypes":["java.security.SecureRandomParameters"] }] +}, +{ + "name":"sun.security.provider.DSAKeyFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSAParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.NativePRNG", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.X509Factory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAKeyFactory$Legacy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.util.ObjectIdentifier" +}, +{ + "name":"sun.security.x509.AuthorityKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.BasicConstraintsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CertificateExtensions" +}, +{ + "name":"sun.security.x509.ExtendedKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.KeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +} +] diff --git a/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/resource-config.json b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/resource-config.json new file mode 100644 index 000000000..0f3300a5a --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/resource-config.json @@ -0,0 +1,735 @@ +{ + "resources":{ + "includes":[ + { + "pattern":"\\QMETA-INF/MANIFEST.MF\\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":"\\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/XForms-11-Schema.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/docbook.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-events-attribs-1.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" + } + ]}, + "bundles":[ + { + "name":"javax.servlet.LocalStrings", + "locales":[""] + }, + { + "name":"javax.servlet.http.LocalStrings", + "locales":[""] + }, + { + "name":"org.apache.xerces.impl.xpath.regex.message", + "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.rap.cli/META-INF/native-image/serialization-config.json b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/serialization-config.json new file mode 100644 index 000000000..bf554e062 --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/META-INF/native-image/serialization-config.json @@ -0,0 +1,6 @@ +{ + "types":[ + ], + "lambdaCapturingTypes":[ + ] +} diff --git a/swt/rap/org.argeo.tool.rap.cli/bnd.bnd b/swt/rap/org.argeo.tool.rap.cli/bnd.bnd new file mode 100644 index 000000000..4dce79bc7 --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/bnd.bnd @@ -0,0 +1,8 @@ +Import-Package: \ +org.eclipse.jetty.util.component;version="[9.4,12)";resolution:=optional,\ +org.eclipse.jetty.http;version="[9.4,12)";resolution:=optional,\ +org.eclipse.jetty.io;version="[9.4,12)";resolution:=optional,\ +org.eclipse.jetty.security;version="[9.4,12)";resolution:=optional,\ +org.eclipse.jetty.server.handler;version="[9.4,12)";resolution:=optional,\ +org.eclipse.jetty.*;version="[9.4,12)";resolution:=optional,\ +* \ No newline at end of file diff --git a/swt/rap/org.argeo.tool.rap.cli/build.properties b/swt/rap/org.argeo.tool.rap.cli/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/CmsRapCli.java b/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/CmsRapCli.java new file mode 100644 index 000000000..a1ddbd08b --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/CmsRapCli.java @@ -0,0 +1,128 @@ +package org.argeo.tool.rap.cli; + +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.argeo.api.acr.spi.ProvidedRepository; +import org.argeo.api.cli.CommandsCli; +import org.argeo.api.cli.DescribedCommand; +import org.argeo.api.cms.CmsApp; +import org.argeo.api.cms.CmsContext; +import org.argeo.api.cms.CmsState; +import org.argeo.cms.jetty.CmsJettyServer; +import org.argeo.cms.runtime.StaticCms; +import org.argeo.cms.swt.app.CmsUserApp; +import org.argeo.cms.web.CmsWebApp; +import org.argeo.util.register.Component; +import org.argeo.util.register.ComponentRegister; +import org.eclipse.rap.rwt.application.ApplicationConfiguration; + +public class CmsRapCli extends CommandsCli { + + public CmsRapCli(String commandName) { + super(commandName); + addCommand("user", new Launch()); + } + + @Override + public String getDescription() { + return "Argeo CMS utilities."; + } + + public static void main(String[] args) { + mainImpl(new CmsRapCli("web"), args); + } + + static class Launch implements DescribedCommand { + private Option dataOption; + private Option uiOption; + + @Override + public Options getOptions() { + Options options = new Options(); + dataOption = Option.builder().longOpt("data").hasArg().required() + .desc("path to the writable data area (mandatory)").build(); + uiOption = Option.builder().longOpt("ui").desc("open a user interface").build(); + options.addOption(dataOption); + options.addOption(uiOption); + return options; + } + + @Override + public String apply(List args) { + CommandLine cl = toCommandLine(args); + String dataPath = cl.getOptionValue(dataOption); + boolean ui = cl.hasOption(uiOption); + + Path instancePath = Paths.get(dataPath); + System.setProperty("osgi.instance.area", instancePath.toUri().toString()); + System.setProperty("argeo.http.port", "0"); + + StaticCms staticCms = new StaticCms() { + @Override + protected void addComponents(ComponentRegister register) { + if (ui) { + CmsUserApp cmsApp = new CmsUserApp(); + Component cmsAppC = new Component.Builder<>(cmsApp) // + .addType(CmsApp.class) // + .addType(CmsUserApp.class) // + .addDependency(register.getSingleton(CmsContext.class), cmsApp::setCmsContext, null) // + .addDependency(register.getSingleton(ProvidedRepository.class), + cmsApp::setContentRepository, null) // + .build(register); + + CmsWebApp cmsWebApp = new CmsWebApp(); + Component cmsWebAppC = new Component.Builder<>(cmsWebApp) // + .addType(ApplicationConfiguration.class) // + .addType(CmsWebApp.class) // + .addDependency(cmsAppC.getType(CmsApp.class), cmsWebApp::setCmsApp, null) // + .build(register); + + RapJettyServer rwtRunner = new RapJettyServer(); + Component rwtRunnerC = new Component.Builder<>(rwtRunner) // + .addActivation(rwtRunner::start) // + .addDeactivation(rwtRunner::stop) // + .addType(CmsJettyServer.class) // + .addDependency(register.getSingleton(CmsState.class), rwtRunner::setCmsState, null) // + .addDependency(cmsWebAppC.getType(CmsWebApp.class), rwtRunner::setCmsWebApp, null) // + .build(register); + } + } + + }; + Runtime.getRuntime().addShutdownHook(new Thread(() -> staticCms.stop(), "Static CMS Shutdown")); + staticCms.start(); + + long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); + System.out.println("Static CMS available in " + jvmUptime + " ms."); + + if (ui) { + try { + // open browser in app mode + Thread.sleep(2000);// wait for RWT to be ready + String browserCommand = "google-chrome --app=http://localhost:" + + staticCms.getComponentRegister().getObject(CmsJettyServer.class).getHttpPort() + "/data"; + Runtime.getRuntime().exec(browserCommand); + } catch (InterruptedException | IOException e) { + e.printStackTrace(); + } + } + + staticCms.waitForStop(); + + return null; + } + + @Override + public String getDescription() { + return "Launch a static CMS."; + } + + } +} diff --git a/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/RapJettyServer.java b/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/RapJettyServer.java new file mode 100644 index 000000000..6007feadf --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/RapJettyServer.java @@ -0,0 +1,59 @@ +package org.argeo.tool.rap.cli; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.ServletException; + +import org.argeo.cms.jetty.CmsJettyServer; +import org.argeo.cms.web.CmsWebApp; +import org.eclipse.jetty.servlet.DefaultServlet; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.rap.rwt.application.ApplicationRunner; +import org.eclipse.rap.rwt.engine.RWTServlet; + +public class RapJettyServer extends CmsJettyServer { + private CmsWebApp cmsWebApp; + + @Override + protected void addServlets(ServletContextHandler servletContextHandler) throws ServletException { + // rwt-resources requires a file system + try { + Path tempDir = Files.createTempDirectory("argeo-rwtRunner"); + servletContextHandler.setBaseResource(Resource.newResource(tempDir.resolve("www").toString())); + } catch (IOException e) { + throw new IllegalStateException("Cannot create temporary directory", e); + } + servletContextHandler.addEventListener(new ServletContextListener() { + ApplicationRunner applicationRunner; + + @Override + public void contextInitialized(ServletContextEvent sce) { + applicationRunner = new ApplicationRunner(cmsWebApp, sce.getServletContext()); + applicationRunner.start(); + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + applicationRunner.stop(); + } + }); + for (String uiName : cmsWebApp.getCmsApp().getUiNames()) + servletContextHandler.addServlet(new ServletHolder(new RWTServlet()), "/" + uiName); + + // Required to serve rwt-resources. It is important that this is last. + ServletHolder holderPwd = new ServletHolder("default", DefaultServlet.class); + servletContextHandler.addServlet(holderPwd, "/"); + + } + + public void setCmsWebApp(CmsWebApp cmsWebApp) { + this.cmsWebApp = cmsWebApp; + } + +} diff --git a/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/RwtRunner.java b/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/RwtRunner.java new file mode 100644 index 000000000..0974a779e --- /dev/null +++ b/swt/rap/org.argeo.tool.rap.cli/src/org/argeo/tool/rap/cli/RwtRunner.java @@ -0,0 +1,146 @@ +package org.argeo.tool.rap.cli; + +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Objects; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import org.argeo.minidesktop.MiniDesktopManager; +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.servlet.DefaultServlet; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.eclipse.rap.rwt.application.ApplicationConfiguration; +import org.eclipse.rap.rwt.application.ApplicationRunner; +import org.eclipse.rap.rwt.application.EntryPoint; +import org.eclipse.rap.rwt.application.Application.OperationMode; +import org.eclipse.rap.rwt.engine.RWTServlet; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; + +/** A minimal RWT runner based on embedded Jetty. */ +public class RwtRunner { + + private final Server server; + private final ServerConnector serverConnector; + private Path tempDir; + + private ApplicationConfiguration applicationConfiguration; + + public RwtRunner() { + server = new Server(new QueuedThreadPool(10, 1)); + serverConnector = new ServerConnector(server); + serverConnector.setPort(0); + server.setConnectors(new Connector[] { serverConnector }); + } + + protected Control createUi(Composite parent, Object context) { + return new Label(parent, 0); + } + + public void init() { + Objects.requireNonNull(applicationConfiguration); + + ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); + context.setContextPath("/"); + server.setHandler(context); + + String entryPoint = "app"; + + // rwt-resources requires a file system + try { + tempDir = Files.createTempDirectory("argeo-rwtRunner"); + context.setBaseResource(Resource.newResource(tempDir.resolve("www").toString())); + } catch (IOException e) { + throw new IllegalStateException("Cannot create temporary directory", e); + } + context.addEventListener(new ServletContextListener() { + ApplicationRunner applicationRunner; + + @Override + public void contextInitialized(ServletContextEvent sce) { + applicationRunner = new ApplicationRunner(applicationConfiguration, sce.getServletContext()); + applicationRunner.start(); + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + applicationRunner.stop(); + } + }); + + context.addServlet(new ServletHolder(new RWTServlet()), "/" + entryPoint); + + // Required to serve rwt-resources. It is important that this is last. + ServletHolder holderPwd = new ServletHolder("default", DefaultServlet.class); + context.addServlet(holderPwd, "/"); + + try { + server.start(); + } catch (Exception e) { + throw new IllegalStateException("Cannot start Jetty server", e); + } + Runtime.getRuntime().addShutdownHook(new Thread(() -> destroy(), "Jetty shutdown")); + + long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); + System.out.println("RWT App available in " + jvmUptime + " ms, on port " + getEffectivePort()); + } + + public void destroy() { + try { + serverConnector.close(); + server.stop(); + // TODO delete temp dir + } catch (Exception e) { + e.printStackTrace(); + } + } + + public Integer getEffectivePort() { + return serverConnector.getLocalPort(); + } + + public void waitFor() throws InterruptedException { + server.join(); + } + + public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) { + this.applicationConfiguration = applicationConfiguration; + } + + public static void main(String[] args) throws Exception { + RwtRunner rwtRunner = new RwtRunner(); + + String entryPoint = "app"; + ApplicationConfiguration applicationConfiguration = (application) -> { + application.setOperationMode(OperationMode.SWT_COMPATIBILITY); + application.addEntryPoint("/" + entryPoint, () -> new EntryPoint() { + @Override + public int createUI() { + MiniDesktopManager miniDesktopManager = new MiniDesktopManager(false, false); + miniDesktopManager.init(); + miniDesktopManager.run(); + return 0; + } + }, null); + }; + + rwtRunner.setApplicationConfiguration(applicationConfiguration); + rwtRunner.init(); + + // open browser in app mode + Thread.sleep(2000);// wait for RWT to be ready + Runtime.getRuntime().exec("google-chrome --app=http://localhost:" + rwtRunner.getEffectivePort() + "/app"); + + rwtRunner.waitFor(); + } +} diff --git a/swt/rap/org.argeo.tool.server/src/org/argeo/tool/server/ArgeoServer.java b/swt/rap/org.argeo.tool.server/src/org/argeo/tool/server/ArgeoServer.java index 53df03a0e..4779d0501 100644 --- a/swt/rap/org.argeo.tool.server/src/org/argeo/tool/server/ArgeoServer.java +++ b/swt/rap/org.argeo.tool.server/src/org/argeo/tool/server/ArgeoServer.java @@ -1,7 +1,7 @@ package org.argeo.tool.server; import org.argeo.cms.cli.ArgeoCli; -import org.argeo.cms.swt.rap.cli.CmsRapCli; +import org.argeo.tool.rap.cli.CmsRapCli; /** Argeo command line tools. */ public class ArgeoServer extends ArgeoCli { diff --git a/swt/rcp/org.argeo.tool.rcp.cli/.classpath b/swt/rcp/org.argeo.tool.rcp.cli/.classpath new file mode 100644 index 000000000..81fe078c2 --- /dev/null +++ b/swt/rcp/org.argeo.tool.rcp.cli/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/swt/rcp/org.argeo.tool.rcp.cli/.project b/swt/rcp/org.argeo.tool.rcp.cli/.project new file mode 100644 index 000000000..c0c5b6ae7 --- /dev/null +++ b/swt/rcp/org.argeo.tool.rcp.cli/.project @@ -0,0 +1,28 @@ + + + org.argeo.tool.rcp.cli + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/swt/rcp/org.argeo.tool.rcp.cli/bnd.bnd b/swt/rcp/org.argeo.tool.rcp.cli/bnd.bnd new file mode 100644 index 000000000..e69de29bb diff --git a/swt/rcp/org.argeo.tool.rcp.cli/build.properties b/swt/rcp/org.argeo.tool.rcp.cli/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/swt/rcp/org.argeo.tool.rcp.cli/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/swt/rcp/org.argeo.tool.rcp.cli/src/org/argeo/cms/swt/rcp/cli/CmsCli.java b/swt/rcp/org.argeo.tool.rcp.cli/src/org/argeo/cms/swt/rcp/cli/CmsCli.java new file mode 100644 index 000000000..3fe2935af --- /dev/null +++ b/swt/rcp/org.argeo.tool.rcp.cli/src/org/argeo/cms/swt/rcp/cli/CmsCli.java @@ -0,0 +1,110 @@ +package org.argeo.cms.swt.rcp.cli; + +import java.lang.management.ManagementFactory; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.concurrent.ForkJoinPool; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.argeo.api.acr.spi.ProvidedRepository; +import org.argeo.api.cli.CommandsCli; +import org.argeo.api.cli.DescribedCommand; +import org.argeo.api.cms.CmsApp; +import org.argeo.cms.runtime.StaticCms; +import org.argeo.cms.swt.app.CmsUserApp; +import org.argeo.cms.ui.rcp.CmsRcpDisplayFactory; +import org.argeo.util.register.Component; +import org.argeo.util.register.ComponentRegister; + +public class CmsCli extends CommandsCli { + + public CmsCli(String commandName) { + super(commandName); + addCommand("static", new Launch()); + } + + @Override + public String getDescription() { + return "Argeo CMS utilities."; + } + + static class Launch implements DescribedCommand { + private Option dataOption; + private Option uiOption; + + @Override + public Options getOptions() { + Options options = new Options(); + dataOption = Option.builder().longOpt("data").hasArg().required() + .desc("path to the writable data area (mandatory)").build(); + uiOption = Option.builder().longOpt("ui").desc("open a user interface").build(); + options.addOption(dataOption); + options.addOption(uiOption); + return options; + } + + @Override + public String apply(List args) { + CommandLine cl = toCommandLine(args); + String dataPath = cl.getOptionValue(dataOption); + boolean ui = cl.hasOption(uiOption); + + Path instancePath = Paths.get(dataPath); + System.setProperty("osgi.instance.area", instancePath.toUri().toString()); + + StaticCms staticCms = new StaticCms() { + @Override + protected void addComponents(ComponentRegister register) { + if (ui) { + Component contentRepositoryC = register + .find(ProvidedRepository.class, null).first(); + CmsUserApp cmsApp = new CmsUserApp(); + Component cmsAppC = new Component.Builder<>(cmsApp) // + .addType(CmsApp.class) // + .addType(CmsUserApp.class) // + .addDependency(contentRepositoryC.getType(ProvidedRepository.class), + cmsApp::setContentRepository, null) // + .build(register); + + CmsRcpDisplayFactory displayFactory = new CmsRcpDisplayFactory(); + Component displayFactoryC = new Component.Builder<>(displayFactory) // + .addActivation(displayFactory::init) // + .addDeactivation(displayFactory::destroy) // + .build(register); + + } + } + + @Override + protected void postActivation(ComponentRegister register) { + if (ui) { + Component cmsAppC = register.find(CmsUserApp.class, null).first(); + CmsRcpDisplayFactory.openCmsApp(cmsAppC.get(), "data", (e) -> { + // asynchronous in order to avoid deadlock in UI thread + ForkJoinPool.commonPool().execute(() -> stop()); + }); + } + } + + }; + Runtime.getRuntime().addShutdownHook(new Thread(() -> staticCms.stop(), "Static CMS Shutdown")); + staticCms.start(); + + long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); + System.out.println("Static CMS available in " + jvmUptime + " ms."); + + staticCms.waitForStop(); + + return null; + } + + @Override + public String getDescription() { + return "Launch a static CMS."; + } + + } +}