This is an automated email from the ASF dual-hosted git repository.

xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new ea85bb5d2 [type: refactor] refactor abstractshenyuplugin#execute 
(#4178)
ea85bb5d2 is described below

commit ea85bb5d23679ddf98171aa196c30e3d8a223934
Author: zhengpeng <[email protected]>
AuthorDate: Wed Nov 16 17:34:00 2022 +0800

    [type: refactor] refactor abstractshenyuplugin#execute (#4178)
    
    * refactor org.apache.shenyu.plugin.base.AbstractShenyuPlugin.execute
    
    * refactor org.apache.shenyu.plugin.base.AbstractShenyuPlugin.execute
    
    * refactor org.apache.shenyu.plugin.base.AbstractShenyuPlugin.execute
    
    * org.apache.shenyu.spi.ExtensionLoader.createExtension log info
    
    * Empty Commit to setup deployments
    
    * Empty Commit to setup deployments
    
    * Empty Commit to setup deployments
    
    * fix
    
    * Empty Commit to setup deployments
    
    * Empty Commit to setup deployments
    
    Co-authored-by: likeguo <[email protected]>
---
 .../shenyu/plugin/base/AbstractShenyuPlugin.java   | 145 ++++++++++-----------
 .../org/apache/shenyu/spi/ExtensionLoader.java     |   2 +-
 2 files changed, 73 insertions(+), 74 deletions(-)

diff --git 
a/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java
 
b/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java
index 5a56c0a28..0f050cb92 100644
--- 
a/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java
+++ 
b/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java
@@ -67,7 +67,7 @@ public abstract class AbstractShenyuPlugin implements 
ShenyuPlugin {
      * @return {@code Mono<Void>} to indicate when request handling is complete
      */
     protected abstract Mono<Void> doExecute(ServerWebExchange exchange, 
ShenyuPluginChain chain, SelectorData selector, RuleData rule);
-    
+
     /**
      * Process the Web request and (optionally) delegate to the next
      * {@code ShenyuPlugin} through the given {@link ShenyuPluginChain}.
@@ -79,76 +79,72 @@ public abstract class AbstractShenyuPlugin implements 
ShenyuPlugin {
     @Override
     public Mono<Void> execute(final ServerWebExchange exchange, final 
ShenyuPluginChain chain) {
         initMatchCacheConfig();
-        String pluginName = named();
+        final String pluginName = named();
         PluginData pluginData = 
BaseDataCache.getInstance().obtainPluginData(pluginName);
-        if (Objects.nonNull(pluginData) && pluginData.getEnabled()) {
-            final String path = exchange.getRequest().getURI().getPath();
-            SelectorData selectorData = 
obtainSelectorDataCacheIfEnabled(exchange);
+        // early exit
+        if (Objects.isNull(pluginData) || !pluginData.getEnabled()) {
+            return chain.execute(exchange);
+        }
+        final String path = exchange.getRequest().getURI().getPath();
+        List<SelectorData> selectors = 
BaseDataCache.getInstance().obtainSelectorData(pluginName);
+        SelectorData selectorData = obtainSelectorDataCacheIfEnabled(path);
+        // handle Selector
+        if (Objects.nonNull(selectorData) && 
StringUtils.isBlank(selectorData.getId())) {
+            return handleSelectorIfNull(pluginName, exchange, chain);
+        }
+        if (Objects.isNull(selectorData)) {
+            if (CollectionUtils.isEmpty(selectors)) {
+                return handleSelectorIfNull(pluginName, exchange, chain);
+            }
+            Pair<Boolean, SelectorData> matchSelectorData = 
matchSelector(exchange, selectors);
+            selectorData = matchSelectorData.getRight();
             if (Objects.isNull(selectorData)) {
-                List<SelectorData> selectors = 
BaseDataCache.getInstance().obtainSelectorData(pluginName);
-                if (CollectionUtils.isEmpty(selectors)) {
-                    return handleSelectorIfNull(pluginName, exchange, chain);
-                }
-                Pair<Boolean, SelectorData> matchSelectorData = 
matchSelector(exchange, selectors);
-                selectorData = matchSelectorData.getRight();
-                if (Objects.isNull(selectorData)) {
-                    if (matchCacheConfig.getSelectorEnabled() && 
matchSelectorData.getLeft()) {
-                        selectorData = new SelectorData();
-                        selectorData.setPluginName(named());
-                        cacheSelectorData(path, selectorData);
-                    }
-                    return handleSelectorIfNull(pluginName, exchange, chain);
-                } else {
-                    if (matchCacheConfig.getSelectorEnabled() && 
matchSelectorData.getLeft()) {
-                        cacheSelectorData(path, selectorData);
-                    }
+                if (matchCacheConfig.getSelectorEnabled() && 
matchSelectorData.getLeft()) {
+                    selectorData = new SelectorData();
+                    selectorData.setPluginName(pluginName);
+                    cacheSelectorData(path, selectorData);
                 }
+                return handleSelectorIfNull(pluginName, exchange, chain);
             } else {
-                if (StringUtils.isBlank(selectorData.getId())) {
-                    return handleSelectorIfNull(pluginName, exchange, chain);
+                if (matchCacheConfig.getSelectorEnabled() && 
matchSelectorData.getLeft()) {
+                    cacheSelectorData(path, selectorData);
                 }
             }
-            selectorLog(selectorData, pluginName);
-            if (Objects.nonNull(selectorData.getContinued()) && 
!selectorData.getContinued()) {
-                // if continued, not match rules
-                return doExecute(exchange, chain, selectorData, 
defaultRuleData(selectorData));
-            }
-            // handle rule
-            RuleData ruleData = obtainRuleDataCacheIfEnabled(exchange);
+        }
+        printLog(selectorData, pluginName);
+        if (Objects.nonNull(selectorData.getContinued()) && 
!selectorData.getContinued()) {
+            // if continued, not match rules
+            return doExecute(exchange, chain, selectorData, 
defaultRuleData(selectorData));
+        }
+        // handle Rule
+        RuleData ruleData = obtainRuleDataCacheIfEnabled(path);
+        List<RuleData> rules = 
BaseDataCache.getInstance().obtainRuleData(selectorData.getId());
+        if (Objects.nonNull(ruleData) && Objects.isNull(ruleData.getId())) {
+            return handleRuleIfNull(pluginName, exchange, chain);
+        }
+        if (CollectionUtils.isEmpty(rules)) {
+            return handleRuleIfNull(pluginName, exchange, chain);
+        }
+        if (selectorData.getType() == SelectorTypeEnum.FULL_FLOW.getCode()) {
+            //get last
+            RuleData rule = rules.get(rules.size() - 1);
+            printLog(rule, pluginName);
+            return doExecute(exchange, chain, selectorData, rule);
+        } else {
+            Pair<Boolean, RuleData> matchRuleData = matchRule(exchange, rules);
+            ruleData = matchRuleData.getRight();
             if (Objects.isNull(ruleData)) {
-                // execute no cache
-                List<RuleData> rules = 
BaseDataCache.getInstance().obtainRuleData(selectorData.getId());
-                if (CollectionUtils.isEmpty(rules)) {
-                    return handleRuleIfNull(pluginName, exchange, chain);
-                }
-                if (selectorData.getType() == 
SelectorTypeEnum.FULL_FLOW.getCode()) {
-                    //get last
-                    RuleData rule = rules.get(rules.size() - 1);
-                    ruleLog(rule, pluginName);
-                    return doExecute(exchange, chain, selectorData, rule);
-                } else {
-                    Pair<Boolean, RuleData> matchRuleData = 
matchRule(exchange, rules);
-                    ruleData = matchRuleData.getRight();
-                    if (Objects.isNull(ruleData)) {
-                        this.cacheRuleData(pluginName, path, matchRuleData);
-                        return handleRuleIfNull(pluginName, exchange, chain);
-                    } else {
-                        // if match success, cache rule.
-                        if (matchCacheConfig.getRuleEnabled() && 
matchRuleData.getLeft()) {
-                            cacheRuleData(path, ruleData);
-                        }
-                    }
-                }
+                this.cacheRuleData(pluginName, path, matchRuleData);
+                return handleRuleIfNull(pluginName, exchange, chain);
             } else {
-                if (Objects.isNull(ruleData.getId())) {
-                    // handle rule not match
-                    return handleRuleIfNull(pluginName, exchange, chain);
+                // if match success, cache rule.
+                if (matchCacheConfig.getRuleEnabled() && 
matchRuleData.getLeft()) {
+                    cacheRuleData(path, ruleData);
                 }
             }
-            ruleLog(ruleData, pluginName);
-            return doExecute(exchange, chain, selectorData, ruleData);
         }
-        return chain.execute(exchange);
+        printLog(ruleData, pluginName);
+        return doExecute(exchange, chain, selectorData, ruleData);
     }
 
     private void initMatchCacheConfig() {
@@ -202,14 +198,14 @@ public abstract class AbstractShenyuPlugin implements 
ShenyuPlugin {
         return matchCacheConfig.getMaxRuleFreeMemory() * 1024 * 1024;
     }
 
-    private SelectorData obtainSelectorDataCacheIfEnabled(final 
ServerWebExchange exchange) {
-        return matchCacheConfig.getSelectorEnabled() ? 
MatchDataCache.getInstance().obtainSelectorData(named(), 
exchange.getRequest().getURI().getPath()) : null;
+    private SelectorData obtainSelectorDataCacheIfEnabled(final String path) {
+        return matchCacheConfig.getSelectorEnabled() ? 
MatchDataCache.getInstance().obtainSelectorData(named(), path) : null;
     }
 
-    private RuleData obtainRuleDataCacheIfEnabled(final ServerWebExchange 
exchange) {
-        return matchCacheConfig.getRuleEnabled() ? 
MatchDataCache.getInstance().obtainRuleData(named(), 
exchange.getRequest().getURI().getPath()) : null;
+    private RuleData obtainRuleDataCacheIfEnabled(final String path) {
+        return matchCacheConfig.getRuleEnabled() ? 
MatchDataCache.getInstance().obtainRuleData(named(), path) : null;
     }
-    
+
     protected RuleData defaultRuleData(final SelectorData selectorData) {
         RuleData ruleData = new RuleData();
         ruleData.setSelectorId(selectorData.getId());
@@ -296,15 +292,18 @@ public abstract class AbstractShenyuPlugin implements 
ShenyuPlugin {
         return ruleData.getEnabled() && 
MatchStrategyFactory.match(ruleData.getMatchMode(), 
ruleData.getConditionDataList(), exchange);
     }
 
-    private void selectorLog(final SelectorData selectorData, final String 
pluginName) {
-        if (selectorData.getLogged()) {
-            LOG.info("{} selector success match , selector name :{}", 
pluginName, selectorData.getName());
+    private void printLog(final Object data, final String pluginName) {
+        if (data instanceof SelectorData) {
+            SelectorData selector = (SelectorData) data;
+            if (selector.getLogged()) {
+                LOG.info("{} selector success match , selector name :{}", 
pluginName, selector.getName());
+            }
         }
-    }
-
-    private void ruleLog(final RuleData ruleData, final String pluginName) {
-        if (ruleData.getLoged()) {
-            LOG.info("{} rule success match , rule name :{}", pluginName, 
ruleData.getName());
+        if (data instanceof RuleData) {
+            RuleData rule = (RuleData) data;
+            if (rule.getLoged()) {
+                LOG.info("{} rule success match , rule name :{}", pluginName, 
rule.getName());
+            }
         }
     }
 }
diff --git 
a/shenyu-spi/src/main/java/org/apache/shenyu/spi/ExtensionLoader.java 
b/shenyu-spi/src/main/java/org/apache/shenyu/spi/ExtensionLoader.java
index 3083aa68e..6299d3ec1 100644
--- a/shenyu-spi/src/main/java/org/apache/shenyu/spi/ExtensionLoader.java
+++ b/shenyu-spi/src/main/java/org/apache/shenyu/spi/ExtensionLoader.java
@@ -194,7 +194,7 @@ public final class ExtensionLoader<T> {
     private void createExtension(final String name, final Holder<Object> 
holder) {
         ClassEntity classEntity = getExtensionClassesEntity().get(name);
         if (Objects.isNull(classEntity)) {
-            throw new IllegalArgumentException("name is error");
+            throw new IllegalArgumentException(name + "name is error");
         }
         Class<?> aClass = classEntity.getClazz();
         Object o = joinInstances.get(aClass);

Reply via email to