From ac2da29b8317bed8686e8b0dc9eef1891d2d6b17 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 10 Sep 2014 18:14:08 +0400 Subject: [PATCH] diff: codereview --- .../openapi/vcs/ex/LineStatusTracker.java | 57 +++++++++---------- .../vcs/ex/RollbackLineStatusAction.java | 2 +- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java index 8a9e40582eb0..abc43dd3a34d 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java @@ -768,15 +768,10 @@ public class LineStatusTracker { } } - public void rollbackChanges(@NotNull BitSet lines) { - myApplication.assertWriteAccessAllowed(); - - synchronized (myLock) { - if (myBulkUpdate) return; - - try { - mySuppressUpdate = true; - + public void rollbackChanges(@NotNull final BitSet lines) { + runBulkRollback(new Runnable() { + @Override + public void run() { Range first = null; Range last = null; @@ -820,19 +815,24 @@ public class LineStatusTracker { doUpdateRanges(beforeChangedLine1, beforeChangedLine2, shift, beforeTotalLines); } } - catch (Throwable e) { - reinstallRanges(); - if (e instanceof Error) throw ((Error)e); - if (e instanceof RuntimeException) throw ((RuntimeException)e); - throw new RuntimeException(e); - } - finally { - mySuppressUpdate = false; - } - } + }); } - public void rollbackChanges() { + public void rollbackAllChanges() { + runBulkRollback(new Runnable() { + @Override + public void run() { + myDocument.setText(myVcsDocument.getText()); + + removeAnathema(); + removeHighlightersFromMarkupModel(); + + markFileUnchanged(); + } + }); + } + + private void runBulkRollback(@NotNull Runnable task) { myApplication.assertWriteAccessAllowed(); synchronized (myLock) { @@ -841,18 +841,15 @@ public class LineStatusTracker { try { mySuppressUpdate = true; - myDocument.setText(myVcsDocument.getText()); - - removeAnathema(); - removeHighlightersFromMarkupModel(); - - markFileUnchanged(); + task.run(); } - catch (Throwable e) { + catch (Error e) { reinstallRanges(); - if (e instanceof Error) throw ((Error)e); - if (e instanceof RuntimeException) throw ((RuntimeException)e); - throw new RuntimeException(e); + throw e; + } + catch (RuntimeException e) { + reinstallRanges(); + throw e; } finally { mySuppressUpdate = false; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java index c86f6047abc1..529da7371bf7 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java @@ -118,7 +118,7 @@ public class RollbackLineStatusAction extends DumbAwareAction { execute(tracker, new Runnable() { @Override public void run() { - tracker.rollbackChanges(); + tracker.rollbackAllChanges(); } }); }