17
17
import Designite .visitors .InstanceOfVisitor ;
18
18
import Designite .visitors .ThrowVisitor ;
19
19
20
- public class SM_Method extends SM_SourceItem implements Vertex {
20
+ public class SM_Method extends SM_SourceItem implements Vertex , Parsable {
21
21
22
22
private boolean abstractMethod ;
23
23
private boolean finalMethod ;
@@ -103,17 +103,56 @@ public MethodDeclaration getMethodDeclaration() {
103
103
return methodDeclaration ;
104
104
}
105
105
106
- private void parseParameters () {
107
- for (SM_Parameter param : parameterList ) {
108
- param .parse ();
106
+ private void prepareCalledMethodsList () {
107
+ MethodInvVisitor invVisitor = new MethodInvVisitor (methodDeclaration );
108
+ methodDeclaration .accept (invVisitor );
109
+ List <MethodInvocation > invList = invVisitor .getCalledMethods ();
110
+ if (invList .size () > 0 ) {
111
+ calledMethods .addAll (invList );
109
112
}
110
113
}
111
114
112
- private void parseLocalVar () {
113
- for (SM_LocalVar var : localVarList ) {
114
- var .parse ();
115
+ private void prepareInstanceOfVisitorList () {
116
+ InstanceOfVisitor instanceOfVisitor = new InstanceOfVisitor ();
117
+ methodDeclaration .accept (instanceOfVisitor );
118
+ List <Type > instanceOfTypes = instanceOfVisitor .getTypesInInstanceOf ();
119
+ if (instanceOfTypes .size () > 0 ) {
120
+ typesInInstanceOf .addAll (instanceOfTypes );
121
+ }
122
+ }
123
+
124
+ private void prepareParametersList (SingleVariableDeclaration var ) {
125
+ VariableVisitor parameterVisitor = new VariableVisitor (this );
126
+ // methodDeclaration.accept(parameterVisitor);
127
+ var .accept (parameterVisitor );
128
+ List <SM_Parameter > pList = parameterVisitor .getParameterList ();
129
+ if (pList .size () > 0 ) {
130
+ parameterList .addAll (pList );
131
+ }
132
+ }
133
+
134
+ //SM_Parameter uses an empty parse method. So commenting this.
135
+ // private void parseParameters() {
136
+ // for (SM_Parameter param : parameterList) {
137
+ // param.parse();
138
+ // }
139
+ // }
140
+
141
+ private void prepareLocalVarList () {
142
+ LocalVarVisitor localVarVisitor = new LocalVarVisitor (this );
143
+ methodDeclaration .accept (localVarVisitor );
144
+ List <SM_LocalVar > lList = localVarVisitor .getLocalVarList ();
145
+ if (lList .size () > 0 ) {
146
+ localVarList .addAll (lList );
115
147
}
116
148
}
149
+
150
+ //SM_LocalVar inherits SM_EntitiesWithType which inter uses an empty parse method. So, commenting this.
151
+ // private void parseLocalVar() {
152
+ // for (SM_LocalVar var : localVarList) {
153
+ // var.parse();
154
+ // }
155
+ // }
117
156
118
157
public String getMethodBody () {
119
158
if (this .hasBody ())
@@ -145,32 +184,16 @@ public void printDebugLog(PrintWriter writer) {
145
184
//TODO: Modularize parser with private functions
146
185
@ Override
147
186
public void parse () {
148
- MethodInvVisitor invVisitor = new MethodInvVisitor (methodDeclaration );
149
- methodDeclaration .accept (invVisitor );
150
- List <MethodInvocation > invList = invVisitor .getCalledMethods ();
151
- if (invList .size () > 0 ) {
152
- calledMethods .addAll (invList );
153
- }
187
+ prepareCalledMethodsList ();
154
188
155
189
List <SingleVariableDeclaration > variableList = methodDeclaration .parameters ();
156
190
for (SingleVariableDeclaration var : variableList ) {
157
- VariableVisitor parameterVisitor = new VariableVisitor (this );
158
- // methodDeclaration.accept(parameterVisitor);
159
- var .accept (parameterVisitor );
160
- List <SM_Parameter > pList = parameterVisitor .getParameterList ();
161
- if (pList .size () > 0 ) {
162
- parameterList .addAll (pList );
163
- }
164
- parseParameters ();
191
+ prepareParametersList (var );
192
+ // parseParameters();
165
193
}
166
194
167
- LocalVarVisitor localVarVisitor = new LocalVarVisitor (this );
168
- methodDeclaration .accept (localVarVisitor );
169
- List <SM_LocalVar > lList = localVarVisitor .getLocalVarList ();
170
- if (lList .size () > 0 ) {
171
- localVarList .addAll (lList );
172
- }
173
- parseLocalVar ();
195
+ prepareLocalVarList ();
196
+ // parseLocalVar();
174
197
175
198
DirectAceessFieldVisitor directAceessFieldVisitor = new DirectAceessFieldVisitor ();
176
199
methodDeclaration .accept (directAceessFieldVisitor );
@@ -182,14 +205,8 @@ public void parse() {
182
205
if (thisAccesses .size () > 0 ) {
183
206
thisAccessesInMethod .addAll (thisAccesses );
184
207
}
185
-
186
- InstanceOfVisitor instanceOfVisitor = new InstanceOfVisitor ();
187
- methodDeclaration .accept (instanceOfVisitor );
188
- List <Type > instanceOfTypes = instanceOfVisitor .getTypesInInstanceOf ();
189
- if (instanceOfTypes .size () > 0 ) {
190
- typesInInstanceOf .addAll (instanceOfTypes );
191
- }
192
-
208
+ prepareInstanceOfVisitorList ();
209
+
193
210
ThrowVisitor throwVisithor = new ThrowVisitor ();
194
211
methodDeclaration .accept (throwVisithor );
195
212
throwsException = throwVisithor .throwsException ();
0 commit comments