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 34563d0ea..088f42617 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 @@ -26,7 +26,7 @@ public class ClassConstructorInterceptor { try { EnhancedClassInstanceContext context = new EnhancedClassInstanceContext(); accessor.setValue(context); - ConstructorContext interceptorContext = new ConstructorContext( + ConstructorInvokeContext interceptorContext = new ConstructorInvokeContext(obj, allArguments); interceptor.onConstruct(context, interceptorContext); } catch (Throwable t) { diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassMethodInterceptor.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassMethodInterceptor.java index c8f2e4648..ca0602902 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassMethodInterceptor.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ClassMethodInterceptor.java @@ -37,7 +37,7 @@ public class ClassMethodInterceptor { @SuperCall Callable zuper, @FieldValue(EnhanceClazz4Interceptor.contextAttrName) EnhancedClassInstanceContext instanceContext) throws Exception { - InterceptorContext interceptorContext = new InterceptorContext(obj, + MethodInvokeContext interceptorContext = new MethodInvokeContext(obj, method.getName(), allArguments); try { interceptor.beforeMethod(instanceContext, interceptorContext); diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ConstructorContext.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ConstructorContext.java deleted file mode 100644 index 58d5b1ea9..000000000 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ConstructorContext.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ai.cloud.skywalking.plugin.interceptor; - -public class ConstructorContext { - private Object[] allArguments; - - ConstructorContext(Object[] allArguments) { - this.allArguments = allArguments; - } - - public Object[] allArguments(){ - return this.allArguments; - } -} diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ConstructorInvokeContext.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ConstructorInvokeContext.java new file mode 100644 index 000000000..8b82379a1 --- /dev/null +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/ConstructorInvokeContext.java @@ -0,0 +1,25 @@ +package com.ai.cloud.skywalking.plugin.interceptor; + +public class ConstructorInvokeContext { + /** + * 代理对象实例 + */ + private Object objInst; + /** + * 构造函数参数 + */ + private Object[] allArguments; + + ConstructorInvokeContext(Object objInst, Object[] allArguments) { + this.objInst = objInst; + this.allArguments = allArguments; + } + + public Object inst(){ + return objInst; + } + + public Object[] allArguments(){ + return this.allArguments; + } +} diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/IAroundInterceptor.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/IAroundInterceptor.java index 26ddbb3ce..c0a3d1b8a 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/IAroundInterceptor.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/IAroundInterceptor.java @@ -1,11 +1,11 @@ package com.ai.cloud.skywalking.plugin.interceptor; public interface IAroundInterceptor { - public void onConstruct(EnhancedClassInstanceContext context, ConstructorContext interceptorContext); + public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext); - public void beforeMethod(EnhancedClassInstanceContext context, InterceptorContext interceptorContext); + public void beforeMethod(EnhancedClassInstanceContext context, MethodInvokeContext interceptorContext); - public Object afterMethod(EnhancedClassInstanceContext context, InterceptorContext interceptorContext, Object ret); + public Object afterMethod(EnhancedClassInstanceContext context, MethodInvokeContext interceptorContext, Object ret); } diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/InterceptorContext.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/MethodInvokeContext.java similarity index 60% rename from skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/InterceptorContext.java rename to skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/MethodInvokeContext.java index ce57108bb..3c9eaaa5f 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/InterceptorContext.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/MethodInvokeContext.java @@ -1,12 +1,26 @@ package com.ai.cloud.skywalking.plugin.interceptor; - -public class InterceptorContext { +/** + * 方法执行拦截上下文 + * + * @author wusheng + * + */ +public class MethodInvokeContext { + /** + * 代理类实例 + */ private Object objInst; + /** + * 方法名称 + */ private String methodName; + /** + * 方法参数 + */ private Object[] allArguments; - InterceptorContext(Object objInst, String methodName, Object[] allArguments) { + MethodInvokeContext(Object objInst, String methodName, Object[] allArguments) { this.objInst = objInst; this.methodName = methodName; this.allArguments = allArguments; diff --git a/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java b/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java index c0993108f..9fc05a636 100644 --- a/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java +++ b/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java @@ -1,25 +1,25 @@ package test.ai.cloud.plugin; -import com.ai.cloud.skywalking.plugin.interceptor.ConstructorContext; +import com.ai.cloud.skywalking.plugin.interceptor.ConstructorInvokeContext; import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext; import com.ai.cloud.skywalking.plugin.interceptor.IAroundInterceptor; -import com.ai.cloud.skywalking.plugin.interceptor.InterceptorContext; +import com.ai.cloud.skywalking.plugin.interceptor.MethodInvokeContext; public class TestAroundInterceptor implements IAroundInterceptor { @Override - public void onConstruct(EnhancedClassInstanceContext context, ConstructorContext interceptorContext) { + public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) { context.set("test.key", "123"); System.out.println("onConstruct, args size=" + interceptorContext.allArguments().length); } @Override - public void beforeMethod(EnhancedClassInstanceContext context, InterceptorContext interceptorContext) { + public void beforeMethod(EnhancedClassInstanceContext context, MethodInvokeContext interceptorContext) { System.out.println("beforeMethod : " + context.get("test.key", String.class)); } @Override - public Object afterMethod(EnhancedClassInstanceContext context, InterceptorContext interceptorContext, Object ret) { + public Object afterMethod(EnhancedClassInstanceContext context, MethodInvokeContext interceptorContext, Object ret) { System.out.println("afterMethod: " + context.get("test.key", String.class)); return ret; }