package it.unitn.repoman.core.lang.traversals.java; import java.util.HashSet; import java.util.Set; import it.unitn.repoman.core.lang.traversals.generic.DFSTraversal; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import it.unitn.repoman.core.lang.parsers.java.JavaParser; public class JavaAPISignatureTraversal extends DFSTraversal { protected final Set signatures = new HashSet<>(); public JavaAPISignatureTraversal(ParseTree node) { traverse(node); } @Override public void onEnterNode(ParseTree node) { if (wrapper.isMethodDeclaration(node)) { ParserRuleContext method = (ParserRuleContext) node; this.signatures.add(getMethodSignature(method)); } } public String getMethodSignature(ParserRuleContext method) { StringBuilder builder = new StringBuilder(); if (wrapper.isMethodDeclaration(method)) { ParserRuleContext declRoot = method.getParent().getParent(); for (int i=0; i getPublicSignatures() { Set s = new HashSet<>(); for (String signature : this.signatures) { if (this.isPublicMethod(signature)) { s.add(signature); } } return s; } public Set getProtectedSignatures() { Set s = new HashSet<>(); for (String signature : this.signatures) { if (this.isProtectedMethod(signature)) { s.add(signature); } } return s; } public Set getPrivateSignatures() { Set s = new HashSet<>(); for (String signature : this.signatures) { if (this.isPrivateMethod(signature)) { s.add(signature); } } return s; } public Set getSignatures() { return this.signatures; } public int getPublicSignaturesCount() { return this.getPublicSignatures().size(); } }