From 140f5965c65da69a9b50bfaa0df4e9c7f3014e97 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Tue, 27 Sep 2016 22:17:05 +0300 Subject: [PATCH] svn: Unified quick merge errors displaying --- .../idea/svn/integrate/BaseMergeTask.java | 39 ++++++++----------- .../integrate/LoadRecentBranchRevisions.java | 2 +- .../MergeAllOrSelectedChooserTask.java | 2 +- .../MergeAllWithBranchCopyPointTask.java | 7 ++-- .../svn/integrate/MergeCalculatorTask.java | 9 ++--- .../svn/integrate/MergeInitChecksTask.java | 2 +- .../svn/integrate/ShelveLocalChangesTask.java | 4 +- 7 files changed, 28 insertions(+), 37 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java index f411c8958aca..4497072c602b 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java @@ -31,6 +31,9 @@ import org.tmatesoft.svn.core.SVNURL; import java.util.List; +import static com.intellij.openapi.application.ApplicationManager.getApplication; +import static java.util.Collections.singletonList; + public abstract class BaseMergeTask extends TaskDescriptor { private static final Logger LOG = Logger.getInstance(BaseMergeTask.class); @@ -77,40 +80,30 @@ public abstract class BaseMergeTask extends TaskDescriptor { result = SvnUtil.createUrl(myMergeContext.getSourceUrl()); } catch (SvnBindException e) { - finishWithError(context, e.getMessage(), true); + end(context, e); } return result; } @CalledInAny - protected void finishWithError(@NotNull ContinuationContext context, @NotNull String message, boolean isError) { + protected void end(@NotNull ContinuationContext context, @NotNull String message, boolean isError) { LOG.info((isError ? "Error: " : "Info: ") + message); - context.next(new TaskDescriptor(message, Where.AWT) { - @Override - public void run(ContinuationContext context) { - myInteraction.showErrors(message, isError); - context.cancelEverything(); - } - }); + + context.cancelEverything(); + getApplication().invokeLater(() -> myInteraction.showErrors(message, isError)); } @CalledInAny - protected void finishWithError(@NotNull ContinuationContext context, @NotNull String message, @NotNull List exceptions) { - log(message, exceptions); + protected void end(@NotNull ContinuationContext context, @NotNull VcsException e) { + end(context, myMergeContext.getTitle(), e); + } + + @CalledInAny + protected void end(@NotNull ContinuationContext context, @NotNull String message, @NotNull VcsException e) { + LOG.info(message, e); context.cancelEverything(); - context.next(new TaskDescriptor(message, Where.AWT) { - @Override - public void run(ContinuationContext context) { - myInteraction.showErrors(message, exceptions); - } - }); - } - - private static void log(@NotNull String message, @NotNull List exceptions) { - for (VcsException exception : exceptions) { - LOG.info(message, exception); - } + getApplication().invokeLater(() -> myInteraction.showErrors(message, singletonList(e))); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java index 070611bd7359..c41fcf776f22 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java @@ -69,7 +69,7 @@ public class LoadRecentBranchRevisions extends BaseMergeTask { run(); } catch (VcsException e) { - context.handleException(e, true); + end(context, e); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java index e1a6b27fa99a..39c5bae73e96 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java @@ -66,7 +66,7 @@ public class MergeAllOrSelectedChooserTask extends BaseMergeTask { result = new MergeCalculatorTask(myMergeProcess); } catch (VcsException e) { - finishWithError(context, e.getMessage(), true); + end(context, e); } return result; diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java index 9dc1a94f43a0..1449a359b088 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllWithBranchCopyPointTask.java @@ -22,7 +22,6 @@ import com.intellij.util.continuation.ContinuationContext; import com.intellij.util.continuation.Where; import org.jetbrains.annotations.NotNull; -import java.util.Collections; import java.util.concurrent.atomic.AtomicReference; public class MergeAllWithBranchCopyPointTask extends BaseMergeTask @@ -49,7 +48,7 @@ public class MergeAllWithBranchCopyPointTask extends BaseMergeTask runMerge(context, inverterValue); } else { - finishWithError(context, "Merge start wasn't found", true); + end(context, "Merge start wasn't found", true); } } @@ -62,11 +61,11 @@ public class MergeAllWithBranchCopyPointTask extends BaseMergeTask runMerge(context, inverter); } else { - finishWithError(context, "Merge start wasn't found", true); + end(context, "Merge start wasn't found", true); } } catch (VcsException e) { - finishWithError(context, "Merge start wasn't found", Collections.singletonList(e)); + end(context, "Merge start wasn't found", e); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java index d3ad6698af6a..d7b1dfbff944 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java @@ -38,7 +38,6 @@ import java.util.List; import java.util.concurrent.atomic.AtomicReference; import static com.intellij.util.containers.ContainerUtil.newArrayList; -import static java.util.Collections.singletonList; import static org.jetbrains.idea.svn.SvnUtil.ensureStartSlash; import static org.tmatesoft.svn.core.internal.util.SVNPathUtil.getRelativePath; import static org.tmatesoft.svn.core.internal.util.SVNPathUtil.isAncestor; @@ -79,7 +78,7 @@ public class MergeCalculatorTask extends BaseMergeTask context.next(new ShowRevisionSelector(myMergeProcess, copyPoint, notMergedChangeLists, myMergeChecker)); } else { - finishWithError(context, "Everything is up-to-date", false); + end(context, "Everything is up-to-date", false); } } } @@ -92,11 +91,11 @@ public class MergeCalculatorTask extends BaseMergeTask result = myCopyData.get().get(); if (result == null) { - finishWithError(context, "Merge start wasn't found", true); + end(context, "Merge start wasn't found", true); } } catch (VcsException e) { - finishWithError(context, "Merge start wasn't found", singletonList(e)); + end(context, "Merge start wasn't found", e); } return result; @@ -122,7 +121,7 @@ public class MergeCalculatorTask extends BaseMergeTask }); } catch (VcsException e) { - finishWithError(context, "Checking revisions for merge fault", singletonList(e)); + end(context, "Checking revisions for merge fault", e); } return result; diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeInitChecksTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeInitChecksTask.java index 1714596f2f04..d664db26cd51 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeInitChecksTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeInitChecksTask.java @@ -37,7 +37,7 @@ public class MergeInitChecksTask extends BaseMergeTask { if (url != null) { if (areInSameHierarchy(url, myMergeContext.getWcInfo().getUrl())) { - finishWithError(context, "Cannot merge from self", true); + end(context, "Cannot merge from self", true); } else if (hasSwitchedRoots() && !myInteraction.shouldContinueSwitchedRootFound()) { context.cancelEverything(); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java index 3aa3381a4c9c..661d98ff6256 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShelveLocalChangesTask.java @@ -71,10 +71,10 @@ public class ShelveLocalChangesTask extends BaseMergeTask { changedFiles.addAll(getAfterRevisionsFiles(entry.getValue().stream(), true).collect(toList())); } catch (IOException e) { - finishWithError(context, e.getMessage(), true); + end(context, new VcsException(e)); } catch (VcsException e) { - finishWithError(context, e.getMessage(), true); + end(context, e); } }