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 2022/12/19 09:12:43 UTC
[shardingsphere] branch master updated: Refactor AdviceExecutor (#22971)
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 b774c8ec496 Refactor AdviceExecutor (#22971)
b774c8ec496 is described below
commit b774c8ec496353614f9161c7da3b70a27f8188ea
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Dec 19 17:12:37 2022 +0800
Refactor AdviceExecutor (#22971)
* Refactor AdviceExecutor
* Refactor AdviceExecutor
---
.../agent/core/plugin/executor/AdviceExecutor.java | 10 +++++-----
.../core/plugin/executor/type/ConstructorAdviceExecutor.java | 7 +++----
.../plugin/executor/type/InstanceMethodAdviceExecutor.java | 6 +++---
.../core/plugin/executor/type/StaticMethodAdviceExecutor.java | 6 +++---
.../agent/core/transformer/builder/MethodAdvisorBuilder.java | 2 +-
5 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/AdviceExecutor.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/AdviceExecutor.java
index 3eb9937c82c..502d3819069 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/AdviceExecutor.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/AdviceExecutor.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.agent.core.plugin.executor;
+import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.dynamic.DynamicType.Builder;
-import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
/**
* Advice executor.
@@ -26,11 +26,11 @@ import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
public interface AdviceExecutor {
/**
- * Build method advisor.
+ * Decorate advice builder.
*
* @param builder original builder
- * @param methodAdvisor method advisor
- * @return built builder
+ * @param pointcut method pointcut
+ * @return decorated builder
*/
- Builder<?> buildAdvisor(Builder<?> builder, MethodAdvisor methodAdvisor);
+ Builder<?> decorateBuilder(Builder<?> builder, MethodDescription pointcut);
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/ConstructorAdviceExecutor.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/ConstructorAdviceExecutor.java
index eb7cb9555c8..301c8dfcb10 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/ConstructorAdviceExecutor.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/ConstructorAdviceExecutor.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.agent.core.plugin.executor.type;
import lombok.RequiredArgsConstructor;
+import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.SuperMethodCall;
@@ -31,7 +32,6 @@ import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
import org.apache.shardingsphere.agent.core.logging.LoggerFactory.Logger;
import org.apache.shardingsphere.agent.core.plugin.PluginContext;
import org.apache.shardingsphere.agent.core.plugin.executor.AdviceExecutor;
-import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
import java.util.Collection;
@@ -68,8 +68,7 @@ public final class ConstructorAdviceExecutor implements AdviceExecutor {
}
@Override
- public Builder<?> buildAdvisor(final Builder<?> builder, final MethodAdvisor methodAdvisor) {
- return builder.constructor(ElementMatchers.is(methodAdvisor.getPointcut()))
- .intercept(SuperMethodCall.INSTANCE.andThen(MethodDelegation.withDefaultConfiguration().to(methodAdvisor.getAdviceExecutor())));
+ public Builder<?> decorateBuilder(final Builder<?> builder, final MethodDescription pointcut) {
+ return builder.constructor(ElementMatchers.is(pointcut)).intercept(SuperMethodCall.INSTANCE.andThen(MethodDelegation.withDefaultConfiguration().to(this)));
}
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/InstanceMethodAdviceExecutor.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/InstanceMethodAdviceExecutor.java
index 79d17ea5053..5d1ece3e16b 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/InstanceMethodAdviceExecutor.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/InstanceMethodAdviceExecutor.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.core.plugin.executor.type;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
+import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.bind.annotation.AllArguments;
@@ -34,7 +35,6 @@ import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
import org.apache.shardingsphere.agent.core.logging.LoggerFactory.Logger;
import org.apache.shardingsphere.agent.core.plugin.PluginContext;
import org.apache.shardingsphere.agent.core.plugin.executor.AdviceExecutor;
-import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
import java.lang.reflect.Method;
import java.util.Collection;
@@ -123,7 +123,7 @@ public final class InstanceMethodAdviceExecutor implements AdviceExecutor {
}
@Override
- public Builder<?> buildAdvisor(final Builder<?> builder, final MethodAdvisor methodAdvisor) {
- return builder.method(ElementMatchers.is(methodAdvisor.getPointcut())).intercept(MethodDelegation.withDefaultConfiguration().to(methodAdvisor.getAdviceExecutor()));
+ public Builder<?> decorateBuilder(final Builder<?> builder, final MethodDescription pointcut) {
+ return builder.method(ElementMatchers.is(pointcut)).intercept(MethodDelegation.withDefaultConfiguration().to(this));
}
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/StaticMethodAdviceExecutor.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/StaticMethodAdviceExecutor.java
index 7b83eb28f6e..61d2c4f9264 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/StaticMethodAdviceExecutor.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/executor/type/StaticMethodAdviceExecutor.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.core.plugin.executor.type;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
+import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.bind.annotation.AllArguments;
@@ -32,7 +33,6 @@ import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
import org.apache.shardingsphere.agent.core.logging.LoggerFactory.Logger;
import org.apache.shardingsphere.agent.core.plugin.PluginContext;
import org.apache.shardingsphere.agent.core.plugin.executor.AdviceExecutor;
-import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
import java.lang.reflect.Method;
import java.util.Collection;
@@ -121,7 +121,7 @@ public final class StaticMethodAdviceExecutor implements AdviceExecutor {
}
@Override
- public Builder<?> buildAdvisor(final Builder<?> builder, final MethodAdvisor methodAdvisor) {
- return builder.method(ElementMatchers.is(methodAdvisor.getPointcut())).intercept(MethodDelegation.withDefaultConfiguration().to(methodAdvisor.getAdviceExecutor()));
+ public Builder<?> decorateBuilder(final Builder<?> builder, final MethodDescription pointcut) {
+ return builder.method(ElementMatchers.is(pointcut)).intercept(MethodDelegation.withDefaultConfiguration().to(this));
}
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/MethodAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/MethodAdvisorBuilder.java
index 51e0d1e0d94..27845c3de6f 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/MethodAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/MethodAdvisorBuilder.java
@@ -61,7 +61,7 @@ public final class MethodAdvisorBuilder {
Builder<?> result = builder;
for (MethodAdvisor each : getMatchedMethodAdvisors()) {
try {
- result = each.getAdviceExecutor().buildAdvisor(result, each);
+ result = each.getAdviceExecutor().decorateBuilder(result, each.getPointcut());
// CHECKSTYLE:OFF
} catch (final Throwable ex) {
// CHECKSTYLE:ON