devdaily home | apple | java | perl | unix | directory | blog

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

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 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;
}




Copyright 1998-2008 Alvin Alexander
All Rights Reserved.
 
devdaily.com is based in louisville, kentucky, and this web site is hosted by godaddy.com