diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java
index 3ede5e498..dea537914 100644
--- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java
+++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java
@@ -36,7 +36,10 @@ public class EnhanceClazz4Interceptor {
}
}
- private void enhance0(String enhanceOriginClassName) {
+ private void enhance0(String interceptorDefineClassName) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+ InterceptorDefine define = (InterceptorDefine)Class.forName(interceptorDefineClassName).newInstance();
+
+ String enhanceOriginClassName = define.getBeInterceptedClassName();
/**
* add '$$Origin' at the end of be enhanced classname
* such as: class com.ai.cloud.TestClass to class com.ai.cloud.TestClass$$Origin
@@ -48,5 +51,13 @@ public class EnhanceClazz4Interceptor {
.make()
.load(ClassLoader.getSystemClassLoader(),
ClassLoadingStrategy.Default.INJECTION).getLoaded();
+
+ /**
+ * define class as origin class name. and inject to classloader.
+ * new class need:
+ * 1.implement com.ai.cloud.skywalking.plugin.interceptor.IEnhancedClassInstanceContext();
+ * 2.add field '_$EnhancedClassInstanceContext' of type EnhancedClassInstanceContext
+ * 3.intercept constructor and method if required by interceptorDefineClass
+ */
}
}
diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java
new file mode 100644
index 000000000..f15ceff30
--- /dev/null
+++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java
@@ -0,0 +1,18 @@
+package com.ai.cloud.skywalking.plugin.interceptor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 被增强的类实例,需扩展的context属性,用于在不同的方法,或者构造函数间保存实例
+ *
+ * @author wusheng
+ *
+ */
+public class EnhancedClassInstanceContext {
+ public static final String FIELD_NAME = "_$EnhancedClassInstanceContext";
+
+ private Map