From 6e18e406a5462dad59ec355f977e533733babf2f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 4 May 2020 17:02:23 +0200 Subject: [PATCH] Generate native binary Use GraalVM's `native-image` feature to generate a executable. Run `./mvnw package -Pnative -DskipTests` in order to generate an executable under `org.eclipse.lemminx/target`. Adopted from [PR 673](https://github.com/eclipse/lemminx/pull/673) A part of #314. Signed-off-by: Fred Bricon Signed-off-by: David Thompson --- Jenkinsfile | 2 +- README.md | 32 +- org.eclipse.lemminx/pom.xml | 83 +- .../commons/snippets/SnippetDeserializer.java | 4 +- .../xsd/contentmodel/XSDDocumentation.java | 51 +- .../lemminx/settings/XMLPreferences.java | 20 +- .../src/main/resources/META-INF/extra.json | 4 + .../META-INF/native-image/jni-config.json | 2 + .../META-INF/native-image/proxy-config.json | 3 + .../META-INF/native-image/reflect-config.json | 1511 +++++++++++++++++ .../native-image/resource-config.json | 33 + 11 files changed, 1687 insertions(+), 58 deletions(-) create mode 100644 org.eclipse.lemminx/src/main/resources/META-INF/extra.json create mode 100644 org.eclipse.lemminx/src/main/resources/META-INF/native-image/jni-config.json create mode 100644 org.eclipse.lemminx/src/main/resources/META-INF/native-image/proxy-config.json create mode 100644 org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json create mode 100644 org.eclipse.lemminx/src/main/resources/META-INF/native-image/resource-config.json diff --git a/Jenkinsfile b/Jenkinsfile index e03d0294cc..a8f4d79350 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -42,4 +42,4 @@ pipeline{ } } } -} \ No newline at end of file +} diff --git a/README.md b/README.md index 6e16cc8290..c2a2ff8760 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,34 @@ this.forward(clientConnection, serverConnection) socket.connect(socketPort) ``` +Generating a native binary (WIP): +--------------------------------- +To generate a native binary: +- [Install GraalVM 20.2.0](https://www.graalvm.org/docs/getting-started/#install-graalvm) +- In a terminal, run `gu install native-image` +- Execute a Maven build activating the `native` profile: `./mvnw clean package -Pnative -DskipTests` +- It will generate a native binary in `org.eclipse.lemminx/target/lemminx-{os.name}-{version}` + +OS specific instructions: +- __Fedora__: + - Make sure that you have installed the static versions of the C++ standard library +- __Windows__: + - When installing native-image, please note that `gu` is an existing alias in PowerShell. + Remove the alias with `Remote-Item alias:gu -Force`, refer to `gu` with the absolute path, or use `gu` under `cmd.exe`. + - Make sure to run the Maven wrapper in the "Native Tools Command Prompt". + This command prompt can be obtained through installing the Windows SDK or Visual Studio, as + mentioned in the [GraalVM installation instructions](https://www.graalvm.org/docs/getting-started-with-graalvm/windows/). + +`native-image` Development Instructions: +- Reflection: + - If you need to use reflection to access a private field/method, simply register the field/methods that you access in `reflect-config.json` + - If you need to parse some JSON using Gson, make sure to register the fields and methods of the class that you are parsing into in `reflect-config.json` + - Recursively, for all classes that it has, including `enum`s + - Settings are all deserialized, so whenever a setting is added, this must be done and tested + - Manually test the binary and check the logs for reflection errors/NPEs +- Snippets: + - If you are creating a new snippet file, make sure to register it under `org.eclipse.lemminx/src/main/resources/META-INF/resource-config.json` + Maven coordinates: ------------------ @@ -119,8 +147,8 @@ Here are some clients consuming this XML Language Server: * [Spring Tools 4](https://github.com/spring-projects/sts4) - re-using the XML parser for Spring-specific analysis and content-assist * Vim/Neovim with [coc-xml](https://github.com/fannheyward/coc-xml) * Emacs with [lsp-mode](https://github.com/emacs-lsp/lsp-mode) - - + + Extensions ---------- diff --git a/org.eclipse.lemminx/pom.xml b/org.eclipse.lemminx/pom.xml index 00171410ca..821f6e3690 100644 --- a/org.eclipse.lemminx/pom.xml +++ b/org.eclipse.lemminx/pom.xml @@ -11,6 +11,7 @@ yyyyMMdd-HHmm ${maven.build.timestamp} true + 20.2.0 @@ -48,25 +49,27 @@ git-commit-id-plugin 4.0.0 - - get-the-git-infos - - revision - - + + get-the-git-infos + + revision + + - ${project.basedir}/../.git - true - - ^git.commit.id.abbrev$ - ^git.commit.message.short$ - ^git.branch$ - ^git.build.version$ - - true + ${project.basedir}/../.git + true + + ^git.commit.id.abbrev$ + ^git.commit.message.short$ + ^git.branch$ + ^git.build.version$ + + + true + - + org.apache.felix maven-bundle-plugin @@ -112,6 +115,53 @@ + + native + + + native + true + + + + + + kr.motd.maven + os-maven-plugin + 1.6.1 + + + initialize + + detect + + + + + + org.graalvm.nativeimage + native-image-maven-plugin + ${graalvm.version} + + + + native-image + + package + + + + false + lemminx-${os.detected.classifier}-${project.version} + + --no-fallback + -H:EnableURLProtocols=https,http + + + + + + generate-p2 @@ -204,5 +254,4 @@ test - \ No newline at end of file diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/snippets/SnippetDeserializer.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/snippets/SnippetDeserializer.java index 13846d73fa..83995e1982 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/snippets/SnippetDeserializer.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/snippets/SnippetDeserializer.java @@ -5,7 +5,7 @@ * http://www.eclipse.org/legal/epl-v20.html * * SPDX-License-Identifier: EPL-2.0 -* +* * Contributors: * Red Hat Inc. - initial API and implementation *******************************************************************************/ @@ -27,7 +27,7 @@ /** * GSON deserializer to build Snippet from vscode JSON snippet. - * + * * @author Angelo ZERR * */ diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/contentmodel/XSDDocumentation.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/contentmodel/XSDDocumentation.java index 0c37679c22..b65319c1d4 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/contentmodel/XSDDocumentation.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/xsd/contentmodel/XSDDocumentation.java @@ -21,7 +21,7 @@ /** * XSD documentation - * + * * Represents documentation coming from an XML schema file */ public class XSDDocumentation { @@ -38,10 +38,12 @@ public XSDDocumentation(XSObjectList annotations, SchemaDocumentationType docStr this(annotations, null, docStrategy, convertToPlainText); } - public XSDDocumentation(XSObjectList annotations, String value, SchemaDocumentationType docStrategy, boolean convertToPlainText) { + public XSDDocumentation(XSObjectList annotations, String value, SchemaDocumentationType docStrategy, + boolean convertToPlainText) { List documentation = Collections.emptyList(); List appinfo = Collections.emptyList(); - switch(docStrategy) { + + switch (docStrategy) { case all: { documentation = XSDAnnotationModel.getDocumentation(annotations, value); appinfo = XSDAnnotationModel.getAppInfo(annotations, value); @@ -55,14 +57,14 @@ public XSDDocumentation(XSObjectList annotations, String value, SchemaDocumentat appinfo = XSDAnnotationModel.getAppInfo(annotations, value); break; } - case none:{ + case none: { break; } } if (convertToPlainText) { // convert content to plain text - + // if the content contains html tags, converting to plaintext // will remove them convertToPlainText(documentation); @@ -74,19 +76,17 @@ public XSDDocumentation(XSObjectList annotations, String value, SchemaDocumentat this.strategy = docStrategy; this.prefix = XSDAnnotationModel.getPrefix(annotations, value); } + /** - * Returns formatted documentation that displays - * contents of the documentation element (if exists) and the appinfo - * element (if exists). - * - * The returned documentation will return raw html if - * html is true. Otherwise, the returned documentation - * will be plaintext. - * + * Returns formatted documentation that displays contents of the documentation + * element (if exists) and the appinfo element (if exists). + * + * The returned documentation will return raw html if html is true. + * Otherwise, the returned documentation will be plaintext. + * * @param html if true, the return value will contain raw html - * @return formatted documentation that displays - * contents of the documentation element (if exists) and the appinfo - * element (if exists) + * @return formatted documentation that displays contents of the documentation + * element (if exists) and the appinfo element (if exists) */ public String getFormattedDocumentation(boolean html) { StringBuilder result = new StringBuilder(); @@ -97,15 +97,14 @@ public String getFormattedDocumentation(boolean html) { } /** - * Returns true if documentation title (ie, xs:documentation, xs:appinfo) - * should be preprended to the documentation - * - * @return true if documentation title (ie, xs:documentation, xs:appinfo) - * should be preprended to the documentation + * Returns true if documentation title (ie, xs:documentation, xs:appinfo) should + * be preprended to the documentation + * + * @return true if documentation title (ie, xs:documentation, xs:appinfo) should + * be preprended to the documentation */ private boolean prependTitleCheck() { - return this.documentation.size() > 0 && this.appinfo.size() > 0 - && strategy == SchemaDocumentationType.all; + return this.documentation.size() > 0 && this.appinfo.size() > 0 && strategy == SchemaDocumentationType.all; } private static void convertToPlainText(List list) { @@ -116,13 +115,13 @@ private static void convertToPlainText(List list) { } } - private static String getFormatted(String prefix, String elementName, List content, - boolean prependTitles, boolean html) { + private static String getFormatted(String prefix, String elementName, List content, boolean prependTitles, + boolean html) { StringBuilder result = new StringBuilder(); if (prependTitles) { result.append(applyPrefix(prefix, elementName, html)); } - for (String doc: content) { + for (String doc : content) { if (!StringUtils.isBlank(doc)) { if (html) { result.append("

"); diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/XMLPreferences.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/XMLPreferences.java index 0a52e29e5d..dbaa9dbb71 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/XMLPreferences.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/XMLPreferences.java @@ -16,9 +16,9 @@ * */ public class XMLPreferences { - + public static final QuoteStyle DEFAULT_QUOTE_STYLE = QuoteStyle.doubleQuotes; - + public static final SchemaDocumentationType DEFAULT_SCHEMA_DOCUMENTATION_TYPE = SchemaDocumentationType.all; private QuoteStyle quoteStyle; @@ -32,9 +32,9 @@ public XMLPreferences() { /** * Returns the actual quotation value as a char. - * + * * Either a {@code '} or {@code "}. - * + * * Defaults to {@code "}. */ public char getQuotationAsChar() { @@ -44,9 +44,9 @@ public char getQuotationAsChar() { /** * Returns the actual quotation value as a String. - * + * * Either a {@code '} or {@code "}. - * + * * Defaults to {@code "}. */ public String getQuotationAsString() { @@ -55,7 +55,7 @@ public String getQuotationAsString() { /** * Sets the quote style - * + * * @param quoteStyle */ public void setQuoteStyle(QuoteStyle quoteStyle) { @@ -64,7 +64,7 @@ public void setQuoteStyle(QuoteStyle quoteStyle) { /** * Returns the quote style - * + * * @return */ public QuoteStyle getQuoteStyle() { @@ -80,7 +80,7 @@ public SchemaDocumentationType getShowSchemaDocumentationType() { /** * Sets the showSchemaDocumentationType - * + * * @param showSchemaDocumentationType */ public void setShowSchemaDocumentationType(SchemaDocumentationType showSchemaDocumentationType) { @@ -90,7 +90,7 @@ public void setShowSchemaDocumentationType(SchemaDocumentationType showSchemaDoc /** * Merges the contents of newPreferences to the current * XMLPreferences instance - * + * * @param newPreferences */ public void merge(XMLPreferences newPreferences) { diff --git a/org.eclipse.lemminx/src/main/resources/META-INF/extra.json b/org.eclipse.lemminx/src/main/resources/META-INF/extra.json new file mode 100644 index 0000000000..233d2cc697 --- /dev/null +++ b/org.eclipse.lemminx/src/main/resources/META-INF/extra.json @@ -0,0 +1,4 @@ +{ + "name":"org.eclipse.lemminx.services.extensions.IXMLExtension", + "allDeclaredMethods":true +}, \ No newline at end of file diff --git a/org.eclipse.lemminx/src/main/resources/META-INF/native-image/jni-config.json b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/jni-config.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/jni-config.json @@ -0,0 +1,2 @@ +[ +] diff --git a/org.eclipse.lemminx/src/main/resources/META-INF/native-image/proxy-config.json b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/proxy-config.json new file mode 100644 index 0000000000..6c0bdcc2a9 --- /dev/null +++ b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/proxy-config.json @@ -0,0 +1,3 @@ +[ + ["org.eclipse.lemminx.customservice.XMLLanguageClientAPI","org.eclipse.lsp4j.jsonrpc.Endpoint"] +] diff --git a/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json new file mode 100644 index 0000000000..335e92023f --- /dev/null +++ b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json @@ -0,0 +1,1511 @@ +[ + { + "name": "com.overzealous.remark.Remark", + "fields": [{ + "name": "cleaner" + }] + }, + { + "name": "java.lang.Object", + "allDeclaredMethods": true + }, + { + "name": "java.lang.String[]" + }, + { + "name": "java.util.ArrayList", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.apache.xerces.impl.dv.ObjectFactory" + }, + { + "name": "org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl", + "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.SchemaGrammar", + "fields": [{ + "name": "fComplexTypeDecls" + }, { + "name": "fCTLocators" + }] + }, + { + "name": "org.apache.xerces.impl.xs.XMLSchemaLoader", + "fields": [{ + "name": "fSchemaHandler" + }] + }, + { + "name": "org.apache.xerces.impl.xs.traversers.XSDHandler", + "fields": [{ + "name": "fSchemaParser" + }, { + "name": "fLocalElementDecl" + }, { + "name": "fParticle" + }] + }, + { + "name": "org.apache.xerces.impl.xs.XSLoaderImpl", + "fields": [{ + "name": "fSchemaLoader" + }] + }, + { + "name": "org.apache.xerces.parsers.ObjectFactory" + }, + { + "name": "org.apache.xerces.parsers.XIncludeAwareParserConfiguration", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.apache.xml.resolver.readers.OASISXMLCatalogReader", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.XMLLanguageServer", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.XMLTextDocumentService", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.XMLWorkspaceService", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.services.extensions.IXMLExtension", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.client.CodeLensKindCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.client.ExtendedClientCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.client.ExtendedCodeLensCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.commons.ParentProcessWatcher$ProcessLanguageServer", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.commons.snippets.Snippet", + "allDeclaredMethods": true, + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lemminx.services.snippets.XMLSnippetRegistryLoader" + }, + { + "name": "org.apache.xerces.impl.dtd.XMLDTDValidator", + "fields": [{ + "name": "fRootElement" + }] + }, + { + "name": "org.eclipse.lemminx.customservice.ActionableNotification", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.customservice.AutoCloseTagResponse", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lemminx.customservice.XMLLanguageClientAPI", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.customservice.XMLLanguageServerAPI", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.extensions.contentmodel.settings.XMLFileAssociation", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.extensions.contentmodel.settings.XMLFileAssociation[]" + }, + { + "name": "org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.services.CompletionResponse", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.services.IXMLDocumentProvider", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lemminx.settings.AllXMLSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.InitializationOptionsSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.LogsSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.PathPatternMatcher", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lemminx.settings.ServerSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.XMLCodeLensSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.XMLCompletionSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.XMLFormattingOptions", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.XMLGeneralClientSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.XMLSymbolSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.QuoteStyle", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lemminx.settings.SchemaDocumentationType", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lemminx.settings.XMLPreferences", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lemminx.settings.capabilities.InitializationOptionsExtendedClientCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CallHierarchyCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ClientCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeAction", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeActionCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeActionContext", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeActionKindCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeActionLiteralSupportCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeActionOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeActionParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeLensCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CodeLensOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ColorProviderCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ColorProviderOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.Command", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionContext", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionItem", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionItemCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionItemKind", + "fields": [{ + "name": "Class" + }, + { + "name": "Color" + }, + { + "name": "Constant" + }, + { + "name": "Constructor" + }, + { + "name": "Enum" + }, + { + "name": "EnumMember" + }, + { + "name": "Event" + }, + { + "name": "Field" + }, + { + "name": "File" + }, + { + "name": "Folder" + }, + { + "name": "Function" + }, + { + "name": "Interface" + }, + { + "name": "Keyword" + }, + { + "name": "Method" + }, + { + "name": "Module" + }, + { + "name": "Operator" + }, + { + "name": "Property" + }, + { + "name": "Reference" + }, + { + "name": "Snippet" + }, + { + "name": "Struct" + }, + { + "name": "Text" + }, + { + "name": "TypeParameter" + }, + { + "name": "Unit" + }, + { + "name": "Value" + }, + { + "name": "Variable" + }, + { + "name": "value" + } + ] + }, + { + "name": "org.eclipse.lsp4j.CompletionItemKindCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionItemTag", + "fields": [{ + "name": "Deprecated" + }, + { + "name": "value" + } + ] + }, + { + "name": "org.eclipse.lsp4j.CompletionItemTagSupportCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionList", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lsp4j.CompletionOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CompletionTriggerKind", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.CreateFile", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.CreateFileOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DeclarationCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DefinitionCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DefinitionParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DeleteFile", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DeleteFileOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.Diagnostic", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DiagnosticRelatedInformation", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DiagnosticSeverity", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.DiagnosticTag", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.DiagnosticsTagSupport", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidChangeConfigurationCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidChangeConfigurationParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidChangeTextDocumentParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidChangeWatchedFilesCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidChangeWatchedFilesRegistrationOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidCloseTextDocumentParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidOpenTextDocumentParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DidSaveTextDocumentParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentFilter", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentFormattingParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentHighlight", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentHighlightCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentHighlightKind", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentHighlightParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentLink", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentLinkCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentLinkOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentLinkParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentOnTypeFormattingOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentSymbolCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DocumentSymbolParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.DynamicRegistrationCapabilities", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lsp4j.ExecuteCommandCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ExecuteCommandOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FileSystemWatcher", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FoldingRange", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FoldingRangeCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FoldingRangeProviderOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FoldingRangeRequestParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FormattingCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.FormattingOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.HoverCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.HoverParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ImplementationCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.InitializeResult", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.InitializedParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.InsertTextFormat", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.Location", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.LocationLink", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.MarkupContent", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.MessageParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.MessageType", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.OnTypeFormattingCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ParameterInformationCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.Position", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.PublishDiagnosticsCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.PublishDiagnosticsParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.Range", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.RangeFormattingCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ReferencesCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.Registration", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.RegistrationParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.RenameCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.RenameFile", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.RenameFileOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.RenameOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ResourceChange", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ResourceOperation", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lsp4j.SaveOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SelectionRangeCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SemanticHighlightingCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SemanticHighlightingServerCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ServerCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.ServerInfo", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SignatureHelpCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SignatureHelpOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SignatureInformationCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.StaticRegistrationOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SymbolCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SymbolKind", + "fields": [{ + "name": "value" + }] + }, + { + "name": "org.eclipse.lsp4j.SymbolKindCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.SynchronizationCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentClientCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentContentChangeEvent", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentEdit", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentIdentifier", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentItem", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentPositionParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextDocumentRegistrationOptions", + "allDeclaredFields": true + }, + { + "name": "org.eclipse.lsp4j.TextDocumentSyncOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TextEdit", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TypeDefinitionCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TypeDefinitionParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.TypeHierarchyCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.WorkspaceClientCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.WorkspaceEdit", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.WorkspaceEditCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.WorkspaceFolder", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.WorkspaceFoldersOptions", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.WorkspaceServerCapabilities", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.CodeActionResponseAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.DocumentChangeListAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.DocumentSymbolResponseAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.HoverTypeAdapter$Factory", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.InitializeParamsTypeAdapter$Factory", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.LocationLinkListAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.PrepareRenameResponseAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.ResourceChangeListAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.ResourceOperationTypeAdapter", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.SymbolInformationTypeAdapter$Factory", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.adapters.VersionedTextDocumentIdentifierTypeAdapter$Factory", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.jsonrpc.json.adapters.JsonElementTypeAdapter$Factory", + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.jsonrpc.messages.CancelParams", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.jsonrpc.messages.ResponseError", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, + { + "name": "org.eclipse.lsp4j.services.LanguageClient", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lsp4j.services.LanguageServer", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lsp4j.services.TextDocumentService", + "allDeclaredMethods": true + }, + { + "name": "org.eclipse.lsp4j.services.WorkspaceService", + "allDeclaredMethods": true + }, + { + "name": "org.jsoup.safety.Cleaner", + "fields": [{ + "name": "whitelist" + }] + }, + { + "name": "sun.misc.Unsafe", + "fields": [{ + "name": "theUnsafe" + }], + "methods": [{ + "name": "allocateInstance", + "parameterTypes": ["java.lang.Class"] + }] + } +] \ No newline at end of file diff --git a/org.eclipse.lemminx/src/main/resources/META-INF/native-image/resource-config.json b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/resource-config.json new file mode 100644 index 0000000000..bc89bbc7cb --- /dev/null +++ b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/resource-config.json @@ -0,0 +1,33 @@ +{ + "resources":[ + {"pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"}, + {"pattern":"\\QMETA-INF/services/org.eclipse.lemminx.services.extensions.IXMLExtension\\E"}, + {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.dtd\\E"}, + {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.rng\\E"}, + {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.xsd\\E"}, + {"pattern":"\\Qorg/apache/xml/resolver/etc/xcatalog.dtd\\E"}, + {"pattern":"\\Qorg/jsoup/nodes/entities-base.properties\\E"}, + {"pattern":"\\Qorg/jsoup/nodes/entities-full.properties\\E"}, + {"pattern":"\\Qschemas/xsd/XMLSchema.dtd\\E"}, + {"pattern":"\\Qschemas/xsd/XMLSchema.xsd\\E"}, + {"pattern":"\\Qschemas/xsd/datatypes.dtd\\E"}, + {"pattern":"\\Qschemas/xsd/xml.xsd\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/catalog-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/cdata-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/comment-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/doctype-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/dtdnode-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/new-xml-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/new-xsd-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/processing-instruction-snippets.json\\E"}, + {"pattern":"\\Qorg/eclipse/lemminx/services/snippets/xml-declaration-snippets.json\\E"} + ], + "bundles":[ + {"name":"XMLSchemaMessagesReformatted"}, + {"name":"org.apache.xerces.impl.msg.XMLMessages"}, + {"name":"org.apache.xerces.impl.msg.XMLSchemaMessages"}, + {"name":"org.apache.xerces.impl.xpath.regex.message"}, + {"name":"version"}, + {"name": "git"} + ] +}