You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/09/28 10:00:34 UTC
[shardingsphere] branch master updated: Fix override argument
interceptors (#12761)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new fa2e494 Fix override argument interceptors (#12761)
fa2e494 is described below
commit fa2e494d369e9ef98931946459c32cf2abeb1bcf
Author: Dachuan J <46...@users.noreply.github.com>
AuthorDate: Tue Sep 28 18:00:00 2021 +0800
Fix override argument interceptors (#12761)
---
.../transformer/ShardingSphereTransformer.java | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
index 7c76621..7d617b3 100644
--- a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
+++ b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
@@ -27,6 +27,7 @@ import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.FieldAccessor;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.SuperMethodCall;
+import net.bytebuddy.implementation.bind.annotation.Morph;
import net.bytebuddy.jar.asm.Opcodes;
import net.bytebuddy.matcher.ElementMatchers;
import net.bytebuddy.utility.JavaModule;
@@ -34,6 +35,7 @@ import org.apache.shardingsphere.agent.api.advice.AdviceTargetObject;
import org.apache.shardingsphere.agent.api.advice.ClassStaticMethodAroundAdvice;
import org.apache.shardingsphere.agent.api.advice.ConstructorAdvice;
import org.apache.shardingsphere.agent.api.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.api.advice.OverrideArgsInvoker;
import org.apache.shardingsphere.agent.api.point.ClassStaticMethodPoint;
import org.apache.shardingsphere.agent.api.point.ConstructorPoint;
import org.apache.shardingsphere.agent.api.point.InstanceMethodPoint;
@@ -125,8 +127,13 @@ public final class ShardingSphereTransformer implements Transformer {
Builder<?> result = builder;
for (ShardingSphereTransformationPoint<?> each : classStaticMethodAdvicePoints) {
try {
- result = result.method(ElementMatchers.is(each.getDescription()))
- .intercept(MethodDelegation.withDefaultConfiguration().to(each.getInterceptor()));
+ if (each.getInterceptor() instanceof ClassStaticMethodInterceptorArgsOverride || each.getInterceptor() instanceof ComposeClassStaticMethodInterceptorArgsOverride) {
+ result = result.method(ElementMatchers.is(each.getDescription()))
+ .intercept(MethodDelegation.withDefaultConfiguration().withBinders(Morph.Binder.install(OverrideArgsInvoker.class)).to(each.getInterceptor()));
+ } else {
+ result = result.method(ElementMatchers.is(each.getDescription()))
+ .intercept(MethodDelegation.withDefaultConfiguration().to(each.getInterceptor()));
+ }
// CHECKSTYLE:OFF
} catch (final Throwable ex) {
// CHECKSTYLE:ON
@@ -178,7 +185,13 @@ public final class ShardingSphereTransformer implements Transformer {
Builder<?> result = builder;
for (ShardingSphereTransformationPoint<?> each : instanceMethodAdviceComposePoints) {
try {
- result = result.method(ElementMatchers.is(each.getDescription())).intercept(MethodDelegation.withDefaultConfiguration().to(each.getInterceptor()));
+ if (each.getInterceptor() instanceof InstanceMethodInterceptorArgsOverride || each.getInterceptor() instanceof ComposeInstanceMethodInterceptorArgsOverride) {
+ result = result.method(ElementMatchers.is(each.getDescription()))
+ .intercept(MethodDelegation.withDefaultConfiguration().withBinders(Morph.Binder.install(OverrideArgsInvoker.class)).to(each.getInterceptor()));
+ } else {
+ result = result.method(ElementMatchers.is(each.getDescription()))
+ .intercept(MethodDelegation.withDefaultConfiguration().to(each.getInterceptor()));
+ }
// CHECKSTYLE:OFF
} catch (final Throwable ex) {
// CHECKSTYLE:ON