Skip to content

Commit 435cd59

Browse files
committed
GH-1041: removed outdated beans addon symbol information, now fully replaced with new spring index
1 parent 7c40f30 commit 435cd59

File tree

13 files changed

+60
-146
lines changed

13 files changed

+60
-146
lines changed

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/BeansSymbolAddOnInformation.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/BeansSymbolProvider.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.springframework.ide.vscode.boot.java.Annotations;
3535
import org.springframework.ide.vscode.boot.java.handlers.AbstractSymbolProvider;
3636
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
37-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
3837
import org.springframework.ide.vscode.boot.java.utils.ASTUtils;
3938
import org.springframework.ide.vscode.boot.java.utils.CachedSymbol;
4039
import org.springframework.ide.vscode.boot.java.utils.FunctionUtils;
@@ -87,7 +86,7 @@ protected void addSymbolsPass1(Annotation node, ITypeBinding annotationType, Col
8786
beanLabel(isFunction, nameAndRegion.getT1(), beanType.getName(), "@Bean" + markerString),
8887
SymbolKind.Interface,
8988
Either.forLeft(location)),
90-
new SymbolAddOnInformation[] {new BeansSymbolAddOnInformation(nameAndRegion.getT1(), beanType.getQualifiedName())}
89+
null
9190
);
9291

9392
InjectionPoint[] injectionPoints = ASTUtils.findInjectionPoints(method, doc);
@@ -121,7 +120,7 @@ protected void addSymbolsPass1(TypeDeclaration typeDeclaration, SpringIndexerJav
121120
Either.forLeft(new Location(doc.getUri(), doc.toRange(functionBean.getT3()))));
122121

123122
context.getGeneratedSymbols().add(new CachedSymbol(context.getDocURI(), context.getLastModified(),
124-
new EnhancedSymbolInformation(symbol, new SymbolAddOnInformation[] {new BeansSymbolAddOnInformation(functionBean.getT1(), functionBean.getT2().getQualifiedName())})));
123+
new EnhancedSymbolInformation(symbol, null)));
125124

126125
} catch (BadLocationException e) {
127126
log.error("", e);

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/ComponentSymbolProvider.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.springframework.ide.vscode.boot.java.Annotations;
3232
import org.springframework.ide.vscode.boot.java.handlers.AbstractSymbolProvider;
3333
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
34-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
3534
import org.springframework.ide.vscode.boot.java.utils.ASTUtils;
3635
import org.springframework.ide.vscode.boot.java.utils.CachedSymbol;
3736
import org.springframework.ide.vscode.boot.java.utils.DefaultSymbolProvider;
@@ -93,8 +92,6 @@ protected Tuple.Two<EnhancedSymbolInformation, Bean> createSymbol(Annotation nod
9392
boolean isConfiguration = Annotations.CONFIGURATION.equals(annotationType.getQualifiedName())
9493
|| metaAnnotations.stream().anyMatch(t -> Annotations.CONFIGURATION.equals(t.getQualifiedName()));
9594

96-
SymbolAddOnInformation[] addon = new SymbolAddOnInformation[] {new BeansSymbolAddOnInformation(beanName, beanType.getQualifiedName())};
97-
9895
InjectionPoint[] injectionPoints = ASTUtils.findInjectionPoints(type, doc);
9996

10097
Set<String> supertypes = new HashSet<>();
@@ -111,7 +108,7 @@ protected Tuple.Two<EnhancedSymbolInformation, Bean> createSymbol(Annotation nod
111108

112109
Bean beanDefinition = new Bean(beanName, beanType.getQualifiedName(), location, injectionPoints, supertypes, annotations, isConfiguration);
113110

114-
return Tuple.two(new EnhancedSymbolInformation(symbol, addon), beanDefinition);
111+
return Tuple.two(new EnhancedSymbolInformation(symbol, null), beanDefinition);
115112
}
116113

117114
protected String beanLabel(String searchPrefix, String annotationTypeName, Collection<String> metaAnnotationNames, String beanName, String beanType) {

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/FeignClientSymbolProvider.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.slf4j.LoggerFactory;
3434
import org.springframework.ide.vscode.boot.java.handlers.AbstractSymbolProvider;
3535
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
36-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
3736
import org.springframework.ide.vscode.boot.java.utils.ASTUtils;
3837
import org.springframework.ide.vscode.boot.java.utils.CachedSymbol;
3938
import org.springframework.ide.vscode.boot.java.utils.SpringIndexerJavaContext;
@@ -82,8 +81,6 @@ private Two<EnhancedSymbolInformation, Bean> createSymbol(Annotation node, IType
8281
beanLabel("+", annotationTypeName, metaAnnotationNames, beanName, beanType == null ? "" : beanType.getName()), SymbolKind.Interface,
8382
Either.forLeft(location));
8483

85-
SymbolAddOnInformation[] addon = new SymbolAddOnInformation[] {new BeansSymbolAddOnInformation(beanName, beanType == null ? "" : beanType.getQualifiedName())};
86-
8784
InjectionPoint[] injectionPoints = ASTUtils.findInjectionPoints(type, doc);
8885

8986
Set<String> supertypes = new HashSet<>();
@@ -100,7 +97,7 @@ private Two<EnhancedSymbolInformation, Bean> createSymbol(Annotation node, IType
10097

10198
Bean beanDefinition = new Bean(beanName, beanType == null ? "" : beanType.getQualifiedName(), location, injectionPoints, supertypes, annotations, false);
10299

103-
return Tuple.two(new EnhancedSymbolInformation(symbol, addon), beanDefinition);
100+
return Tuple.two(new EnhancedSymbolInformation(symbol, null), beanDefinition);
104101
}
105102

106103
protected String beanLabel(String searchPrefix, String annotationTypeName, Collection<String> metaAnnotationNames, String beanName, String beanType) {

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/DataRepositorySymbolProvider.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@
2424
import org.slf4j.Logger;
2525
import org.slf4j.LoggerFactory;
2626
import org.springframework.ide.vscode.boot.java.beans.BeanUtils;
27-
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolAddOnInformation;
2827
import org.springframework.ide.vscode.boot.java.beans.CachedBean;
2928
import org.springframework.ide.vscode.boot.java.handlers.AbstractSymbolProvider;
3029
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
31-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
3230
import org.springframework.ide.vscode.boot.java.utils.ASTUtils;
3331
import org.springframework.ide.vscode.boot.java.utils.CachedSymbol;
3432
import org.springframework.ide.vscode.boot.java.utils.SpringIndexerJavaContext;
@@ -65,8 +63,7 @@ protected void addSymbolsPass1(TypeDeclaration typeDeclaration, SpringIndexerJav
6563
SymbolKind.Interface,
6664
Either.forLeft(location));
6765

68-
SymbolAddOnInformation[] addon = new SymbolAddOnInformation[] {new BeansSymbolAddOnInformation(repositoryBean.getT1(), repositoryBean.getT2().getQualifiedName())};
69-
EnhancedSymbolInformation enhancedSymbol = new EnhancedSymbolInformation(symbol, addon);
66+
EnhancedSymbolInformation enhancedSymbol = new EnhancedSymbolInformation(symbol, null);
7067

7168
InjectionPoint[] injectionPoints = ASTUtils.findInjectionPoints(typeDeclaration, doc);
7269

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringFactoriesIndexer.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,8 @@
3838
import org.springframework.ide.vscode.boot.index.cache.IndexCache;
3939
import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey;
4040
import org.springframework.ide.vscode.boot.java.beans.BeanUtils;
41-
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolAddOnInformation;
4241
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider;
4342
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
44-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
4543
import org.springframework.ide.vscode.commons.java.IClasspathUtil;
4644
import org.springframework.ide.vscode.commons.java.IJavaProject;
4745
import org.springframework.ide.vscode.commons.protocol.java.Classpath;
@@ -123,9 +121,7 @@ private List<EnhancedSymbolInformation> computeSymbols(String docURI, String con
123121
symbols.add(new EnhancedSymbolInformation(new WorkspaceSymbol(
124122
BeansSymbolProvider.beanLabel(false, beanId, fqName, Paths.get(URI.create(docURI)).getFileName().toString()),
125123
SymbolKind.Interface,
126-
Either.forLeft(new Location(docURI, range))), new SymbolAddOnInformation[] {
127-
new BeansSymbolAddOnInformation(beanId, fqName)
128-
}));
124+
Either.forLeft(new Location(docURI, range))), null));
129125
} catch (Exception e) {
130126
log.error("", e);
131127
}

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerJava.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public static enum SCAN_PASS {
9393

9494
// whenever the implementation of the indexer changes in a way that the stored data in the cache is no longer valid,
9595
// we need to change the generation - this will result in a re-indexing due to no up-to-date cache data being found
96-
private static final String GENERATION = "GEN-10";
96+
private static final String GENERATION = "GEN-11";
9797
private static final String INDEX_FILES_TASK_ID = "index-java-source-files-task-";
9898

9999
private static final String SYMBOL_KEY = "symbols";

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXMLNamespaceHandlerBeans.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@
2121
import org.eclipse.lsp4j.WorkspaceSymbol;
2222
import org.eclipse.lsp4j.jsonrpc.messages.Either;
2323
import org.springframework.ide.vscode.boot.java.beans.BeanUtils;
24-
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolAddOnInformation;
2524
import org.springframework.ide.vscode.boot.java.beans.CachedBean;
2625
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
27-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
2826
import org.springframework.ide.vscode.commons.java.IJavaProject;
2927
import org.springframework.ide.vscode.commons.protocol.spring.Bean;
3028
import org.springframework.ide.vscode.commons.util.text.TextDocument;
@@ -94,9 +92,7 @@ else if (name != null && name.equals("class")) {
9492
}
9593

9694
WorkspaceSymbol symbol = new WorkspaceSymbol("@+ '" + beanID + "' " + beanClass, SymbolKind.Interface, Either.forLeft(new Location(docURI, range)));
97-
SymbolAddOnInformation[] addon = new SymbolAddOnInformation[] {new BeansSymbolAddOnInformation(beanID, fqBeanClass)};
98-
99-
EnhancedSymbolInformation fullSymbol = new EnhancedSymbolInformation(symbol, addon);
95+
EnhancedSymbolInformation fullSymbol = new EnhancedSymbolInformation(symbol, null);
10096

10197
CachedSymbol cachedSymbol = new CachedSymbol(docURI, lastModified, fullSymbol);
10298
generatedSymbols.add(cachedSymbol);

headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import static org.junit.jupiter.api.Assertions.assertEquals;
1414

1515
import java.io.File;
16-
import java.util.List;
16+
import java.util.Arrays;
1717
import java.util.concurrent.CompletableFuture;
1818
import java.util.concurrent.TimeUnit;
1919

@@ -26,9 +26,9 @@
2626
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
2727
import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest;
2828
import org.springframework.ide.vscode.boot.bootiful.SymbolProviderTestConf;
29-
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolAddOnInformation;
30-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
29+
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
3130
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
31+
import org.springframework.ide.vscode.commons.protocol.spring.Bean;
3232
import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness;
3333
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
3434
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -43,9 +43,10 @@ public class SpringIndexerBeansTest {
4343

4444
@Autowired private BootLanguageServerHarness harness;
4545
@Autowired private JavaProjectFinder projectFinder;
46+
@Autowired private SpringSymbolIndex indexer;
47+
@Autowired private SpringMetamodelIndex springIndex;
4648

4749
private File directory;
48-
@Autowired private SpringSymbolIndex indexer;
4950

5051
@BeforeEach
5152
public void setup() throws Exception {
@@ -69,19 +70,15 @@ void testScanSimpleConfigurationClass() throws Exception {
6970
SpringIndexerHarness.symbol("@Configuration", "@+ 'simpleConfiguration' (@Configuration <: @Component) SimpleConfiguration"),
7071
SpringIndexerHarness.symbol("@Bean", "@+ 'simpleBean' (@Bean) BeanClass")
7172
);
72-
73-
List<? extends SymbolAddOnInformation> addon = indexer.getAdditonalInformation(docUri);
74-
assertEquals(2, addon.size());
75-
76-
assertEquals(1, addon.stream()
77-
.filter(info -> info instanceof BeansSymbolAddOnInformation)
78-
.filter(info -> "simpleConfiguration".equals(((BeansSymbolAddOnInformation) info).getBeanID()))
79-
.count());
80-
81-
assertEquals(1, addon.stream()
82-
.filter(info -> info instanceof BeansSymbolAddOnInformation)
83-
.filter(info -> "simpleBean".equals(((BeansSymbolAddOnInformation) info).getBeanID()))
84-
.count());
73+
74+
Bean[] beans = springIndex.getBeansOfDocument(docUri);
75+
assertEquals(2, beans.length);
76+
77+
Bean simpleConfigBean = Arrays.stream(beans).filter(bean -> bean.getName().equals("simpleConfiguration")).findFirst().get();
78+
Bean simpleBean = Arrays.stream(beans).filter(bean -> bean.getName().equals("simpleBean")).findFirst().get();
79+
80+
assertEquals("org.test.SimpleConfiguration", simpleConfigBean.getType());
81+
assertEquals("org.test.BeanClass", simpleBean.getType());
8582
}
8683

8784
@Test

headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
*******************************************************************************/
1111
package org.springframework.ide.vscode.boot.java.beans.test;
1212

13+
import static org.junit.jupiter.api.Assertions.assertEquals;
14+
1315
import java.io.File;
14-
import java.util.List;
16+
import java.util.Arrays;
1517
import java.util.concurrent.CompletableFuture;
1618
import java.util.concurrent.TimeUnit;
1719

1820
import org.eclipse.lsp4j.TextDocumentIdentifier;
19-
20-
import static org.junit.jupiter.api.Assertions.assertEquals;
2121
import org.junit.jupiter.api.BeforeEach;
2222
import org.junit.jupiter.api.Test;
2323
import org.junit.jupiter.api.extension.ExtendWith;
@@ -26,9 +26,9 @@
2626
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
2727
import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest;
2828
import org.springframework.ide.vscode.boot.bootiful.SymbolProviderTestConf;
29-
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolAddOnInformation;
30-
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
29+
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
3130
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
31+
import org.springframework.ide.vscode.commons.protocol.spring.Bean;
3232
import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness;
3333
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
3434
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -44,6 +44,7 @@ public class SpringIndexerFunctionBeansTest {
4444
@Autowired private BootLanguageServerHarness harness;
4545
@Autowired private SpringSymbolIndex indexer;
4646
@Autowired private JavaProjectFinder projectFinder;
47+
@Autowired private SpringMetamodelIndex springIndex;
4748

4849
private File directory;
4950

@@ -70,18 +71,14 @@ void testScanSimpleFunctionBean() throws Exception {
7071
SpringIndexerHarness.symbol("@Bean", "@> 'uppercase' (@Bean) Function<String,String>")
7172
);
7273

73-
List<? extends SymbolAddOnInformation> addon = indexer.getAdditonalInformation(docUri);
74-
assertEquals(2, addon.size());
75-
76-
assertEquals(1, addon.stream()
77-
.filter(info -> info instanceof BeansSymbolAddOnInformation)
78-
.filter(info -> "functionClass".equals(((BeansSymbolAddOnInformation) info).getBeanID()))
79-
.count());
80-
81-
assertEquals(1, addon.stream()
82-
.filter(info -> info instanceof BeansSymbolAddOnInformation)
83-
.filter(info -> "uppercase".equals(((BeansSymbolAddOnInformation) info).getBeanID()))
84-
.count());
74+
Bean[] beans = springIndex.getBeansOfDocument(docUri);
75+
assertEquals(2, beans.length);
76+
77+
Bean configBean = Arrays.stream(beans).filter(bean -> bean.getName().equals("functionClass")).findFirst().get();
78+
Bean functionBean = Arrays.stream(beans).filter(bean -> bean.getName().equals("uppercase")).findFirst().get();
79+
80+
assertEquals("org.test.FunctionClass", configBean.getType());
81+
assertEquals("java.util.function.Function<java.lang.String,java.lang.String>", functionBean.getType());
8582
}
8683

8784
@Test

0 commit comments

Comments
 (0)