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/12 05:59:30 UTC
[shardingsphere] branch master updated: Remove builder of PluginPointcuts (#22817)
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 11c298e0e97 Remove builder of PluginPointcuts (#22817)
11c298e0e97 is described below
commit 11c298e0e977bd5e20a75d42a286023218705029
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Dec 12 13:59:24 2022 +0800
Remove builder of PluginPointcuts (#22817)
---
.../agent/pointcut/InstanceMethodPointcut.java | 4 +
.../agent/pointcut/PluginPointcuts.java | 203 +--------------------
.../agent/pointcut/StaticMethodPointcut.java | 4 +
.../AbstractPluginDefinitionService.java | 3 +-
.../core/definition/InterceptorPointRegistry.java | 10 +-
.../agent/core/plugin/AgentPluginLoader.java | 3 +-
.../transformer/ShardingSphereTransformerTest.java | 46 ++---
.../core/plugin/loader/AgentPluginLoaderTest.java | 19 +-
.../BaseLoggingPluginDefinitionService.java | 15 +-
.../PrometheusPluginDefinitionService.java | 15 +-
.../definition/JaegerPluginDefinitionService.java | 20 +-
...penTelemetryTracingPluginDefinitionService.java | 19 +-
.../OpenTracingPluginDefinitionService.java | 20 +-
.../definition/ZipkinPluginDefinitionService.java | 20 +-
14 files changed, 95 insertions(+), 306 deletions(-)
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/InstanceMethodPointcut.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/InstanceMethodPointcut.java
index e5e76a7d137..cf7f4a3d0c8 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/InstanceMethodPointcut.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/InstanceMethodPointcut.java
@@ -34,4 +34,8 @@ public final class InstanceMethodPointcut implements AgentPointcut {
private final String adviceClassName;
private final boolean overrideArgs;
+
+ public InstanceMethodPointcut(final ElementMatcher<? super MethodDescription> matcher, final String adviceClassName) {
+ this(matcher, adviceClassName, false);
+ }
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/PluginPointcuts.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/PluginPointcuts.java
index d5e67f45d68..4d4293d3b56 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/PluginPointcuts.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/PluginPointcuts.java
@@ -19,12 +19,9 @@ package org.apache.shardingsphere.agent.pointcut;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import net.bytebuddy.description.method.MethodDescription;
-import net.bytebuddy.matcher.ElementMatcher;
-import net.bytebuddy.matcher.ElementMatchers;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
+import java.util.LinkedList;
/**
* Plugin pointcuts.
@@ -35,199 +32,9 @@ public final class PluginPointcuts {
private final String targetClassName;
- private final List<ConstructorPointcut> constructorPointcuts;
+ private final Collection<ConstructorPointcut> constructorPointcuts = new LinkedList<>();
- private final List<InstanceMethodPointcut> instanceMethodPointcuts;
+ private final Collection<InstanceMethodPointcut> instanceMethodPointcuts = new LinkedList<>();
- private final List<StaticMethodPointcut> staticMethodPointcuts;
-
- /**
- * Plugin advice definition configuration builder.
- */
- @RequiredArgsConstructor
- public static final class Builder {
-
- private final String targetClassName;
-
- private final List<ConstructorPointcut> constructorPointcuts = new ArrayList<>();
-
- private final List<InstanceMethodPointcut> instanceMethodPointcuts = new ArrayList<>();
-
- private final List<StaticMethodPointcut> staticMethodPointcuts = new ArrayList<>();
-
- /**
- * Configure the intercepting point on constructor.
- *
- * @param matcher constraints
- * @return configuration point builder
- */
- public ConstructorPointBuilder onConstructor(final ElementMatcher<? super MethodDescription> matcher) {
- return new ConstructorPointBuilder(this, matcher);
- }
-
- /**
- * Configure the intercepting point around instance method.
- *
- * @param matcher constraints
- * @return instance method point builder
- */
- public InstanceMethodPointBuilder aroundInstanceMethod(final ElementMatcher<? super MethodDescription> matcher) {
- return new InstanceMethodPointBuilder(this, matcher);
- }
-
- /**
- * Configure the intercepting point around instance method.
- *
- * @param matcher constraints
- * @return static method point builder
- */
- public StaticMethodPointBuilder aroundStaticMethod(final ElementMatcher<? super MethodDescription> matcher) {
- return new StaticMethodPointBuilder(this, matcher);
- }
-
- /**
- * Build plugin advice definition.
- *
- * @return plugin advice definition
- */
- public PluginPointcuts install() {
- return new PluginPointcuts(targetClassName, constructorPointcuts, instanceMethodPointcuts, staticMethodPointcuts);
- }
-
- /**
- * Instance method intercepting point configuration builder.
- */
- @RequiredArgsConstructor
- public static final class InstanceMethodPointBuilder {
-
- private final Builder builder;
-
- private final ElementMatcher<? super MethodDescription> matcher;
-
- private String adviceClassName;
-
- private boolean overrideArgs;
-
- /**
- * Configure implementation for interceptor point.
- *
- * @param adviceClassName advice class name
- * @return instance method point builder
- */
- public InstanceMethodPointBuilder implement(final String adviceClassName) {
- this.adviceClassName = adviceClassName;
- return this;
- }
-
- /**
- * Configure whether or not override the origin method arguments.
- *
- * @param overrideArgs whether to override origin method arguments
- * @return instance method point configurer
- */
- public InstanceMethodPointBuilder overrideArgs(final boolean overrideArgs) {
- this.overrideArgs = overrideArgs;
- return this;
- }
-
- /**
- * Build instance methods configuration.
- *
- * @return plugin advice builder
- */
- public Builder build() {
- builder.instanceMethodPointcuts.add(new InstanceMethodPointcut(matcher, adviceClassName, overrideArgs));
- return builder;
- }
- }
-
- /**
- * Static method intercepting point configuration builder.
- */
- public static final class StaticMethodPointBuilder {
-
- private final Builder builder;
-
- private final ElementMatcher<? super MethodDescription> matcher;
-
- private String adviceClassName;
-
- private boolean overrideArgs;
-
- private StaticMethodPointBuilder(final Builder builder, final ElementMatcher<? super MethodDescription> matcher) {
- this.builder = builder;
- this.matcher = ElementMatchers.isStatic().and(matcher);
- }
-
- /**
- * Configure implementation for intercepting point.
- *
- * @param adviceClassName advice class name
- * @return static method point configure builder
- */
- public StaticMethodPointBuilder implement(final String adviceClassName) {
- this.adviceClassName = adviceClassName;
- return this;
- }
-
- /**
- * Configure whether or not override the origin method arguments.
- *
- * @param overrideArgs whether to override origin method arguments
- * @return static method point builder
- */
- public StaticMethodPointBuilder overrideArgs(final boolean overrideArgs) {
- this.overrideArgs = overrideArgs;
- return this;
- }
-
- /**
- * Build static methods configuration.
- *
- * @return builder
- */
- public Builder build() {
- builder.staticMethodPointcuts.add(new StaticMethodPointcut(matcher, adviceClassName, overrideArgs));
- return builder;
- }
- }
-
- /**
- * Instance constructor intercepting point configuration builder.
- */
- public static final class ConstructorPointBuilder {
-
- private final Builder builder;
-
- private final ElementMatcher<? super MethodDescription> matcher;
-
- private String adviceClassName;
-
- private ConstructorPointBuilder(final Builder builder, final ElementMatcher<? super MethodDescription> matcher) {
- this.builder = builder;
- this.matcher = ElementMatchers.isConstructor().and(matcher);
- }
-
- /**
- * Configure implementation for intercepting point.
- *
- * @param adviceClassName advice class name
- * @return constructor point builder
- */
- public ConstructorPointBuilder implement(final String adviceClassName) {
- this.adviceClassName = adviceClassName;
- return this;
- }
-
- /**
- * Build constructor point configuration.
- *
- * @return plugin advice builder
- */
- public Builder build() {
- builder.constructorPointcuts.add(new ConstructorPointcut(matcher, adviceClassName));
- return builder;
- }
- }
- }
+ private final Collection<StaticMethodPointcut> staticMethodPointcuts = new LinkedList<>();
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/StaticMethodPointcut.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/StaticMethodPointcut.java
index 26727905456..7746c805958 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/StaticMethodPointcut.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/pointcut/StaticMethodPointcut.java
@@ -34,4 +34,8 @@ public final class StaticMethodPointcut implements AgentPointcut {
private final String adviceClassName;
private final boolean overrideArgs;
+
+ public StaticMethodPointcut(final ElementMatcher<? super MethodDescription> matcher, final String adviceClassName) {
+ this(matcher, adviceClassName, false);
+ }
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/AbstractPluginDefinitionService.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/AbstractPluginDefinitionService.java
index 253ad09c00c..a3818fb59c3 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/AbstractPluginDefinitionService.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/AbstractPluginDefinitionService.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.agent.core.definition;
import org.apache.shardingsphere.agent.pointcut.PluginPointcuts;
-import org.apache.shardingsphere.agent.pointcut.PluginPointcuts.Builder;
import org.apache.shardingsphere.agent.spi.PluginDefinitionService;
import java.util.Collection;
@@ -44,7 +43,7 @@ public abstract class AbstractPluginDefinitionService implements PluginDefinitio
protected abstract void defineJdbcInterceptors();
- protected final Builder defineInterceptor(final String targetClassName) {
+ protected final PluginPointcuts defineInterceptor(final String targetClassName) {
return interceptorPointRegistry.getInterceptorPointBuilder(targetClassName);
}
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/InterceptorPointRegistry.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/InterceptorPointRegistry.java
index 84a80635560..847b56a1d4d 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/InterceptorPointRegistry.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/definition/InterceptorPointRegistry.java
@@ -18,19 +18,17 @@
package org.apache.shardingsphere.agent.core.definition;
import org.apache.shardingsphere.agent.pointcut.PluginPointcuts;
-import org.apache.shardingsphere.agent.pointcut.PluginPointcuts.Builder;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
/**
* Interceptor point registry.
*/
public final class InterceptorPointRegistry {
- private final Map<String, Builder> builders = new ConcurrentHashMap<>();
+ private final Map<String, PluginPointcuts> pointcutsMap = new ConcurrentHashMap<>();
/**
* Get interceptor point builder.
@@ -38,8 +36,8 @@ public final class InterceptorPointRegistry {
* @param targetClassName target class name to be intercepted
* @return interceptor point builder
*/
- public Builder getInterceptorPointBuilder(final String targetClassName) {
- return builders.computeIfAbsent(targetClassName, Builder::new);
+ public PluginPointcuts getInterceptorPointBuilder(final String targetClassName) {
+ return pointcutsMap.computeIfAbsent(targetClassName, PluginPointcuts::new);
}
/**
@@ -48,6 +46,6 @@ public final class InterceptorPointRegistry {
* @return all interceptor points
*/
public Collection<PluginPointcuts> getAllInterceptorPoints() {
- return builders.values().stream().map(Builder::install).collect(Collectors.toList());
+ return pointcutsMap.values();
}
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
index cbdff7bf3a1..d5f313ac47d 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
@@ -35,7 +35,6 @@ import org.apache.shardingsphere.agent.spi.PluginDefinitionService;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
@@ -151,7 +150,7 @@ public final class AgentPluginLoader implements PluginLoader {
@Override
public PluginPointcuts loadPluginInterceptorPoint(final TypeDescription typeDescription) {
- return pointcuts.getOrDefault(typeDescription.getTypeName(), new PluginPointcuts("", Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
+ return pointcuts.getOrDefault(typeDescription.getTypeName(), new PluginPointcuts(""));
}
@Override
diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformerTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformerTest.java
index f2f29157f2f..f634504ff15 100644
--- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformerTest.java
+++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformerTest.java
@@ -23,18 +23,20 @@ import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.agent.builder.ResettableClassFileTransformer;
import net.bytebuddy.dynamic.scaffold.TypeValidation;
import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.pointcut.PluginPointcuts;
import org.apache.shardingsphere.agent.core.bytebuddy.listener.LoggingListener;
-import org.apache.shardingsphere.agent.core.mock.advice.MockStaticMethodAroundAdvice;
+import org.apache.shardingsphere.agent.core.common.AgentClassLoader;
import org.apache.shardingsphere.agent.core.mock.advice.MockConstructorAdvice;
import org.apache.shardingsphere.agent.core.mock.advice.MockInstanceMethodAroundAdvice;
import org.apache.shardingsphere.agent.core.mock.advice.MockInstanceMethodAroundRepeatedAdvice;
+import org.apache.shardingsphere.agent.core.mock.advice.MockStaticMethodAroundAdvice;
import org.apache.shardingsphere.agent.core.mock.material.Material;
import org.apache.shardingsphere.agent.core.mock.material.RepeatedAdviceMaterial;
import org.apache.shardingsphere.agent.core.plugin.AdviceInstanceLoader;
-import org.apache.shardingsphere.agent.core.common.AgentClassLoader;
import org.apache.shardingsphere.agent.core.plugin.AgentPluginLoader;
-import org.apache.shardingsphere.agent.pointcut.PluginPointcuts.Builder;
+import org.apache.shardingsphere.agent.pointcut.ConstructorPointcut;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
+import org.apache.shardingsphere.agent.pointcut.PluginPointcuts;
+import org.apache.shardingsphere.agent.pointcut.StaticMethodPointcut;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -72,26 +74,9 @@ public final class ShardingSphereTransformerTest {
objectPool.put(MockInstanceMethodAroundAdvice.class.getTypeName(), new MockInstanceMethodAroundAdvice());
objectPool.put(MockStaticMethodAroundAdvice.class.getTypeName(), new MockStaticMethodAroundAdvice());
Map<String, PluginPointcuts> pointcutsMap = new HashMap<>(2, 1);
- PluginPointcuts pluginPointcuts = new Builder("org.apache.shardingsphere.agent.core.mock.material.Material")
- .aroundInstanceMethod(ElementMatchers.named("mock"))
- .implement(MockInstanceMethodAroundAdvice.class.getTypeName())
- .build()
- .aroundStaticMethod(ElementMatchers.named("staticMock"))
- .implement(MockStaticMethodAroundAdvice.class.getTypeName())
- .build()
- .onConstructor(ElementMatchers.takesArguments(1))
- .implement(MockConstructorAdvice.class.getTypeName())
- .build()
- .install();
+ PluginPointcuts pluginPointcuts = createPluginPointcuts();
pointcutsMap.put(pluginPointcuts.getTargetClassName(), pluginPointcuts);
- PluginPointcuts pluginPointcutsInTwice = new Builder("org.apache.shardingsphere.agent.core.mock.material.RepeatedAdviceMaterial")
- .aroundInstanceMethod(ElementMatchers.named("mock"))
- .implement(MockInstanceMethodAroundAdvice.class.getTypeName())
- .build()
- .aroundInstanceMethod(ElementMatchers.named("mock"))
- .implement(MockInstanceMethodAroundRepeatedAdvice.class.getTypeName())
- .build()
- .install();
+ PluginPointcuts pluginPointcutsInTwice = createPluginPointcutsInTwice();
pointcutsMap.put(pluginPointcutsInTwice.getTargetClassName(), pluginPointcutsInTwice);
MemberAccessor accessor = Plugins.getMemberAccessor();
accessor.set(PLUGIN_LOADER.getClass().getDeclaredField("pointcuts"), PLUGIN_LOADER, pointcutsMap);
@@ -106,6 +91,21 @@ public final class ShardingSphereTransformerTest {
.installOnByteBuddyAgent();
}
+ private static PluginPointcuts createPluginPointcuts() {
+ PluginPointcuts result = new PluginPointcuts("org.apache.shardingsphere.agent.core.mock.material.Material");
+ result.getConstructorPointcuts().add(new ConstructorPointcut(ElementMatchers.takesArguments(1), MockConstructorAdvice.class.getTypeName()));
+ result.getInstanceMethodPointcuts().add(new InstanceMethodPointcut(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
+ result.getStaticMethodPointcuts().add(new StaticMethodPointcut(ElementMatchers.named("staticMock"), MockStaticMethodAroundAdvice.class.getTypeName()));
+ return result;
+ }
+
+ private static PluginPointcuts createPluginPointcutsInTwice() {
+ PluginPointcuts result = new PluginPointcuts("org.apache.shardingsphere.agent.core.mock.material.RepeatedAdviceMaterial");
+ result.getInstanceMethodPointcuts().add(new InstanceMethodPointcut(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
+ result.getInstanceMethodPointcuts().add(new InstanceMethodPointcut(ElementMatchers.named("mock"), MockInstanceMethodAroundRepeatedAdvice.class.getTypeName()));
+ return result;
+ }
+
@Test
public void assertInstanceMethod() {
assertThat(new Material().mock(queue), is("invocation"));
diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/loader/AgentPluginLoaderTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/loader/AgentPluginLoaderTest.java
index 6a0e168b100..b9849feefb0 100644
--- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/loader/AgentPluginLoaderTest.java
+++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/loader/AgentPluginLoaderTest.java
@@ -25,8 +25,10 @@ import org.apache.shardingsphere.agent.core.mock.advice.MockInstanceMethodAround
import org.apache.shardingsphere.agent.core.mock.advice.MockStaticMethodAroundAdvice;
import org.apache.shardingsphere.agent.core.plugin.AdviceInstanceLoader;
import org.apache.shardingsphere.agent.core.plugin.AgentPluginLoader;
+import org.apache.shardingsphere.agent.pointcut.ConstructorPointcut;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
import org.apache.shardingsphere.agent.pointcut.PluginPointcuts;
-import org.apache.shardingsphere.agent.pointcut.PluginPointcuts.Builder;
+import org.apache.shardingsphere.agent.pointcut.StaticMethodPointcut;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -60,17 +62,10 @@ public final class AgentPluginLoaderTest {
objectPool.put(MockConstructorAdvice.class.getTypeName(), new MockConstructorAdvice());
objectPool.put(MockInstanceMethodAroundAdvice.class.getTypeName(), new MockInstanceMethodAroundAdvice());
objectPool.put(MockStaticMethodAroundAdvice.class.getTypeName(), new MockStaticMethodAroundAdvice());
- PluginPointcuts pluginPointcuts = new Builder("org.apache.shardingsphere.agent.core.mock.material.Material")
- .aroundInstanceMethod(ElementMatchers.named("mock"))
- .implement(MockInstanceMethodAroundAdvice.class.getTypeName())
- .build()
- .aroundStaticMethod(ElementMatchers.named("staticMock"))
- .implement(MockStaticMethodAroundAdvice.class.getTypeName())
- .build()
- .onConstructor(ElementMatchers.takesArguments(1))
- .implement(MockConstructorAdvice.class.getTypeName())
- .build()
- .install();
+ PluginPointcuts pluginPointcuts = new PluginPointcuts("org.apache.shardingsphere.agent.core.mock.material.Material");
+ pluginPointcuts.getConstructorPointcuts().add(new ConstructorPointcut(ElementMatchers.takesArguments(1), MockConstructorAdvice.class.getTypeName()));
+ pluginPointcuts.getInstanceMethodPointcuts().add(new InstanceMethodPointcut(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
+ pluginPointcuts.getStaticMethodPointcuts().add(new StaticMethodPointcut(ElementMatchers.named("staticMock"), MockStaticMethodAroundAdvice.class.getTypeName()));
MemberAccessor accessor = Plugins.getMemberAccessor();
accessor.set(PLUGIN_LOADER.getClass().getDeclaredField("pointcuts"), PLUGIN_LOADER, Collections.singletonMap(pluginPointcuts.getTargetClassName(), pluginPointcuts));
}
diff --git a/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java b/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
index 0563e9647c6..5941544ded2 100644
--- a/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
+++ b/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
@@ -18,8 +18,9 @@
package org.apache.shardingsphere.agent.plugin.logging.base.definition;
import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.plugin.logging.base.advice.MetaDataContextsFactoryAdvice;
import org.apache.shardingsphere.agent.core.definition.AbstractPluginDefinitionService;
+import org.apache.shardingsphere.agent.plugin.logging.base.advice.MetaDataContextsFactoryAdvice;
+import org.apache.shardingsphere.agent.pointcut.StaticMethodPointcut;
/**
* Base logging plugin definition service.
@@ -34,18 +35,14 @@ public final class BaseLoggingPluginDefinitionService extends AbstractPluginDefi
@Override
protected void defineProxyInterceptors() {
- defineInterceptor(SCHEMA_METADATA_LOADER_CLASS)
- .aroundStaticMethod(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)))
- .implement(SCHEMA_METADATA_LOADER_ADVICE_CLASS)
- .build();
+ defineInterceptor(SCHEMA_METADATA_LOADER_CLASS).getStaticMethodPointcuts()
+ .add(new StaticMethodPointcut(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)), SCHEMA_METADATA_LOADER_ADVICE_CLASS));
}
@Override
protected void defineJdbcInterceptors() {
- defineInterceptor(SCHEMA_METADATA_LOADER_CLASS)
- .aroundStaticMethod(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)))
- .implement(SCHEMA_METADATA_LOADER_ADVICE_CLASS)
- .build();
+ defineInterceptor(SCHEMA_METADATA_LOADER_CLASS).getStaticMethodPointcuts()
+ .add(new StaticMethodPointcut(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)), SCHEMA_METADATA_LOADER_ADVICE_CLASS));
}
@Override
diff --git a/agent/plugins/metrics/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusPluginDefinitionService.java b/agent/plugins/metrics/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusPluginDefinitionService.java
index 81c905639af..501590ddf5d 100644
--- a/agent/plugins/metrics/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusPluginDefinitionService.java
+++ b/agent/plugins/metrics/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusPluginDefinitionService.java
@@ -18,11 +18,14 @@
package org.apache.shardingsphere.agent.metrics.prometheus.definition;
import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.pointcut.PluginPointcuts.Builder;
import org.apache.shardingsphere.agent.core.definition.AbstractPluginDefinitionService;
import org.apache.shardingsphere.agent.core.yaml.entity.Interceptor;
import org.apache.shardingsphere.agent.core.yaml.entity.TargetPoint;
import org.apache.shardingsphere.agent.core.yaml.swapper.InterceptorsYamlSwapper;
+import org.apache.shardingsphere.agent.pointcut.ConstructorPointcut;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
+import org.apache.shardingsphere.agent.pointcut.PluginPointcuts;
+import org.apache.shardingsphere.agent.pointcut.StaticMethodPointcut;
/**
* Metrics plugin definition service.
@@ -35,17 +38,17 @@ public final class PrometheusPluginDefinitionService extends AbstractPluginDefin
if (null == each.getTarget()) {
continue;
}
- Builder builder = defineInterceptor(each.getTarget());
+ PluginPointcuts pluginPointcuts = defineInterceptor(each.getTarget());
if (null != each.getConstructAdvice() && !("".equals(each.getConstructAdvice()))) {
- builder.onConstructor(ElementMatchers.isConstructor()).implement(each.getConstructAdvice()).build();
+ pluginPointcuts.getConstructorPointcuts().add(new ConstructorPointcut(ElementMatchers.isConstructor(), each.getConstructAdvice()));
}
String[] instancePoints = each.getPoints().stream().filter(i -> "instance".equals(i.getType())).map(TargetPoint::getName).toArray(String[]::new);
- String[] staticPoints = each.getPoints().stream().filter(i -> "static".equals(i.getType())).map(TargetPoint::getName).toArray(String[]::new);
if (instancePoints.length > 0) {
- builder.aroundInstanceMethod(ElementMatchers.namedOneOf(instancePoints)).implement(each.getInstanceAdvice()).build();
+ pluginPointcuts.getInstanceMethodPointcuts().add(new InstanceMethodPointcut(ElementMatchers.namedOneOf(instancePoints), each.getInstanceAdvice()));
}
+ String[] staticPoints = each.getPoints().stream().filter(i -> "static".equals(i.getType())).map(TargetPoint::getName).toArray(String[]::new);
if (staticPoints.length > 0) {
- builder.aroundStaticMethod(ElementMatchers.namedOneOf(staticPoints)).implement(each.getStaticAdvice()).build();
+ pluginPointcuts.getStaticMethodPointcuts().add(new StaticMethodPointcut(ElementMatchers.namedOneOf(staticPoints), each.getStaticAdvice()));
}
}
}
diff --git a/agent/plugins/tracing/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java b/agent/plugins/tracing/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java
index e3cda34644e..c98ad53e231 100644
--- a/agent/plugins/tracing/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java
+++ b/agent/plugins/tracing/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.jaeger.definition;
import net.bytebuddy.matcher.ElementMatchers;
import org.apache.shardingsphere.agent.core.definition.AbstractPluginDefinitionService;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
/**
* Jaeger plugin definition service.
@@ -47,18 +48,13 @@ public final class JaegerPluginDefinitionService extends AbstractPluginDefinitio
@Override
protected void defineProxyInterceptors() {
- defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME))
- .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
- .build();
- defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME))
- .implement(SQL_PARSER_ENGINE_ADVICE_CLASS)
- .build();
- defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))))
- .implement(JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS)
- .build();
+ defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME), COMMAND_EXECUTOR_TASK_ADVICE_CLASS));
+ defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME), SQL_PARSER_ENGINE_ADVICE_CLASS));
+ defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))),
+ JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS));
}
@Override
diff --git a/agent/plugins/tracing/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingPluginDefinitionService.java b/agent/plugins/tracing/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingPluginDefinitionService.java
index 8a108f47ffc..b3f85062cdb 100644
--- a/agent/plugins/tracing/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingPluginDefinitionService.java
+++ b/agent/plugins/tracing/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingPluginDefinitionService.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.definition;
import net.bytebuddy.matcher.ElementMatchers;
import org.apache.shardingsphere.agent.core.definition.AbstractPluginDefinitionService;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
/**
* OpenTelemetry plugin definition service.
@@ -47,18 +48,12 @@ public final class OpenTelemetryTracingPluginDefinitionService extends AbstractP
@Override
protected void defineProxyInterceptors() {
- defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME))
- .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
- .build();
- defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME))
- .implement(SQL_PARSER_ENGINE_ADVICE_CLASS)
- .build();
- defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))))
- .implement(JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS)
- .build();
+ defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME), COMMAND_EXECUTOR_TASK_ADVICE_CLASS));
+ defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME), SQL_PARSER_ENGINE_ADVICE_CLASS));
+ defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS)), JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS));
}
@Override
diff --git a/agent/plugins/tracing/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingPluginDefinitionService.java b/agent/plugins/tracing/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingPluginDefinitionService.java
index 52bba28003e..cdd96fd8575 100644
--- a/agent/plugins/tracing/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingPluginDefinitionService.java
+++ b/agent/plugins/tracing/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingPluginDefinitionService.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.opentracing.definition;
import net.bytebuddy.matcher.ElementMatchers;
import org.apache.shardingsphere.agent.core.definition.AbstractPluginDefinitionService;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
/**
* Open tracing plugin definition service.
@@ -47,18 +48,13 @@ public final class OpenTracingPluginDefinitionService extends AbstractPluginDefi
@Override
protected void defineProxyInterceptors() {
- defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME))
- .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
- .build();
- defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME))
- .implement(SQL_PARSER_ENGINE_ADVICE_CLASS)
- .build();
- defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))))
- .implement(JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS)
- .build();
+ defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME), COMMAND_EXECUTOR_TASK_ADVICE_CLASS));
+ defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME), SQL_PARSER_ENGINE_ADVICE_CLASS));
+ defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))),
+ JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS));
}
@Override
diff --git a/agent/plugins/tracing/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java b/agent/plugins/tracing/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java
index 770dd6aac07..95f9e4a1b5c 100644
--- a/agent/plugins/tracing/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java
+++ b/agent/plugins/tracing/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.zipkin.definition;
import net.bytebuddy.matcher.ElementMatchers;
import org.apache.shardingsphere.agent.core.definition.AbstractPluginDefinitionService;
+import org.apache.shardingsphere.agent.pointcut.InstanceMethodPointcut;
/**
* Zipkin plugin definition service.
@@ -47,18 +48,13 @@ public final class ZipkinPluginDefinitionService extends AbstractPluginDefinitio
@Override
protected void defineProxyInterceptors() {
- defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME))
- .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
- .build();
- defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME))
- .implement(SQL_PARSER_ENGINE_ADVICE_CLASS)
- .build();
- defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS)
- .aroundInstanceMethod(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))))
- .implement(JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS)
- .build();
+ defineInterceptor(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME), COMMAND_EXECUTOR_TASK_ADVICE_CLASS));
+ defineInterceptor(SQL_PARSER_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(SQL_PARSER_ENGINE_METHOD_NAME), SQL_PARSER_ENGINE_ADVICE_CLASS));
+ defineInterceptor(JDBC_EXECUTOR_CALLBACK_ENGINE_ENHANCE_CLASS).getInstanceMethodPointcuts()
+ .add(new InstanceMethodPointcut(ElementMatchers.named(JDBC_EXECUTOR_METHOD_NAME).and(ElementMatchers.takesArgument(0, ElementMatchers.named(JDBC_EXECUTOR_UNIT_ENGINE_ENHANCE_CLASS))),
+ JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS));
}
@Override