From ad8fb6a04388e3abfe57eb816ae862f971461c1a Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 28 Jul 2015 23:02:01 +0200 Subject: [PATCH] SSR: cleanup collection of named elements --- .../structuralsearch/JavaReplaceHandler.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java index 50eb03dca513..c94d67efe344 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java @@ -127,34 +127,22 @@ public class JavaReplaceHandler extends StructuralReplaceHandler { return getSymbolReplacementTarget(el) != null; } - @SuppressWarnings({"unchecked", "ConstantConditions"}) + @SuppressWarnings({"ConstantConditions"}) private void handleModifierList(final PsiElement el, final PsiElement replacement) throws IncorrectOperationException { // We want to copy all comments, including doc comments and modifier lists // that are present in matched nodes but not present in search/replace Map newNameToSearchPatternNameMap = myContext.getNewName2PatternNameMap(); - ModifierListOwnerCollector collector = new ModifierListOwnerCollector(); - el.accept(collector); - Map originalNamedElements = (Map)collector.namedElements.clone(); - collector.namedElements.clear(); - - replacement.accept(collector); - Map replacedNamedElements = (Map)collector.namedElements.clone(); - collector.namedElements.clear(); + Map originalNamedElements = Collector.collectNamedElements(el); + Map replacedNamedElements = Collector.collectNamedElements(replacement); if (originalNamedElements.size() == 0 && replacedNamedElements.size() == 0) { Replacer.handleComments(el, replacement, myContext); return; } - final PsiStatement[] statements = getCodeBlock().getStatements(); - if (statements.length > 0) { - statements[0].getParent().accept(collector); - } - - Map searchedNamedElements = (Map)collector.namedElements.clone(); - collector.namedElements.clear(); + Map searchedNamedElements = Collector.collectNamedElements(getCodeBlock()); for (String name : originalNamedElements.keySet()) { PsiNamedElement originalNamedElement = originalNamedElements.get(name); @@ -536,8 +524,14 @@ public class JavaReplaceHandler extends StructuralReplaceHandler { return text.getFirstChild(); } - private static class ModifierListOwnerCollector extends JavaRecursiveElementWalkingVisitor { - HashMap namedElements = new HashMap(1); + private static class Collector extends JavaRecursiveElementWalkingVisitor { + private final HashMap namedElements = new HashMap(1); + + public static Map collectNamedElements(PsiElement context) { + final Collector collector = new Collector(); + context.accept(collector); + return collector.namedElements; + } @Override public void visitClass(PsiClass aClass) {