diff options
author | Noopur Gupta | 2016-07-15 12:06:47 +0000 |
---|---|---|
committer | Noopur Gupta | 2016-07-15 12:06:47 +0000 |
commit | a2db02a5370121790fc04dfd719f54f39ad664e0 (patch) | |
tree | e1f9e3209406cafe4d9b8f5ee3639dfb698f88b1 | |
parent | 6ee23224f4d3af899a317d2988a67cb9e8cb4b0b (diff) | |
download | eclipse.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
broken code
Change-Id: I2cccc407ec973ef6d0feada853cb9a912abfa03b
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); |