diff options
author | Manju Mathew | 2013-10-30 09:41:36 +0000 |
---|---|---|
committer | Manju Mathew | 2013-10-30 09:41:36 +0000 |
commit | 15d4811e3fc0484d08c6a610fe081f96865a08ef (patch) | |
tree | c7792d3a4b7708e16287c6767795583ae1a9920d | |
parent | 3b350b06345eb502a18953d25f553b34aad02d91 (diff) | |
download | eclipse.jdt.ui-15d4811e3fc0484d08c6a610fe081f96865a08ef.tar.gz eclipse.jdt.ui-15d4811e3fc0484d08c6a610fe081f96865a08ef.tar.xz eclipse.jdt.ui-15d4811e3fc0484d08c6a610fe081f96865a08ef.zip |
Fix for bug 405270: [1.8][refactoring] Handling of receiver parameter
during UI refactoring. Updated changes wrt AnnotatableType.
3 files changed, 27 insertions, 15 deletions
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractInterfaceProcessor.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractInterfaceProcessor.java index f2f49467a5..b3a5bcfacd 100644 --- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractInterfaceProcessor.java +++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractInterfaceProcessor.java @@ -70,6 +70,7 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.ASTRequestor; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; +import org.eclipse.jdt.core.dom.AnnotatableType; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.EnumDeclaration; @@ -750,10 +751,13 @@ public final class ExtractInterfaceProcessor extends SuperTypeRefactoringProcess AST ast= rewrite.getAST(); SimpleName simpleName= ast.newSimpleName(targetName); SimpleType simpleType= ast.newSimpleType(simpleName); - Iterator<Annotation> iterator= declaration.getReceiverType().annotations().iterator(); - while (iterator.hasNext()) { - Annotation annotation= iterator.next(); - simpleType.annotations().add(rewrite.createCopyTarget(annotation)); + Type receiverType= declaration.getReceiverType(); + if (receiverType.isAnnotatable()) { + Iterator<Annotation> iterator= ((AnnotatableType) receiverType).annotations().iterator(); + while (iterator.hasNext()) { + Annotation annotation= iterator.next(); + simpleType.annotations().add(rewrite.createCopyTarget(annotation)); + } } rewrite.set(declaration, MethodDeclaration.RECEIVER_TYPE_PROPERTY, simpleType, null); diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/HierarchyProcessor.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/HierarchyProcessor.java index 483e559c5a..0534667938 100644 --- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/HierarchyProcessor.java +++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/HierarchyProcessor.java @@ -54,6 +54,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.ASTVisitor; +import org.eclipse.jdt.core.dom.AnnotatableType; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration; import org.eclipse.jdt.core.dom.BodyDeclaration; @@ -747,10 +748,13 @@ public abstract class HierarchyProcessor extends SuperTypeRefactoringProcessor { String elementName= type.getElementName(); if (oldMethod.getReceiverType() != null) { SimpleType simpleType= ast.newSimpleType(ast.newSimpleName(elementName)); - Iterator<Annotation> iterator= oldMethod.getReceiverType().annotations().iterator(); - while (iterator.hasNext()) { - Annotation annotation= iterator.next(); - simpleType.annotations().add(ASTNode.copySubtree(ast, annotation)); + Type receiverType= oldMethod.getReceiverType(); + if (receiverType.isAnnotatable()) { + Iterator<Annotation> iterator= ((AnnotatableType) receiverType).annotations().iterator(); + while (iterator.hasNext()) { + Annotation annotation= iterator.next(); + simpleType.annotations().add(ASTNode.copySubtree(ast, annotation)); + } } newMethod.setReceiverType(simpleType); if (oldMethod.getReceiverQualifier() != null) { diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java index 8263b1cadc..39529e43e7 100644 --- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java +++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java @@ -5,8 +5,8 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * - * This is an implementation of an early-draft specification developed under the Java Community Process (JCP) and - * is made available for testing and evaluation purposes only. + * This is an implementation of an early-draft specification developed under the Java Community Process (JCP) and + * is made available for testing and evaluation purposes only. * The code is not compatible with any specification of the JCP. * * Contributors: @@ -73,6 +73,7 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; +import org.eclipse.jdt.core.dom.AnnotatableType; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; @@ -2261,7 +2262,7 @@ public final class MoveInstanceMethodProcessor extends MoveProcessor implements adjustments.put(fMethod, adjustment); } } - updateReceiverParameter(declaration, rewrite); + updateReceiverParameter(declaration, rewrite); target= createMethodArguments(rewrites, rewrite, declaration, adjustments, status); createMethodTypeParameters(rewrite, declaration, status); createMethodComment(rewrite, declaration); @@ -2279,10 +2280,13 @@ public final class MoveInstanceMethodProcessor extends MoveProcessor implements AST ast= rewrite.getAST(); SimpleName simpleName= ast.newSimpleName(targetType.getElementName()); SimpleType simpleType= ast.newSimpleType(simpleName); - Iterator<Annotation> iterator= declaration.getReceiverType().annotations().iterator(); - while (iterator.hasNext()) { - Annotation annotation= iterator.next(); - simpleType.annotations().add(rewrite.createCopyTarget(annotation)); + Type receiverType= declaration.getReceiverType(); + if (receiverType.isAnnotatable()) { + Iterator<Annotation> iterator= ((AnnotatableType) receiverType).annotations().iterator(); + while (iterator.hasNext()) { + Annotation annotation= iterator.next(); + simpleType.annotations().add(rewrite.createCopyTarget(annotation)); + } } rewrite.set(declaration, MethodDeclaration.RECEIVER_TYPE_PROPERTY, simpleType, null); if (declaration.getReceiverQualifier() != null) { |