From 26e1551e4a425fd1ef638b49ab907748a02bd415 Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Fri, 27 Oct 2017 18:43:50 -0400 Subject: [PATCH] Gradle classpath fix for request mappings hovers for Sagan --- .../gradle/GradleProjectClasspath.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectClasspath.java b/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectClasspath.java index 4e71260d4..62ceb68ad 100644 --- a/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectClasspath.java +++ b/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectClasspath.java @@ -17,6 +17,7 @@ import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -82,13 +83,34 @@ public class GradleProjectClasspath extends JandexClasspath { } }) }; } + + public EclipseProject getRootProject() { + EclipseProject root = this.gradleProject; + while(root.getParent() != null) { + root = root.getParent(); + } + return root; + } @Override public Stream getClasspathEntries() throws Exception { - return Stream.concat(gradleProject.getClasspath().stream().map(dep -> dep.getFile().toPath()), - gradleProject.getProjectDependencies().stream().map(project -> new File(project.getPath()).toPath())); + EclipseProject root = getRootProject(); + List classpathList = Stream.concat(gradleProject.getClasspath().stream().map(dep -> dep.getFile().toPath()), + gradleProject.getProjectDependencies().stream() + .map(d -> findPeer(root, d.getTargetProject().getName())) + .filter(o -> o.isPresent()) + .map(o -> o.get()) + .map(p -> p.getProjectDirectory().toPath().resolve(p.getOutputLocation().getPath())) + ) + .collect(Collectors.toList()); + + return classpathList.stream(); } - + + private Optional findPeer(EclipseProject root, String name) { + return root.getChildren().stream().filter(p -> p.getName().equals(name)).findFirst(); + } + @Override public Stream getClasspathResources() { return gradleProject.getSourceDirectories().stream().map(sourceDirectory -> sourceDirectory.getDirectory()).flatMap(folder -> {