/** * Constructor for public methods * * @param className * @param methodName */ public CallContext(String className, String methodName) { addJUnitExcludes(); List<Call> context = new ArrayList<Call>(); context.add(new Call(className, methodName)); this.context=context; hcode = this.context.hashCode(); }
private void addPublicClassMethod(String className, String methodName, Set<CallContext> contexts){ List<Call> calls = new ArrayList<>(); Call call = new Call(className, methodName); calls.add(call); CallContext context = new CallContext(calls); if(publicMethods.contains(context)&&className.equals(this.className)) contexts.add(context); }
/** * computes and returns the call contexts of the specific method * * @param className * @param methodName * @return */ public Set<CallContext> getMethodEntryPoint(String className, String methodName) { Set<CallContext> contexts = new HashSet<>(); List<Call> cont = new ArrayList<>(); cont.add(new Call(className, methodName)); CallContext context = new CallContext(cont); if(publicMethods.contains(context)){ contexts.add(context); }else{ contexts.add(new CallContext()); } return contexts; }
private Set<CallContext> convertIntoCallContext( Set<List<CallGraphEntry>> paths) { Set<CallContext> contexts = new HashSet<>(); // return only context that starts from the class under test for (List<CallGraphEntry> list : paths) { boolean insert = false; List<Call> cont = new ArrayList<>(); for (int i = list.size() - 1; i >= 0; i--) { if (!insert && list.get(i).getClassName().equals(className)) { insert = true; } if (insert) cont.add(new Call(list.get(i).getClassName(), list.get(i) .getMethodName())); } contexts.add(new CallContext(cont)); } return contexts; }
MethodCall element = stackTrace.get(i); Call newCall = new Call(element.className, element.methodName);
Call newCall = new Call(element.getClassName(), element.getMethodName()); boolean skip = false; if(context.size() >= 2) { // Need at least a sequence of three for this check to make sense