Hello Everyone,
I ran into a problem which drove me crazy.
I was trying to traverse an AST of a java file to print out the line
information of all the MethodInvocation nodes. I subclass the
ASTVisitor for the MethodInvocation node like this:
public class MethodInvocationVisitor extends ASTVisitor{
public boolean visit (MethodInvocation node){
int line = node.getStartPosition();
System.out.println("Visiting: " + line + "; " + node);
return false;
}
}
The java file for the AST is pretty simple (doesn't make much sense,
but that's what I need):
import javax.servlet.http.*;
public class HelloWorld {
static HttpServletRequest request = null;
/**
* @param args
*/
public static void main(String[] args) {
String contentType; String username =
request.getParameter("username");
contentType = request.getContentType();
printName(username);
printName(contentType);
}
public static void printName(String username){
request.setAttribute("username",request.getAttribute(username));
System.out.println(username);
}
}
The total line number showed in the editor is only 21.
But the console output looks like this:
Visiting: 218; request.getParameter("username")
Visiting: 269; request.getContentType()
Visiting: 304; printName(username)
Visiting: 334; printName(contentType)
Visiting: 417;
request.setAttribute("username",request.getAttribute(username))
Visiting: 485; System.out.println(username)
This is ridiculously wrong, but I have no idea where to check, since
this is really simple, I was just following the tutorials I found on
the Internet.
I'd appreciate if someone can pinpoint the root cause of this problem.
Thanks.
Jing