From 64520feaa1c4e3b616e22bdf973d5145e9d7abb6 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 26 Apr 2019 07:40:27 +0200 Subject: [PATCH] rename field: replace qualified names with field qName (IDEA-210056) GitOrigin-RevId: 8ae6037597a183c843d89f5b8870a4162ddf73e3 --- .../rename/RenameJavaVariableProcessor.java | 17 +++++++++++ .../multi/afterNonCodeUsages.properties | 1 + .../multi/beforeNonCodeUsages.properties | 1 + .../refactoring/RenameFieldMultiTest.java | 30 +++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 java/java-tests/testData/refactoring/renameField/multi/afterNonCodeUsages.properties create mode 100644 java/java-tests/testData/refactoring/renameField/multi/beforeNonCodeUsages.properties create mode 100644 java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldMultiTest.java diff --git a/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaVariableProcessor.java b/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaVariableProcessor.java index 2db8a0ebc9b6..2f90cb0017c3 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaVariableProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaVariableProcessor.java @@ -7,6 +7,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.VariableKind; @@ -420,4 +421,20 @@ public class RenameJavaVariableProcessor extends RenameJavaMemberProcessor { } }); } + + @Override + public String getQualifiedNameAfterRename(@NotNull final PsiElement element, @NotNull final String newName, final boolean nonJava) { + if (nonJava && element instanceof PsiField) { + final PsiField field = (PsiField)element; + PsiClass containingClass = field.getContainingClass(); + if (containingClass != null) { + String qualifiedName = containingClass.getQualifiedName(); + if (qualifiedName != null) { + return StringUtil.getQualifiedName(qualifiedName, newName); + } + } + } + + return null; + } } diff --git a/java/java-tests/testData/refactoring/renameField/multi/afterNonCodeUsages.properties b/java/java-tests/testData/refactoring/renameField/multi/afterNonCodeUsages.properties new file mode 100644 index 000000000000..0f4a865d413e --- /dev/null +++ b/java/java-tests/testData/refactoring/renameField/multi/afterNonCodeUsages.properties @@ -0,0 +1 @@ +p.A.myField1=foo \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/renameField/multi/beforeNonCodeUsages.properties b/java/java-tests/testData/refactoring/renameField/multi/beforeNonCodeUsages.properties new file mode 100644 index 000000000000..c88970aea518 --- /dev/null +++ b/java/java-tests/testData/refactoring/renameField/multi/beforeNonCodeUsages.properties @@ -0,0 +1 @@ +p.A.myField=foo \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldMultiTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldMultiTest.java new file mode 100644 index 000000000000..b40344124811 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldMultiTest.java @@ -0,0 +1,30 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.intellij.java.refactoring; + +import com.intellij.JavaTestUtil; +import com.intellij.psi.PsiClass; +import com.intellij.refactoring.rename.RenameProcessor; +import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; + +public class RenameFieldMultiTest extends LightCodeInsightFixtureTestCase { + @Override + protected String getTestDataPath() { + return JavaTestUtil.getJavaTestDataPath() + "/refactoring/renameField/multi/"; + } + + public void testNonCodeUsages() { + PsiClass aClass = myFixture.addClass("package p;\n" + + "public class A {\n" + + " private String myField;\n" + + "}"); + doTest(aClass, "properties"); + } + + private void doTest(PsiClass aClass, String ext) { + String suffix = getTestName(false); + myFixture.configureByFile("before" + suffix + "." + ext); + new RenameProcessor(getProject(), aClass.findFieldByName("myField", false), "myField1", true, true).run(); + myFixture.checkResultByFile("after" + suffix + "." + ext); + } +}