@Override public void handleFileSaved(URI originalFile, Optional<String> contents) { if (originalSourceToChangedSource.containsKey(originalFile)) { originalSourceToChangedSource.get(originalFile).reload(); resetCompilationUnit(); } }
@Override public void handleFileClosed(URI originalFile) { if (!originalSourceToChangedSource.containsKey(originalFile)) { return; } Path changedSource = originalSourceToChangedSource.get(originalFile).getDestination(); originalSourceToChangedSource.remove(originalFile); // Deleted the changed file if (!changedSource.toFile().delete()) { logger.error("Unable to delete file '{}'", changedSource.toAbsolutePath()); } resetCompilationUnit(); }
@Override public void handleFileChanged(URI originalFile, List<TextDocumentContentChangeEvent> contentChanges) { try { FileBackedContentsManager fileBackedContentsManager; if (originalSourceToChangedSource.containsKey(originalFile)) { // New change on existing changed source fileBackedContentsManager = originalSourceToChangedSource.get(originalFile); } else { // New source to switch out Path newChangedFilePath = changedFilesRoot.resolve(workspaceRoot.relativize(Paths.get(originalFile))); fileBackedContentsManager = FileBackedContentsManager.of(Paths.get(originalFile), newChangedFilePath); originalSourceToChangedSource.put(originalFile, fileBackedContentsManager); } // Apply changes to source writer and reset compilation unit fileBackedContentsManager.applyChanges(contentChanges); resetCompilationUnit(); } catch (IOException e) { logger.error("Error occurred while handling file changes", e); throw Throwables.propagate(e); } }
@Override public void handleChangeWatchedFiles(List<? extends FileEvent> changes) { changes.forEach(change -> { URI uri = Uris.resolveToRoot(workspaceRoot, change.getUri()); switch (change.getType()) { case Changed: case Deleted: if (originalSourceToChangedSource.containsKey(uri)) { Path changedSource = originalSourceToChangedSource.get(uri).getDestination(); // Deleted the changed file if (!changedSource.toFile().delete()) { logger.error("Unable to delete file '{}'", changedSource.toAbsolutePath()); } originalSourceToChangedSource.remove(uri); } break; default: // Nothing to do in other cases break; } }); resetCompilationUnit(); }