Skip to content

Commit b9f077d

Browse files
authored
Merge branch 'main' into cs/newClassPackages
2 parents 3b31924 + ad8a462 commit b9f077d

File tree

12 files changed

+54
-4
lines changed

12 files changed

+54
-4
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
88
### Added
99
- Display non-Java files in Java Projects explorer. [#145](https://github.com./microsoft/vscode-java-dependency/issues/145)
1010
- Apply file decorators to project level. [#481](https://github.com./microsoft/vscode-java-dependency/issues/481)
11+
- Give more hints about the project import status. [#580](https://github.com./microsoft/vscode-java-dependency/issues/580)
1112

1213
### Fixed
1314
- Apply `files.exclude` to Java Projects explorer. [#214](https://github.com./microsoft/vscode-java-dependency/issues/214)

jdtls.ext/com.microsoft.jdtls.ext.core/plugin.xml

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<command id="java.resolvePath" />
1010
<command id="java.project.getMainClasses" />
1111
<command id="java.project.generateJar" />
12+
<command id="java.project.checkImportStatus" />
1213
</delegateCommandHandler>
1314
</extension>
1415
<extension

jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/CommandHandler.java

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public Object executeCommand(String commandId, List<Object> arguments, IProgress
3535
return ProjectCommand.getMainClasses(arguments, monitor);
3636
case "java.project.generateJar":
3737
return ProjectCommand.exportJar(arguments, monitor);
38+
case "java.project.checkImportStatus":
39+
return ProjectCommand.checkImportStatus();
3840
default:
3941
break;
4042
}

jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java

+24
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import org.apache.commons.lang3.StringUtils;
3131
import org.eclipse.core.resources.IFile;
32+
import org.eclipse.core.resources.IMarker;
3233
import org.eclipse.core.resources.IProject;
3334
import org.eclipse.core.resources.IResource;
3435
import org.eclipse.core.resources.IResourceVisitor;
@@ -282,6 +283,29 @@ public static String getModuleName(IJavaProject project) {
282283
}
283284
}
284285

286+
public static boolean checkImportStatus() {
287+
IProject[] projects = ProjectUtils.getAllProjects();
288+
for (IProject project : projects) {
289+
if (ProjectsManager.DEFAULT_PROJECT_NAME.equals(project.getName())) {
290+
continue;
291+
}
292+
try {
293+
List<IMarker> markers = ResourceUtils.getErrorMarkers(project);
294+
if (markers != null) {
295+
boolean hasError = markers.stream().anyMatch(m -> {
296+
return m.getAttribute(IMarker.SEVERITY, 0) == IMarker.SEVERITY_ERROR;
297+
});
298+
if (hasError) {
299+
return true;
300+
}
301+
}
302+
} catch (CoreException e) {
303+
JdtlsExtActivator.log(e);
304+
}
305+
}
306+
return false;
307+
}
308+
285309
private static void reportExportJarMessage(String terminalId, int severity, String message) {
286310
if (StringUtils.isNotBlank(message) && StringUtils.isNotBlank(terminalId)) {
287311
String readableSeverity = getSeverityString(severity);

package.json

+7-2
Original file line numberDiff line numberDiff line change
@@ -433,12 +433,12 @@
433433
},
434434
{
435435
"command": "java.view.package.exportJar",
436-
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
436+
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects && !java:importFailed",
437437
"group": "navigation@20"
438438
},
439439
{
440440
"command": "java.project.build.workspace",
441-
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
441+
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects && !java:importFailed",
442442
"group": "navigation@30"
443443
},
444444
{
@@ -643,6 +643,11 @@
643643
"view": "javaProjectExplorer",
644644
"contents": "%viewsWelcome.workbench.installLanguageSupport%",
645645
"when": "java:projectManagerActivated && !java:languageSupportInstalled"
646+
},
647+
{
648+
"view": "javaProjectExplorer",
649+
"contents": "%viewsWelcome.workbench.importFailed%",
650+
"when": "java:importFailed"
646651
}
647652
],
648653
"taskDefinitions": [

package.nls.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@
4646
"taskDefinitions.java.project.build.path.exclude": "The path after '!' will be excluded from the paths to be built.",
4747
"taskDefinitions.java.project.build.isFullBuild": "Whether to execute a clean build or not.",
4848
"viewsWelcome.workbench.createNewJavaProject": "You can also [open a Java project folder](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)",
49-
"viewsWelcome.workbench.noJavaProject": "No Java projects found in the current workspace. You can [open a Java project folder](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)",
49+
"viewsWelcome.workbench.noJavaProject": "No Java projects found in the current workspace. You can [pen a Java project folder](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)",
50+
"viewsWelcome.workbench.importFailed": "Oops, something went wrong when opening Java projects. Please use the following action for troubleshooting:\n[Open Problems View](command:workbench.panel.markers.view.focus)",
5051
"viewsWelcome.workbench.inLightWeightMode": "To view the projects, you can import the projects into workspace.\n[Import Projects](command:java.server.mode.switch?%5B%22Standard%22,true%5D)",
5152
"viewsWelcome.workbench.installLanguageSupport": "The Java Projects explorer requires [Extension Pack for Java](command:extension.open?%5B%22vscjava.vscode-java-pack%22%5D) to provide full features.\n[Install](command:java.project.installExtension?%5B%22vscjava.vscode-java-pack%22%5D)"
5253
}

package.nls.zh-cn.json

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"taskDefinitions.java.project.build.isFullBuild": "是否要重新构建项目。",
4848
"viewsWelcome.workbench.createNewJavaProject": "您也可以[打开一个 Java 项目目录](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)",
4949
"viewsWelcome.workbench.noJavaProject": "当前工作空间未发现 Java 项目,您可以[打开一个 Java 项目目录](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)",
50+
"viewsWelcome.workbench.importFailed": "加载 Java 项目时出现错误,请通过以下方式查看错误相关信息:\n[打开问题视图](command:workbench.panel.markers.view.focus)",
5051
"viewsWelcome.workbench.inLightWeightMode": "要浏览项目信息,你可以将项目导入到工作空间中。\n[导入项目](command:java.server.mode.switch?%5B%22Standard%22,true%5D)",
5152
"viewsWelcome.workbench.installLanguageSupport": "Java 项目视图需要安装并激活 [Extension Pack for Java](command:extension.open?%5B%22vscjava.vscode-java-pack%22%5D) 以提供完整的功能。\n[安装](command:java.project.installExtension?%5B%22vscjava.vscode-java-pack%22%5D)"
5253
}

package.nls.zh-tw.json

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"taskDefinitions.java.project.build.isFullBuild": "是否要重新建置專案。",
4848
"viewsWelcome.workbench.createNewJavaProject": "您也可以[開啟一個 Java 專案目錄](command:_java.project.open),或點擊下方按鈕建立一個新的 Java 專案。\n[建立 Java 專案](command:java.project.create)",
4949
"viewsWelcome.workbench.noJavaProject": "當前工作區未發現 Java 專案,您可以[開啟一個 Java 專案目錄](command:_java.project.open),或點擊下方按鈕建立一個新的 Java 專案。\n[建立 Java 專案](command:java.project.create)",
50+
"viewsWelcome.workbench.importFailed": "加載 Java 專案時出現錯誤,請通過以下方式查看錯誤相關信息:\n[打開問題視圖](command:workbench.panel.markers.view.focus)",
5051
"viewsWelcome.workbench.inLightWeightMode": "若要檢視各專案,你可以將專案匯入到工作區中。\n[匯入專案](command:java.server.mode.switch?%5B%22Standard%22,true%5D)",
5152
"viewsWelcome.workbench.installLanguageSupport": "Java 專案視圖需要安裝並啟用 [Extension Pack for Java](command:extension.open?%5B%22vscjava.vscode-java-pack%22%5D) 以提供完整的功能。\n[安裝](command:java.project.installExtension?%5B%22vscjava.vscode-java-pack%22%5D)"
5253
}

src/commands.ts

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ export namespace Commands {
9898

9999
export const JAVA_UPDATE_DEPRECATED_TASK = "java.updateDeprecatedTask";
100100

101+
export const JAVA_PROJECT_CHECK_IMPORT_STATUS = "java.project.checkImportStatus";
102+
101103
/**
102104
* Commands from Visual Studio Code
103105
*/

src/constants.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export namespace Context {
55
export const EXTENSION_ACTIVATED: string = "java:projectManagerActivated";
66
export const LANGUAGE_SUPPORT_INSTALLED: string = "java:languageSupportInstalled";
77
export const NO_JAVA_PROJECT: string = "java:noJavaProjects";
8+
export const IMPORT_FAILED: string = "java:importFailed";
89
export const WORKSPACE_CONTAINS_BUILD_FILES: string = "java:workspaceContainsBuildFiles";
910
export const RELOAD_PROJECT_ACTIVE: string = "java:reloadProjectActive";
1011
export const SHOW_DEPRECATED_TASKS: string = "java:showDeprecatedTasks";

src/java/jdtls.ts

+4
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ export namespace Jdtls {
6464
mainClass, classpaths, destination, terminalId, token);
6565
}
6666

67+
export async function checkImportStatus(): Promise<boolean> {
68+
return commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.JAVA_PROJECT_CHECK_IMPORT_STATUS) || false;
69+
}
70+
6771
export enum CompileWorkspaceStatus {
6872
Failed = 0,
6973
Succeed = 1,

src/views/dependencyDataProvider.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,14 @@ export class DependencyDataProvider implements TreeDataProvider<ExplorerNode> {
191191
this._rootItems = rootItems;
192192
}
193193
}
194-
contextManager.setContextValue(Context.NO_JAVA_PROJECT, _.isEmpty(rootItems));
194+
if (_.isEmpty(rootItems)) {
195+
const hasJavaError: boolean = await Jdtls.checkImportStatus();
196+
if (hasJavaError) {
197+
contextManager.setContextValue(Context.IMPORT_FAILED, true);
198+
} else {
199+
contextManager.setContextValue(Context.NO_JAVA_PROJECT, true);
200+
}
201+
}
195202
return rootItems;
196203
} finally {
197204
explorerLock.release();

0 commit comments

Comments
 (0)