]> git.uio.no Git - ifi-stolz-refaktor.git/blame - case-study/jdt-after/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ReferenceAnalyzer.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / core refactoring / org / eclipse / jdt / internal / corext / refactoring / structure / ReferenceAnalyzer.java
CommitLineData
1b2798f6
EK
1/*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.jdt.internal.corext.refactoring.structure;
12
13import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
14import org.eclipse.jdt.core.dom.EnumDeclaration;
15import org.eclipse.jdt.core.dom.FieldAccess;
16import org.eclipse.jdt.core.dom.FieldDeclaration;
17import org.eclipse.jdt.core.dom.IBinding;
18import org.eclipse.jdt.core.dom.IMethodBinding;
19import org.eclipse.jdt.core.dom.ITypeBinding;
20import org.eclipse.jdt.core.dom.ImportDeclaration;
21import org.eclipse.jdt.core.dom.MemberRef;
22import org.eclipse.jdt.core.dom.MethodDeclaration;
23import org.eclipse.jdt.core.dom.MethodInvocation;
24import org.eclipse.jdt.core.dom.MethodRef;
25import org.eclipse.jdt.core.dom.QualifiedName;
26import org.eclipse.jdt.core.dom.SimpleName;
27import org.eclipse.jdt.core.dom.TypeDeclaration;
28import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
29
30/**
31 * Updates references to moved static members.
32 * Accepts <code>CompilationUnit</code>s.
33 */
34/* package */ class ReferenceAnalyzer extends MoveStaticMemberAnalyzer {
35
36 public ReferenceAnalyzer(CompilationUnitRewrite cuRewrite, IBinding[] members, ITypeBinding target, ITypeBinding source) {
37 super(cuRewrite, members, source, target);
38 }
39
40 public boolean needsTargetImport() {
41 return fNeedsImport;
42 }
43
44 //---- Moved members are handled by the MovedMemberAnalyzer --------------
45
46 @Override
47 public boolean visit(TypeDeclaration node) {
48 ITypeBinding binding= node.resolveBinding();
49 if (binding != null) {
50 binding= binding.getTypeDeclaration();
51 if (isMovedMember(binding))
52 return false;
53 }
54 return super.visit(node);
55 }
56
57 @Override
58 public boolean visit(VariableDeclarationFragment node) {
59 if (isMovedMember(node.resolveBinding()))
60 return false;
61 return super.visit(node);
62 }
63
64 @Override
65 public boolean visit(FieldDeclaration node) {
66 //see bug 42383: multiple VariableDeclarationFragments not supported:
67 VariableDeclarationFragment singleFragment= (VariableDeclarationFragment) node.fragments().get(0);
68 if (isMovedMember(singleFragment.resolveBinding()))
69 return false; // don't update javadoc of moved field here
70 return super.visit(node);
71 }
72
73 @Override
74 public boolean visit(MethodDeclaration node) {
75 if (isMovedMember(node.resolveBinding()))
76 return false;
77 return super.visit(node);
78 }
79
80
81 //---- types and fields --------------------------
82
83 @Override
84 public boolean visit(SimpleName node) {
85 if (! node.isDeclaration() && isMovedMember(node.resolveBinding()) && ! isProcessed(node))
86 rewrite(node, fTarget);
87 return false;
88 }
89
90 @Override
91 public boolean visit(QualifiedName node) {
92 if (isMovedMember(node.resolveBinding())) {
93 if (node.getParent() instanceof ImportDeclaration) {
94 fCuRewrite.generated_1510720438949876846(this, node);
95 } else {
96 rewrite(node, fTarget);
97 }
98 return false;
99 } else {
100 return super.visit(node);
101 }
102 }
103
104 @Override
105 public boolean visit(FieldAccess node) {
106 if (isMovedMember(node.resolveFieldBinding()))
107 rewrite(node, fTarget);
108 return super.visit(node);
109 }
110
111 //---- method invocations ----------------------------------
112
113 @Override
114 public boolean visit(MethodInvocation node) {
115 IMethodBinding binding= node.resolveMethodBinding();
116 if (binding != null) {
117 binding= binding.getMethodDeclaration();
118 if (isMovedMember(binding))
119 rewrite(node, fTarget);
120 }
121 return super.visit(node);
122 }
123
124 //---- javadoc references ----------------------------------
125
126 @Override
127 public boolean visit(MemberRef node) {
128 if (isMovedMember(node.resolveBinding()))
129 rewrite(node, fTarget);
130 return false;
131 }
132
133 @Override
134 public boolean visit(MethodRef node) {
135 if (isMovedMember(node.resolveBinding()))
136 rewrite(node, fTarget);
137 return false;
138 }
139
140 @Override
141 public boolean visit(AnnotationTypeDeclaration node) {
142 if (isMovedMember(node.resolveBinding()))
143 return false;
144 return super.visit(node);
145 }
146
147 @Override
148 public boolean visit(EnumDeclaration node) {
149 if (isMovedMember(node.resolveBinding()))
150 return false;
151 return super.visit(node);
152 }
153}