in com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/visitors/DiagnosticVisitor.java [47:86]
public void enlist() {
LsifService lsif = this.getLsif();
Document docVertex = this.getContext().getDocVertex();
IResource resource = this.getContext().getCompilationUnit().getJavaElement().getResource();
if (resource == null || !resource.exists()) {
LanguageServerIndexerPlugin.logError("Cannot find resource for: "
+ this.getContext().getCompilationUnit().getJavaElement().getElementName());
return;
}
IMarker[] markers = null;
IDocument document = null;
try {
IMarker[] javaMarkers = resource.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, false,
IResource.DEPTH_ONE);
IMarker[] taskMarkers = resource.findMarkers(IJavaModelMarker.TASK_MARKER, false, IResource.DEPTH_ONE);
int totalLength = javaMarkers.length + taskMarkers.length;
if (totalLength == 0) {
return;
}
markers = Arrays.copyOf(javaMarkers, javaMarkers.length + taskMarkers.length);
System.arraycopy(taskMarkers, 0, markers, javaMarkers.length, taskMarkers.length);
document = JsonRpcHelpers
.toDocument(this.getContext().getCompilationUnit().getJavaElement().getOpenable().getBuffer());
} catch (Throwable ex) {
LanguageServerIndexerPlugin.logException("Exception when dumping diagnostic information ", ex);
return;
}
if (document == null) {
LanguageServerIndexerPlugin
.logError("Cannot parse the document for: "
+ this.getContext().getCompilationUnit().getJavaElement().getElementName());
return;
}
List<Diagnostic> diagnostics = toDiagnosticsArray(document, markers);
DiagnosticResult diagnosticResult = lsif.getVertexBuilder().diagnosticResult(diagnostics);
LsifEmitter.getInstance().emit(diagnosticResult);
LsifEmitter.getInstance().emit(lsif.getEdgeBuilder().diagnostic(docVertex, diagnosticResult));
}