package org.ntlab.traceanalyzer; import java.util.ArrayList; import java.util.HashSet; public class MarkedThread { private String id; private ArrayList<MarkedMethodExecution> methodExecutions; private int uniqueMethodInvokedFrom = 0; public MarkedThread(String id, ArrayList<MarkedMethodExecution> methodExecutions) { this.id = id; this.methodExecutions = methodExecutions; } public String getId() { return id; } public ArrayList<MarkedMethodExecution> getChildren() { return methodExecutions; } /** * マーク固有のメソッドが呼び出されたかどうかを調べる * @param commonMethodSignatures マーク外で呼び出された全メソッドのシグニチャ */ public void searchUniqueMethodInvocation(HashSet<String> commonMethodSignatures) { if (uniqueMethodInvokedFrom > 0) return; for (int i = 0; i < methodExecutions.size(); i++) { int h = methodExecutions.get(i).searchUniqueMethodInvocation(commonMethodSignatures); if (h > 0) uniqueMethodInvokedFrom = 1; } } /** * マーク固有のメソッド実行をすべて取得する * @param unmarkedMethodSignatures マーク外で実行された全メソッドのシグニチャ * @return このスレッド内のマーク固有の全メソッド実行 */ public ArrayList<MarkedMethodExecution> getUniqueMethodExecutions(HashSet<String> unmarkedMethodSignatures) { ArrayList<MarkedMethodExecution> uniqueMethodExecutions = new ArrayList<MarkedMethodExecution>(); for (int i = 0; i < methodExecutions.size(); i++) { methodExecutions.get(i).getUniqueMethodExecutions(unmarkedMethodSignatures, uniqueMethodExecutions); } return null; } /** * このスレッドからマーク固有のメソッドが呼び出されたか? * @return 0: 呼び出されていない, 1: 呼び出された */ public int isUniqueMethodInvokedFrom() { return uniqueMethodInvokedFrom; } }