[강운덕] [LUCYSUS-1744] api 를 상수로 매핑하는 코드 개발.

git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-tomcat-profiler/trunk@927 84d0f5b1-2673-498c-a247-62c4ff18d310
This commit is contained in:
Woonduk Kang
2012-11-27 06:27:03 +00:00
parent 0849792ca2
commit 468a120ab4
17 changed files with 159 additions and 96 deletions
@@ -4,6 +4,8 @@ import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.profiler.common.mapping.ApiMappingTable;
import com.profiler.common.mapping.ApiUtils;
import com.profiler.interceptor.*;
import com.profiler.util.JavaAssistUtils;
import javassist.*;
@@ -166,6 +168,9 @@ public class JavaAssistClass implements InstrumentClass {
if (interceptor instanceof ByteCodeMethodDescriptorSupport) {
setMethodDescriptor(behavior, (ByteCodeMethodDescriptorSupport) interceptor);
}
if (interceptor instanceof ApiIdSupport) {
setApiId(behavior, (ApiIdSupport) interceptor);
}
} else {
interceptor = InterceptorRegistry.getInterceptor(interceptorId);
}
@@ -197,6 +202,13 @@ public class JavaAssistClass implements InstrumentClass {
}
}
private void setApiId(CtBehavior behavior, ApiIdSupport interceptor) throws NotFoundException {
CtClass[] parameterTypes = behavior.getParameterTypes();
String[] parameterType = JavaAssistUtils.getParameterType(parameterTypes);
int apiId = ApiMappingTable.findApiId(ctClass.getName(), behavior.getName(), parameterType);
interceptor.setApiId(apiId);
}
private void setMethodDescriptor(CtBehavior behavior, ByteCodeMethodDescriptorSupport interceptor) throws NotFoundException {
DefaultMethodDescriptor methodDescriptor = new DefaultMethodDescriptor();
@@ -204,26 +216,20 @@ public class JavaAssistClass implements InstrumentClass {
methodDescriptor.setMethodName(methodName);
methodDescriptor.setClassName(ctClass.getName());
methodDescriptor.setSimpleClassName(ctClass.getSimpleName());
CtClass[] parameterTypes = behavior.getParameterTypes();
String[] parameterType = JavaAssistUtils.getParameterType(parameterTypes);
methodDescriptor.setParameterTypes(parameterType);
String[] parameterSimpleType = JavaAssistUtils.getParameterSimpleType(parameterTypes);
methodDescriptor.setSimpleParameterTypes(parameterSimpleType);
String[] parameterVariableName = JavaAssistUtils.getParameterVariableName(behavior);
methodDescriptor.setParameterVariableName(parameterVariableName);
int lineNumber = JavaAssistUtils.getLineNumber(behavior);
methodDescriptor.setLineNumber(lineNumber);
String parameterDescription = JavaAssistUtils.mergeParameterVariableNameDescription(parameterType, parameterVariableName);
String parameterDescription = ApiUtils.mergeParameterVariableNameDescription(parameterType, parameterVariableName);
methodDescriptor.setParameterDescriptor(parameterDescription);
String simpleParameterDescription = JavaAssistUtils.mergeParameterVariableNameDescription(parameterType, parameterVariableName);
methodDescriptor.setSimpleParameterDescriptor(simpleParameterDescription);
interceptor.setMethodDescriptor(methodDescriptor);
}