diff --git a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java
index 6d604f466955..6188ef3f6712 100644
--- a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java
+++ b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java
@@ -26,6 +26,7 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.ScrollType;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.refactoring.HelpID;
import com.intellij.refactoring.RefactoringActionHandler;
import com.intellij.refactoring.RefactoringBundle;
@@ -140,20 +141,21 @@ public class ExtractInterfaceHandler implements RefactoringActionHandler, Elemen
String interfaceName,
MemberInfo[] selectedMembers,
DocCommentPolicy javaDocPolicy) throws IncorrectOperationException {
- aClass.getProject().getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC)
+ final Project project = aClass.getProject();
+ project.getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC)
.refactoringStarted(ExtractSuperClassUtil.REFACTORING_EXTRACT_SUPER_ID, ExtractSuperClassUtil.createBeforeData(aClass, selectedMembers));
final PsiClass anInterface = JavaDirectoryService.getInstance().createInterface(targetDir, interfaceName);
try {
PsiJavaCodeReferenceElement ref = ExtractSuperClassUtil.createExtendingReference(anInterface, aClass, selectedMembers);
final PsiReferenceList referenceList = aClass.isInterface() ? aClass.getExtendsList() : aClass.getImplementsList();
assert referenceList != null;
- referenceList.add(ref);
+ CodeStyleManager.getInstance(project).reformat(referenceList.add(ref));
PullUpProcessor pullUpHelper = new PullUpProcessor(aClass, anInterface, selectedMembers, javaDocPolicy);
pullUpHelper.moveMembersToBase();
return anInterface;
}
finally {
- aClass.getProject().getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC)
+ project.getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC)
.refactoringDone(ExtractSuperClassUtil.REFACTORING_EXTRACT_SUPER_ID, ExtractSuperClassUtil.createAfterData(anInterface));
}
}
diff --git a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java
index 8812398b4f75..7e6b86b732a8 100644
--- a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java
+++ b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java
@@ -95,10 +95,11 @@ public class ExtractSuperClassUtil {
// make original class extend extracted superclass
PsiJavaCodeReferenceElement ref = createExtendingReference(superclass, subclass, selectedMemberInfos);
+ final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project);
if (subClassExtends != null) {
- subclass.getExtendsList().add(ref);
+ codeStyleManager.reformat(subclass.getExtendsList().add(ref));
} else if (subclass instanceof PsiAnonymousClass) {
- ((PsiAnonymousClass)subclass).getBaseClassReference().replace(ref);
+ codeStyleManager.reformat(((PsiAnonymousClass)subclass).getBaseClassReference().replace(ref));
}
PullUpProcessor pullUpHelper = new PullUpProcessor(subclass, superclass, selectedMemberInfos,
diff --git a/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java
new file mode 100644
index 000000000000..ed3dd7401cd6
--- /dev/null
+++ b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java
@@ -0,0 +1,3 @@
+public class Test {
+ public B m(A a){return null;}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java
new file mode 100644
index 000000000000..b0c6fc9e1314
--- /dev/null
+++ b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java
@@ -0,0 +1,2 @@
+public class TestSubclass extends Test {
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java
new file mode 100644
index 000000000000..ed3dd7401cd6
--- /dev/null
+++ b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java
@@ -0,0 +1,3 @@
+public class Test {
+ public B m(A a){return null;}
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java
index 8422ffed3b32..84aac46f44b9 100644
--- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java
+++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java
@@ -59,6 +59,10 @@ public class ExtractSuperClassTest extends RefactoringTestCase {
doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class));
}
+ public void testMultipleTypeParameters() throws Exception {
+ doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class));
+ }
+
public void testEmptyForeach() throws Exception {
doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class));