Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoopur Gupta2016-07-15 12:06:47 +0000
committerNoopur Gupta2016-07-15 12:06:47 +0000
commita2db02a5370121790fc04dfd719f54f39ad664e0 (patch)
treee1f9e3209406cafe4d9b8f5ee3639dfb698f88b1
parent6ee23224f4d3af899a317d2988a67cb9e8cb4b0b (diff)
downloadeclipse.jdt.ui-a2db02a5370121790fc04dfd719f54f39ad664e0.tar.gz
eclipse.jdt.ui-a2db02a5370121790fc04dfd719f54f39ad664e0.tar.xz
eclipse.jdt.ui-a2db02a5370121790fc04dfd719f54f39ad664e0.zip
Fixed bug 497368: [pull up] Pull Up refactoring to interface generatesI20160719-0800
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18_1/out/B.java1
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java2
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java2
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java4
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java2
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java2
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java1
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test50/out/A.java3
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test51/out/B.java3
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test52/out/A.java12
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/Foo.java11
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/FooImpl.java5
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/IFoo.java5
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/Foo.java12
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/FooImpl.java16
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/IFoo.java9
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests18.java30
-rw-r--r--org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java50
18 files changed, 154 insertions, 16 deletions
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18_1/out/B.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18_1/out/B.java
index 3ccf43ee9a..6d768d4f4c 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18_1/out/B.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18_1/out/B.java
@@ -4,6 +4,7 @@ import org.eclipse.jdt.annotation.NonNull;
public class B implements A {
+ @Override
public Integer getArea(@NonNull Integer length) {
return new Integer(length * length);
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java
index 63d86eb1ab..b7c714f0ee 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java
@@ -14,7 +14,9 @@ class C extends A{
/* (non-Javadoc)
* @see p.A#m()
*/
+ @Override
public int[] m() {
+ // TODO Auto-generated method stub
return null;
}
} \ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java
index a739949847..d725ac5463 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java
@@ -14,7 +14,9 @@ class C extends A{
/* (non-Javadoc)
* @see p.A#m(int[])
*/
+ @Override
public boolean m(int[] a) throws Exception {
+ // TODO Auto-generated method stub
return false;
}
} \ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java
index 7ad6e4236b..778190b2df 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java
@@ -18,7 +18,9 @@ class D extends C{
/* (non-Javadoc)
* @see p.A#m(int[])
*/
+ @Override
public boolean m(int[] a) throws Exception {
+ // TODO Auto-generated method stub
return false;
}
}
@@ -27,7 +29,9 @@ class D1 extends C{
/* (non-Javadoc)
* @see p.A#m(int[])
*/
+ @Override
public boolean m(int[] a) throws Exception {
+ // TODO Auto-generated method stub
return false;
}
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java
index a0a4845955..b40e48f4d4 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java
@@ -14,7 +14,9 @@ class C extends A{
/* (non-Javadoc)
* @see p.A#m()
*/
+ @Override
public int m() {
+ // TODO Auto-generated method stub
return 0;
}
} \ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java
index 3618cb73ce..201cb00567 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java
@@ -10,7 +10,9 @@ class C extends A{
/* (non-Javadoc)
* @see p.A#m()
*/
+ @Override
public int m() {
+ // TODO Auto-generated method stub
return 0;
}
} \ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java
index 55e10c1e40..9af87649c3 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java
@@ -6,6 +6,7 @@ public class A {
}
}
class B extends A {
+ @Override
public final void method() {
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test50/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test50/out/A.java
index 9e8de39d91..3a03389751 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test50/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test50/out/A.java
@@ -10,7 +10,10 @@ abstract class B extends A {
class C extends A {
+ @Override
protected void m() {
+ // TODO Auto-generated method stub
+
}
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test51/out/B.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test51/out/B.java
index c91ed5727a..dc6f85c897 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test51/out/B.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test51/out/B.java
@@ -19,7 +19,10 @@ public class B {
/* (non-Javadoc)
* @see p.B.Foo#b()
*/
+ @Override
public void b() {
+ // TODO Auto-generated method stub
+
}
}
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test52/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test52/out/A.java
index fd09ee46d3..e0a3b6c88e 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test52/out/A.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test52/out/A.java
@@ -7,25 +7,37 @@ public class A implements PullUpToInterfaceBug.Foo {
/* (non-Javadoc)
* @see p.PullUpToInterfaceBug.Foo#baz4()
*/
+ @Override
public void baz4() {
+ // TODO Auto-generated method stub
+
}
/* (non-Javadoc)
* @see p.PullUpToInterfaceBug.Foo#baz3()
*/
+ @Override
public void baz3() {
+ // TODO Auto-generated method stub
+
}
/* (non-Javadoc)
* @see p.PullUpToInterfaceBug.Foo#baz2()
*/
+ @Override
public void baz2() {
+ // TODO Auto-generated method stub
+
}
/* (non-Javadoc)
* @see p.PullUpToInterfaceBug.Foo#baz1()
*/
+ @Override
public void baz1() {
+ // TODO Auto-generated method stub
+
}
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/Foo.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/Foo.java
new file mode 100644
index 0000000000..0c0eafbb61
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/Foo.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Field;
+
+public class Foo implements IFoo {
+ public int log(Field field, String message) {
+ ManagementFactory factory = null;
+ return -1;
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/FooImpl.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/FooImpl.java
new file mode 100644
index 0000000000..9b0fd1dae6
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/FooImpl.java
@@ -0,0 +1,5 @@
+package p;
+
+public class FooImpl implements IFoo {
+
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/IFoo.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/IFoo.java
new file mode 100644
index 0000000000..1be74af206
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/in/IFoo.java
@@ -0,0 +1,5 @@
+package p;
+
+public interface IFoo {
+
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/Foo.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/Foo.java
new file mode 100644
index 0000000000..5b93746cc4
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/Foo.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Field;
+
+public class Foo implements IFoo {
+ @Override
+ public int log(Field field, String message) {
+ ManagementFactory factory = null;
+ return -1;
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/FooImpl.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/FooImpl.java
new file mode 100644
index 0000000000..fc63de995b
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/FooImpl.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.lang.reflect.Field;
+
+public class FooImpl implements IFoo {
+
+ /* (non-Javadoc)
+ * @see p.IFoo#log(java.lang.reflect.Field, java.lang.String)
+ */
+ @Override
+ public int log(Field field, String message) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/IFoo.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/IFoo.java
new file mode 100644
index 0000000000..fea38baf9f
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test54/out/IFoo.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.lang.reflect.Field;
+
+public interface IFoo {
+
+ int log(Field field, String message);
+
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests18.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests18.java
index d9c714a15d..4651ec103a 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests18.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests18.java
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.eclipse.jdt.ui.tests.refactoring;
-import junit.framework.Test;
-
import java.util.Hashtable;
import org.eclipse.jdt.testplugin.JavaProjectHelper;
@@ -38,6 +36,8 @@ import org.eclipse.jdt.ui.tests.core.Java18ProjectTestSetup;
import org.eclipse.jdt.internal.ui.JavaPlugin;
+import junit.framework.Test;
+
public class PullUpTests18 extends PullUpTests {
private static final Class<PullUpTests18> clazz= PullUpTests18.class;
@@ -207,4 +207,30 @@ public class PullUpTests18 extends PullUpTests {
JavaCore.setOptions(options);
}
}
+
+ // bug 497368
+ public void test54() throws Exception {
+ ICompilationUnit cuFoo= createCUfromTestFile(getPackageP(), "Foo");
+ ICompilationUnit cuIFoo= createCUfromTestFile(getPackageP(), "IFoo");
+ ICompilationUnit cuFooImpl= createCUfromTestFile(getPackageP(), "FooImpl");
+
+ String[] methodNames= new String[] { "log" };
+ String[][] signatures= new String[][] { new String[] { "QField;", "QString;" } };
+
+ IType type= getType(cuFoo, "Foo");
+ IMethod[] methods= getMethods(type, methodNames, signatures);
+
+ PullUpRefactoringProcessor processor= createRefactoringProcessor(methods);
+ Refactoring ref= processor.getRefactoring();
+
+ assertTrue("activation", ref.checkInitialConditions(new NullProgressMonitor()).isOK());
+ setSuperclassAsTargetClass(processor);
+
+ RefactoringStatus result= performRefactoring(ref);
+ assertTrue("precondition was supposed to pass", result == null || !result.hasError());
+
+ assertEqualLines("IFoo", getFileContents(getOutputTestFileName("IFoo")), cuIFoo.getSource());
+ assertEqualLines("FooImpl", getFileContents(getOutputTestFileName("FooImpl")), cuFooImpl.getSource());
+ assertEqualLines("Foo", getFileContents(getOutputTestFileName("Foo")), cuFoo.getSource());
+ }
}
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java
index 22afa5f917..d1a5d173e2 100644
--- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java
+++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java
@@ -91,6 +91,7 @@ import org.eclipse.jdt.core.dom.TypeDeclarationStatement;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
import org.eclipse.jdt.core.dom.rewrite.ITrackedNodePosition;
+import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite.ImportRewriteContext;
import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
@@ -297,13 +298,24 @@ public class PullUpRefactoringProcessor extends HierarchyProcessor {
matchingSet.add(matchingMember);
}
- private static Block createMethodStub(final MethodDeclaration method, final AST ast) {
+ private static Block createMethodStub(final MethodDeclaration method, final AST ast, ICompilationUnit cu, ASTRewrite rewrite, String targetTypeName) {
final Block body= ast.newBlock();
final Expression expression= ASTNodeFactory.newDefaultExpression(ast, method.getReturnType2(), method.getExtraDimensions());
- if (expression != null) {
- final ReturnStatement returnStatement= ast.newReturnStatement();
- returnStatement.setExpression(expression);
- body.statements().add(returnStatement);
+ try {
+ String delimiter= cu.findRecommendedLineSeparator();
+ String bodyStatement= ""; //$NON-NLS-1$
+ if (expression != null) {
+ final ReturnStatement returnStatement= ast.newReturnStatement();
+ returnStatement.setExpression(expression);
+ bodyStatement= ASTNodes.asFormattedString(returnStatement, 0, delimiter, cu.getJavaProject().getOptions(true));
+ }
+ String placeHolder= CodeGeneration.getMethodBodyContent(cu, targetTypeName, method.getName().getIdentifier(), false, bodyStatement, delimiter);
+ if (placeHolder != null) {
+ ReturnStatement todoNode= (ReturnStatement) rewrite.createStringPlaceholder(placeHolder, ASTNode.RETURN_STATEMENT);
+ body.statements().add(todoNode);
+ }
+ } catch (CoreException e) {
+ // return empty body
}
return body;
}
@@ -501,7 +513,8 @@ public class PullUpRefactoringProcessor extends HierarchyProcessor {
final MethodDeclaration methodToCreateStubFor= ASTNodeSearchUtil.getMethodDeclarationNode(sourceMethod, declaringCuNode);
final AST ast= rewriter.getRoot().getAST();
final MethodDeclaration newMethod= ast.newMethodDeclaration();
- newMethod.setBody(createMethodStub(methodToCreateStubFor, ast));
+ ASTRewrite astRewrite= rewriter.getASTRewrite();
+ newMethod.setBody(createMethodStub(methodToCreateStubFor, ast, newCu, astRewrite, Bindings.getFullyQualifiedName(typeToCreateStubIn.resolveBinding())));
newMethod.setConstructor(false);
copyExtraDimensions(methodToCreateStubFor, newMethod);
int modifiers= getModifiersWithUpdatedVisibility(sourceMethod, JdtFlags.clearFlag(Modifier.NATIVE | Modifier.ABSTRACT, methodToCreateStubFor.getModifiers()), adjustments,
@@ -512,13 +525,18 @@ public class PullUpRefactoringProcessor extends HierarchyProcessor {
newMethod.modifiers().addAll(ASTNodeFactory.newModifiers(ast, modifiers));
newMethod.setName(((SimpleName) ASTNode.copySubtree(ast, methodToCreateStubFor.getName())));
final TypeVariableMaplet[] mapping= TypeVariableUtil.composeMappings(TypeVariableUtil.subTypeToSuperType(getDeclaringType(), getDestinationType()), TypeVariableUtil.superTypeToInheritedType(getDestinationType(), ((IType) typeToCreateStubIn.resolveBinding().getJavaElement())));
- copyReturnType(rewriter.getASTRewrite(), getDeclaringType().getCompilationUnit(), methodToCreateStubFor, newMethod, mapping);
- copyParameters(rewriter.getASTRewrite(), getDeclaringType().getCompilationUnit(), methodToCreateStubFor, newMethod, mapping);
+ copyReturnType(astRewrite, getDeclaringType().getCompilationUnit(), methodToCreateStubFor, newMethod, mapping);
+ copyParameters(astRewrite, getDeclaringType().getCompilationUnit(), methodToCreateStubFor, newMethod, mapping);
copyThrownExceptions(methodToCreateStubFor, newMethod);
- newMethod.setJavadoc(createJavadocForStub(typeToCreateStubIn.getName().getIdentifier(), methodToCreateStubFor, newMethod, newCu, rewriter.getASTRewrite()));
- ImportRewriteContext context= new ContextSensitiveImportRewriteContext(typeToCreateStubIn, rewriter.getImportRewrite());
- ImportRewriteUtil.addImports(rewriter, context, newMethod, new HashMap<Name, String>(), new HashMap<Name, String>(), false);
- rewriter.getASTRewrite().getListRewrite(typeToCreateStubIn, typeToCreateStubIn.getBodyDeclarationsProperty()).insertAt(newMethod, ASTNodes.getInsertionIndex(newMethod, typeToCreateStubIn.bodyDeclarations()), rewriter.createCategorizedGroupDescription(RefactoringCoreMessages.PullUpRefactoring_add_method_stub, SET_PULL_UP));
+ newMethod.setJavadoc(createJavadocForStub(typeToCreateStubIn.getName().getIdentifier(), methodToCreateStubFor, newMethod, newCu, astRewrite));
+ ImportRewrite importRewrite= rewriter.getImportRewrite();
+ ImportRewriteContext context= new ContextSensitiveImportRewriteContext(typeToCreateStubIn, importRewrite);
+ ImportRewriteUtil.addImports(rewriter, context, methodToCreateStubFor, new HashMap<Name, String>(), new HashMap<Name, String>(), true);
+ IJavaProject javaProject= newCu.getJavaProject();
+ CodeGenerationSettings codeGenerationSettings= JavaPreferencesSettings.getCodeGenerationSettings(javaProject);
+ StubUtility2.addOverrideAnnotation(codeGenerationSettings, javaProject, astRewrite, importRewrite, newMethod, getDeclaringType().isInterface(),
+ rewriter.createCategorizedGroupDescription(RefactoringCoreMessages.PullUpRefactoring_add_override_annotation, SET_PULL_UP));
+ astRewrite.getListRewrite(typeToCreateStubIn, typeToCreateStubIn.getBodyDeclarationsProperty()).insertAt(newMethod, ASTNodes.getInsertionIndex(newMethod, typeToCreateStubIn.bodyDeclarations()), rewriter.createCategorizedGroupDescription(RefactoringCoreMessages.PullUpRefactoring_add_method_stub, SET_PULL_UP));
}
private void addNecessaryMethodStubs(final List<IType> affected, final CompilationUnit root, final CompilationUnitRewrite unitRewriter, final Map<IMember, IncomingMemberVisibilityAdjustment> adjustments, final IProgressMonitor monitor, final RefactoringStatus status) throws CoreException {
@@ -1033,7 +1051,7 @@ public class PullUpRefactoringProcessor extends HierarchyProcessor {
copyThrownExceptions(oldMethod, newMethod);
copyTypeParameters(oldMethod, newMethod);
ImportRewriteContext context= new ContextSensitiveImportRewriteContext(destination, targetRewrite.getImportRewrite());
- ImportRewriteUtil.addImports(targetRewrite, context, oldMethod, new HashMap<Name, String>(), new HashMap<Name, String>(), false);
+ ImportRewriteUtil.addImports(targetRewrite, context, oldMethod, new HashMap<Name, String>(), new HashMap<Name, String>(), true);
targetRewrite.getASTRewrite().getListRewrite(destination, destination.getBodyDeclarationsProperty()).insertAt(newMethod, ASTNodes.getInsertionIndex(newMethod, destination.bodyDeclarations()), targetRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.PullUpRefactoring_add_abstract_method, SET_PULL_UP));
}
@@ -1159,7 +1177,7 @@ public class PullUpRefactoringProcessor extends HierarchyProcessor {
status.merge(RefactoringStatus.createErrorStatus(Messages.format(RefactoringCoreMessages.PullUpRefactoring_moving_static_method_to_interface, new String[] { JavaElementLabels.getTextLabel(member, JavaElementLabels.ALL_FULLY_QUALIFIED)}), JavaStatusContext.create(member)));
final MethodDeclaration newMethod= createNewMethodDeclarationNode(sourceRewriter, rewrite, ((IMethod) member), oldMethod, mapping, adjustments, new SubProgressMonitor(subsub, 1), status);
rewriter.getListRewrite(declaration, declaration.getBodyDeclarationsProperty()).insertAt(newMethod, ASTNodes.getInsertionIndex(newMethod, declaration.bodyDeclarations()), rewrite.createCategorizedGroupDescription(RefactoringCoreMessages.HierarchyRefactoring_add_member, SET_PULL_UP));
- ImportRewriteUtil.addImports(rewrite, context, oldMethod, new HashMap<Name, String>(), new HashMap<Name, String>(), false);
+ ImportRewriteUtil.addImports(rewrite, context, oldMethod, new HashMap<Name, String>(), new HashMap<Name, String>(), newMethod.getBody() == null);
}
} else if (member instanceof IType) {
final AbstractTypeDeclaration oldType= ASTNodeSearchUtil.getAbstractTypeDeclarationNode((IType) member, root);
@@ -1312,6 +1330,10 @@ public class PullUpRefactoringProcessor extends HierarchyProcessor {
private MethodDeclaration createNewMethodDeclarationNode(final CompilationUnitRewrite sourceRewrite, final CompilationUnitRewrite targetRewrite, final IMethod sourceMethod, final MethodDeclaration oldMethod, final TypeVariableMaplet[] mapping, final Map<IMember, IncomingMemberVisibilityAdjustment> adjustments, final IProgressMonitor monitor, final RefactoringStatus status) throws JavaModelException {
final ASTRewrite rewrite= targetRewrite.getASTRewrite();
final AST ast= rewrite.getAST();
+ ITypeBinding destinationBinding= ASTNodeSearchUtil.getAbstractTypeDeclarationNode(getDestinationType(), targetRewrite.getRoot()).resolveBinding();
+ StubUtility2.addOverrideAnnotation(fSettings, sourceMethod.getJavaProject(), sourceRewrite.getASTRewrite(), sourceRewrite.getImportRewrite(), oldMethod,
+ destinationBinding == null ? false : destinationBinding.isInterface(),
+ sourceRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.PullUpRefactoring_add_override_annotation, SET_PULL_UP));
final MethodDeclaration newMethod= ast.newMethodDeclaration();
if (!getDestinationType().isInterface())
copyBodyOfPulledUpMethod(sourceRewrite, targetRewrite, sourceMethod, oldMethod, newMethod, mapping, monitor);

Back to the top