diff --git a/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/Lsp4jReflectConfigGenerator.java b/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/Lsp4jReflectConfigGenerator.java index df3ef5649..9e3ed3277 100644 --- a/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/Lsp4jReflectConfigGenerator.java +++ b/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/Lsp4jReflectConfigGenerator.java @@ -77,7 +77,7 @@ public class Lsp4jReflectConfigGenerator { }); } - private static JsonArray noArgsConstructorOnly() { + static JsonArray noArgsConstructorOnly() { JsonObject constr = new JsonObject(); constr.addProperty("name", ""); constr.add("parameterTypes", new JsonArray()); diff --git a/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/LspExtensionsReflectConfigGenerator.java b/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/LspExtensionsReflectConfigGenerator.java new file mode 100644 index 000000000..483a430b8 --- /dev/null +++ b/headless-services/commons/commons-language-server/src/test/java/org/springframework/ide/vscode/commons/languageserver/nativeimage/LspExtensionsReflectConfigGenerator.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright (c) 2023 VMware, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VMware, Inc. - initial API and implementation + *******************************************************************************/ +package org.springframework.ide.vscode.commons.languageserver.nativeimage; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.stream.Stream; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonIOException; +import com.google.gson.JsonObject; + +import io.github.classgraph.ClassGraph; +import io.github.classgraph.ScanResult; + +public class LspExtensionsReflectConfigGenerator { + + public static final void main(String[] args) throws JsonIOException, IOException { + + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + JsonArray array = new JsonArray(); + + generateLspExtensionsInterfacesJson().forEach(array::add); + generateLspExtensionsPojoJson().forEach(array::add); + + if (args.length > 0) { + System.out.println("ARG: " + args[0] + " array size = " + array.size()); + FileWriter fileWriter = new FileWriter(args[0]); + gson.toJson(array, fileWriter); + fileWriter.flush(); + fileWriter.close(); + } else { + System.out.println(gson.toJson(array)); + } + } + + private static Stream generateLspExtensionsPojoJson() { + ScanResult res = new ClassGraph().ignoreParentClassLoaders().enableMethodInfo().acceptPackages("org.springframework.ide.vscode.commons.protocol").scan(); + return res.getAllStandardClasses().stream().map(ci -> { + JsonObject obj = new JsonObject(); + obj.addProperty("name", ci.getName()); + obj.addProperty("allDeclaredFields", true); + obj.addProperty("allPublicConstructors", true); + return obj; + }); + } + + private static Stream generateLspExtensionsInterfacesJson() { + ScanResult res = new ClassGraph().ignoreParentClassLoaders().enableMethodInfo().acceptPackages("org.springframework.ide.vscode.commons.protocol").scan(); + return res.getAllInterfaces().stream().map(ci -> { + JsonObject obj = new JsonObject(); + obj.addProperty("name", ci.getName()); + obj.addProperty("queryAllDeclaredMethods", true); + obj.addProperty("queryAllPublicMethods", true); + return obj; + }); + } + +} diff --git a/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/java/SearchMatch.java b/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/java/SearchMatch.java index 226187651..305a9d3f4 100644 --- a/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/java/SearchMatch.java +++ b/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/java/SearchMatch.java @@ -16,7 +16,6 @@ public class SearchMatch { private double score; public SearchMatch(T element, double score) { - super(); this.element = element; this.score = score; } diff --git a/headless-services/concourse-language-server/src/main/resources/META-INF/native-image/org.springframework.ide.vscode/commons-lsp-extensions/reflect-config.json b/headless-services/concourse-language-server/src/main/resources/META-INF/native-image/org.springframework.ide.vscode/commons-lsp-extensions/reflect-config.json new file mode 100644 index 000000000..8d9a07bba --- /dev/null +++ b/headless-services/concourse-language-server/src/main/resources/META-INF/native-image/org.springframework.ide.vscode/commons-lsp-extensions/reflect-config.json @@ -0,0 +1,173 @@ +[ + { + "name": "org.springframework.ide.vscode.commons.protocol.STS4LanguageClient", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.SpringIndex", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageClient", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageServer", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.CursorMovement", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.HighlightParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.LiveProcessSummary", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.ProgressParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.TypeHierarchyResponseAdapter", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.Classpath", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.Classpath$CPE", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.ClasspathListenerParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaCodeCompleteData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaCodeCompleteParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaDataParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaElementData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaSearchParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaSearchParams$SearchType", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaTypeData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaTypeData$JavaTypeKind", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaTypeHierarchyParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.MemberData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.ProjectBuild", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.SearchMatch", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$AnnotationData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$ClasspathEntryData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$FieldData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$MethodData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeDescriptorData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.Bean", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.BeansParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.DefaultValues", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.InjectionPoint", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.MatchingBeansParams", + "allDeclaredFields": true, + "allPublicConstructors": true + } +] \ No newline at end of file diff --git a/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/org.springframework.ide.vscode/commons-lsp-extensions/reflect-config.json b/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/org.springframework.ide.vscode/commons-lsp-extensions/reflect-config.json new file mode 100644 index 000000000..8d9a07bba --- /dev/null +++ b/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/org.springframework.ide.vscode/commons-lsp-extensions/reflect-config.json @@ -0,0 +1,173 @@ +[ + { + "name": "org.springframework.ide.vscode.commons.protocol.STS4LanguageClient", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.SpringIndex", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageClient", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageServer", + "queryAllDeclaredMethods": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.CursorMovement", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.HighlightParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.LiveProcessSummary", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.ProgressParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.TypeHierarchyResponseAdapter", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.Classpath", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.Classpath$CPE", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.ClasspathListenerParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaCodeCompleteData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaCodeCompleteParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaDataParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaElementData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaSearchParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaSearchParams$SearchType", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaTypeData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaTypeData$JavaTypeKind", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.JavaTypeHierarchyParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.MemberData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.ProjectBuild", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.SearchMatch", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$AnnotationData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$ClasspathEntryData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$FieldData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeData$MethodData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.java.TypeDescriptorData", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.Bean", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.BeansParams", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.DefaultValues", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.InjectionPoint", + "allDeclaredFields": true, + "allPublicConstructors": true + }, + { + "name": "org.springframework.ide.vscode.commons.protocol.spring.MatchingBeansParams", + "allDeclaredFields": true, + "allPublicConstructors": true + } +] \ No newline at end of file diff --git a/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/reflect-config.json b/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/reflect-config.json index 69b598b99..5f4965831 100644 --- a/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/reflect-config.json +++ b/headless-services/spring-boot-language-server/src/main/resources/META-INF/native-image/reflect-config.json @@ -3884,66 +3884,6 @@ "name":"org.springframework.ide.vscode.boot.validation.generations.VersionValidator", "queryAllPublicMethods":true }, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.Generation", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setCommercialSupportEndDate","parameterTypes":["java.lang.String"] }, - {"name":"setInitialReleaseDate","parameterTypes":["java.lang.String"] }, - {"name":"setName","parameterTypes":["java.lang.String"] }, - {"name":"setOssSupportEndDate","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.Generations", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.JsonHalLinks", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"set_links","parameterTypes":["org.springframework.ide.vscode.boot.validation.generations.json.Links"] }] -}, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.Link", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.Links", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.SpringProject", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setName","parameterTypes":["java.lang.String"] }, - {"name":"setRepositoryUrl","parameterTypes":["java.lang.String"] }, - {"name":"setSlug","parameterTypes":["java.lang.String"] }, - {"name":"setStatus","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"org.springframework.ide.vscode.boot.validation.generations.json.SpringProjects", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, { "name":"org.springframework.ide.vscode.boot.xml.SpringXMLCompletionEngine", "allDeclaredFields":true, @@ -4123,114 +4063,6 @@ "name":"org.springframework.ide.vscode.commons.languageserver.util.SimpleWorkspaceService", "queryAllDeclaredMethods":true }, -{ - "name":"org.springframework.ide.vscode.commons.protocol.HighlightParams", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.LiveProcessSummary", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.STS4LanguageClient", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.TypeHierarchyResponseAdapter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.Classpath", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.Classpath$CPE", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.ClasspathListenerParams", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.JavaDataParams", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.JavaElementData", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.JavaTypeData", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.JavaTypeData$JavaTypeKind", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.MemberData", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.ProjectBuild", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.TypeData", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$AnnotationData", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$ClasspathEntryData", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$FieldData", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$MethodData", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.java.TypeDescriptorData", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.spring.Bean", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.spring.InjectionPoint", - "allDeclaredFields":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.spring.SpringIndex", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageClient", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageServer", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, { "name":"org.springframework.ide.vscode.commons.rewrite.config.RecipeScope", "allDeclaredFields":true @@ -4510,5 +4342,87 @@ { "name":"sun.security.x509.SubjectKeyIdentifierExtension", "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -} +}, + + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Generation", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Generations", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.JsonHalLinks", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Link", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Links", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Release", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Release$Status", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.Releases", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.SpringProject", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + }, + { + "name": "org.springframework.ide.vscode.boot.validation.generations.json.SpringProjects", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "queryAllDeclaredMethods": true, + "queryAllDeclaredConstructors": true + } + ] diff --git a/headless-services/spring-boot-language-server/src/main/resources/application.properties b/headless-services/spring-boot-language-server/src/main/resources/application.properties index 4ae589acf..33c33f7d9 100644 --- a/headless-services/spring-boot-language-server/src/main/resources/application.properties +++ b/headless-services/spring-boot-language-server/src/main/resources/application.properties @@ -12,4 +12,7 @@ logging.level.org.springframework.ide.vscode.boot.java.livehover.v2.SpringProces #logging.level.org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer=debug #logging.level.org.springframework.ide.vscode.boot.java.utils.SpringIndexerJava=debug #logging.level.org.springframework.ide.vscode.boot.app.SpringSymbolIndex=debug -#logging.level.org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp=off \ No newline at end of file +#logging.level.org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp=off + +languageserver.standalone=true +languageserver.standalone-port=5007 \ No newline at end of file diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/nativegen/SerializationReflectConfigGenerator.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/nativegen/SerializationReflectConfigGenerator.java new file mode 100644 index 000000000..a9fc83661 --- /dev/null +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/nativegen/SerializationReflectConfigGenerator.java @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (c) 2023 VMware, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VMware, Inc. - initial API and implementation + *******************************************************************************/ +package org.springframework.ide.vscode.boot.nativegen; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.stream.Stream; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonIOException; +import com.google.gson.JsonObject; + +import io.github.classgraph.ClassGraph; +import io.github.classgraph.ScanResult; + +public class SerializationReflectConfigGenerator { + + public static final void main(String[] args) throws JsonIOException, IOException { + + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + JsonArray array = new JsonArray(); + + generateGenerationsPojoJson().forEach(array::add); + + if (args.length > 0) { + System.out.println("ARG: " + args[0] + " array size = " + array.size()); + FileWriter fileWriter = new FileWriter(args[0]); + gson.toJson(array, fileWriter); + fileWriter.flush(); + fileWriter.close(); + } else { + System.out.println(gson.toJson(array)); + } + } + + private static Stream generateGenerationsPojoJson() { + ScanResult res = new ClassGraph().ignoreParentClassLoaders().enableMethodInfo().acceptPackagesNonRecursive("org.springframework.ide.vscode.boot.validation.generations.json").scan(); + return res.getAllStandardClasses().stream().filter(ci -> !ci.getSimpleName().equals("ResolvedSpringProject")).map(ci -> { + JsonObject obj = new JsonObject(); + obj.addProperty("name", ci.getName()); + obj.addProperty("allDeclaredFields", true); + obj.addProperty("allDeclaredMethods", true); + obj.addProperty("allPublicConstructors", true); + obj.addProperty("queryAllDeclaredMethods", true); + obj.addProperty("queryAllDeclaredConstructors", true); + return obj; + }); + } + +} diff --git a/vscode-extensions/vscode-spring-boot/lib/Main.ts b/vscode-extensions/vscode-spring-boot/lib/Main.ts index 138605d60..7d2b7f8f2 100644 --- a/vscode-extensions/vscode-spring-boot/lib/Main.ts +++ b/vscode-extensions/vscode-spring-boot/lib/Main.ts @@ -28,7 +28,7 @@ export function activate(context: VSCode.ExtensionContext): Thenable