Skip to content
MethodCallReplacer.java 998 B
Newer Older
Javier Costa's avatar
Javier Costa committed

import com.github.javaparser.ast.body.MethodDeclaration;
import tfm.graphs.GraphWithRootNode;
import tfm.nodes.GraphNode;
import tfm.utils.Context;
import tfm.utils.Logger;

import java.util.Optional;

Javier Costa's avatar
Javier Costa committed

    private SDG sdg;
Javier Costa's avatar
Javier Costa committed

    public MethodCallReplacer(SDG sdg) {
        this.sdg = sdg;
Javier Costa's avatar
Javier Costa committed
    }

Javier Costa's avatar
Javier Costa committed
    public void replace() {
        this.sdg.getContexts().stream()
            .filter(context -> context.getCurrentMethod().isPresent())
            .forEach(context -> {
                Logger.log("MethodCallReplacer", context);

                Optional<GraphNode<MethodDeclaration>> optionalRootNode = this.sdg.getRootNode(context);

                if (!optionalRootNode.isPresent()) {
                    return; // We don't have visited the code (e.g. the MethodDeclaration for a method call)
                }

jacosro's avatar
jacosro committed
                optionalRootNode.get().getAstNode().accept(new MethodCallReplacerVisitor(sdg), context);
Javier Costa's avatar
Javier Costa committed
    }
}