Compare commits
2 Commits
d470a93645
...
bc09039e73
Author | SHA1 | Date | |
---|---|---|---|
|
bc09039e73 | ||
|
6d6786d3b7 |
Binary file not shown.
@@ -33,7 +33,6 @@ public class JavaTXTextDocumentService implements org.eclipse.lsp4j.services.Tex
|
|||||||
|
|
||||||
private static final Logger logger = LogManager.getLogger(JavaTXTextDocumentService.class);
|
private static final Logger logger = LogManager.getLogger(JavaTXTextDocumentService.class);
|
||||||
LanguageClient client;
|
LanguageClient client;
|
||||||
HashMap<String, ArrayList<LSPVariable>> dataCache = new HashMap<>();
|
|
||||||
HashMap<String, String> textDocuments = new HashMap<>();
|
HashMap<String, String> textDocuments = new HashMap<>();
|
||||||
CodeSnippetOptions codeSnippetOptions = new CodeSnippetOptions();
|
CodeSnippetOptions codeSnippetOptions = new CodeSnippetOptions();
|
||||||
TextHelper textHelper = new TextHelper();
|
TextHelper textHelper = new TextHelper();
|
||||||
@@ -159,15 +158,7 @@ public class JavaTXTextDocumentService implements org.eclipse.lsp4j.services.Tex
|
|||||||
ArrayList<Diagnostic> diagnostics = new ArrayList<>();
|
ArrayList<Diagnostic> diagnostics = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
|
|
||||||
ArrayList<LSPVariable> typesOfMethodAndParameters;
|
ArrayList<LSPVariable> typesOfMethodAndParameters = typeResolver.infereMethodsWithParameters(textDocuments.get(params.getTextDocument().getUri()));
|
||||||
|
|
||||||
if(dataCache.containsKey(textDocuments.get(params.getTextDocument().getUri()))){
|
|
||||||
logger.debug("Returning Cache instead of calculating types");
|
|
||||||
typesOfMethodAndParameters = dataCache.get(textDocuments.get(params.getTextDocument().getUri()));
|
|
||||||
}else{
|
|
||||||
typesOfMethodAndParameters = typeResolver.infereMethodsWithParameters(textDocuments.get(params.getTextDocument().getUri()));
|
|
||||||
dataCache.put(textDocuments.get(params.getTextDocument().getUri()), typesOfMethodAndParameters);
|
|
||||||
}
|
|
||||||
List<InlayHint> typeHint = new ArrayList<>();
|
List<InlayHint> typeHint = new ArrayList<>();
|
||||||
|
|
||||||
for (var variable : typesOfMethodAndParameters) {
|
for (var variable : typesOfMethodAndParameters) {
|
||||||
|
@@ -19,6 +19,7 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
public class TypeResolver {
|
public class TypeResolver {
|
||||||
|
|
||||||
|
HashMap<String, LanguageServerTransferObject> dataCache = new HashMap<>();
|
||||||
LanguageServerInterface languageServer;
|
LanguageServerInterface languageServer;
|
||||||
private static final Logger logger = LogManager.getLogger(TypeResolver.class);
|
private static final Logger logger = LogManager.getLogger(TypeResolver.class);
|
||||||
public TypeResolver() {
|
public TypeResolver() {
|
||||||
@@ -78,9 +79,20 @@ public class TypeResolver {
|
|||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LanguageServerTransferObject getCacheOrCalculate(String input) throws IOException, ClassNotFoundException {
|
||||||
|
if(dataCache.containsKey(input)){
|
||||||
|
logger.debug("Returning Cache instead of calculating Types.");
|
||||||
|
return dataCache.get(input);
|
||||||
|
}else{
|
||||||
|
var transferObject = languageServer.getResultSetAndAbstractSyntax(input);
|
||||||
|
dataCache.put(input, transferObject);
|
||||||
|
return transferObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isTypeImported(String input, String type){
|
public boolean isTypeImported(String input, String type){
|
||||||
try {
|
try {
|
||||||
var transferObject = languageServer.getResultSetAndAbstractSyntax(input);
|
var transferObject = getCacheOrCalculate(input);
|
||||||
var abstractSyntax = transferObject.getAst();
|
var abstractSyntax = transferObject.getAst();
|
||||||
|
|
||||||
var isAlreadyImported = false;
|
var isAlreadyImported = false;
|
||||||
@@ -125,7 +137,7 @@ public class TypeResolver {
|
|||||||
* Zum Erhalt für sowohl Parameter als auch Methoden.
|
* Zum Erhalt für sowohl Parameter als auch Methoden.
|
||||||
*/
|
*/
|
||||||
public ArrayList<LSPVariable> infereMethodsWithParameters(String input) throws IOException, ClassNotFoundException {
|
public ArrayList<LSPVariable> infereMethodsWithParameters(String input) throws IOException, ClassNotFoundException {
|
||||||
var transferObj = languageServer.getResultSetAndAbstractSyntax(input);
|
var transferObj = getCacheOrCalculate(input);
|
||||||
|
|
||||||
ArrayList<LSPVariable> methodLSPVariableList = new ArrayList<>();
|
ArrayList<LSPVariable> methodLSPVariableList = new ArrayList<>();
|
||||||
|
|
||||||
@@ -153,7 +165,7 @@ public class TypeResolver {
|
|||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public ArrayList<LSPMethod> infereMethodType(String input) throws IOException, ClassNotFoundException {
|
public ArrayList<LSPMethod> infereMethodType(String input) throws IOException, ClassNotFoundException {
|
||||||
var transferObj = languageServer.getResultSetAndAbstractSyntax(input);
|
var transferObj = getCacheOrCalculate(input);
|
||||||
//Für RefTypes und so dann entsprechend InstanceOf durch den Syntaxbaum denke ich
|
//Für RefTypes und so dann entsprechend InstanceOf durch den Syntaxbaum denke ich
|
||||||
ArrayList<LSPMethod> methodNameWithTypeList = new ArrayList<>();
|
ArrayList<LSPMethod> methodNameWithTypeList = new ArrayList<>();
|
||||||
|
|
||||||
@@ -169,7 +181,7 @@ public class TypeResolver {
|
|||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public ArrayList<LSPParameter> infereParameterType(String input, String methodName) throws IOException, ClassNotFoundException {
|
public ArrayList<LSPParameter> infereParameterType(String input, String methodName) throws IOException, ClassNotFoundException {
|
||||||
var transferObj = languageServer.getResultSetAndAbstractSyntax(input);
|
var transferObj = getCacheOrCalculate(input);
|
||||||
System.out.println(transferObj.getResultSets().toString());
|
System.out.println(transferObj.getResultSets().toString());
|
||||||
System.out.println(transferObj.getPrintedAst());
|
System.out.println(transferObj.getPrintedAst());
|
||||||
ArrayList<LSPParameter> LSPParameter = new ArrayList<>();
|
ArrayList<LSPParameter> LSPParameter = new ArrayList<>();
|
||||||
|
Reference in New Issue
Block a user