Merge branch 'master' of github.com:spring-projects/sts4

This commit is contained in:
Kris De Volder
2017-09-25 09:50:39 -07:00
4 changed files with 90 additions and 9 deletions

View File

@@ -99,10 +99,10 @@
<profile>
<id>e47</id>
<properties>
<dist.target>e4.7</dist.target>
<dist.target>e4.7.1</dist.target>
<dist.target.major>e4.7</dist.target.major>
<dist.platform.name>Oxygen</dist.platform.name>
<dist.platform.name.long>Oxygen (4.7)</dist.platform.name.long>
<dist.platform.name.long>Oxygen.1a (4.7.1a)</dist.platform.name.long>
<dist.platform.id>oxygen</dist.platform.id>
<dist.platform.version>4.7</dist.platform.version>
<package.qualifierPrefix>e47</package.qualifierPrefix>
@@ -119,9 +119,9 @@
<url>http://download.eclipse.org/staging/oxygen/</url>
</repository> -->
<repository>
<id>oxygen-java9-y-builds</id>
<id>platform-m-build</id>
<layout>p2</layout>
<url>http://download.eclipse.org/eclipse/updates/4.7-Y-builds/</url>
<url>http://download.eclipse.org/eclipse/updates/4.7-M-builds</url>
</repository>
<repository>
<id>latest-m2e</id>

View File

@@ -30,7 +30,7 @@ public class BootJavaWorkspaceSymbolHandler implements WorkspaceSymbolHandler {
@Override
public List<? extends SymbolInformation> handle(WorkspaceSymbolParams params) {
return indexer.getAllSymbols();
return indexer.getAllSymbols(params.getQuery());
}
}

View File

@@ -103,9 +103,33 @@ public class SpringIndexer {
// TODO: update information because of doc change
}
public List<? extends SymbolInformation> getAllSymbols() {
public List<? extends SymbolInformation> getAllSymbols(String query) {
initialize();
return this.symbols;
if (query != null && query.length() > 0) {
return searchMatchingSymbols(this.symbols, query);
}
else {
return this.symbols;
}
}
private List<SymbolInformation> searchMatchingSymbols(List<SymbolInformation> allsymbols, String query) {
return allsymbols.stream()
.filter(symbol -> containsCharacters(symbol.getName().toCharArray(), query.toCharArray())).collect(Collectors.toList());
}
private boolean containsCharacters(char[] symbolChars, char[] queryChars) {
int symbolindex = 0;
int queryindex = 0;
while (queryindex < queryChars.length && symbolindex < symbolChars.length) {
if (symbolChars[symbolindex] == queryChars[queryindex]) {
queryindex++;
}
symbolindex++;
}
return queryindex == queryChars.length;
}
public List<? extends SymbolInformation> getSymbols(String docURI) {

View File

@@ -77,7 +77,7 @@ public class SpringIndexerTest {
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
indexer.scanFiles(directory);
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols();
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols("");
assertEquals(8, allSymbols.size());
@@ -128,7 +128,7 @@ public class SpringIndexerTest {
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/").toURI());
indexer.scanFiles(directory);
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols();
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols("");
assertEquals(8, allSymbols.size());
@@ -144,6 +144,63 @@ public class SpringIndexerTest {
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38));
}
@Test
public void testFilterSymbolsUsingQueryString() throws Exception {
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()));
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
indexer.scanFiles(directory);
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols("mapp");
assertEquals(6, allSymbols.size());
String uriPrefix = "file://" + directory.getAbsolutePath();
assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41));
assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36));
assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51));
assertTrue(containsSymbol(allSymbols, "@/mapping1 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28));
assertTrue(containsSymbol(allSymbols, "@/mapping2 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28));
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38));
}
@Test
public void testFilterSymbolsUsingQueryStringSplittedResult() throws Exception {
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()));
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
indexer.scanFiles(directory);
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols("@/foo-root-mapping -- (no method defined)");
assertEquals(2, allSymbols.size());
String uriPrefix = "file://" + directory.getAbsolutePath();
assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36));
assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51));
}
@Test
public void testFilterSymbolsUsingQueryStringFullSymbolString() throws Exception {
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()));
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
indexer.scanFiles(directory);
List<? extends SymbolInformation> allSymbols = indexer.getAllSymbols("@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)");
assertEquals(1, allSymbols.size());
String uriPrefix = "file://" + directory.getAbsolutePath();
assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51));
}
private boolean containsSymbol(List<? extends SymbolInformation> symbols, String name, String uri, int startLine, int startCHaracter, int endLine, int endCharacter) {
for (Iterator<? extends SymbolInformation> iterator = symbols.iterator(); iterator.hasNext();) {
SymbolInformation symbol = iterator.next();