package test.condition; import org.apache.log4j.Logger; public class ConditionCalls { /* * See the note at FirstPassMethodInstrumenter.visitJumpInsn() * regarding initialization of static variables. This next static * is intended to cover that test.condition. */ public static String whatEver = null; private static final Logger logger = Logger.getLogger(ConditionCalls.class); public void call(int i) { if (i>=5) //set CALL_CONDITION_LINE_NUMBER to this line number { try { logger.error("whatEver"); //set CALL_IGNORE_LINE_NUMBER to this line number throw new RuntimeException(); } catch (Throwable t) { //eat it } finally { System.out.println("true"); } } else { System.out.println("false"); } } public void callLookupSwitch(int branch) { switch (branch) //set LOOKUP_SWITCH_LINE_NUMBER to this line number { case 1: System.out.println("1"); break; case 5: System.out.println("5"); break; default: System.out.println("default"); break; } } public String callTableSwitch(int branch) { int[][] multiArray; switch (branch) //set TABLE_SWITCH_LINE_NUMBER to this line number { case 0: return("0"); case 1: return("1"); case 2: return("2"); case 3: return("3"); case 4: return("4"); case 5: return("5"); case 6: return("6"); case 7: return("7"); case 8: return("8"); default: multiArray = new int[3][3]; return("" + multiArray[1][1]); } } public void callMultiCondition(int a, int b, int c) { //The c++ is to get SecondPassMethodInstrumenter.visitIincInsn called. if ((a == b) && (b >= 3) || (c++ < a)) //set MULTI_CONDITION_LINE_NUMBER to this line number { System.out.println("true"); } } public void callMultiCondition2(int a, int b, int c) { if ((a == b) && (b >= utilEcho(3)) || (c < a)) //set MULTI_CONDITION2_LINE_NUMBER to this line number { System.out.println("true"); } } int utilEcho(int number) { return number; } static { whatEver = "whatEver"; }; public static final int CALL_CONDITION_LINE_NUMBER = 17; public static final int CALL_IGNORE_LINE_NUMBER = 21; public static final int LOOKUP_SWITCH_LINE_NUMBER = 39; public static final int TABLE_SWITCH_LINE_NUMBER = 56; public static final int MULTI_CONDITION_LINE_NUMBER = 74; public static final int MULTI_CONDITION2_LINE_NUMBER = 82; }