package org.intracetest.agent;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import org.intrace.output.IInstrumentationHandler;
public class ArgCapture implements IInstrumentationHandler
{
private final BlockingQueue<String> capturedTrace;
public ArgCapture(BlockingQueue<String> capturedTrace)
{
this.capturedTrace = capturedTrace;
}
private void addArg(String arg)
{
capturedTrace.add(arg);
}
@Override
public void val(String desc, String className, String methodName, byte byteArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + byteArg
+ "]");
}
public void val(String desc, String className, String methodName,
byte[] byteArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(byteArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName,
short shortArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + shortArg
+ "]");
}
public void val(String desc, String className, String methodName,
short[] shortArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(shortArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName, int intArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + intArg + "]");
}
@Override
public void val(String desc, String className, String methodName,
int[] intArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(intArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName, long longArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + longArg
+ "]");
}
@Override
public void val(String desc, String className, String methodName,
long[] longArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(longArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName,
float floatArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + floatArg
+ "]");
}
@Override
public void val(String desc, String className, String methodName,
float[] floatArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(floatArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName,
double doubleArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + doubleArg
+ "]");
}
@Override
public void val(String desc, String className, String methodName,
double[] doubleArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(doubleArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName,
boolean boolArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + boolArg
+ "]");
}
@Override
public void val(String desc, String className, String methodName,
boolean[] boolArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(boolArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName, char charArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + charArg
+ "]");
}
@Override
public void val(String desc, String className, String methodName,
char[] charArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.toString(charArrayArg) + "]");
}
@Override
public void val(String desc, String className, String methodName,
Object objArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", " + objArg + "]");
}
public void val(String desc, String className, String methodName,
Object[] objArrayArg)
{
addArg(desc + ":##:[" + className + ", " + methodName + ", "
+ Arrays.deepToString(objArrayArg) + "]");
}
public void val(String desc, String className, String methodName, int lineNo,
Throwable th)
{
// Do nothing
}
@Override
public void branch(String className, String methodName, int lineNo)
{
// Do nothing
}
@Override
public void enter(String className, String methodName, int lineNo)
{
// Do nothing
}
@Override
public void exit(String className, String methodName, int lineNo)
{
// Do nothing
}
@Override
public String getResponse(String args)
{
return null;
}
@Override
public Map<String, String> getSettingsMap()
{
return new HashMap<String, String>();
}
}