From 49d655d66cd4310e9353d05c4d27bb3bc390b74c Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Thu, 13 Jun 2019 15:43:30 -0400 Subject: [PATCH] Fix property key hover has binding key "L" in hover content --- .../ide/vscode/commons/jdtls/JdtLsIndex.java | 31 +++++++++---------- .../ide/vscode/commons/jdtls/Wrappers.java | 2 +- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/JdtLsIndex.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/JdtLsIndex.java index b0fb40ebd..286aa05f2 100644 --- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/JdtLsIndex.java +++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/JdtLsIndex.java @@ -111,14 +111,9 @@ public class JdtLsIndex implements ClasspathIndex { return Wrappers.wrap(data, Suppliers.memoize(() -> findType(data.getFqName())), Suppliers.memoize(() -> declaringTypeFqName == null ? null : findType(declaringTypeFqName)), javadocProvider); } - private TypeData findTypeData(String fqName) { + private TypeData findTypeData(String fqName) throws InterruptedException, ExecutionException { JavaDataParams params = new JavaDataParams(projectUri.toString(), "L" + fqName.replace('.', '/') + ";", false); - try { - return client.javaType(params).get(); - } catch (InterruptedException | ExecutionException e) { - log.error("", e); - } - return null; + return client.javaType(params).get(); } @Override @@ -129,17 +124,21 @@ public class JdtLsIndex implements ClasspathIndex { } if (type == null) { - TypeData data = findTypeData(fqName); - if (data == null) { - type = Optional.empty(); - sourceTypeCache.put(fqName, type); - } else { - type = Optional.of(toType(data)); - if (Classpath.isBinary(data.getClasspathEntry().getCpe())) { - binaryTypeCache.put(fqName, type); - } else { + try { + TypeData data = findTypeData(fqName); + if (data == null) { + type = Optional.empty(); sourceTypeCache.put(fqName, type); + } else { + type = Optional.of(toType(data)); + if (Classpath.isBinary(data.getClasspathEntry().getCpe())) { + binaryTypeCache.put(fqName, type); + } else { + sourceTypeCache.put(fqName, type); + } } + } catch (Exception e) { + log.error("{}", e); } } return type.orElse(null); diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/Wrappers.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/Wrappers.java index ba03c1adb..300a1718f 100644 --- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/Wrappers.java +++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jdtls/Wrappers.java @@ -90,7 +90,7 @@ public class Wrappers { @Override public String getFQName() { String key = data.getName(); - return key.substring(0, key.length() - 1).replace('/', '.'); + return JavaUtils.typeBindingKeyToFqName(key); } };