diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/plugin.xml b/jdtls.ext/com.microsoft.jdtls.ext.core/plugin.xml
index a469ec92..3c2ead52 100644
--- a/jdtls.ext/com.microsoft.jdtls.ext.core/plugin.xml
+++ b/jdtls.ext/com.microsoft.jdtls.ext.core/plugin.xml
@@ -12,6 +12,8 @@
+
+
arguments, IProgress
return ProjectCommand.getImportClassContent(arguments, monitor);
case "java.project.getDependencies":
return ProjectCommand.getProjectDependencies(arguments, monitor);
+ case "java.project.getImportClassContentWithResult":
+ return ProjectCommand.getImportClassContentWithResult(arguments, monitor);
+ case "java.project.getProjectDependenciesWithResult":
+ return ProjectCommand.getProjectDependenciesWithResult(arguments, monitor);
default:
break;
}
diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java
index 4aa6632b..b5a54273 100644
--- a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java
+++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java
@@ -98,6 +98,101 @@ public DependencyInfo(String key, String value) {
}
}
+ /**
+ * Empty reasons for ImportClassContent operation
+ */
+ public enum ImportClassContentErrorReason {
+ NULL_ARGUMENTS("NullArgs"),
+ INVALID_URI("InvalidUri"),
+ URI_PARSE_FAILED("UriParseFail"),
+ FILE_NOT_FOUND("FileNotFound"),
+ FILE_NOT_EXISTS("FileNotExists"),
+ NOT_JAVA_PROJECT("NotJavaProject"),
+ PROJECT_NOT_EXISTS("ProjectNotExists"),
+ NOT_COMPILATION_UNIT("NotCompilationUnit"),
+ NO_IMPORTS("NoImports"),
+ OPERATION_CANCELLED("Cancelled"),
+ TIME_LIMIT_EXCEEDED("Timeout"),
+ NO_RESULTS("NoResults"),
+ PROCESSING_EXCEPTION("ProcessingError");
+
+ private final String message;
+
+ ImportClassContentErrorReason(String message) {
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+ }
+
+ /**
+ * Empty reasons for ProjectDependencies operation
+ */
+ public enum ProjectDependenciesErrorReason {
+ NULL_ARGUMENTS("NullArgs"),
+ INVALID_URI("InvalidUri"),
+ URI_PARSE_FAILED("UriParseFail"),
+ MALFORMED_URI("MalformedUri"),
+ OPERATION_CANCELLED("Cancelled"),
+ RESOLVER_NULL_RESULT("ResolverNull"),
+ NO_DEPENDENCIES("NoDependencies"),
+ PROCESSING_EXCEPTION("ProcessingError");
+
+ private final String message;
+
+ ProjectDependenciesErrorReason(String message) {
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+ }
+
+ /**
+ * Result wrapper for getImportClassContent method
+ */
+ public static class ImportClassContentResult {
+ public List classInfoList;
+ public String emptyReason; // Reason why the result is empty
+ public boolean isEmpty;
+
+ public ImportClassContentResult(List classInfoList) {
+ this.classInfoList = classInfoList;
+ this.emptyReason = null;
+ this.isEmpty = false;
+ }
+
+ public ImportClassContentResult(ImportClassContentErrorReason errorReason) {
+ this.classInfoList = Collections.emptyList();
+ this.emptyReason = errorReason.getMessage(); // Use enum message
+ this.isEmpty = true;
+ }
+ }
+
+ /**
+ * Result wrapper for getProjectDependencies method
+ */
+ public static class ProjectDependenciesResult {
+ public List dependencyInfoList;
+ public String emptyReason; // Reason why the result is empty
+ public boolean isEmpty;
+
+ public ProjectDependenciesResult(List dependencyInfoList) {
+ this.dependencyInfoList = dependencyInfoList;
+ this.emptyReason = null;
+ this.isEmpty = false;
+ }
+
+ public ProjectDependenciesResult(ProjectDependenciesErrorReason errorReason) {
+ this.dependencyInfoList = new ArrayList<>();
+ this.emptyReason = errorReason.getMessage(); // Use enum message
+ this.isEmpty = true;
+ }
+ }
+
private static class Classpath {
public String source;
public String destination;
@@ -350,18 +445,24 @@ public static boolean checkImportStatus() {
return hasError;
}
+ // This method reserver for pack.
+ public static List getImportClassContent(List