@Override public void beginReporting() { JavaLanguageServerPlugin.logInfo("begin problem for " + this.uri.substring(this.uri.lastIndexOf('/'))); problems.clear(); }
@Override public void didChange(DidChangeTextDocumentParams params) { logInfo(">> document/didChange"); documentLifeCycleHandler.didChange(params); }
@Override public void stop(BundleContext bundleContext) throws Exception { logInfo(getClass() + " is stopping:"); JavaLanguageServerPlugin.pluginInstance = null; JavaLanguageServerPlugin.context = null; ResourcesPlugin.getWorkspace().removeSaveParticipant(IConstants.PLUGIN_ID); projectsManager = null; contentProviderManager = null; languageServer = null; }
@Override public void didOpen(DidOpenTextDocumentParams params) { logInfo(">> document/didOpen"); documentLifeCycleHandler.didOpen(params); }
@Override public void didClose(DidCloseTextDocumentParams params) { logInfo(">> document/didClose"); documentLifeCycleHandler.didClose(params); }
@Override public void didSave(DidSaveTextDocumentParams params) { logInfo(">> document/didSave"); documentLifeCycleHandler.didSave(params); }
public void clearDiagnostics() { JavaLanguageServerPlugin.logInfo("Clearing problems for " + this.uri.substring(this.uri.lastIndexOf('/'))); problems.clear(); PublishDiagnosticsParams $ = new PublishDiagnosticsParams(ResourceUtils.toClientUri(uri), Collections.emptyList()); this.connection.publishDiagnostics($); }
@Override public void didChangeWorkspaceFolders(DidChangeWorkspaceFoldersParams params) { logInfo(">> java/didChangeWorkspaceFolders"); WorkspaceFolderChangeHandler handler = new WorkspaceFolderChangeHandler(pm); handler.update(params); }
@Override public void endReporting() { JavaLanguageServerPlugin.logInfo(problems.size() + " problems reported for " + this.uri.substring(this.uri.lastIndexOf('/'))); PublishDiagnosticsParams $ = new PublishDiagnosticsParams(ResourceUtils.toClientUri(uri), toDiagnosticsArray(this.cu, problems)); this.connection.publishDiagnostics($); }
@Override public CompletableFuture<BuildWorkspaceStatus> buildWorkspace(boolean forceReBuild) { logInfo(">> java/buildWorkspace (" + (forceReBuild ? "full)" : "incremental)")); BuildWorkspaceHandler handler = new BuildWorkspaceHandler(client, pm); return computeAsync((monitor) -> handler.buildWorkspace(forceReBuild, monitor)); }
@Override public CompletableFuture<List<? extends Location>> implementation(TextDocumentPositionParams position) { logInfo(">> document/implementation"); return computeAsyncWithClientProgress((monitor) -> new ImplementationsHandler(preferenceManager).findImplementations(position, monitor)); }
@Override public CompletableFuture<List<? extends Location>> references(ReferenceParams params) { logInfo(">> document/references"); ReferencesHandler handler = new ReferencesHandler(this.preferenceManager); return computeAsync((monitor) -> handler.findReferences(params, monitor)); }
@Override public CompletableFuture<List<? extends TextEdit>> rangeFormatting(DocumentRangeFormattingParams params) { logInfo(">> document/rangeFormatting"); FormatterHandler handler = new FormatterHandler(preferenceManager); return computeAsync((monitor) -> handler.rangeFormatting(params, monitor)); }
@Override public CompletableFuture<Either<Range, PrepareRenameResult>> prepareRename(TextDocumentPositionParams params) { logInfo(">> document/prepareRename"); PrepareRenameHandler handler = new PrepareRenameHandler(); return computeAsync((monitor) -> handler.prepareRename(params, monitor)); }
@Override public CompletableFuture<Object> executeCommand(ExecuteCommandParams params) { logInfo(">> workspace/executeCommand " + (params == null ? null : params.getCommand())); WorkspaceExecuteCommandHandler handler = new WorkspaceExecuteCommandHandler(); return computeAsync((monitor) -> { return handler.executeCommand(params, monitor); }); }
@Override public CompletableFuture<List<Either<Command, CodeAction>>> codeAction(CodeActionParams params) { logInfo(">> document/codeAction"); CodeActionHandler handler = new CodeActionHandler(this.preferenceManager); return computeAsync((monitor) -> { waitForLifecycleJobs(monitor); return handler.getCodeActionCommands(params, monitor); }); }
@Override public CompletableFuture<String> classFileContents(TextDocumentIdentifier param) { logInfo(">> java/classFileContents"); ContentProviderManager handler = JavaLanguageServerPlugin.getContentProviderManager(); URI uri = JDTUtils.toURI(param.getUri()); return computeAsync((monitor) -> handler.getContent(uri, monitor)); }
@Override public CompletableFuture<List<Either<SymbolInformation, DocumentSymbol>>> documentSymbol(DocumentSymbolParams params) { logInfo(">> document/documentSymbol"); boolean hierarchicalDocumentSymbolSupported = preferenceManager.getClientPreferences().isHierarchicalDocumentSymbolSupported(); DocumentSymbolHandler handler = new DocumentSymbolHandler(hierarchicalDocumentSymbolSupported); return computeAsync((monitor) -> { waitForLifecycleJobs(monitor); return handler.documentSymbol(params, monitor); }); }
@Override public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params) { logInfo(">> document/codeLens"); CodeLensHandler handler = new CodeLensHandler(preferenceManager); return computeAsync((monitor) -> { waitForLifecycleJobs(monitor); return handler.getCodeLensSymbols(params.getTextDocument().getUri(), monitor); }); }
private static void updateProjectClasspath(IJavaProject javaProject, IClasspathEntry newEntry, IProgressMonitor monitor) throws JavaModelException { List<IClasspathEntry> newEntries = updateElements(javaProject.getRawClasspath(), newEntry, (entry) -> { return entry.getEntryKind() == newEntry.getEntryKind() && entry.getPath().equals(newEntry.getPath()); }); JavaLanguageServerPlugin.logInfo("Update source attachment " + (newEntry.getSourceAttachmentPath() == null ? null : newEntry.getSourceAttachmentPath().toOSString()) + " to the file " + newEntry.getPath().toOSString()); javaProject.setRawClasspath(newEntries.toArray(new IClasspathEntry[0]), monitor); }