Skip to content

Commit d3fdbdf

Browse files
Avoid to call search engine to get project when only one project in workspace (#236)
Signed-off-by: Jinbo Wang <[email protected]>
1 parent cb9c6b7 commit d3fdbdf

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JdtUtils.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.List;
1818
import java.util.Set;
1919

20+
import org.apache.commons.lang3.StringUtils;
2021
import org.eclipse.core.resources.IProject;
2122
import org.eclipse.core.resources.IResource;
2223
import org.eclipse.core.resources.IWorkspaceRoot;
@@ -103,20 +104,33 @@ public static IJavaProject getJavaProject(IProject project) {
103104
* If the project doesn't exist or not a java project, return null.
104105
*/
105106
public static IJavaProject getJavaProject(String projectName) {
106-
if (projectName == null) {
107+
if (StringUtils.isBlank(projectName)) {
107108
return null;
108109
}
109110
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
110111
IProject project = root.getProject(projectName);
111112
return getJavaProject(project);
112113
}
113114

115+
/**
116+
* List all available Java projects of the specified workspace.
117+
*/
118+
public static List<IJavaProject> listJavaProjects(IWorkspaceRoot workspace) {
119+
List<IJavaProject> results = new ArrayList<>();
120+
for (IProject project : workspace.getProjects()) {
121+
if (isJavaProject(project)) {
122+
results.add(JavaCore.create(project));
123+
}
124+
}
125+
return results;
126+
}
127+
114128
/**
115129
* Given the project name, return the corresponding project object.
116130
* If the project doesn't exist, return null.
117131
*/
118132
public static IProject getProject(String projectName) {
119-
if (projectName == null) {
133+
if (StringUtils.isBlank(projectName)) {
120134
return null;
121135
}
122136
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveClasspathsHandler.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.logging.Logger;
2020
import java.util.stream.Collectors;
2121

22+
import org.apache.commons.lang3.StringUtils;
23+
import org.eclipse.core.resources.ResourcesPlugin;
2224
import org.eclipse.core.runtime.CoreException;
2325
import org.eclipse.core.runtime.IStatus;
2426
import org.eclipse.core.runtime.Status;
@@ -83,6 +85,12 @@ private static IJavaProject getJavaProjectFromName(String projectName) throws Co
8385
* CoreException
8486
*/
8587
public static List<IJavaProject> getJavaProjectFromType(String fullyQualifiedTypeName) throws CoreException {
88+
// If only one Java project exists in the whole workspace, return the project directly.
89+
List<IJavaProject> javaProjects = JdtUtils.listJavaProjects(ResourcesPlugin.getWorkspace().getRoot());
90+
if (javaProjects.size() <= 1) {
91+
return javaProjects;
92+
}
93+
8694
String[] splitItems = fullyQualifiedTypeName.split("/");
8795
// If the main class name contains the module name, should trim the module info.
8896
if (splitItems.length == 2) {
@@ -132,7 +140,7 @@ private static String[][] computeClassPath(String mainClass, String projectName)
132140
IJavaProject project = null;
133141
// if type exists in multiple projects, debug configuration need provide
134142
// project name.
135-
if (projectName != null) {
143+
if (StringUtils.isNotBlank(projectName)) {
136144
project = getJavaProjectFromName(projectName);
137145
} else {
138146
List<IJavaProject> projects = getJavaProjectFromType(mainClass);

0 commit comments

Comments
 (0)