diff --git a/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java b/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java index 043dbfdcf..e662f7111 100644 --- a/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java +++ b/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java @@ -7,7 +7,6 @@ import java.util.logging.Logger; import com.profiler.interceptor.*; import javassist.*; -import javassist.bytecode.Descriptor; public class JavaAssistClass implements InstrumentClass { @@ -95,7 +94,12 @@ public class JavaAssistClass implements InstrumentClass { if (logger.isLoggable(Level.INFO)) { logger.info("addStaticBeforeInterceptor catch behavior:" + behavior.getLongName() + " code:" + buildBefore); } - behavior.insertBefore(buildBefore); + + if(behavior instanceof CtConstructor) { + ((CtConstructor) behavior).insertBeforeBody(buildBefore); + } else { + behavior.insertBefore(buildBefore); + } } private void addGetBeforeInterceptor(int id, StringBuilder code) { @@ -160,8 +164,9 @@ public class JavaAssistClass implements InstrumentClass { String constructorName = constructor.getName(); String params = getParamsToString(constructor.getParameterTypes()); -// constructor.insertBefore("{System.out.println(\"*****" + javassistClassName + " Constructor:Param=(" + sb + ") is started.\");}"); -// constructor.insertAfter("{System.out.println(\"*****" + javassistClassName + " Constructor:Param=(" + sb + ") is finished.\");}"); +// constructor.insertAfter("{System.out.println(\"*****" + constructorName + " Constructor:Param=(" + params + ") is finished. \" + $args);}"); +// constructor.addCatch("{System.out.println(\"*****" + constructorName + " Constructor:Param=(" + params + ") is finished.\"); throw $e; }" +// , instrumentor.getClassPool().get("java.lang.Throwable")); addAroundInterceptor(constructorName, id, constructor); } return true; diff --git a/src/test/java/com/profiler/interceptor/bci/JavaAssistClassTest.java b/src/test/java/com/profiler/interceptor/bci/JavaAssistClassTest.java index c9233081b..03af50c42 100644 --- a/src/test/java/com/profiler/interceptor/bci/JavaAssistClassTest.java +++ b/src/test/java/com/profiler/interceptor/bci/JavaAssistClassTest.java @@ -90,9 +90,7 @@ public class JavaAssistClassTest { InstrumentClass aClass = javaAssistByteCodeInstrumentor.getClass("com.profiler.interceptor.bci.TestLog"); aClass.addDebugLogBeforeAfterMethod(); - // TODO 생성자에 추가시 에러 분석 필요. -// aClass.addDebugLogBeforeAfterConstructor(); - + aClass.addDebugLogBeforeAfterConstructor(); Object testObject = aClass.toClass().newInstance(); @@ -102,6 +100,9 @@ public class JavaAssistClassTest { Method testString = testObject.getClass().getMethod("test", new Class[]{String.class}); testString.invoke(testObject, "method"); + Constructor constructor = testObject.getClass().getConstructor(null); + Object o = constructor.newInstance(); + } }