Boot LS native functional

This commit is contained in:
aboyko
2023-10-16 13:44:14 -04:00
parent f535594242
commit 9959de88ed
9 changed files with 566 additions and 173 deletions

View File

@@ -77,7 +77,7 @@ public class Lsp4jReflectConfigGenerator {
});
}
private static JsonArray noArgsConstructorOnly() {
static JsonArray noArgsConstructorOnly() {
JsonObject constr = new JsonObject();
constr.addProperty("name", "<init>");
constr.add("parameterTypes", new JsonArray());

View File

@@ -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<JsonObject> 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<JsonObject> 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;
});
}
}

View File

@@ -16,7 +16,6 @@ public class SearchMatch<T> {
private double score;
public SearchMatch(T element, double score) {
super();
this.element = element;
this.score = score;
}

View File

@@ -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
}
]

View File

@@ -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
}
]

View File

@@ -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":"<init>","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":"<init>","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":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.boot.validation.generations.json.Links",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.boot.validation.generations.json.SpringProject",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[
{"name":"<init>","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":"<init>","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":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.LiveProcessSummary",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.STS4LanguageClient",
"queryAllDeclaredMethods":true
},
{
"name":"org.springframework.ide.vscode.commons.protocol.TypeHierarchyResponseAdapter",
"methods":[{"name":"<init>","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":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.java.ClasspathListenerParams",
"allDeclaredFields":true,
"methods":[{"name":"<init>","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":"<init>","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":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$AnnotationData",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$ClasspathEntryData",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$FieldData",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.springframework.ide.vscode.commons.protocol.java.TypeData$MethodData",
"allDeclaredFields":true,
"methods":[{"name":"<init>","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":"<init>","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
}
]

View File

@@ -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
#logging.level.org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp=off
languageserver.standalone=true
languageserver.standalone-port=5007

View File

@@ -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<JsonObject> 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;
});
}
}

View File

@@ -28,7 +28,7 @@ export function activate(context: VSCode.ExtensionContext): Thenable<ExtensionAP
// registerPipelineGenerator(context);
let options : commons.ActivatorOptions = {
DEBUG: false,
CONNECT_TO_LS: false,
CONNECT_TO_LS: true,
extensionId: 'vscode-spring-boot',
preferJdk: true,
jvmHeap: '1024m',