This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 fee821a455b Refactor AgentTransformer (#22919)
fee821a455b is described below
commit fee821a455b3b34c6d185623023416b7ea630880
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Dec 16 20:50:24 2022 +0800
Refactor AgentTransformer (#22919)
---
.../agent/core/transformer/AgentTransformer.java | 10 ++++++----
.../build/builder/type/ConstructorAdvisorBuilder.java | 8 ++------
.../build/builder/type/InstanceMethodAdvisorBuilder.java | 8 ++------
.../build/builder/type/StaticMethodAdvisorBuilder.java | 8 ++------
4 files changed, 12 insertions(+), 22 deletions(-)
diff --git
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
index 102fe449874..28ef5cdaeed 100644
---
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
+++
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
@@ -27,9 +27,10 @@ import net.bytebuddy.utility.JavaModule;
import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
import org.apache.shardingsphere.agent.core.plugin.TargetAdviceObject;
+import
org.apache.shardingsphere.agent.core.transformer.build.MethodAdvisorBuildEngine;
+import
org.apache.shardingsphere.agent.core.transformer.build.advise.AdviceFactory;
import
org.apache.shardingsphere.agent.core.transformer.build.builder.type.ConstructorAdvisorBuilder;
import
org.apache.shardingsphere.agent.core.transformer.build.builder.type.InstanceMethodAdvisorBuilder;
-import
org.apache.shardingsphere.agent.core.transformer.build.MethodAdvisorBuildEngine;
import
org.apache.shardingsphere.agent.core.transformer.build.builder.type.StaticMethodAdvisorBuilder;
import java.util.Map;
@@ -56,9 +57,10 @@ public final class AgentTransformer implements Transformer {
}
Builder<?> result = builder.defineField(EXTRA_DATA, Object.class,
Opcodes.ACC_PRIVATE |
Opcodes.ACC_VOLATILE).implement(TargetAdviceObject.class).intercept(FieldAccessor.ofField(EXTRA_DATA));
AdvisorConfiguration advisorConfig =
advisorConfigs.get(typeDescription.getTypeName());
- result = new
MethodAdvisorBuildEngine<>(advisorConfig.getConstructorAdvisors(),
typeDescription).create(result, new ConstructorAdvisorBuilder(pluginConfigs,
enhanceProxy, classLoader));
- result = new
MethodAdvisorBuildEngine<>(advisorConfig.getInstanceMethodAdvisors(),
typeDescription).create(result, new InstanceMethodAdvisorBuilder(pluginConfigs,
enhanceProxy, classLoader));
- result = new
MethodAdvisorBuildEngine<>(advisorConfig.getStaticMethodAdvisors(),
typeDescription).create(result, new StaticMethodAdvisorBuilder(pluginConfigs,
enhanceProxy, classLoader));
+ AdviceFactory adviceFactory = new AdviceFactory(classLoader,
pluginConfigs, enhanceProxy);
+ result = new
MethodAdvisorBuildEngine<>(advisorConfig.getConstructorAdvisors(),
typeDescription).create(result, new ConstructorAdvisorBuilder(adviceFactory));
+ result = new
MethodAdvisorBuildEngine<>(advisorConfig.getInstanceMethodAdvisors(),
typeDescription).create(result, new
InstanceMethodAdvisorBuilder(adviceFactory));
+ result = new
MethodAdvisorBuildEngine<>(advisorConfig.getStaticMethodAdvisors(),
typeDescription).create(result, new StaticMethodAdvisorBuilder(adviceFactory));
return result;
}
}
diff --git
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
index 5049a7e0581..93f3f75a719 100644
---
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
+++
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
@@ -17,13 +17,13 @@
package org.apache.shardingsphere.agent.core.transformer.build.builder.type;
+import lombok.RequiredArgsConstructor;
import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.SuperMethodCall;
import net.bytebuddy.matcher.ElementMatchers;
import
org.apache.shardingsphere.agent.config.advisor.method.type.ConstructorAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
import org.apache.shardingsphere.agent.core.plugin.advice.ConstructorAdvice;
import
org.apache.shardingsphere.agent.core.plugin.interceptor.ConstructorInterceptor;
import
org.apache.shardingsphere.agent.core.plugin.interceptor.composed.ComposedConstructorInterceptor;
@@ -33,20 +33,16 @@ import
org.apache.shardingsphere.agent.core.transformer.build.builder.MethodAdvi
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
/**
* Constructor advisor builder.
*/
+@RequiredArgsConstructor
public final class ConstructorAdvisorBuilder implements
MethodAdvisorBuilder<ConstructorAdvisorConfiguration> {
private final AdviceFactory adviceFactory;
- public ConstructorAdvisorBuilder(final Map<String, PluginConfiguration>
pluginConfigs, final boolean isEnhancedForProxy, final ClassLoader classLoader)
{
- adviceFactory = new AdviceFactory(classLoader, pluginConfigs,
isEnhancedForProxy);
- }
-
@Override
public Builder<?> create(final Builder<?> builder, final MethodAdvisor
methodAdvisor) {
return
builder.constructor(ElementMatchers.is(methodAdvisor.getPointcut()))
diff --git
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
index fd5bcbb07fb..a40a71e7746 100644
---
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
+++
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
@@ -17,13 +17,13 @@
package org.apache.shardingsphere.agent.core.transformer.build.builder.type;
+import lombok.RequiredArgsConstructor;
import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.bind.annotation.Morph;
import net.bytebuddy.matcher.ElementMatchers;
import
org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
import org.apache.shardingsphere.agent.core.plugin.OverrideArgsInvoker;
import
org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
import
org.apache.shardingsphere.agent.core.plugin.interceptor.InstanceMethodAroundInterceptor;
@@ -37,19 +37,15 @@ import
org.apache.shardingsphere.agent.core.transformer.build.builder.MethodAdvi
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
/**
* Instance method advisor builder.
*/
+@RequiredArgsConstructor
public final class InstanceMethodAdvisorBuilder implements
MethodAdvisorBuilder<InstanceMethodAdvisorConfiguration> {
private final AdviceFactory adviceFactory;
- public InstanceMethodAdvisorBuilder(final Map<String, PluginConfiguration>
pluginConfigs, final boolean isEnhancedForProxy, final ClassLoader classLoader)
{
- adviceFactory = new AdviceFactory(classLoader, pluginConfigs,
isEnhancedForProxy);
- }
-
@Override
public Builder<?> create(final Builder<?> builder, final MethodAdvisor
methodAdvisor) {
if (methodAdvisor.getAdvice() instanceof
InstanceMethodInterceptorArgsOverride) {
diff --git
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
index 807f09dd952..3d94666edad 100644
---
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
+++
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
@@ -17,13 +17,13 @@
package org.apache.shardingsphere.agent.core.transformer.build.builder.type;
+import lombok.RequiredArgsConstructor;
import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
import net.bytebuddy.dynamic.DynamicType.Builder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.bind.annotation.Morph;
import net.bytebuddy.matcher.ElementMatchers;
import
org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
import org.apache.shardingsphere.agent.core.plugin.OverrideArgsInvoker;
import
org.apache.shardingsphere.agent.core.plugin.advice.StaticMethodAroundAdvice;
import
org.apache.shardingsphere.agent.core.plugin.interceptor.StaticMethodAroundInterceptor;
@@ -37,19 +37,15 @@ import
org.apache.shardingsphere.agent.core.transformer.build.builder.MethodAdvi
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
/**
* Static method advisor builder.
*/
+@RequiredArgsConstructor
public final class StaticMethodAdvisorBuilder implements
MethodAdvisorBuilder<StaticMethodAdvisorConfiguration> {
private final AdviceFactory adviceFactory;
- public StaticMethodAdvisorBuilder(final Map<String, PluginConfiguration>
pluginConfigs, final boolean isEnhancedForProxy, final ClassLoader classLoader)
{
- adviceFactory = new AdviceFactory(classLoader, pluginConfigs,
isEnhancedForProxy);
- }
-
@Override
public Builder<?> create(final Builder<?> builder, final MethodAdvisor
methodAdvisor) {
if (methodAdvisor.getAdvice() instanceof
StaticMethodInterceptorArgsOverride) {