From 2bf523c9750c1ff1636cc92145e8ec915da3df33 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Wed, 30 Dec 2015 18:24:27 +0300 Subject: [PATCH] [vcs-log] MultiMap instead of Map for cherry pickers --- .../dvcs/cherrypick/VcsCherryPickManager.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/cherrypick/VcsCherryPickManager.java b/platform/dvcs-impl/src/com/intellij/dvcs/cherrypick/VcsCherryPickManager.java index af2570c8c45b..0af467ca0f5a 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/cherrypick/VcsCherryPickManager.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/cherrypick/VcsCherryPickManager.java @@ -15,6 +15,7 @@ */ package com.intellij.dvcs.cherrypick; +import com.google.common.collect.Lists; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; @@ -32,6 +33,7 @@ import com.intellij.openapi.vcs.changes.ChangeListManager; import com.intellij.openapi.vcs.changes.ChangeListManagerEx; import com.intellij.util.Consumer; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.MultiMap; import com.intellij.vcs.log.CommitId; import com.intellij.vcs.log.VcsFullCommitDetails; import com.intellij.vcs.log.VcsLog; @@ -88,7 +90,14 @@ public class VcsCherryPickManager { } private class CherryPickingTask extends Task.Backgroundable { - @NotNull private final Map> myGroupedCommits = ContainerUtil.newHashMap(); + @NotNull private final MultiMap myGroupedCommits = + new MultiMap() { + @NotNull + @Override + protected Collection createCollection() { + return new ArrayList(); + } + }; @NotNull private final Collection myAllCommits; @NotNull private final ChangeListManagerEx myChangeListManager; @@ -113,11 +122,7 @@ public class VcsCherryPickManager { "Cherry pick is not supported for commit " + details.getId().toShortString() + " from root " + details.getRoot().getName()); return false; } - List list = myGroupedCommits.get(cherryPicker); - if (list == null) { - myGroupedCommits.put(cherryPicker, list = new ArrayList()); // ordered set!! - } - list.add(details); + myGroupedCommits.putValue(cherryPicker, details); return true; } @@ -138,9 +143,8 @@ public class VcsCherryPickManager { } if (isOk) { - for (Map.Entry> entry : myGroupedCommits.entrySet()) { - List commits = entry.getValue(); - Collections.reverse(commits); + for (Map.Entry> entry : myGroupedCommits.entrySet()) { + List commits = Lists.reverse(Lists.newArrayList(entry.getValue())); entry.getKey().cherryPick(commits); } }