mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
change signature: extract common code to search for conflicts; use it in introduce parameter object
This commit is contained in:
+5
-10
@@ -37,7 +37,10 @@ import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.intellij.util.ObjectUtils.assertNotNull;
|
||||
|
||||
@@ -140,15 +143,7 @@ public class ChangeSignatureProcessor extends ChangeSignatureProcessorBase {
|
||||
if (!processor.setupDefaultValues(myChangeInfo, refUsages, myProject)) return false;
|
||||
}
|
||||
MultiMap<PsiElement, String> conflictDescriptions = new MultiMap<PsiElement, String>();
|
||||
for (ChangeSignatureUsageProcessor usageProcessor : ChangeSignatureUsageProcessor.EP_NAME.getExtensions()) {
|
||||
final MultiMap<PsiElement, String> conflicts = usageProcessor.findConflicts(myChangeInfo, refUsages);
|
||||
for (PsiElement key : conflicts.keySet()) {
|
||||
Collection<String> collection = conflictDescriptions.get(key);
|
||||
if (collection.size() == 0) collection = new HashSet<String>();
|
||||
collection.addAll(conflicts.get(key));
|
||||
conflictDescriptions.put(key, collection);
|
||||
}
|
||||
}
|
||||
collectConflictsFromExtensions(refUsages, conflictDescriptions, myChangeInfo);
|
||||
|
||||
final UsageInfo[] usagesIn = refUsages.get();
|
||||
RenameUtil.addConflictDescriptions(usagesIn, conflictDescriptions);
|
||||
|
||||
+7
@@ -167,6 +167,7 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
}
|
||||
}
|
||||
}
|
||||
List<UsageInfo> changeSignatureUsages = new ArrayList<>();
|
||||
for (UsageInfo usageInfo : refUsages.get()) {
|
||||
if (usageInfo instanceof FixableUsageInfo) {
|
||||
final String conflictMessage = ((FixableUsageInfo)usageInfo).getConflictMessage();
|
||||
@@ -174,7 +175,13 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
conflicts.putValue(usageInfo.getElement(), conflictMessage);
|
||||
}
|
||||
}
|
||||
else {
|
||||
changeSignatureUsages.add(usageInfo);
|
||||
}
|
||||
}
|
||||
|
||||
ChangeSignatureProcessorBase.collectConflictsFromExtensions(new Ref<>(changeSignatureUsages.toArray(new UsageInfo[changeSignatureUsages.size()])), conflicts, myChangeInfo);
|
||||
|
||||
return showConflicts(conflicts, refUsages.get());
|
||||
}
|
||||
|
||||
|
||||
+17
-4
@@ -22,6 +22,7 @@ import com.intellij.openapi.command.undo.UndoManager;
|
||||
import com.intellij.openapi.command.undo.UndoableAction;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
@@ -36,15 +37,13 @@ import com.intellij.refactoring.util.MoveRenameUsageInfo;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.containers.hash.HashMap;
|
||||
import com.intellij.util.containers.hash.HashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author Maxim.Medvedev
|
||||
@@ -74,6 +73,20 @@ public abstract class ChangeSignatureProcessorBase extends BaseRefactoringProces
|
||||
return findUsages(myChangeInfo);
|
||||
}
|
||||
|
||||
public static void collectConflictsFromExtensions(@NotNull Ref<UsageInfo[]> refUsages,
|
||||
MultiMap<PsiElement, String> conflictDescriptions,
|
||||
ChangeInfo changeInfo) {
|
||||
for (ChangeSignatureUsageProcessor usageProcessor : ChangeSignatureUsageProcessor.EP_NAME.getExtensions()) {
|
||||
final MultiMap<PsiElement, String> conflicts = usageProcessor.findConflicts(changeInfo, refUsages);
|
||||
for (PsiElement key : conflicts.keySet()) {
|
||||
Collection<String> collection = conflictDescriptions.get(key);
|
||||
if (collection.isEmpty()) collection = new com.intellij.util.containers.HashSet<String>();
|
||||
collection.addAll(conflicts.get(key));
|
||||
conflictDescriptions.put(key, collection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static UsageInfo[] findUsages(ChangeInfo changeInfo) {
|
||||
List<UsageInfo> infos = new ArrayList<UsageInfo>();
|
||||
|
||||
+1
-11
@@ -22,7 +22,6 @@ import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessorBase;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureUsageProcessor;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureViewDescriptor;
|
||||
import com.intellij.refactoring.rename.RenameUtil;
|
||||
import com.intellij.refactoring.ui.ConflictsDialog;
|
||||
@@ -33,7 +32,6 @@ import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -68,15 +66,7 @@ public class GrChangeSignatureProcessor extends ChangeSignatureProcessorBase {
|
||||
@Override
|
||||
protected boolean preprocessUsages(@NotNull Ref<UsageInfo[]> refUsages) {
|
||||
MultiMap<PsiElement, String> conflictDescriptions = new MultiMap<PsiElement, String>();
|
||||
for (ChangeSignatureUsageProcessor usageProcessor : ChangeSignatureUsageProcessor.EP_NAME.getExtensions()) {
|
||||
final MultiMap<PsiElement, String> conflicts = usageProcessor.findConflicts(myChangeInfo, refUsages);
|
||||
for (PsiElement key : conflicts.keySet()) {
|
||||
Collection<String> collection = conflictDescriptions.get(key);
|
||||
if (collection.isEmpty()) collection = new HashSet<String>();
|
||||
collection.addAll(conflicts.get(key));
|
||||
conflictDescriptions.put(key, collection);
|
||||
}
|
||||
}
|
||||
collectConflictsFromExtensions(refUsages, conflictDescriptions, myChangeInfo);
|
||||
|
||||
final UsageInfo[] usagesIn = refUsages.get();
|
||||
RenameUtil.addConflictDescriptions(usagesIn, conflictDescriptions);
|
||||
|
||||
Reference in New Issue
Block a user