From 8cc5e9bf08a309752fc10f2d579ad3a48fd892bb Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Sun, 25 Sep 2016 22:25:56 +0300 Subject: [PATCH] svn: Refactored "QuickMergeInteraction" - @NotNull --- .../idea/svn/integrate/BaseMergeTask.java | 16 +++----- .../svn/integrate/QuickMergeInteraction.java | 37 +++++++++++-------- .../integrate/QuickMergeInteractionImpl.java | 31 ++++++++++------ .../integrate/QuickMergeWayOptionsPanel.java | 4 +- .../svn/integrate/ShowRecentInDialogTask.java | 2 +- .../idea/svn/integrate/ToBeMergedDialog.java | 4 +- .../idea/svn/QuickMergeTestInteraction.java | 21 +++++++---- .../jetbrains/idea/svn/SvnQuickMergeTest.java | 22 ++++++----- 8 files changed, 79 insertions(+), 58 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 fc68e4dd9043..a1027f67317b 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/BaseMergeTask.java @@ -16,13 +16,13 @@ package org.jetbrains.idea.svn.integrate; import com.intellij.openapi.diagnostic.Logger; -import org.jetbrains.annotations.CalledInAny; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.continuation.ContinuationContext; import com.intellij.util.continuation.TaskDescriptor; import com.intellij.util.continuation.Where; +import org.jetbrains.annotations.CalledInAny; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.svn.SvnUtil; @@ -87,7 +87,7 @@ public abstract class BaseMergeTask extends TaskDescriptor { } @CalledInAny - protected void finishWithError(@NotNull ContinuationContext context, @NotNull final String message, final boolean isError) { + protected void finishWithError(@NotNull ContinuationContext context, @NotNull String message, boolean isError) { LOG.info((isError ? "Error: " : "Info: ") + message); context.next(new TaskDescriptor(message, Where.AWT) { @Override @@ -99,9 +99,7 @@ public abstract class BaseMergeTask extends TaskDescriptor { } @CalledInAny - protected void finishWithError(@NotNull ContinuationContext context, - final String message, - @Nullable final List exceptions) { + protected void finishWithError(@NotNull ContinuationContext context, @NotNull String message, @NotNull List exceptions) { log(message, exceptions); context.cancelEverything(); @@ -113,11 +111,9 @@ public abstract class BaseMergeTask extends TaskDescriptor { }); } - private static void log(String message, @Nullable List exceptions) { - if (exceptions != null) { - for (VcsException exception : exceptions) { - LOG.info(message, exception); - } + private static void log(@NotNull String message, @NotNull List exceptions) { + for (VcsException exception : exceptions) { + LOG.info(message, exception); } } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java index be43400fcbb9..abf196bf61e1 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteraction.java @@ -25,37 +25,42 @@ import org.jetbrains.idea.svn.mergeinfo.MergeChecker; import java.util.List; -/** - * Created with IntelliJ IDEA. - * User: Irina.Chernushina - * Date: 3/26/13 - * Time: 8:29 PM - */ public interface QuickMergeInteraction { - void setTitle(@NotNull final String title); - QuickMergeContentsVariants selectMergeVariant(); - boolean shouldContinueSwitchedRootFound(); - - boolean shouldReintegrate(@NotNull final String sourceUrl, @NotNull final String targetUrl); + void setTitle(@NotNull String title); @NotNull - SelectMergeItemsResult selectMergeItems(final List lists, final String mergeTitle, final MergeChecker mergeChecker); + QuickMergeContentsVariants selectMergeVariant(); + + boolean shouldContinueSwitchedRootFound(); + + boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl); + + @NotNull + SelectMergeItemsResult selectMergeItems(@NotNull List lists, + @NotNull String mergeTitle, + @NotNull MergeChecker mergeChecker); @NotNull LocalChangesAction selectLocalChangesAction(boolean mergeAll); - void showIntersectedLocalPaths(final List paths); + void showIntersectedLocalPaths(@NotNull List paths); - void showErrors(final String message, final List exceptions); - void showErrors(final String message, final boolean isError); + void showErrors(@NotNull String message, @NotNull List exceptions); + void showErrors(@NotNull String message, boolean isError); + + @NotNull List showRecentListsForSelection(@NotNull List list, @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, - @NotNull PairConsumer loader, boolean everyThingLoaded); + @NotNull PairConsumer loader, + boolean everyThingLoaded); interface SelectMergeItemsResult { + @NotNull QuickMergeContentsVariants getResultCode(); + + @NotNull List getSelectedLists(); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java index 7b9e967c9970..4ec773794e52 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeInteractionImpl.java @@ -27,11 +27,14 @@ import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.util.PairConsumer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.idea.svn.dialogs.*; +import org.jetbrains.idea.svn.dialogs.IntersectingLocalChangesPanel; +import org.jetbrains.idea.svn.dialogs.MergeDialogI; import org.jetbrains.idea.svn.mergeinfo.MergeChecker; import java.util.List; +import static java.util.Collections.emptyList; + /** * Created with IntelliJ IDEA. * User: Irina.Chernushina @@ -51,6 +54,7 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { myTitle = title; } + @NotNull @Override public QuickMergeContentsVariants selectMergeVariant() { final QuickMergeWayOptionsPanel panel = new QuickMergeWayOptionsPanel(); @@ -70,19 +74,22 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { } @Override - public boolean shouldReintegrate(@NotNull final String sourceUrl, @NotNull final String targetUrl) { + public boolean shouldReintegrate(@NotNull String sourceUrl, @NotNull String targetUrl) { return prompt("You are going to reintegrate changes.

This will make branch '" + sourceUrl + - "' no longer usable for further work." + - "
It will not be able to correctly absorb new trunk (" + targetUrl + - ") changes,
nor can this branch be properly reintegrated to trunk again.

Are you sure?"); + "' no longer usable for further work." + + "
It will not be able to correctly absorb new trunk (" + targetUrl + + ") changes,
nor can this branch be properly reintegrated to trunk again.

Are you sure?"); } @NotNull @Override - public SelectMergeItemsResult selectMergeItems(List lists, String mergeTitle, MergeChecker mergeChecker) { + public SelectMergeItemsResult selectMergeItems(@NotNull List lists, + @NotNull String mergeTitle, + @NotNull MergeChecker mergeChecker) { final ToBeMergedDialog dialog = new ToBeMergedDialog(myProject, lists, mergeTitle, mergeChecker, null); dialog.show(); return new SelectMergeItemsResult() { + @NotNull @Override public QuickMergeContentsVariants getResultCode() { final int code = dialog.getExitCode(); @@ -92,6 +99,7 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { return DialogWrapper.OK_EXIT_CODE == code ? QuickMergeContentsVariants.select : QuickMergeContentsVariants.cancel; } + @NotNull @Override public List getSelectedLists() { return dialog.getSelected(); @@ -119,21 +127,22 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { } @Override - public void showIntersectedLocalPaths(final List paths) { + public void showIntersectedLocalPaths(@NotNull List paths) { IntersectingLocalChangesPanel.showInVersionControlToolWindow(myProject, myTitle + ", local changes intersection", paths, "The following file(s) have local changes that will intersect with merge changes:"); } @Override - public void showErrors(String message, List exceptions) { + public void showErrors(@NotNull String message, @NotNull List exceptions) { AbstractVcsHelper.getInstance(myProject).showErrors(exceptions, message); } @Override - public void showErrors(String message, boolean isError) { + public void showErrors(@NotNull String message, boolean isError) { VcsBalloonProblemNotifier.showOverChangesView(myProject, message, isError ? MessageType.ERROR : MessageType.WARNING); } + @NotNull @Override public List showRecentListsForSelection(@NotNull List list, @NotNull String mergeTitle, @@ -148,10 +157,10 @@ public class QuickMergeInteractionImpl implements QuickMergeInteraction { if (DialogWrapper.OK_EXIT_CODE == dialog.getExitCode()) { return dialog.getSelected(); } - return null; + return emptyList(); } - private boolean prompt(final String question) { + private boolean prompt(@NotNull String question) { return Messages.showOkCancelDialog(myProject, question, myTitle, Messages.getQuestionIcon()) == Messages.OK; } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeWayOptionsPanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeWayOptionsPanel.java index 2cf13271bbf7..04abb25c9fcf 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeWayOptionsPanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMergeWayOptionsPanel.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.svn.integrate; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.MultiLineLabelUI; import com.intellij.util.ui.JBUI; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.event.ActionEvent; @@ -57,7 +58,7 @@ public class QuickMergeWayOptionsPanel { myFindsWhereOneOfLabel.setBorder(JBUI.Borders.emptyBottom(10)); } - private ActionListener setCodeAndClose(final QuickMergeContentsVariants variant) { + private ActionListener setCodeAndClose(@NotNull QuickMergeContentsVariants variant) { return new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -75,6 +76,7 @@ public class QuickMergeWayOptionsPanel { myWrapper = wrapper; } + @NotNull public QuickMergeContentsVariants getVariant() { return myVariant; } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java index 542a65ecfb80..718f7145132c 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ShowRecentInDialogTask.java @@ -54,7 +54,7 @@ public class ShowRecentInDialogTask extends BaseMergeTask { createMoreChangeListsLoader(), myInitialChangeListsLoader.isLastLoaded()); - if (lists != null && !lists.isEmpty()) { + if (!lists.isEmpty()) { runChangeListsMerge(context, lists, createBranchCopyPoint(), myMergeContext.getTitle()); } else { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java index 0a69d688339e..21d3277eea25 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java @@ -96,9 +96,9 @@ public class ToBeMergedDialog extends DialogWrapper implements MergeDialogI { private ToBeMergedDialog.MoreXAction myMore500Action; public ToBeMergedDialog(final Project project, - final List lists, + @NotNull List lists, final String title, - final MergeChecker mergeChecker, + @NotNull MergeChecker mergeChecker, final PairConsumer moreLoader) { super(project, true); myMoreLoader = moreLoader; diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java index 031e085ea4a4..15dd10b9abb3 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/QuickMergeTestInteraction.java @@ -30,6 +30,7 @@ import java.util.List; import static com.intellij.util.containers.ContainerUtil.isEmpty; import static com.intellij.util.containers.ContainerUtil.newArrayList; +import static com.intellij.util.containers.ContainerUtilRt.emptyList; public class QuickMergeTestInteraction implements QuickMergeInteraction { @@ -46,12 +47,13 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { public void setTitle(@NotNull String title) { } + @NotNull @Override public QuickMergeContentsVariants selectMergeVariant() { return myMergeVariant; } - public void setMergeVariant(QuickMergeContentsVariants mergeVariant) { + public void setMergeVariant(@NotNull QuickMergeContentsVariants mergeVariant) { myMergeVariant = mergeVariant; } @@ -67,27 +69,32 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { @NotNull @Override - public SelectMergeItemsResult selectMergeItems(List lists, String mergeTitle, MergeChecker mergeChecker) { + public SelectMergeItemsResult selectMergeItems(@NotNull List lists, + @NotNull String mergeTitle, + @NotNull MergeChecker mergeChecker) { return new SelectMergeItemsResult() { + @NotNull @Override public QuickMergeContentsVariants getResultCode() { return QuickMergeContentsVariants.all; } + @NotNull @Override public List getSelectedLists() { - return null; + return emptyList(); } }; } + @NotNull @Override public List showRecentListsForSelection(@NotNull List list, @NotNull String mergeTitle, @NotNull MergeChecker mergeChecker, @NotNull PairConsumer loader, boolean everyThingLoaded) { - return null; + return emptyList(); } @NotNull @@ -97,11 +104,11 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { } @Override - public void showIntersectedLocalPaths(List paths) { + public void showIntersectedLocalPaths(@NotNull List paths) { } @Override - public void showErrors(String message, List exceptions) { + public void showErrors(@NotNull String message, @NotNull List exceptions) { if (!isEmpty(exceptions)) { myExceptions.addAll(exceptions); } @@ -111,7 +118,7 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction { } @Override - public void showErrors(String message, boolean isError) { + public void showErrors(@NotNull String message, boolean isError) { if (isError) { myExceptions.add(new RuntimeException(message)); } else { diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java index 97086045b001..632a83c95214 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnQuickMergeTest.java @@ -57,6 +57,8 @@ import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; +import static java.util.stream.Collectors.toList; + /** * Created with IntelliJ IDEA. * User: Irina.Chernushina @@ -172,6 +174,7 @@ public class SvnQuickMergeTest extends Svn17TestCase { // by default merges all final AtomicReference selectionError = new AtomicReference<>(); QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) { + @NotNull @Override public List showRecentListsForSelection(@NotNull List list, @NotNull String mergeTitle, @@ -259,6 +262,7 @@ public class SvnQuickMergeTest extends Svn17TestCase { // by default merges all final AtomicReference selectionError = new AtomicReference<>(); QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) { + @NotNull @Override public List showRecentListsForSelection(@NotNull List list, @NotNull String mergeTitle, @@ -329,24 +333,22 @@ public class SvnQuickMergeTest extends Svn17TestCase { QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) { @NotNull @Override - public SelectMergeItemsResult selectMergeItems(final List lists, - String mergeTitle, - MergeChecker mergeChecker) { + public SelectMergeItemsResult selectMergeItems(@NotNull List lists, + @NotNull String mergeTitle, + @NotNull MergeChecker mergeChecker) { return new SelectMergeItemsResult() { + @NotNull @Override public QuickMergeContentsVariants getResultCode() { return QuickMergeContentsVariants.select; } + @NotNull @Override public List getSelectedLists() { - final List result = new ArrayList<>(); - for (CommittedChangeList list : lists) { - if (numberBefore + 1 == list.getNumber() || numberBefore + 2 == list.getNumber()) { - result.add(list); - } - } - return result; + return lists.stream() + .filter(list -> numberBefore + 1 == list.getNumber() || numberBefore + 2 == list.getNumber()) + .collect(toList()); } }; }