From 89ab018588ba0496e52ecc4a8c433829a1a3f54e Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Wed, 12 Dec 2018 13:43:11 -0500 Subject: [PATCH] Trim down generic parameters when matching autowired beans --- .../boot/java/autowired/AutowiredHoverProvider.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/AutowiredHoverProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/AutowiredHoverProvider.java index 8bb2b3757..14b7ca787 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/AutowiredHoverProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/AutowiredHoverProvider.java @@ -241,9 +241,9 @@ public class AutowiredHoverProvider implements HoverProvider { // Raw collections shouldn't match any beans return type.getTypeArguments().length == 1 ? matchBeansByType(project, beans, type.getTypeArguments()[0].getQualifiedName(), false) : ImmutableList.of(); } else if (type.isArray() && type.getDimensions() == 1) { - return matchBeansByType(project, beans, type.getElementType().getQualifiedName(), false); + return matchBeansByType(project, beans, type.getElementType().getErasure().getQualifiedName(), false); } else { - return matchBeansByType(project, beans, type.getQualifiedName(), true); + return matchBeansByType(project, beans, type.getErasure().getQualifiedName(), true); } } @@ -263,7 +263,10 @@ public class AutowiredHoverProvider implements HoverProvider { } private static boolean isCompatibleBeanType(IJavaProject jp, LiveBean bean, String bindingQualifiedName) { - String liveBeanTypeFQName = bean.getType(); + String rawLiveBeanFqName = bean.getType(); + int idx = rawLiveBeanFqName.indexOf('<'); + // Trim the generic parameters part if it's present + String liveBeanTypeFQName = idx < 0 ? rawLiveBeanFqName : rawLiveBeanFqName.substring(0, idx); if (liveBeanTypeFQName != null) { if (liveBeanTypeFQName.replace('$', '.').equals(bindingQualifiedName)) { return true;