You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/12/11 10:26:37 UTC
[shardingsphere] branch master updated: Rename AgentPointcut (#22803)
This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 7c687fd16c6 Rename AgentPointcut (#22803)
7c687fd16c6 is described below
commit 7c687fd16c61714380fb0cee0c349cd843f479d3
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Dec 11 18:26:29 2022 +0800
Rename AgentPointcut (#22803)
---
.../AgentPointcut.java} | 24 +++---
.../ConstructorPointcut.java} | 8 +-
.../InstanceMethodPointcut.java} | 8 +-
.../PluginPointcuts.java} | 40 ++++-----
.../StaticMethodPointcut.java} | 8 +-
.../agent/spi/PluginDefinitionService.java | 4 +-
.../transformer/ShardingSphereTransformer.java | 94 +++++++++++-----------
.../AbstractPluginDefinitionService.java | 6 +-
.../core/definition/InterceptorPointRegistry.java | 8 +-
.../agent/core/plugin/AgentPluginLoader.java | 24 +++---
.../agent/core/plugin/PluginLoader.java | 4 +-
.../transformer/ShardingSphereTransformerTest.java | 8 +-
.../core/plugin/loader/AgentPluginLoaderTest.java | 4 +-
.../PrometheusPluginDefinitionService.java | 2 +-
14 files changed, 120 insertions(+), 122 deletions(-)
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/ConstructorInterceptorPoint.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/AgentPointcut.java
similarity index 72%
copy from agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/ConstructorInterceptorPoint.java
copy to agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/AgentPointcut.java
index 363822dedb6..e51f117774a 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/ConstructorInterceptorPoint.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/AgentPointcut.java
@@ -15,21 +15,27 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.api.interceptor;
+package org.apache.shardingsphere.agent.api.pointcut;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;
/**
- * constructor interceptor point.
+ * Agent pointcut.
*/
-@RequiredArgsConstructor
-@Getter
-public final class ConstructorInterceptorPoint {
+public interface AgentPointcut {
- private final ElementMatcher<? super MethodDescription> matcher;
+ /**
+ * Get matcher.
+ *
+ * @return matcher
+ */
+ ElementMatcher<? super MethodDescription> getMatcher();
- private final String advice;
+ /**
+ * Get advice class name.
+ *
+ * @return advice class name
+ */
+ String getAdviceClassName();
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/ConstructorInterceptorPoint.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/ConstructorPointcut.java
similarity index 85%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/ConstructorInterceptorPoint.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/ConstructorPointcut.java
index 363822dedb6..7d968e6809c 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/ConstructorInterceptorPoint.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/ConstructorPointcut.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.api.interceptor;
+package org.apache.shardingsphere.agent.api.pointcut;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -23,13 +23,13 @@ import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;
/**
- * constructor interceptor point.
+ * Constructor Pointcut.
*/
@RequiredArgsConstructor
@Getter
-public final class ConstructorInterceptorPoint {
+public final class ConstructorPointcut implements AgentPointcut {
private final ElementMatcher<? super MethodDescription> matcher;
- private final String advice;
+ private final String adviceClassName;
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/StaticMethodInterceptorPoint.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/InstanceMethodPointcut.java
similarity index 85%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/StaticMethodInterceptorPoint.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/InstanceMethodPointcut.java
index 692c0a36f81..731b481189c 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/StaticMethodInterceptorPoint.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/InstanceMethodPointcut.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.api.interceptor;
+package org.apache.shardingsphere.agent.api.pointcut;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -23,15 +23,15 @@ import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;
/**
- * Static method interceptor point.
+ * Instance method pointcut.
*/
@RequiredArgsConstructor
@Getter
-public final class StaticMethodInterceptorPoint {
+public final class InstanceMethodPointcut implements AgentPointcut {
private final ElementMatcher<? super MethodDescription> matcher;
- private final String advice;
+ private final String adviceClassName;
private final boolean overrideArgs;
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/PluginInterceptorPoint.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/PluginPointcuts.java
similarity index 81%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/PluginInterceptorPoint.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/PluginPointcuts.java
index 9b00b71e49c..aee83e4723c 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/PluginInterceptorPoint.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/PluginPointcuts.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.api.interceptor;
+package org.apache.shardingsphere.agent.api.pointcut;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -28,35 +28,27 @@ import java.util.Collections;
import java.util.List;
/**
- * Plugin interceptor point.
- *
- * {@code
- * PluginInterceptorPoint.intercept("Target.class")
- * .onConstructor(ElementMatchers.any()).implement("Advice.class").build()
- * .method(ElementMatchers.named("greet").implement("Advice.class").build()
- * .staticMethod(ElementMatchers.named("of").implement("OfAdvice.class").build()
- * .install();
- * }
+ * Plugin pointcuts.
*/
@RequiredArgsConstructor
@Getter
-public final class PluginInterceptorPoint {
+public final class PluginPointcuts {
private final String targetClassName;
- private final List<ConstructorInterceptorPoint> constructorInterceptorPoints;
+ private final List<ConstructorPointcut> constructorPointcuts;
- private final List<InstanceMethodInterceptorPoint> instanceMethodInterceptorPoints;
+ private final List<InstanceMethodPointcut> instanceMethodPointcuts;
- private final List<StaticMethodInterceptorPoint> staticMethodInterceptorPoints;
+ private final List<StaticMethodPointcut> staticMethodPointcuts;
/**
* Create plugin interceptor point.
*
* @return plugin interceptor point
*/
- public static PluginInterceptorPoint createDefault() {
- return new PluginInterceptorPoint("", Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+ public static PluginPointcuts createDefault() {
+ return new PluginPointcuts("", Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
}
/**
@@ -77,11 +69,11 @@ public final class PluginInterceptorPoint {
private final String targetClassName;
- private final List<ConstructorInterceptorPoint> constructorInterceptorPoints = new ArrayList<>();
+ private final List<ConstructorPointcut> constructorPointcuts = new ArrayList<>();
- private final List<InstanceMethodInterceptorPoint> instanceMethodInterceptorPoints = new ArrayList<>();
+ private final List<InstanceMethodPointcut> instanceMethodPointcuts = new ArrayList<>();
- private final List<StaticMethodInterceptorPoint> staticMethodInterceptorPoints = new ArrayList<>();
+ private final List<StaticMethodPointcut> staticMethodPointcuts = new ArrayList<>();
/**
* Configure the intercepting point on constructor.
@@ -118,8 +110,8 @@ public final class PluginInterceptorPoint {
*
* @return plugin advice definition
*/
- public PluginInterceptorPoint install() {
- return new PluginInterceptorPoint(targetClassName, constructorInterceptorPoints, instanceMethodInterceptorPoints, staticMethodInterceptorPoints);
+ public PluginPointcuts install() {
+ return new PluginPointcuts(targetClassName, constructorPointcuts, instanceMethodPointcuts, staticMethodPointcuts);
}
/**
@@ -164,7 +156,7 @@ public final class PluginInterceptorPoint {
* @return plugin advice builder
*/
public Builder build() {
- builder.instanceMethodInterceptorPoints.add(new InstanceMethodInterceptorPoint(matcher, adviceClassName, overrideArgs));
+ builder.instanceMethodPointcuts.add(new InstanceMethodPointcut(matcher, adviceClassName, overrideArgs));
return builder;
}
}
@@ -215,7 +207,7 @@ public final class PluginInterceptorPoint {
* @return builder
*/
public Builder build() {
- builder.staticMethodInterceptorPoints.add(new StaticMethodInterceptorPoint(matcher, adviceClassName, overrideArgs));
+ builder.staticMethodPointcuts.add(new StaticMethodPointcut(matcher, adviceClassName, overrideArgs));
return builder;
}
}
@@ -253,7 +245,7 @@ public final class PluginInterceptorPoint {
* @return plugin advice builder
*/
public Builder build() {
- builder.constructorInterceptorPoints.add(new ConstructorInterceptorPoint(matcher, adviceClassName));
+ builder.constructorPointcuts.add(new ConstructorPointcut(matcher, adviceClassName));
return builder;
}
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/InstanceMethodInterceptorPoint.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/StaticMethodPointcut.java
similarity index 85%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/InstanceMethodInterceptorPoint.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/StaticMethodPointcut.java
index 7cf51055531..140a8853197 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/interceptor/InstanceMethodInterceptorPoint.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/pointcut/StaticMethodPointcut.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.api.interceptor;
+package org.apache.shardingsphere.agent.api.pointcut;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -23,15 +23,15 @@ import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;
/**
- * Instance method interceptor point.
+ * Static method pointcut.
*/
@RequiredArgsConstructor
@Getter
-public final class InstanceMethodInterceptorPoint {
+public final class StaticMethodPointcut implements AgentPointcut {
private final ElementMatcher<? super MethodDescription> matcher;
- private final String advice;
+ private final String adviceClassName;
private final boolean overrideArgs;
}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/spi/PluginDefinitionService.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/spi/PluginDefinitionService.java
index 4c2bded28e7..d1d9751cee6 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/spi/PluginDefinitionService.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/spi/PluginDefinitionService.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.agent.spi;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
import java.util.Collection;
@@ -32,5 +32,5 @@ public interface PluginDefinitionService extends AgentSPI {
* @param isEnhancedForProxy is enhanced for proxy
* @return plugin interceptor points
*/
- Collection<PluginInterceptorPoint> install(boolean isEnhancedForProxy);
+ Collection<PluginPointcuts> install(boolean isEnhancedForProxy);
}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
index 65d42a61af2..88c938b3398 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
@@ -35,10 +35,10 @@ import org.apache.shardingsphere.agent.api.advice.StaticMethodAroundAdvice;
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.interceptor.StaticMethodInterceptorPoint;
-import org.apache.shardingsphere.agent.api.interceptor.ConstructorInterceptorPoint;
-import org.apache.shardingsphere.agent.api.interceptor.InstanceMethodInterceptorPoint;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.api.pointcut.StaticMethodPointcut;
+import org.apache.shardingsphere.agent.api.pointcut.ConstructorPointcut;
+import org.apache.shardingsphere.agent.api.pointcut.InstanceMethodPointcut;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
import org.apache.shardingsphere.agent.core.plugin.PluginLoader;
import org.apache.shardingsphere.agent.core.plugin.interceptor.StaticMethodAroundInterceptor;
@@ -76,18 +76,18 @@ public final class ShardingSphereTransformer implements Transformer {
return builder;
}
Builder<?> result = builder.defineField(EXTRA_DATA, Object.class, Opcodes.ACC_PRIVATE | Opcodes.ACC_VOLATILE).implement(AdviceTargetObject.class).intercept(FieldAccessor.ofField(EXTRA_DATA));
- PluginInterceptorPoint pluginInterceptorPoint = pluginLoader.loadPluginInterceptorPoint(typeDescription);
- result = interceptConstructor(typeDescription, pluginInterceptorPoint.getConstructorInterceptorPoints(), result, classLoader);
- result = interceptStaticMethod(typeDescription, pluginInterceptorPoint.getStaticMethodInterceptorPoints(), result, classLoader);
- result = interceptInstanceMethod(typeDescription, pluginInterceptorPoint.getInstanceMethodInterceptorPoints(), result, classLoader);
+ PluginPointcuts pluginPointcuts = pluginLoader.loadPluginInterceptorPoint(typeDescription);
+ result = interceptConstructor(typeDescription, pluginPointcuts.getConstructorPointcuts(), result, classLoader);
+ result = interceptStaticMethod(typeDescription, pluginPointcuts.getStaticMethodPointcuts(), result, classLoader);
+ result = interceptInstanceMethod(typeDescription, pluginPointcuts.getInstanceMethodPointcuts(), result, classLoader);
return result;
}
private Builder<?> interceptConstructor(final TypeDescription description,
- final Collection<ConstructorInterceptorPoint> constructorInterceptorPoints, final Builder<?> builder, final ClassLoader classLoader) {
+ final Collection<ConstructorPointcut> constructorPointcuts, final Builder<?> builder, final ClassLoader classLoader) {
Collection<ShardingSphereTransformationPoint<? extends ConstructorInterceptor>> constructorAdviceComposePoints = description.getDeclaredMethods().stream()
.filter(MethodDescription::isConstructor)
- .map(each -> getMatchedTransformationPoint(constructorInterceptorPoints, each, classLoader))
+ .map(each -> getMatchedTransformationPoint(constructorPointcuts, each, classLoader))
.filter(Objects::nonNull)
.collect(Collectors.toList());
Builder<?> result = builder;
@@ -104,29 +104,29 @@ public final class ShardingSphereTransformer implements Transformer {
return result;
}
- private ShardingSphereTransformationPoint<? extends ConstructorInterceptor> getMatchedTransformationPoint(final Collection<ConstructorInterceptorPoint> constructorInterceptorPoints,
+ private ShardingSphereTransformationPoint<? extends ConstructorInterceptor> getMatchedTransformationPoint(final Collection<ConstructorPointcut> constructorPointcuts,
final InDefinedShape methodDescription, final ClassLoader classLoader) {
- List<ConstructorInterceptorPoint> matchedConstructorInterceptorPoints = constructorInterceptorPoints
+ List<ConstructorPointcut> matchedConstructorPointcuts = constructorPointcuts
.stream().filter(each -> each.getMatcher().matches(methodDescription)).collect(Collectors.toList());
- if (matchedConstructorInterceptorPoints.isEmpty()) {
+ if (matchedConstructorPointcuts.isEmpty()) {
return null;
}
- if (1 == matchedConstructorInterceptorPoints.size()) {
+ if (1 == matchedConstructorPointcuts.size()) {
return new ShardingSphereTransformationPoint<>(
- methodDescription, new ConstructorInterceptor(pluginLoader.getOrCreateInstance(matchedConstructorInterceptorPoints.get(0).getAdvice(), classLoader)));
+ methodDescription, new ConstructorInterceptor(pluginLoader.getOrCreateInstance(matchedConstructorPointcuts.get(0).getAdviceClassName(), classLoader)));
}
- Collection<ConstructorAdvice> constructorAdvices = matchedConstructorInterceptorPoints.stream()
- .map(ConstructorInterceptorPoint::getAdvice)
+ Collection<ConstructorAdvice> constructorAdvices = matchedConstructorPointcuts.stream()
+ .map(ConstructorPointcut::getAdviceClassName)
.map(each -> (ConstructorAdvice) pluginLoader.getOrCreateInstance(each, classLoader))
.collect(Collectors.toList());
return new ShardingSphereTransformationPoint<>(methodDescription, new ComposedConstructorInterceptor(constructorAdvices));
}
- private Builder<?> interceptStaticMethod(final TypeDescription description, final Collection<StaticMethodInterceptorPoint> staticMethodInterceptorPoints,
+ private Builder<?> interceptStaticMethod(final TypeDescription description, final Collection<StaticMethodPointcut> staticMethodPointcuts,
final Builder<?> builder, final ClassLoader classLoader) {
Collection<ShardingSphereTransformationPoint<?>> staticMethodAdvicePoints = description.getDeclaredMethods().stream()
.filter(each -> each.isStatic() && !(each.isAbstract() || each.isSynthetic()))
- .map(each -> getMatchedStaticMethodPoint(staticMethodInterceptorPoints, each, classLoader))
+ .map(each -> getMatchedStaticMethodPoint(staticMethodPointcuts, each, classLoader))
.filter(Objects::nonNull)
.collect(Collectors.toList());
Builder<?> result = builder;
@@ -148,47 +148,47 @@ public final class ShardingSphereTransformer implements Transformer {
return result;
}
- private ShardingSphereTransformationPoint<?> getMatchedStaticMethodPoint(final Collection<StaticMethodInterceptorPoint> staticMethodAroundPoints,
+ private ShardingSphereTransformationPoint<?> getMatchedStaticMethodPoint(final Collection<StaticMethodPointcut> staticMethodAroundPoints,
final InDefinedShape methodDescription, final ClassLoader classLoader) {
- List<StaticMethodInterceptorPoint> staticMethodInterceptorPoints = staticMethodAroundPoints.stream().filter(each -> each.getMatcher().matches(methodDescription)).collect(Collectors.toList());
- if (staticMethodInterceptorPoints.isEmpty()) {
+ List<StaticMethodPointcut> staticMethodPointcuts = staticMethodAroundPoints.stream().filter(each -> each.getMatcher().matches(methodDescription)).collect(Collectors.toList());
+ if (staticMethodPointcuts.isEmpty()) {
return null;
}
- if (1 == staticMethodInterceptorPoints.size()) {
- return getSingleStaticMethodPoint(methodDescription, staticMethodInterceptorPoints.get(0), classLoader);
+ if (1 == staticMethodPointcuts.size()) {
+ return getSingleStaticMethodPoint(methodDescription, staticMethodPointcuts.get(0), classLoader);
}
- return getComposedStaticMethodPoint(methodDescription, staticMethodInterceptorPoints, classLoader);
+ return getComposedStaticMethodPoint(methodDescription, staticMethodPointcuts, classLoader);
}
private ShardingSphereTransformationPoint<?> getSingleStaticMethodPoint(final InDefinedShape methodDescription,
- final StaticMethodInterceptorPoint staticMethodInterceptorPoint, final ClassLoader classLoader) {
- StaticMethodAroundAdvice staticMethodAroundAdvice = pluginLoader.getOrCreateInstance(staticMethodInterceptorPoint.getAdvice(), classLoader);
- return staticMethodInterceptorPoint.isOverrideArgs()
+ final StaticMethodPointcut staticMethodPointcut, final ClassLoader classLoader) {
+ StaticMethodAroundAdvice staticMethodAroundAdvice = pluginLoader.getOrCreateInstance(staticMethodPointcut.getAdviceClassName(), classLoader);
+ return staticMethodPointcut.isOverrideArgs()
? new ShardingSphereTransformationPoint<>(methodDescription, new StaticMethodInterceptorArgsOverride(staticMethodAroundAdvice))
: new ShardingSphereTransformationPoint<>(methodDescription, new StaticMethodAroundInterceptor(staticMethodAroundAdvice));
}
private ShardingSphereTransformationPoint<?> getComposedStaticMethodPoint(final InDefinedShape methodDescription,
- final Collection<StaticMethodInterceptorPoint> staticMethodInterceptorPoints, final ClassLoader classLoader) {
+ final Collection<StaticMethodPointcut> staticMethodPointcuts, final ClassLoader classLoader) {
Collection<StaticMethodAroundAdvice> staticMethodAroundAdvices = new LinkedList<>();
boolean isArgsOverride = false;
- for (StaticMethodInterceptorPoint each : staticMethodInterceptorPoints) {
+ for (StaticMethodPointcut each : staticMethodPointcuts) {
if (each.isOverrideArgs()) {
isArgsOverride = true;
}
- if (null != each.getAdvice()) {
- staticMethodAroundAdvices.add(pluginLoader.getOrCreateInstance(each.getAdvice(), classLoader));
+ if (null != each.getAdviceClassName()) {
+ staticMethodAroundAdvices.add(pluginLoader.getOrCreateInstance(each.getAdviceClassName(), classLoader));
}
}
return isArgsOverride ? new ShardingSphereTransformationPoint<>(methodDescription, new ComposedStaticMethodInterceptorArgsOverride(staticMethodAroundAdvices))
: new ShardingSphereTransformationPoint<>(methodDescription, new ComposedStaticMethodAroundInterceptor(staticMethodAroundAdvices));
}
- private Builder<?> interceptInstanceMethod(final TypeDescription description, final Collection<InstanceMethodInterceptorPoint> instanceMethodInterceptorPoints,
+ private Builder<?> interceptInstanceMethod(final TypeDescription description, final Collection<InstanceMethodPointcut> instanceMethodPointcuts,
final Builder<?> builder, final ClassLoader classLoader) {
Collection<ShardingSphereTransformationPoint<?>> instanceMethodAdviceComposePoints = description.getDeclaredMethods().stream()
.filter(each -> !(each.isAbstract() || each.isSynthetic()))
- .map(each -> getMatchedInstanceMethodPoint(instanceMethodInterceptorPoints, each, classLoader))
+ .map(each -> getMatchedInstanceMethodPoint(instanceMethodPointcuts, each, classLoader))
.filter(Objects::nonNull)
.collect(Collectors.toList());
Builder<?> result = builder;
@@ -210,37 +210,37 @@ public final class ShardingSphereTransformer implements Transformer {
return result;
}
- private ShardingSphereTransformationPoint<?> getMatchedInstanceMethodPoint(final Collection<InstanceMethodInterceptorPoint> instanceMethodAroundPoints,
+ private ShardingSphereTransformationPoint<?> getMatchedInstanceMethodPoint(final Collection<InstanceMethodPointcut> instanceMethodAroundPoints,
final InDefinedShape methodDescription, final ClassLoader classLoader) {
- List<InstanceMethodInterceptorPoint> instanceMethodInterceptorPoints = instanceMethodAroundPoints
+ List<InstanceMethodPointcut> instanceMethodPointcuts = instanceMethodAroundPoints
.stream().filter(each -> each.getMatcher().matches(methodDescription)).collect(Collectors.toList());
- if (instanceMethodInterceptorPoints.isEmpty()) {
+ if (instanceMethodPointcuts.isEmpty()) {
return null;
}
- if (1 == instanceMethodInterceptorPoints.size()) {
- return getSingleInstanceMethodPoint(methodDescription, instanceMethodInterceptorPoints.get(0), classLoader);
+ if (1 == instanceMethodPointcuts.size()) {
+ return getSingleInstanceMethodPoint(methodDescription, instanceMethodPointcuts.get(0), classLoader);
}
- return getComposeInstanceMethodPoint(methodDescription, instanceMethodInterceptorPoints, classLoader);
+ return getComposeInstanceMethodPoint(methodDescription, instanceMethodPointcuts, classLoader);
}
private ShardingSphereTransformationPoint<?> getSingleInstanceMethodPoint(final InDefinedShape methodDescription,
- final InstanceMethodInterceptorPoint instanceMethodInterceptorPoint, final ClassLoader classLoader) {
- InstanceMethodAroundAdvice instanceMethodAroundAdvice = pluginLoader.getOrCreateInstance(instanceMethodInterceptorPoint.getAdvice(), classLoader);
- return instanceMethodInterceptorPoint.isOverrideArgs()
+ final InstanceMethodPointcut instanceMethodPointcut, final ClassLoader classLoader) {
+ InstanceMethodAroundAdvice instanceMethodAroundAdvice = pluginLoader.getOrCreateInstance(instanceMethodPointcut.getAdviceClassName(), classLoader);
+ return instanceMethodPointcut.isOverrideArgs()
? new ShardingSphereTransformationPoint<>(methodDescription, new InstanceMethodInterceptorArgsOverride(instanceMethodAroundAdvice))
: new ShardingSphereTransformationPoint<>(methodDescription, new InstanceMethodAroundInterceptor(instanceMethodAroundAdvice));
}
private ShardingSphereTransformationPoint<?> getComposeInstanceMethodPoint(final InDefinedShape methodDescription,
- final Collection<InstanceMethodInterceptorPoint> instanceMethodInterceptorPoints, final ClassLoader classLoader) {
+ final Collection<InstanceMethodPointcut> instanceMethodPointcuts, final ClassLoader classLoader) {
Collection<InstanceMethodAroundAdvice> instanceMethodAroundAdvices = new LinkedList<>();
boolean isArgsOverride = false;
- for (InstanceMethodInterceptorPoint each : instanceMethodInterceptorPoints) {
+ for (InstanceMethodPointcut each : instanceMethodPointcuts) {
if (each.isOverrideArgs()) {
isArgsOverride = true;
}
- if (null != each.getAdvice()) {
- instanceMethodAroundAdvices.add(pluginLoader.getOrCreateInstance(each.getAdvice(), classLoader));
+ if (null != each.getAdviceClassName()) {
+ instanceMethodAroundAdvices.add(pluginLoader.getOrCreateInstance(each.getAdviceClassName(), classLoader));
}
}
return isArgsOverride
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 3e1cf79bb0e..34f48d98c8e 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
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.agent.core.definition;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint.Builder;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts.Builder;
import org.apache.shardingsphere.agent.spi.PluginDefinitionService;
import java.util.Collection;
@@ -31,7 +31,7 @@ public abstract class AbstractPluginDefinitionService implements PluginDefinitio
private final InterceptorPointRegistry interceptorPointRegistry = new InterceptorPointRegistry();
@Override
- public final Collection<PluginInterceptorPoint> install(final boolean isEnhancedForProxy) {
+ public final Collection<PluginPointcuts> install(final boolean isEnhancedForProxy) {
if (isEnhancedForProxy) {
defineProxyInterceptors();
} else {
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 86ea4bf2960..997811f2999 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
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.agent.core.definition;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint.Builder;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts.Builder;
import java.util.Collection;
import java.util.Map;
@@ -39,7 +39,7 @@ public final class InterceptorPointRegistry {
* @return interceptor point builder
*/
public Builder getInterceptorPointBuilder(final String targetClassName) {
- return builders.computeIfAbsent(targetClassName, PluginInterceptorPoint::intercept);
+ return builders.computeIfAbsent(targetClassName, PluginPointcuts::intercept);
}
/**
@@ -47,7 +47,7 @@ public final class InterceptorPointRegistry {
*
* @return all interceptor points
*/
- public Collection<PluginInterceptorPoint> getAllInterceptorPoints() {
+ public Collection<PluginPointcuts> getAllInterceptorPoints() {
return builders.values().stream().map(Builder::install).collect(Collectors.toList());
}
}
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 bc0d2ee4501..c7a3f7582e0 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
@@ -23,7 +23,7 @@ import lombok.Setter;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
import net.bytebuddy.matcher.ElementMatcher.Junction;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
import org.apache.shardingsphere.agent.config.AgentConfiguration;
import org.apache.shardingsphere.agent.core.common.AgentClassLoader;
import org.apache.shardingsphere.agent.core.config.path.AgentPathBuilder;
@@ -52,7 +52,7 @@ public final class AgentPluginLoader implements PluginLoader {
private final Collection<PluginJar> pluginJars = new LinkedList<>();
- private Map<String, PluginInterceptorPoint> interceptorPointMap;
+ private Map<String, PluginPointcuts> interceptorPointMap;
@Getter
@Setter
@@ -83,9 +83,9 @@ public final class AgentPluginLoader implements PluginLoader {
private void loadAllPluginInterceptorPoint(final ClassLoader classLoader) {
Collection<String> pluginNames = getPluginNames();
- Map<String, PluginInterceptorPoint> pointMap = new HashMap<>();
+ Map<String, PluginPointcuts> pointMap = new HashMap<>();
loadPluginDefinitionServices(pluginNames, pointMap, classLoader);
- interceptorPointMap = ImmutableMap.<String, PluginInterceptorPoint>builder().putAll(pointMap).build();
+ interceptorPointMap = ImmutableMap.<String, PluginPointcuts>builder().putAll(pointMap).build();
}
private Collection<String> getPluginNames() {
@@ -97,21 +97,21 @@ public final class AgentPluginLoader implements PluginLoader {
return result;
}
- private void loadPluginDefinitionServices(final Collection<String> pluginNames, final Map<String, PluginInterceptorPoint> pointMap, final ClassLoader classLoader) {
+ private void loadPluginDefinitionServices(final Collection<String> pluginNames, final Map<String, PluginPointcuts> pointMap, final ClassLoader classLoader) {
PluginServiceLoader.newServiceInstances(PluginDefinitionService.class, classLoader)
.stream()
.filter(each -> pluginNames.contains(each.getType()))
.forEach(each -> buildPluginInterceptorPointMap(each, pointMap));
}
- private void buildPluginInterceptorPointMap(final PluginDefinitionService pluginDefinitionService, final Map<String, PluginInterceptorPoint> pointMap) {
+ private void buildPluginInterceptorPointMap(final PluginDefinitionService pluginDefinitionService, final Map<String, PluginPointcuts> pointMap) {
pluginDefinitionService.install(isEnhancedForProxy).forEach(each -> {
String target = each.getTargetClassName();
if (pointMap.containsKey(target)) {
- PluginInterceptorPoint pluginInterceptorPoint = pointMap.get(target);
- pluginInterceptorPoint.getConstructorInterceptorPoints().addAll(each.getConstructorInterceptorPoints());
- pluginInterceptorPoint.getInstanceMethodInterceptorPoints().addAll(each.getInstanceMethodInterceptorPoints());
- pluginInterceptorPoint.getStaticMethodInterceptorPoints().addAll(each.getStaticMethodInterceptorPoints());
+ PluginPointcuts pluginPointcuts = pointMap.get(target);
+ pluginPointcuts.getConstructorPointcuts().addAll(each.getConstructorPointcuts());
+ pluginPointcuts.getInstanceMethodPointcuts().addAll(each.getInstanceMethodPointcuts());
+ pluginPointcuts.getStaticMethodPointcuts().addAll(each.getStaticMethodPointcuts());
} else {
pointMap.put(target, each);
}
@@ -149,8 +149,8 @@ public final class AgentPluginLoader implements PluginLoader {
}
@Override
- public PluginInterceptorPoint loadPluginInterceptorPoint(final TypeDescription typeDescription) {
- return interceptorPointMap.getOrDefault(typeDescription.getTypeName(), PluginInterceptorPoint.createDefault());
+ public PluginPointcuts loadPluginInterceptorPoint(final TypeDescription typeDescription) {
+ return interceptorPointMap.getOrDefault(typeDescription.getTypeName(), PluginPointcuts.createDefault());
}
@Override
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginLoader.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginLoader.java
index 596bab42044..fee7cc2dea2 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginLoader.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginLoader.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.agent.core.plugin;
import net.bytebuddy.description.type.TypeDescription;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
public interface PluginLoader {
@@ -36,7 +36,7 @@ public interface PluginLoader {
* @param typeDescription type description
* @return plugin interceptor point
*/
- PluginInterceptorPoint loadPluginInterceptorPoint(TypeDescription typeDescription);
+ PluginPointcuts loadPluginInterceptorPoint(TypeDescription typeDescription);
/**
* To get or create instance of the advice class. Create new one and caching when it is not exist.
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 136b71b4b2c..5c1ca35634c 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,7 +23,7 @@ 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.api.interceptor.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.api.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.mock.advice.MockConstructorAdvice;
@@ -70,8 +70,8 @@ public final class ShardingSphereTransformerTest {
objectPool.put(MockConstructorAdvice.class.getTypeName(), new MockConstructorAdvice());
objectPool.put(MockInstanceMethodAroundAdvice.class.getTypeName(), new MockInstanceMethodAroundAdvice());
objectPool.put(MockStaticMethodAroundAdvice.class.getTypeName(), new MockStaticMethodAroundAdvice());
- Map<String, PluginInterceptorPoint> interceptorPointMap = new HashMap<>(2, 1);
- PluginInterceptorPoint interceptorPoint = PluginInterceptorPoint.intercept("org.apache.shardingsphere.agent.core.mock.material.Material")
+ Map<String, PluginPointcuts> interceptorPointMap = new HashMap<>(2, 1);
+ PluginPointcuts interceptorPoint = PluginPointcuts.intercept("org.apache.shardingsphere.agent.core.mock.material.Material")
.aroundInstanceMethod(ElementMatchers.named("mock"))
.implement(MockInstanceMethodAroundAdvice.class.getTypeName())
.build()
@@ -83,7 +83,7 @@ public final class ShardingSphereTransformerTest {
.build()
.install();
interceptorPointMap.put(interceptorPoint.getTargetClassName(), interceptorPoint);
- PluginInterceptorPoint interceptorPointInTwice = PluginInterceptorPoint.intercept("org.apache.shardingsphere.agent.core.mock.material.RepeatedAdviceMaterial")
+ PluginPointcuts interceptorPointInTwice = PluginPointcuts.intercept("org.apache.shardingsphere.agent.core.mock.material.RepeatedAdviceMaterial")
.aroundInstanceMethod(ElementMatchers.named("mock"))
.implement(MockInstanceMethodAroundAdvice.class.getTypeName())
.build()
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 b9074165e1c..d0c4634e0fc 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
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.agent.core.plugin.loader;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatchers;
import net.bytebuddy.pool.TypePool;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.api.pointcut.PluginPointcuts;
import org.apache.shardingsphere.agent.core.mock.advice.MockStaticMethodAroundAdvice;
import org.apache.shardingsphere.agent.core.mock.advice.MockConstructorAdvice;
import org.apache.shardingsphere.agent.core.mock.advice.MockInstanceMethodAroundAdvice;
@@ -59,7 +59,7 @@ 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());
- PluginInterceptorPoint interceptorPoint = PluginInterceptorPoint.intercept("org.apache.shardingsphere.agent.core.mock.material.Material")
+ PluginPointcuts interceptorPoint = PluginPointcuts.intercept("org.apache.shardingsphere.agent.core.mock.material.Material")
.aroundInstanceMethod(ElementMatchers.named("mock"))
.implement(MockInstanceMethodAroundAdvice.class.getTypeName())
.build()
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 e9c7dc5cda1..65954618e76 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,7 +18,7 @@
package org.apache.shardingsphere.agent.metrics.prometheus.definition;
import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.api.interceptor.PluginInterceptorPoint.Builder;
+import org.apache.shardingsphere.agent.api.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;