org.acm.seguin.summary
Class SummaryLoadVisitor

java.lang.Object
  extended by org.acm.seguin.summary.LineCountVisitor
      extended by org.acm.seguin.summary.SummaryLoadVisitor
All Implemented Interfaces:
net.sourceforge.jrefactory.parser.JavaParserVisitor

public class SummaryLoadVisitor
extends LineCountVisitor

This object visits an abstract syntax tree with the purpose of gathering summary information.

Author:
Chris Seguin, Mike Atkinson

Constructor Summary
SummaryLoadVisitor()
           
 
Method Summary
protected  void addAccess(MethodSummary parent, net.sourceforge.jrefactory.ast.ASTName name, boolean isMessageSend)
          Adds an access to the method
protected  void forInit(net.sourceforge.jrefactory.ast.ASTLocalVariableDeclaration node, java.lang.Object data)
          Description of the Method
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTAllocationExpression node, java.lang.Object data)
          Visit an allocation
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTBlock node, java.lang.Object data)
          Visits a block in the parse tree.
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTClassBody node, java.lang.Object data)
          Visit the items in the class body
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTClassDeclaration node, java.lang.Object data)
          Visits a class declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTClassOrInterfaceType node, java.lang.Object data)
          Visit a name
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTConstructorDeclaration node, java.lang.Object data)
          Visit a constructor
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTEnumDeclaration node, java.lang.Object data)
          Visits an enum declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTExplicitConstructorInvocation node, java.lang.Object data)
          Explicit constructor invocation gets one statement count
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTFieldDeclaration node, java.lang.Object data)
          Visit a field declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTFormalParameter node, java.lang.Object data)
          Visit a formal parameter
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTGenericNameList node, java.lang.Object data)
          Visit a list of names
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTImportDeclaration node, java.lang.Object data)
          Visits an import statement
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTInitializer node, java.lang.Object data)
          Visit an initializer
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTInterfaceBody node, java.lang.Object data)
          Visit the body of an interface
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTInterfaceDeclaration node, java.lang.Object data)
          Visit an interface declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTLocalVariableDeclaration node, java.lang.Object data)
          Visit the local variables
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTMethodDeclaration node, java.lang.Object data)
          Visits a method
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTNameList node, java.lang.Object data)
          Visit a list of names
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTName node, java.lang.Object data)
          Visit a name // FIXME? is this required?
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTNestedClassDeclaration node, java.lang.Object data)
          Visit a class that is nested in another class
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTNestedInterfaceDeclaration node, java.lang.Object data)
          Visit an interface that is nested in a class
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTPackageDeclaration node, java.lang.Object data)
          Visits a package declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTPrimaryExpression node, java.lang.Object data)
          Visit an expression
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTReferenceType node, java.lang.Object data)
          Visit a type
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTResultType node, java.lang.Object data)
          Visit a return type
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTStatement node, java.lang.Object data)
          Visit a statement
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTSwitchStatement node, java.lang.Object data)
          A switch statement counts as a block, even though it does not use the block parse token.
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTTypeDeclaration node, java.lang.Object data)
          Visits a type declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTType node, java.lang.Object data)
          Visit a type
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTUnmodifiedClassDeclaration node, java.lang.Object data)
          Visits a class declaration
 java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTUnmodifiedInterfaceDeclaration node, java.lang.Object data)
          Visit an interface
 
Methods inherited from class org.acm.seguin.summary.LineCountVisitor
binaryExpression, binaryExpression2, countLines, forceBlock, getInitialToken, getInitialToken, getLineCount, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SummaryLoadVisitor

public SummaryLoadVisitor()
Method Detail

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTEnumDeclaration node,
                              java.lang.Object data)
Visits an enum declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTPackageDeclaration node,
                              java.lang.Object data)
Visits a package declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTImportDeclaration node,
                              java.lang.Object data)
Visits an import statement

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTTypeDeclaration node,
                              java.lang.Object data)
Visits a type declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTClassDeclaration node,
                              java.lang.Object data)
Visits a class declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTUnmodifiedClassDeclaration node,
                              java.lang.Object data)
Visits a class declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTClassBody node,
                              java.lang.Object data)
Visit the items in the class body

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTNestedClassDeclaration node,
                              java.lang.Object data)
Visit a class that is nested in another class

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTInterfaceDeclaration node,
                              java.lang.Object data)
Visit an interface declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTNestedInterfaceDeclaration node,
                              java.lang.Object data)
Visit an interface that is nested in a class

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTUnmodifiedInterfaceDeclaration node,
                              java.lang.Object data)
Visit an interface

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTInterfaceBody node,
                              java.lang.Object data)
Visit the body of an interface

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTFieldDeclaration node,
                              java.lang.Object data)
Visit a field declaration

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTMethodDeclaration node,
                              java.lang.Object data)
Visits a method

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTFormalParameter node,
                              java.lang.Object data)
Visit a formal parameter

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTConstructorDeclaration node,
                              java.lang.Object data)
Visit a constructor

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTInitializer node,
                              java.lang.Object data)
Visit an initializer

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTType node,
                              java.lang.Object data)
Visit a type

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTReferenceType node,
                              java.lang.Object data)
Visit a type

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTResultType node,
                              java.lang.Object data)
Visit a return type

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTClassOrInterfaceType node,
                              java.lang.Object data)
Visit a name

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTName node,
                              java.lang.Object data)
Visit a name // FIXME? is this required?

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTNameList node,
                              java.lang.Object data)
Visit a list of names

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTGenericNameList node,
                              java.lang.Object data)
Visit a list of names

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTPrimaryExpression node,
                              java.lang.Object data)
Visit an expression

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTAllocationExpression node,
                              java.lang.Object data)
Visit an allocation

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTStatement node,
                              java.lang.Object data)
Visit a statement

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTExplicitConstructorInvocation node,
                              java.lang.Object data)
Explicit constructor invocation gets one statement count

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - Description of Parameter
data - Description of Parameter
Returns:
Description of the Returned Value

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTLocalVariableDeclaration node,
                              java.lang.Object data)
Visit the local variables

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the node we are visiting
data - the state we are in
Returns:
nothing of interest

forInit

protected void forInit(net.sourceforge.jrefactory.ast.ASTLocalVariableDeclaration node,
                       java.lang.Object data)
Description of the Method

Overrides:
forInit in class LineCountVisitor
Parameters:
node - Description of Parameter
data - Description of Parameter

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTBlock node,
                              java.lang.Object data)
Visits a block in the parse tree. This code counts the block depth associated with a method. Deeply nested blocks in a method is a sign of poor design.

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the block node
data - the information that is used to traverse the tree
Returns:
data is returned

visit

public java.lang.Object visit(net.sourceforge.jrefactory.ast.ASTSwitchStatement node,
                              java.lang.Object data)
A switch statement counts as a block, even though it does not use the block parse token.

Specified by:
visit in interface net.sourceforge.jrefactory.parser.JavaParserVisitor
Overrides:
visit in class LineCountVisitor
Parameters:
node - the switch node in the parse tree
data - the data used to visit this parse tree
Returns:
the data

addAccess

protected void addAccess(MethodSummary parent,
                         net.sourceforge.jrefactory.ast.ASTName name,
                         boolean isMessageSend)
Adds an access to the method

Parameters:
parent - the parent
name - the name
isMessageSend - is this a message send