diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java index 9ea18a93da15..21bad491f704 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java @@ -220,12 +220,14 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP final String paramName = parameterChunk != null ? parameterChunk.parameter.name : replacedParameter.getName(); final PsiType paramType = parameterChunk != null ? parameterChunk.parameter.type : replacedParameter.getType(); if (getter == null) { - getter = GenerateMembersUtil.suggestGetterName(paramName, paramType, myProject); + getter = parameterChunk != null && parameterChunk.field != null ? GenerateMembersUtil.suggestGetterName(parameterChunk.field) + : GenerateMembersUtil.suggestGetterName(paramName, paramType, myProject); paramsNeedingGetters.add(replacedParameter); } @NonNls String setter = parameterChunk != null ? parameterChunk.setter : null; if (setter == null) { - setter = GenerateMembersUtil.suggestSetterName(paramName, paramType, myProject); + setter = parameterChunk != null && parameterChunk.field != null ? GenerateMembersUtil.suggestSetterName(parameterChunk.field) + : GenerateMembersUtil.suggestSetterName(paramName, paramType, myProject); } if (RefactoringUtil.isPlusPlusOrMinusMinus(paramUsage.getParent())) { usages.add(new ReplaceParameterIncrementDecrement(paramUsage, fixedParamName, setter, getter)); diff --git a/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/after/Param.java b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/after/Param.java new file mode 100644 index 000000000000..18575674ca1d --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/after/Param.java @@ -0,0 +1,15 @@ +class Param { + private String myClass; + + public P(String myClass) { + this.myClass = myClass; + } + + public String getSourceClass() { + return myClass; + } + + public String getMyClass() { + return myClass; + } +} diff --git a/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/after/Test.java b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/after/Test.java new file mode 100644 index 000000000000..0913a7d192e0 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/after/Test.java @@ -0,0 +1,5 @@ +public class Test { + void foo(Param param) { + System.out.println(param.getMyClass()); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/before/Param.java b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/before/Param.java new file mode 100644 index 000000000000..552706d32ab6 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/before/Param.java @@ -0,0 +1,11 @@ +class Param { + private String myClass; + + public P(String myClass) { + this.myClass = myClass; + } + + public String getSourceClass() { + return myClass; + } +} diff --git a/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/before/Test.java b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/before/Test.java new file mode 100644 index 000000000000..85d5d311e290 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceParameterObject/existingWithAnotherFieldNames/before/Test.java @@ -0,0 +1,5 @@ +public class Test { + void foo(String aClass) { + System.out.println(aClass); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java index 5496b11074e9..fa873a46c801 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java @@ -239,6 +239,10 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{ doTestExistingClass("Param", "", false); } + public void testExistingWithAnotherFieldNames() throws Exception { + doTestExistingClass("Param", "", true); + } + public void testWrongBean() throws Exception { checkExceptionThrown("Param", "", "Cannot perform the refactoring.\n" + "Getters for the following fields are required:\n" + "i.\n"); }