1717import Designite .visitors .InstanceOfVisitor ;
1818import Designite .visitors .ThrowVisitor ;
1919
20- public class SM_Method extends SM_SourceItem implements Vertex {
20+ public class SM_Method extends SM_SourceItem implements Vertex , Parsable {
2121
2222 private boolean abstractMethod ;
2323 private boolean finalMethod ;
@@ -103,17 +103,56 @@ public MethodDeclaration getMethodDeclaration() {
103103 return methodDeclaration ;
104104 }
105105
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 );
109112 }
110113 }
111114
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 );
115147 }
116148 }
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+ // }
117156
118157 public String getMethodBody () {
119158 if (this .hasBody ())
@@ -145,32 +184,16 @@ public void printDebugLog(PrintWriter writer) {
145184 //TODO: Modularize parser with private functions
146185 @ Override
147186 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 ();
154188
155189 List <SingleVariableDeclaration > variableList = methodDeclaration .parameters ();
156190 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();
165193 }
166194
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();
174197
175198 DirectAceessFieldVisitor directAceessFieldVisitor = new DirectAceessFieldVisitor ();
176199 methodDeclaration .accept (directAceessFieldVisitor );
@@ -182,14 +205,8 @@ public void parse() {
182205 if (thisAccesses .size () > 0 ) {
183206 thisAccessesInMethod .addAll (thisAccesses );
184207 }
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+
193210 ThrowVisitor throwVisithor = new ThrowVisitor ();
194211 methodDeclaration .accept (throwVisithor );
195212 throwsException = throwVisithor .throwsException ();
0 commit comments