From 0cc17bf60d65efe32cd3c494dbe469e33f0f0d7a Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Wed, 11 Jan 2012 14:30:56 +0400 Subject: [PATCH] IDEA-79529 Groovy: Change Signature Refactoring doesn't work when renaming a method which implements Java interface --- .../refactoring/changeSignature/ChangeSignatureUtil.java | 9 +++++++++ .../changeSignature/JavaChangeSignatureHandler.java | 6 +++--- .../changeSignature/ChangeSignatureHandler.java | 5 +++++ .../changeSignature/GrChangeSignatureHandler.java | 5 +++-- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureUtil.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureUtil.java index 665d3d574c48..91f005293fad 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureUtil.java @@ -15,8 +15,11 @@ */ package com.intellij.refactoring.changeSignature; +import com.intellij.lang.LanguageRefactoringSupport; +import com.intellij.openapi.project.Project; import com.intellij.psi.JavaTokenType; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethod; import com.intellij.psi.impl.source.tree.Factory; import com.intellij.psi.impl.source.tree.SharedImplUtil; import com.intellij.psi.util.PsiUtilBase; @@ -97,6 +100,12 @@ public class ChangeSignatureUtil { } } + public static void invokeChangeSignatureOn(PsiMethod method, Project project) { + final ChangeSignatureHandler handler = + LanguageRefactoringSupport.INSTANCE.forLanguage(method.getLanguage()).getChangeSignatureHandler(); + handler.invoke(project, new PsiElement[]{method}, null); + } + public interface ChildrenGenerator { List getChildren(Parent parent); } diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java index 37947074c5f5..e105d739f1ce 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java @@ -63,9 +63,9 @@ public class JavaChangeSignatureHandler implements ChangeSignatureHandler { } } - public void invoke(@NotNull final Project project, @NotNull final PsiElement[] elements, final DataContext dataContext) { + public void invoke(@NotNull final Project project, @NotNull final PsiElement[] elements, @Nullable final DataContext dataContext) { if (elements.length != 1) return; - Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); + Editor editor = dataContext != null ? PlatformDataKeys.EDITOR.getData(dataContext) : null; invokeOnElement(project, editor, elements[0]); } @@ -76,7 +76,7 @@ public class JavaChangeSignatureHandler implements ChangeSignatureHandler { if (newMethod == null) return; if (!newMethod.equals(method)) { - invoke(newMethod, project, editor); + ChangeSignatureUtil.invokeChangeSignatureOn(newMethod, project); return; } diff --git a/platform/lang-api/src/com/intellij/refactoring/changeSignature/ChangeSignatureHandler.java b/platform/lang-api/src/com/intellij/refactoring/changeSignature/ChangeSignatureHandler.java index 4a1dc6b870fb..d0edf661a99a 100644 --- a/platform/lang-api/src/com/intellij/refactoring/changeSignature/ChangeSignatureHandler.java +++ b/platform/lang-api/src/com/intellij/refactoring/changeSignature/ChangeSignatureHandler.java @@ -15,11 +15,14 @@ */ package com.intellij.refactoring.changeSignature; +import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.RefactoringBundle; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** @@ -33,4 +36,6 @@ public interface ChangeSignatureHandler extends RefactoringActionHandler { @Nullable PsiElement findTargetMember(PsiElement element); + + void invoke(@NotNull Project project, @NotNull PsiElement[] elements, @Nullable DataContext dataContext); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureHandler.java index 21659346492e..56ce5cf264cd 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureHandler.java @@ -30,6 +30,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.changeSignature.ChangeSignatureHandler; +import com.intellij.refactoring.changeSignature.ChangeSignatureUtil; import com.intellij.refactoring.util.CommonRefactoringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -66,7 +67,7 @@ public class GrChangeSignatureHandler implements ChangeSignatureHandler { public void invoke(@NotNull final Project project, @NotNull final PsiElement[] elements, final DataContext dataContext) { if (elements.length != 1) return; - Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); + Editor editor = dataContext == null ? null : PlatformDataKeys.EDITOR.getData(dataContext); invokeOnElement(project, editor, elements[0]); } @@ -78,7 +79,7 @@ public class GrChangeSignatureHandler implements ChangeSignatureHandler { if (newMethod == null) return; if (!newMethod.equals(method)) { - invoke(newMethod, project); + ChangeSignatureUtil.invokeChangeSignatureOn(method, project); return; }