diff options
author | Tobias Melcher | 2018-09-21 08:44:07 +0000 |
---|---|---|
committer | Tobias Melcher | 2018-09-21 10:38:28 +0000 |
commit | eef6a58d93958ef187fbaa9bc56cce3ced1a5b80 (patch) | |
tree | 8ef446436ec85c6c3f0dc2681d665e57436de0ff /org.eclipse.jface.text/src/org/eclipse/jface | |
parent | 6bc4a74a0addb0b95bd497e2e9eee3444519e052 (diff) | |
download | eclipse.platform.text-eef6a58d93958ef187fbaa9bc56cce3ced1a5b80.tar.gz eclipse.platform.text-eef6a58d93958ef187fbaa9bc56cce3ced1a5b80.tar.xz eclipse.platform.text-eef6a58d93958ef187fbaa9bc56cce3ced1a5b80.zip |
Bug 539317: catch exception thrown by codeMiningProvider
Change-Id: I80377ca6706013ebbf4d50da666953ff3f4d2ed1
Signed-off-by: Tobias Melcher <Tobias.Melcher@sap.com>
Diffstat (limited to 'org.eclipse.jface.text/src/org/eclipse/jface')
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java b/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java index bf8039025eb..28f7d4bb073 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/codemining/CodeMiningManager.java @@ -27,7 +27,11 @@ import java.util.stream.Collectors; import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
@@ -143,6 +147,12 @@ public class CodeMiningManager implements Runnable { }
}
+ private static void logCodeMiningProviderException(Throwable e) {
+ String PLUGIN_ID= "org.eclipse.jface.text"; //$NON-NLS-1$
+ ILog log= Platform.getLog(Platform.getBundle(PLUGIN_ID));
+ log.log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, e.getMessage(), e));
+ }
+
/**
* Return the list of {@link CompletableFuture} which provides the list of {@link ICodeMining}
* for the given <code>viewer</code> by using the given providers.
@@ -156,7 +166,12 @@ public class CodeMiningManager implements Runnable { private static CompletableFuture<List<? extends ICodeMining>> getCodeMinings(ITextViewer viewer,
List<ICodeMiningProvider> providers, IProgressMonitor monitor) {
List<CompletableFuture<List<? extends ICodeMining>>> com= providers.stream()
- .map(provider -> provider.provideCodeMinings(viewer, monitor)).filter(c -> c != null)
+ .map(provider -> provider.provideCodeMinings(viewer, monitor))
+ .filter(c -> c != null)
+ .map(future -> future.exceptionally(e -> {
+ logCodeMiningProviderException(e);
+ return Collections.emptyList();
+ }))
.collect(Collectors.toList());
return CompletableFuture.allOf(com.toArray(new CompletableFuture[com.size()])).thenApply(
v -> com.stream().map(CompletableFuture::join).flatMap(l -> l.stream()).collect(Collectors.toList()));
|