package org.intracetest.agent; import java.util.Arrays; public class ArgumentTypes implements Runnable { public Throwable th = null; @Override public void run() { try { byteArg((byte) 0); byteArrayArg(new byte[] { 1 }); shortArg((short) 2); shortArrayArg(new short[] { 3 }); intArg(4); intArrayArg(new int[] { 5 }); longArg(6l); longArrayArg(new long[] { 7l }); floatArg(8f); floatArrayArg(new float[] { 9f }); doubleArg(10d); doubleArrayArg(new double[] { 11d }); boolArg(true); boolArg(false); boolArrayArg(new boolean[] { true }); boolArrayArg(new boolean[] { false }); boolArrayArrayArg(new boolean[][] { new boolean[] { true } }); boolArrayArrayArg(new boolean[][] { new boolean[] { false } }); charArg('2'); charArrayArg(new char[] { '3' }); Object objToStr = new Object() { @Override public String toString() { return "obj"; } }; objArg(objToStr); objArrayArg(new Object[] { objToStr }); } catch (Throwable thr) { th = thr; } } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#byteArg(B)V </pre> */ private void byteArg(byte arg) { setProperty(Byte.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#byteArrayArg({B)V </pre> */ private void byteArrayArg(byte[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#shortArg(S)V </pre> */ private void shortArg(short arg) { setProperty(Short.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#shortArrayArg({S)V </pre> */ private void shortArrayArg(short[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#intArg(I)V </pre> */ private void intArg(int arg) { setProperty(Integer.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#intArrayArg({I)V </pre> */ private void intArrayArg(int[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#longArg(J)V </pre> */ private void longArg(long arg) { setProperty(Long.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#longArrayArg({J)V </pre> */ private void longArrayArg(long[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#floatArg(F)V </pre> */ private void floatArg(float arg) { setProperty(Float.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#floatArrayArg({F)V </pre> */ private void floatArrayArg(float[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#doubleArg(D)V </pre> */ private void doubleArg(double arg) { setProperty(Double.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#doubleArrayArg({D)V </pre> */ private void doubleArrayArg(double[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#boolArg(Z)V </pre> */ private void boolArg(boolean arg) { setProperty(Boolean.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#boolArrayArg({Z)V </pre> */ private void boolArrayArg(boolean[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#boolArrayArrayArg({{Z)V </pre> */ private void boolArrayArrayArg(boolean[][] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#charArg(C)V </pre> */ private void charArg(char arg) { setProperty(Character.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#charArrayArg({C)V </pre> */ private void charArrayArg(char[] arg) { setProperty(Arrays.toString(arg)); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#objArg(Ljava/lang/Object;)V </pre> */ private void objArg(Object arg) { setProperty(arg.toString()); } /** * InTrace Method specifier syntax: <pre> org.intracetest.agent.ArgumentTypes#objArrayArg({Ljava/lang/Object;)V </pre> */ private void objArrayArg(Object[] arg) { setProperty(Arrays.toString(arg)); } private void setProperty(String value) { System.setProperty("test-key", value); } public static void main(String args[]) throws Exception { System.out.println("Currently running sample code in background thread."); System.out.println("Make sure this program has -javaagent:./path/to/intrace-agent.jar on its command line."); System.out.println("Start InTrace GUI, download-able at https://mchr3k.github.io/org.intrace/"); System.out.println("'Connect' & then configure GUI to trace any of these patterns:"); System.out.println("org.intracetest.agent.ArgumentTypes#byteArrayArg({B)V -- to trace this single method"); System.out.println("org.intracetest.agent.ArgumentTypes#shortArg(S)V -- to trace this single method"); System.out.println("org.intracetest.agent.ArgumentTypes -- to trace all methods in class ArgumentTypes"); System.out.println("Press Ctrl+C to quit this program."); Runnable r = new ArgumentTypes(); while(true) { new Thread(r).start(); Thread.sleep(2000); } } }