Commit e738cfd5 authored by jacosro's avatar jacosro
Browse files

Refactored NodeFactory

parent 7746cf95
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3,3 +3,4 @@
target/
out/
.settings
.attach*
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ import org.jgrapht.graph.DirectedPseudograph;
import org.jgrapht.io.DOTExporter;
import tfm.arcs.Arc;
import tfm.nodes.GraphNode;
import tfm.nodes.factories.NodeFactory;
import tfm.nodes.NodeFactory;
import tfm.utils.ASTUtils;

import java.util.*;
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.body.MethodDeclaration;
import org.jetbrains.annotations.NotNull;
import tfm.nodes.GraphNode;
import tfm.nodes.factories.NodeFactory;
import tfm.nodes.NodeFactory;

import java.util.Objects;
import java.util.Optional;
+3 −2
Original line number Diff line number Diff line
@@ -8,7 +8,8 @@ import com.github.javaparser.ast.stmt.*;
import com.github.javaparser.ast.visitor.VoidVisitor;
import tfm.graphs.cfg.CFGBuilder;
import tfm.nodes.GraphNode;
import tfm.nodes.factories.MethodNodeFactory;
import tfm.nodes.TypeNodeFactory;
import tfm.nodes.type.NodeType;
import tfm.utils.ASTUtils;

import java.util.LinkedList;
@@ -238,7 +239,7 @@ public class ACFGBuilder extends CFGBuilder {
        if (!methodDeclaration.getBody().isPresent())
            throw new IllegalStateException("The method must have a body!");

        graph.buildRootNode("ENTER " + methodDeclaration.getNameAsString(), methodDeclaration, new MethodNodeFactory());
        graph.buildRootNode("ENTER " + methodDeclaration.getNameAsString(), methodDeclaration, TypeNodeFactory.fromType(NodeType.METHOD));

        hangingNodes.add(graph.getRootNode().get());
        methodDeclaration.getBody().get().accept(this, arg);
+6 −6
Original line number Diff line number Diff line
@@ -9,9 +9,9 @@ import com.github.javaparser.ast.stmt.*;
import com.github.javaparser.ast.visitor.VoidVisitor;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
import tfm.nodes.GraphNode;
import tfm.nodes.factories.InVariableNodeFactory;
import tfm.nodes.factories.MethodNodeFactory;
import tfm.nodes.factories.OutVariableNodeFactory;
import tfm.nodes.NodeFactory;
import tfm.nodes.TypeNodeFactory;
import tfm.nodes.type.NodeType;
import tfm.utils.ASTUtils;

import java.util.*;
@@ -291,7 +291,7 @@ public class CFGBuilder extends VoidVisitorAdapter<Void> {
        if (!methodDeclaration.getBody().isPresent())
            throw new IllegalStateException("The method must have a body!");

        graph.buildRootNode("ENTER " + methodDeclaration.getNameAsString(), methodDeclaration, new MethodNodeFactory());
        graph.buildRootNode("ENTER " + methodDeclaration.getNameAsString(), methodDeclaration, TypeNodeFactory.fromType(NodeType.METHOD));

        // Compute variable in and out expressions (necessary to compute data dependence in SDG)
        List<ExpressionStmt> inVariableExpressions = new ArrayList<>();
@@ -329,7 +329,7 @@ public class CFGBuilder extends VoidVisitorAdapter<Void> {

        // Add in variable nodes
        for (ExpressionStmt expressionStmt : inVariableExpressions) {
            GraphNode<ExpressionStmt> node = this.graph.addNode(expressionStmt.toString(), expressionStmt, new InVariableNodeFactory());
            GraphNode<ExpressionStmt> node = this.graph.addNode(expressionStmt.toString(), expressionStmt, TypeNodeFactory.fromType(NodeType.VARIABLE_IN));
            connectTo(node);
        }

@@ -339,7 +339,7 @@ public class CFGBuilder extends VoidVisitorAdapter<Void> {

        // Add out variable nodes
        for (ExpressionStmt expressionStmt : outVariableExpressions) {
            GraphNode<ExpressionStmt> node = this.graph.addNode(expressionStmt.toString(), expressionStmt, new OutVariableNodeFactory());
            GraphNode<ExpressionStmt> node = this.graph.addNode(expressionStmt.toString(), expressionStmt, TypeNodeFactory.fromType(NodeType.VARIABLE_OUT));
            connectTo(node);
        }

Loading