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 9ef847a4dcf Refactor AgentPluginLoader (#22851)
9ef847a4dcf is described below

commit 9ef847a4dcf77c3637c0e7cf60f05efd55fd00be
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Dec 13 17:59:34 2022 +0800

    Refactor AgentPluginLoader (#22851)
---
 .../agent/core/plugin/AgentPluginLoader.java       | 38 +++++++---------------
 1 file changed, 12 insertions(+), 26 deletions(-)

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 a9fc20f346d..2863194ae64 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
@@ -42,7 +42,9 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.jar.JarFile;
+import java.util.stream.Collectors;
 
 /**
  * Agent plugin loader.
@@ -67,7 +69,7 @@ public final class AgentPluginLoader implements PluginLoader {
     public void load() throws IOException {
         loadPluginJars();
         AgentClassLoader.initDefaultPluginClassLoader(pluginJars);
-        
loadAllPluginInterceptorPoint(AgentClassLoader.getDefaultPluginClassloader());
+        pointcuts = 
loadClassPointcuts(AgentClassLoader.getDefaultPluginClassloader());
     }
     
     private void loadPluginJars() throws IOException {
@@ -82,11 +84,16 @@ public final class AgentPluginLoader implements 
PluginLoader {
         PluginJarHolder.setPluginJars(pluginJars);
     }
     
-    private void loadAllPluginInterceptorPoint(final ClassLoader classLoader) {
+    private Map<String, ClassPointcuts> loadClassPointcuts(final ClassLoader 
classLoader) {
+        Map<String, ClassPointcuts> result = new HashMap<>();
         Collection<String> pluginNames = getPluginNames();
-        Map<String, ClassPointcuts> pointMap = new HashMap<>();
-        loadPluginDefinitionServices(pluginNames, pointMap, classLoader);
-        pointcuts = ImmutableMap.<String, 
ClassPointcuts>builder().putAll(pointMap).build();
+        for (PointcutDefinitionService each : 
PluginServiceLoader.newServiceInstances(PointcutDefinitionService.class, 
classLoader)) {
+            if (pluginNames.contains(each.getType())) {
+                result.putAll(
+                        new 
PointcutDefinitionServiceEngine(each).getAllPointcuts(isEnhancedForProxy).stream().collect(Collectors.toMap(ClassPointcuts::getTargetClassName,
 Function.identity())));
+            }
+        }
+        return ImmutableMap.<String, 
ClassPointcuts>builder().putAll(result).build();
     }
     
     private Collection<String> getPluginNames() {
@@ -98,27 +105,6 @@ public final class AgentPluginLoader implements 
PluginLoader {
         return result;
     }
     
-    private void loadPluginDefinitionServices(final Collection<String> 
pluginNames, final Map<String, ClassPointcuts> pointMap, final ClassLoader 
classLoader) {
-        
PluginServiceLoader.newServiceInstances(PointcutDefinitionService.class, 
classLoader)
-                .stream()
-                .filter(each -> pluginNames.contains(each.getType()))
-                .forEach(each -> buildPluginInterceptorPointMap(each, 
pointMap));
-    }
-    
-    private void buildPluginInterceptorPointMap(final 
PointcutDefinitionService pointcutDefinitionService, final Map<String, 
ClassPointcuts> pointMap) {
-        new 
PointcutDefinitionServiceEngine(pointcutDefinitionService).getAllPointcuts(isEnhancedForProxy).forEach(each
 -> {
-            String target = each.getTargetClassName();
-            if (pointMap.containsKey(target)) {
-                ClassPointcuts classPointcuts = pointMap.get(target);
-                
classPointcuts.getConstructorPointcuts().addAll(each.getConstructorPointcuts());
-                
classPointcuts.getInstanceMethodPointcuts().addAll(each.getInstanceMethodPointcuts());
-                
classPointcuts.getStaticMethodPointcuts().addAll(each.getStaticMethodPointcuts());
-            } else {
-                pointMap.put(target, each);
-            }
-        });
-    }
-    
     /**
      * To find all intercepting target classes then to build TypeMatcher.
      *

Reply via email to