diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassConstructorInterceptor.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassConstructorInterceptor.java
index 10b2cf445..34563d0ea 100644
--- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassConstructorInterceptor.java
+++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassConstructorInterceptor.java
@@ -24,21 +24,14 @@ public class ClassConstructorInterceptor {
@FieldProxy(EnhanceClazz4Interceptor.contextAttrName) FieldSetter accessor,
@AllArguments Object[] allArguments) {
try {
- accessor.setValue(new EnhancedClassInstanceContext());
+ EnhancedClassInstanceContext context = new EnhancedClassInstanceContext();
+ accessor.setValue(context);
ConstructorContext interceptorContext = new ConstructorContext(
allArguments);
- interceptor.onConstruct(null, interceptorContext);
+ interceptor.onConstruct(context, interceptorContext);
} catch (Throwable t) {
logger.error("ClassConstructorInterceptor failue.", t);
}
}
-
- public interface FieldGetter {
- Object getValue();
- }
-
- public interface FieldSetter {
- void setValue(Object value);
- }
}
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 e4116fcbb..d9c3a5e5f 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
@@ -19,8 +19,6 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.ai.cloud.skywalking.plugin.PluginCfg;
-import com.ai.cloud.skywalking.plugin.interceptor.ClassConstructorInterceptor.FieldGetter;
-import com.ai.cloud.skywalking.plugin.interceptor.ClassConstructorInterceptor.FieldSetter;
public class EnhanceClazz4Interceptor {
private static Logger logger = LogManager
@@ -76,15 +74,14 @@ public class EnhanceClazz4Interceptor {
ClassLoadingStrategy.Default.INJECTION).getLoaded();
/**
- * to classloader.
+ * create a new class using origin classname.
*
* new class need:
* 1.add field '_$EnhancedClassInstanceContext' of type
* EnhancedClassInstanceContext
*
- * 2.intercept constructor and method if required by
- * interceptorDefineClass. use '@FieldValue' get
- * '_$EnhancedClassInstanceContext' ref
+ * 2.intercept constructor by default, and intercept method which it's required by
+ * interceptorDefineClass.
*/
IAroundInterceptor interceptor = define.instance();
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
index f15ceff30..8a382a529 100644
--- 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
@@ -1,7 +1,7 @@
package com.ai.cloud.skywalking.plugin.interceptor;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* 被增强的类实例,需扩展的context属性,用于在不同的方法,或者构造函数间保存实例
@@ -12,7 +12,22 @@ import java.util.Map;
public class EnhancedClassInstanceContext {
public static final String FIELD_NAME = "_$EnhancedClassInstanceContext";
- private Map