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

zhangliang 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 23f1db2f568 Refactor ReadDataSourcesFilter (#36321)
23f1db2f568 is described below

commit 23f1db2f568090b8b3c09ba3e076133b231d5064
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 17 13:40:00 2025 +0800

    Refactor ReadDataSourcesFilter (#36321)
---
 .../StandardReadwriteSplittingDataSourceRouter.java    |  8 ++++++--
 .../route/standard/filter/ReadDataSourcesFilter.java   |  5 +----
 .../{ => type}/DisabledReadDataSourcesFilter.java      |  3 ++-
 ...litting.route.standard.filter.ReadDataSourcesFilter | 18 ------------------
 .../route/ReadwriteSplittingDataSourceRouterTest.java  |  4 ++--
 .../filter/DisabledReadDataSourcesFilterTest.java      |  3 ++-
 6 files changed, 13 insertions(+), 28 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
index 9c4ab1de94e..0ea5ef0c038 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
@@ -17,10 +17,12 @@
 
 package org.apache.shardingsphere.readwritesplitting.route.standard;
 
-import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import 
org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter;
+import 
org.apache.shardingsphere.readwritesplitting.route.standard.filter.type.DisabledReadDataSourcesFilter;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -28,6 +30,8 @@ import java.util.List;
  */
 public final class StandardReadwriteSplittingDataSourceRouter {
     
+    private static final Collection<ReadDataSourcesFilter> FILTERS = 
Collections.singleton(new DisabledReadDataSourcesFilter());
+    
     /**
      * Route to data source.
      *
@@ -40,7 +44,7 @@ public final class StandardReadwriteSplittingDataSourceRouter 
{
     
     private List<String> getFilteredReadDataSources(final 
ReadwriteSplittingDataSourceGroupRule rule) {
         List<String> result = 
rule.getReadwriteSplittingGroup().getReadDataSources();
-        for (ReadDataSourcesFilter each : 
ShardingSphereServiceLoader.getServiceInstances(ReadDataSourcesFilter.class)) {
+        for (ReadDataSourcesFilter each : FILTERS) {
             result = each.filter(rule, result);
         }
         return result;
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
index 8668c6d19d5..60b6a7da31c 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
@@ -17,8 +17,6 @@
 
 package org.apache.shardingsphere.readwritesplitting.route.standard.filter;
 
-import org.apache.shardingsphere.infra.spi.ShardingSphereSPI;
-import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 
 import java.util.List;
@@ -26,8 +24,7 @@ import java.util.List;
 /**
  * Read data sources filter.
  */
-@SingletonSPI
-public interface ReadDataSourcesFilter extends ShardingSphereSPI {
+public interface ReadDataSourcesFilter {
     
     /**
      * Filter replica data sources.
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilter.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/type/DisabledReadDataSourcesFilter.java
similarity index 92%
rename from 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilter.java
rename to 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/type/DisabledReadDataSourcesFilter.java
index 7467b9f4404..f907def62b8 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilter.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/type/DisabledReadDataSourcesFilter.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.readwritesplitting.route.standard.filter;
+package 
org.apache.shardingsphere.readwritesplitting.route.standard.filter.type;
 
+import 
org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 
 import java.util.LinkedList;
diff --git 
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter
 
b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter
deleted file mode 100644
index f5ab693ac77..00000000000
--- 
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.shardingsphere.readwritesplitting.route.standard.filter.DisabledReadDataSourcesFilter
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
index 85fb0806882..e9c578cbe57 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import 
org.apache.shardingsphere.readwritesplitting.route.qualified.QualifiedReadwriteSplittingDataSourceRouter;
-import 
org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
 import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
@@ -66,10 +65,11 @@ class ReadwriteSplittingDataSourceRouterTest {
     
     @Test
     void assertRouteWithStandardRouters() {
+        
when(rule.getDisabledDataSourceNames()).thenReturn(Collections.emptyList());
+        
when(rule.getReadwriteSplittingGroup().getReadDataSources()).thenReturn(Collections.emptyList());
         when(rule.getLoadBalancer().getTargetName(any(), 
any())).thenReturn("standard_ds");
         ReadwriteSplittingDataSourceRouter router = new 
ReadwriteSplittingDataSourceRouter(rule, mock(ConnectionContext.class));
         setQualifiedRouters(router, 
mock(QualifiedReadwriteSplittingDataSourceRouter.class));
-        
when(ShardingSphereServiceLoader.getServiceInstances(ReadDataSourcesFilter.class)).thenReturn(Collections.emptyList());
         assertThat(router.route(sqlStatementContext, hintValueContext), 
is("standard_ds"));
     }
     
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
index a0fb4f425e1..6a826091414 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
@@ -19,8 +19,9 @@ package 
org.apache.shardingsphere.readwritesplitting.route.standard.filter;
 
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.random.RandomLoadBalanceAlgorithm;
 import 
org.apache.shardingsphere.readwritesplitting.config.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.transaction.TransactionalReadQueryStrategy;
+import 
org.apache.shardingsphere.readwritesplitting.route.standard.filter.type.DisabledReadDataSourcesFilter;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
+import 
org.apache.shardingsphere.readwritesplitting.transaction.TransactionalReadQueryStrategy;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 

Reply via email to