diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java index 1cd029b7b..4b681733e 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java @@ -13,6 +13,7 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -27,7 +28,6 @@ import org.springframework.ide.vscode.commons.java.IField; import org.springframework.ide.vscode.commons.java.IJavadocProvider; import org.springframework.ide.vscode.commons.java.IMethod; import org.springframework.ide.vscode.commons.java.IType; -import org.springframework.ide.vscode.commons.java.IJavaProject.TypeFilter; import org.springframework.ide.vscode.commons.javadoc.IJavadoc; import org.springframework.ide.vscode.commons.util.FuzzyMatcher; import org.springframework.ide.vscode.commons.util.Log; @@ -244,11 +244,11 @@ public class JandexIndex { return Stream.empty(); } - public Flux> fuzzySearchTypes(String searchTerm, TypeFilter typeFilter) { + public Flux> fuzzySearchTypes(String searchTerm, Predicate typeFilter) { Flux> flux = Flux.fromIterable(knownTypes.values()) .publishOn(Schedulers.parallel()) .flatMap(s -> Flux.fromIterable(s.get())) - .filter(t -> typeFilter == null || typeFilter.accept(t.getT2())) + .filter(t -> typeFilter == null || typeFilter.test(t.getT2())) .map(t -> Tuples.of(t.getT2(), FuzzyMatcher.matchScore(searchTerm, t.getT1()))) .filter(t -> t.getT2() != 0.0); if (baseIndex == null) { diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaProject.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaProject.java index f0f919619..5c9b4dd8b 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaProject.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaProject.java @@ -1,22 +1,15 @@ package org.springframework.ide.vscode.commons.java; +import java.util.function.Predicate; + import reactor.core.publisher.Flux; import reactor.util.function.Tuple2; public interface IJavaProject extends IJavaElement { - - /** - * TypeFilter is deprecated. Should use java.util.funcion.Predicate instead. - */ - @Deprecated - @FunctionalInterface - public static interface TypeFilter { - boolean accept(IType type); - } IType findType(String fqName); - Flux> fuzzySearchTypes(String searchTerm, TypeFilter typeFilter); + Flux> fuzzySearchTypes(String searchTerm, Predicate typeFilter); Flux> fuzzySearchPackages(String searchTerm); diff --git a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/MavenBuilder.java b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/MavenBuilder.java index 675d6e41d..bced75bb5 100644 --- a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/MavenBuilder.java +++ b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/MavenBuilder.java @@ -53,6 +53,7 @@ public class MavenBuilder { public MavenBuilder javadoc() { properties.add("javadoc:javadoc"); + properties.add("-Dshow=private"); return this; } diff --git a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java index 1803df72d..b13accbf0 100644 --- a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java +++ b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java @@ -13,8 +13,8 @@ package org.springframework.ide.vscode.commons.maven.java; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.function.Predicate; -import org.apache.maven.project.MavenProject; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.java.IType; import org.springframework.ide.vscode.commons.javadoc.IJavadoc; @@ -60,7 +60,7 @@ public class MavenJavaProject implements IJavaProject { } @Override - public Flux> fuzzySearchTypes(String searchTerm, TypeFilter typeFilter) { + public Flux> fuzzySearchTypes(String searchTerm, Predicate typeFilter) { return classpath.fuzzySearchType(searchTerm, typeFilter); } diff --git a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java index 7c8cd016e..0147bbde2 100644 --- a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java +++ b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java @@ -19,16 +19,15 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.maven.artifact.Artifact; -import org.apache.maven.execution.MavenExecutionResult; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.DirectoryScanner; import org.springframework.ide.vscode.commons.jandex.JandexIndex; import org.springframework.ide.vscode.commons.java.IClasspath; -import org.springframework.ide.vscode.commons.java.IJavaProject.TypeFilter; import org.springframework.ide.vscode.commons.java.IJavadocProvider; import org.springframework.ide.vscode.commons.java.IType; import org.springframework.ide.vscode.commons.java.parser.ParserJavadocProvider; @@ -72,14 +71,7 @@ public class MavenProjectClasspath implements IClasspath { MavenProjectClasspath(File pom, MavenCore maven) { this.maven = maven; this.pom = pom; - this.projectSupplier = Suppliers.memoize(() -> { - try { - return createMavenProject(); - } catch (MavenException e) { - Log.log(e); - return null; - } - }); + this.projectSupplier = Suppliers.memoize(() -> createMavenProject()); this.javaIndex = Suppliers.memoize(() -> { Stream classpathEntries = Stream.empty(); try { @@ -100,12 +92,20 @@ public class MavenProjectClasspath implements IClasspath { }); } - private final MavenProject createMavenProject() throws MavenException { - MavenExecutionResult result = maven.build(pom); - if (result.hasExceptions()) { - result.getExceptions().forEach(Log::log); + private final MavenProject createMavenProject() { + try { + // Read with resolved dependencies + return maven.readProject(pom, true); + } catch (MavenException e) { + Log.log(e); + try { + // Try without resolving dependencies - just read the XML + return maven.readProject(pom, false); + } catch (MavenException e1) { + Log.log(e); + return null; + } } - return result.getProject(); } public boolean exists() { @@ -148,7 +148,7 @@ public class MavenProjectClasspath implements IClasspath { return javaIndex.get().findType(fqName); } - public Flux> fuzzySearchType(String searchTerm, TypeFilter typeFilter) { + public Flux> fuzzySearchType(String searchTerm, Predicate typeFilter) { return javaIndex.get().fuzzySearchTypes(searchTerm, typeFilter); } diff --git a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java index 50f54e681..90725959d 100644 --- a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java +++ b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java @@ -12,6 +12,7 @@ package org.springframework.ide.vscode.commons.maven.java.classpathfile; import java.io.File; import java.nio.file.Paths; +import java.util.function.Predicate; import org.springframework.ide.vscode.commons.java.IClasspath; import org.springframework.ide.vscode.commons.java.IJavaProject; @@ -59,7 +60,7 @@ public class JavaProjectWithClasspathFile implements IJavaProject { } @Override - public Flux> fuzzySearchTypes(String searchTerm, TypeFilter typeFilter) { + public Flux> fuzzySearchTypes(String searchTerm, Predicate typeFilter) { return Flux.empty(); } diff --git a/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/HtmlJavadocTest.java b/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/HtmlJavadocTest.java index df6313761..d08b0f823 100644 --- a/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/HtmlJavadocTest.java +++ b/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/HtmlJavadocTest.java @@ -28,6 +28,7 @@ public class HtmlJavadocTest { try { MavenProjectClasspath.providerType = JavadocProviderTypes.HTML; testProjectPath = Paths.get(HtmlJavadocTest.class.getResource("/gs-rest-service-cors-boot-1.4.1-with-classpath-file").toURI()); + MavenBuilder.newBuilder(testProjectPath).clean().pack().javadoc().skipTests().execute(); return new MavenJavaProject(testProjectPath.resolve(MavenCore.POM_XML).toFile()); } catch (Exception e) { return null; diff --git a/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java b/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java index 78d9586c9..36689df26 100644 --- a/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java +++ b/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java @@ -33,15 +33,12 @@ public class JavaIndexTest { @Override public MavenJavaProject load(String projectName) throws Exception { Path testProjectPath = Paths.get(DependencyTreeTest.class.getResource("/" + projectName).toURI()); - return createMavenProject(testProjectPath); + MavenBuilder.newBuilder(testProjectPath).clean().pack().javadoc().skipTests().execute(); + return new MavenJavaProject(testProjectPath.resolve(MavenCore.POM_XML).toFile()); } }); - private static MavenJavaProject createMavenProject(Path projectPath) throws Exception { - return new MavenJavaProject(projectPath.resolve(MavenCore.POM_XML).toFile()); - } - @Test public void fuzzySearchNoFilter() throws Exception { List> results = MavenCore.getDefault().getJavaIndexForJreLibs() @@ -75,7 +72,7 @@ public class JavaIndexTest { @Test public void findClassInJar() throws Exception { MavenJavaProject project = mavenProjectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file"); - IType type = project.findType("org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration"); + IType type = project.findType("org.springframework.test.web.client.ExpectedCount"); assertNotNull(type); } diff --git a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java index 326d0c80d..4cc544505 100644 --- a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java +++ b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java @@ -60,8 +60,8 @@ import com.google.common.collect.ImmutableList; public class BootPropertiesLanguageServer extends SimpleLanguageServer { public static final JavaProjectFinder DEFAULT_PROJECT_FINDER = new DefaultJavaProjectFinder(new IJavaProjectFinderStrategy[] { - new JavaProjectWithClasspathFileFinderStrategy(), - new MavenProjectFinderStrategy() + new MavenProjectFinderStrategy(), + new JavaProjectWithClasspathFileFinderStrategy() }); private static final String YML = ".yml"; diff --git a/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java b/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java index 6d6a9c656..7f56c7744 100644 --- a/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java +++ b/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java @@ -50,6 +50,7 @@ public class ProjectsHarness { Path testProjectPath = getProjectPath(name); switch (type) { case MAVEN: + MavenBuilder.newBuilder(testProjectPath).clean().pack().javadoc().skipTests().execute(); return new MavenJavaProject(testProjectPath.resolve(MavenCore.POM_XML).toFile()); case CLASSPATH_TXT: MavenBuilder.newBuilder(testProjectPath).clean().pack().skipTests().execute();