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 83b1e9fa8124..6f20bce22276 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 @@ -58,16 +58,16 @@ public abstract class AbstractShenyuPlugin implements ShenyuPlugin { private static final String URI_CONDITION_TYPE = "uri"; private ShenyuConfig.SelectorMatchCache selectorMatchConfig; - + private ShenyuConfig.RuleMatchCache ruleMatchConfig; /** * this is Template Method child has implements your own logic. * * @param exchange exchange the current server exchange {@linkplain ServerWebExchange} - * @param chain chain the current chain {@linkplain ServerWebExchange} + * @param chain chain the current chain {@linkplain ServerWebExchange} * @param selector selector {@linkplain SelectorData} - * @param rule rule {@linkplain RuleData} + * @param rule rule {@linkplain RuleData} * @return {@code Mono} to indicate when request handling is complete */ protected abstract Mono doExecute(ServerWebExchange exchange, ShenyuPluginChain chain, SelectorData selector, RuleData rule); @@ -99,9 +99,11 @@ public Mono execute(final ServerWebExchange exchange, final ShenyuPluginCh if (Objects.nonNull(selectorData) && StringUtils.isBlank(selectorData.getId())) { return handleSelectorIfNull(pluginName, exchange, chain); } - selectorData = defaultMatchSelector(exchange, selectors, path); if (Objects.isNull(selectorData)) { - return handleSelectorIfNull(pluginName, exchange, chain); + selectorData = defaultMatchSelector(exchange, selectors, path); + if (Objects.isNull(selectorData)) { + return handleSelectorIfNull(pluginName, exchange, chain); + } } printLog(selectorData, pluginName); if (!selectorData.getContinued()) { @@ -125,18 +127,20 @@ public Mono execute(final ServerWebExchange exchange, final ShenyuPluginCh if (Objects.nonNull(ruleData) && Objects.isNull(ruleData.getId())) { return handleRuleIfNull(pluginName, exchange, chain); } - ruleData = defaultMatchRule(exchange, rules, path); if (Objects.isNull(ruleData)) { - return handleRuleIfNull(pluginName, exchange, chain); + ruleData = defaultMatchRule(exchange, rules, path); + if (Objects.isNull(ruleData)) { + return handleRuleIfNull(pluginName, exchange, chain); + } } printLog(ruleData, pluginName); return doExecute(exchange, chain, selectorData, ruleData); } - + protected String getRawPath(final ServerWebExchange exchange) { return exchange.getRequest().getURI().getRawPath(); } - + private void initCacheConfig() { if (Objects.isNull(selectorMatchConfig) || Objects.isNull(ruleMatchConfig)) { ShenyuConfig shenyuConfig = SpringBeanUtils.getInstance().getBean(ShenyuConfig.class); @@ -144,11 +148,11 @@ private void initCacheConfig() { ruleMatchConfig = shenyuConfig.getRuleMatchCache(); } } - + private SelectorData obtainSelectorDataCacheIfEnabled(final String path) { return selectorMatchConfig.getCache().getEnabled() ? MatchDataCache.getInstance().obtainSelectorData(named(), path) : null; } - + private RuleData obtainRuleDataCacheIfEnabled(final String path) { return ruleMatchConfig.getCache().getEnabled() ? MatchDataCache.getInstance().obtainRuleData(named(), path) : null; } @@ -172,7 +176,7 @@ private void cacheSelectorData(final String path, final SelectorData selectorDat } } } - + private void cacheRuleData(final String path, final RuleData ruleData) { // if the ruleCache is disabled or rule data is null, not cache rule data. if (Boolean.FALSE.equals(ruleMatchConfig.getCache().getEnabled()) || Objects.isNull(ruleData) @@ -201,25 +205,25 @@ private RuleData defaultRuleData(final SelectorData selectorData) { ruleData.setId(Constants.DEFAULT_RULE); return ruleData; } - + /** * Handle selector if null mono. * * @param pluginName the plugin name - * @param exchange the exchange - * @param chain the chain + * @param exchange the exchange + * @param chain the chain * @return the mono */ protected Mono handleSelectorIfNull(final String pluginName, final ServerWebExchange exchange, final ShenyuPluginChain chain) { return chain.execute(exchange); } - + /** * Handle rule if null mono. * * @param pluginName the plugin name - * @param exchange the exchange - * @param chain the chain + * @param exchange the exchange + * @param chain the chain * @return the mono */ protected Mono handleRuleIfNull(final String pluginName, final ServerWebExchange exchange, final ShenyuPluginChain chain) { @@ -295,7 +299,7 @@ private RuleData manyMatchRule(final List filterRuleData) { private Boolean filterRule(final RuleData ruleData, final ServerWebExchange exchange) { return ruleData.getEnabled() && MatchStrategyFactory.match(ruleData.getMatchMode(), ruleData.getConditionDataList(), exchange); } - + private SelectorData defaultMatchSelector(final ServerWebExchange exchange, final List selectors, final String path) { Pair matchSelectorPair = matchSelector(exchange, selectors); SelectorData selectorData = matchSelectorPair.getRight(); @@ -315,7 +319,7 @@ private SelectorData defaultMatchSelector(final ServerWebExchange exchange, fina return null; } } - + private RuleData defaultMatchRule(final ServerWebExchange exchange, final List rules, final String path) { Pair matchRulePair = matchRule(exchange, rules); RuleData ruleData = matchRulePair.getRight(); @@ -335,25 +339,25 @@ private RuleData defaultMatchRule(final ServerWebExchange exchange, final List