You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/06/29 02:35:35 UTC
[shardingsphere] branch master updated: Refactor readwrite-splitting api (#18629)
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 8cff36538b8 Refactor readwrite-splitting api (#18629)
8cff36538b8 is described below
commit 8cff36538b84347487064f4ba2f34e39421e4d2f
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Wed Jun 29 10:35:28 2022 +0800
Refactor readwrite-splitting api (#18629)
* Refactor readwrite-splitting api for yaml and boot-starter
* Update configuration
* Fix ci
* Fix ci
* Fix ci
* Chande api for example
* Change xml configuration
* fix example
* Fix ci
* Fix ci
* Fix test
* Modify configuration for proxy
* Modify api about rd
* Fixed
* fix example
* Fix ci
* Remove unless code
* Add final
* Add final
---
.../jdbc/java/config/readwrite-splitting.ftl | 7 +-
.../resources/properties/readwrite-splitting.ftl | 5 +-
.../jdbc/resources/xml/readwrite-splitting.ftl | 5 +-
.../template/proxy/feature/readwrite-splitting.ftl | 9 +--
...dingReadwriteSplittingConfigurationPrecise.java | 14 ++--
...ardingReadwriteSplittingConfigurationRange.java | 14 ++--
.../sharding-readwrite-splitting-range.yaml | 18 ++---
.../META-INF/sharding-readwrite-splitting.yaml | 18 ++---
...ication-sharding-readwrite-splitting.properties | 10 ++-
...ication-sharding-readwrite-splitting.properties | 10 ++-
.../application-sharding-readwrite-splitting.xml | 14 ++--
.../application-sharding-readwrite-splitting.xml | 14 ++--
.../LocalReadwriteSplittingConfiguration.java | 12 ++--
...calShardingReadwriteSplittingConfiguration.java | 7 +-
.../zookeeper/local/readwrite-splitting.yaml | 9 +--
...-local-zookeeper-readwrite-splitting.properties | 5 +-
.../local/application-readwrite-splitting.xml | 7 +-
.../config/ReadwriteSplittingConfiguration.java | 12 ++--
.../resources/META-INF/readwrite-splitting.yaml | 9 +--
.../application-readwrite-splitting.properties | 5 +-
.../application-readwrite-splitting.properties | 5 +-
.../META-INF/application-readwrite-splitting.xml | 7 +-
.../META-INF/application-readwrite-splitting.xml | 7 +-
...plication-shadow-readwrite-splitting.properties | 5 +-
.../application-shadow-readwrite-splitting.xml | 7 +-
.../resources/conf/config-readwrite-splitting.yaml | 9 +--
.../src/main/resources/conf/config-write-only.yaml | 9 +--
...dwriteSplittingDataSourceRuleConfiguration.java | 36 ++--------
...icReadwriteSplittingStrategyConfiguration.java} | 22 +++---
...icReadwriteSplittingStrategyConfiguration.java} | 19 +++--
.../ReplicaLoadBalanceAlgorithmFactory.java | 2 +-
...ReadwriteSplittingRuleConfigurationChecker.java | 6 +-
.../rule/ReadwriteSplittingDataSourceRule.java | 2 +-
.../ReadwriteSplittingStrategyFactory.java | 33 ++++-----
...dwriteSplittingDataSourceRuleConfiguration.java | 8 +--
...icReadwriteSplittingStrategyConfiguration.java} | 14 ++--
...mlReadwriteSplittingStrategyConfiguration.java} | 14 ++--
...icReadwriteSplittingStrategyConfiguration.java} | 14 ++--
...eAlgorithmProviderConfigurationYamlSwapper.java | 17 ++++-
...writeSplittingRuleConfigurationYamlSwapper.java | 17 ++++-
...eSplittingStrategyConfigurationYamlSwapper.java | 47 +++++++++++++
...eSplittingStrategyConfigurationYamlSwapper.java | 47 +++++++++++++
...writeSplittingRuleConfigurationCheckerTest.java | 13 +---
...writeSplittingRuleConfigurationCheckerTest.java | 13 +---
.../route/ReadwriteSplittingSQLRouterTest.java | 24 +++----
...teSplittingDataSourceRuleConfigurationTest.java | 45 +++++-------
.../rule/ReadwriteSplittingDataSourceRuleTest.java | 26 +++----
.../rule/ReadwriteSplittingRuleTest.java | 10 +--
...mProvidedReadwriteSplittingRuleBuilderTest.java | 14 ++--
.../builder/ReadwriteSplittingRuleBuilderTest.java | 15 ++--
...orithmProviderConfigurationYamlSwapperTest.java | 25 +++----
...eSplittingRuleConfigurationYamlSwapperTest.java | 38 +++++-----
...amlReadwriteSplittingRuleConfigurationTest.java | 11 +--
.../resources/yaml/readwrite-splitting-rule.yaml | 18 ++---
.../ReadwriteSplittingRuleStatementConverter.java | 28 +++-----
.../ReadwriteSplittingRuleQueryResultSet.java | 16 +++--
...adwriteSplittingRuleStatementConverterTest.java | 30 ++++----
.../ReadwriteSplittingRuleQueryResultSetTest.java | 21 +++---
...ReadwriteSplittingRuleStatementUpdaterTest.java | 11 +--
...ReadwriteSplittingRuleStatementUpdaterTest.java | 11 +--
...ReadwriteSplittingRuleStatementUpdaterTest.java | 13 ++--
.../ReadwriteSplittingSpringBootStarterTest.java | 17 +++--
.../application-readwrite-splitting.properties | 9 ++-
...ReadwriteSplittingRuleBeanDefinitionParser.java | 45 +++++++++---
.../ReadwriteSplittingRuleBeanDefinitionTag.java | 4 --
...ynamicReadwriteSplittingBeanDefinitionTag.java} | 18 ++---
...StaticReadwriteSplittingBeanDefinitionTag.java} | 18 ++---
.../META-INF/namespace/readwrite-splitting.xsd | 24 +++++--
.../ReadwriteSplittingSpringNamespaceTest.java | 12 ++--
.../readwrite-splitting-application-context.xml | 16 ++---
.../config/config-readwrite-splitting.yaml | 8 +--
.../src/test/resources/application.properties | 5 +-
.../resources/spring/included/rules-context.xml | 14 ++--
...iteSplittingRuleConfigurationImportChecker.java | 17 ++---
.../rql/rule/RulesUsedResourceQueryResultSet.java | 12 ++--
.../config/ProxyConfigurationLoaderTest.java | 7 +-
.../swapper/YamlProxyConfigurationSwapperTest.java | 9 +--
.../rql/DatabaseRulesCountResultSetTest.java | 5 +-
.../rql/RulesUsedResourceQueryResultSetTest.java | 12 +---
.../config_loader/config-readwrite-splitting.yaml | 9 +--
.../conf/import/config-readwrite-splitting.yaml | 9 +--
.../conf/swap/config-readwrite-splitting.yaml | 8 +--
.../resources/conf/config-readwrite-splitting.yaml | 18 ++---
...gWithReadwriteSplittingDataSourceWithProps.yaml | 9 +--
...thReadwriteSplittingDataSourceWithoutProps.yaml | 9 +--
.../configWithDataSourceWithProps.yaml | 16 ++---
.../configWithDataSourceWithoutProps.yaml | 16 ++---
.../configWithoutDataSourceWithProps.yaml | 16 ++---
.../configWithoutDataSourceWithoutProps.yaml | 16 ++---
.../src/test/resources/yaml/unit/sharding.yaml | 8 +--
.../config-dbtbl-with-readwrite-splitting.yaml | 80 +++++++++++-----------
.../config-dbtbl-with-readwrite-splitting.yaml | 80 +++++++++++-----------
.../dbtbl_with_readwrite_splitting/rules.yaml | 80 +++++++++++-----------
...dbtbl-with-readwrite-splitting-and-encrypt.yaml | 80 +++++++++++-----------
...dbtbl-with-readwrite-splitting-and-encrypt.yaml | 80 +++++++++++-----------
.../rules.yaml | 80 +++++++++++-----------
.../proxy/conf/mysql/config-empty-rules.yaml | 8 +--
.../proxy/conf/postgresql/config-empty-rules.yaml | 8 +--
.../conf/mysql/config-readwrite-splitting.yaml | 9 +--
.../postgresql/config-readwrite-splitting.yaml | 9 +--
.../env/scenario/readwrite_splitting/rules.yaml | 9 +--
101 files changed, 925 insertions(+), 917 deletions(-)
diff --git a/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/java/config/readwrite-splitting.ftl b/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/java/config/readwrite-splitting.ftl
index dfb04acc70c..0b37a5bbc38 100644
--- a/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/java/config/readwrite-splitting.ftl
+++ b/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/java/config/readwrite-splitting.ftl
@@ -14,12 +14,9 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
+
private ReadwriteSplittingRuleConfiguration createReadwriteSplittingRuleConfiguration() {
- Properties props = new Properties();
- props.setProperty("write-data-source-name", "ds_0");
- props.setProperty("read-data-source-names", "ds_1, ds_2");
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_0", "Static", props, null);
+ "ds_0", new StaticReadwriteSplittingStrategyConfiguration("ds_0", Arrays.asList("ds_1", "ds_2")), null, null);
return new ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceConfig), Collections.emptyMap());
}
diff --git a/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/properties/readwrite-splitting.ftl b/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/properties/readwrite-splitting.ftl
index 91cede3c27b..06b067b2b77 100644
--- a/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/properties/readwrite-splitting.ftl
+++ b/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/properties/readwrite-splitting.ftl
@@ -15,8 +15,7 @@
~ limitations under the License.
-->
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=ds-0
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=ds-1,ds-2
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=ds-0
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=ds-1,ds-2
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=round_robin
spring.shardingsphere.rules.readwrite-splitting.load-balancers.round_robin.type=ROUND_ROBIN
diff --git a/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/xml/readwrite-splitting.ftl b/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/xml/readwrite-splitting.ftl
index 04b3744cbe0..3265b566f13 100644
--- a/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/xml/readwrite-splitting.ftl
+++ b/examples/shardingsphere-example-generator/src/main/resources/template/jdbc/resources/xml/readwrite-splitting.ftl
@@ -19,9 +19,6 @@
<readwrite-splitting:rule id="readwriteSplittingRule">
<readwrite-splitting:data-source-rule id="demo_ds" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">ds_0</prop>
- <prop key="read-data-source-names">ds_1, ds_2</prop>
- </props>
+ <readwrite-splitting:static-strategy id="staticStrategy" write-data-source-name="ds_0" read-data-source-names="ds_1, ds_2"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-example-generator/src/main/resources/template/proxy/feature/readwrite-splitting.ftl b/examples/shardingsphere-example-generator/src/main/resources/template/proxy/feature/readwrite-splitting.ftl
index 0f03c638aae..b97e00e7199 100644
--- a/examples/shardingsphere-example-generator/src/main/resources/template/proxy/feature/readwrite-splitting.ftl
+++ b/examples/shardingsphere-example-generator/src/main/resources/template/proxy/feature/readwrite-splitting.ftl
@@ -17,10 +17,11 @@
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0, read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
loadBalancerName: read_balance
loadBalancers:
read_balance:
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/readwrite/splitting/raw/config/ShardingReadwriteSplittingConfigurationPrecise.java b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shardi [...]
index 6880f87dec7..28491af01a9 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/readwrite/splitting/raw/config/ShardingReadwriteSplittingConfigurationPrecise.java
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/readwrite/splitting/raw/config/ShardingReadwriteSplittingConfigurationPrecise.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.example.core.api.DataSourceUtil;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
@@ -83,16 +84,11 @@ public final class ShardingReadwriteSplittingConfigurationPrecise implements Exa
private static ReadwriteSplittingRuleConfiguration createReadwriteSplittingConfiguration() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration1 = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_0", "Static", getReadwriteProperties(), "");
+ "ds_0", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds_0", Arrays.asList("demo_write_ds_0_read_0", "demo_write_ds_0_read_1")),
+ null, "");
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration2 = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_1", "Static", getReadwriteProperties(), "");
+ "ds_1", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds_1", Arrays.asList("demo_write_ds_1_read_0", "demo_write_ds_1_read_1")),
+ null,"");
return new ReadwriteSplittingRuleConfiguration(Arrays.asList(dataSourceConfiguration1, dataSourceConfiguration2), Collections.emptyMap());
}
-
- private static Properties getReadwriteProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "demo_write_ds_0");
- result.setProperty("read-data-source-names", "demo_write_ds_1_read_0, demo_write_ds_0_read_1");
- return result;
- }
}
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/readwrite/splitting/raw/config/ShardingReadwriteSplittingConfigurationRange.java b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding [...]
index ede99a94401..12deedc6427 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/readwrite/splitting/raw/config/ShardingReadwriteSplittingConfigurationRange.java
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/readwrite/splitting/raw/config/ShardingReadwriteSplittingConfigurationRange.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.example.core.api.DataSourceUtil;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
@@ -83,16 +84,11 @@ public final class ShardingReadwriteSplittingConfigurationRange implements Examp
private static ReadwriteSplittingRuleConfiguration createReadwriteSplittingConfiguration() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration1 = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_0", "Static", getReadWriteProperties(), null);
+ "ds_0", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds_0",
+ Arrays.asList("demo_write_ds_0_read_0", "demo_write_ds_0_read_1")), null, null);
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration2 = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_1", "", getReadWriteProperties(), null);
+ "ds_1", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds_1",
+ Arrays.asList("demo_write_ds_1_read_0", "demo_write_ds_1_read_1")), null, null);
return new ReadwriteSplittingRuleConfiguration(Arrays.asList(dataSourceConfiguration1, dataSourceConfiguration2), Collections.emptyMap());
}
-
- private static Properties getReadWriteProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "demo_write_ds_0");
- result.setProperty("read-data-source-names", "demo_write_ds_0_read_0, demo_write_ds_0_read_1");
- return result;
- }
}
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting-range.yaml b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting-range.yaml
index ac7da130743..d03304fecae 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting-range.yaml
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting-range.yaml
@@ -101,16 +101,18 @@ rules:
- !READWRITE_SPLITTING
dataSources:
ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: write_ds_0_read_0, write_ds_0_read_1
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - write_ds_0_read_0
+ - write_ds_0_read_1
loadBalancerName: roundRobin
ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: write_ds_1_read_0, write_ds_1_read_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - write_ds_1_read_0
+ - write_ds_1_read_1
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting.yaml b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting.yaml
index a30c4600b61..2bf88437c4e 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting.yaml
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/sharding-readwrite-splitting.yaml
@@ -109,16 +109,18 @@ rules:
- !READWRITE_SPLITTING
dataSources:
ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: write_ds_0_read_0, write_ds_0_read_1
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - write_ds_0_read_0
+ - write_ds_0_read_1
loadBalancerName: roundRobin
ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: write_ds_1_read_0, write_ds_1_read_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - write_ds_1_read_0
+ - write_ds_1_read_1
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-sharding-readwrite-splitting.properties b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-sharding-readwrite-splitting.properties
index 72d98cdf4dd..584779137f0 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-sharding-readwrite-splitting.properties
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-sharding-readwrite-splitting.properties
@@ -87,11 +87,9 @@ spring.shardingsphere.rules.sharding.sharding-algorithms.t-order-inline.props.al
spring.shardingsphere.rules.sharding.sharding-algorithms.t-order-item-inline.type=INLINE
spring.shardingsphere.rules.sharding.sharding-algorithms.t-order-item-inline.props.algorithm-expression=t_order_item_$->{order_id % 2}
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.props.write-data-source-name=write-ds-0
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.props.read-data-source-names=write-ds-0-read-0,write-ds-0-read-1
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.props.write-data-source-name=write-ds-1
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.props.read-data-source-names=write-ds-1-read-0,write-ds-1-read-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.static-strategy.write-data-source-name=write-ds-0
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.static-strategy.read-data-source-names=write-ds-0-read-0,write-ds-0-read-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.static-strategy.write-data-source-name=write-ds-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.static-strategy.read-data-source-names=write-ds-1-read-0,write-ds-1-read-1
spring.shardingsphere.props.sql-show=true
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-sharding-readwrite-splitting.properties b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-sharding-readwrite-splitting.properties
index 3893b8e9cde..cfd8d54ce14 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-sharding-readwrite-splitting.properties
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-sharding-readwrite-splitting.properties
@@ -88,9 +88,7 @@ spring.shardingsphere.rules.sharding.sharding-algorithms.t-order-inline.props.al
spring.shardingsphere.rules.sharding.sharding-algorithms.t-order-item-inline.type=INLINE
spring.shardingsphere.rules.sharding.sharding-algorithms.t-order-item-inline.props.algorithm-expression=t_order_item_$->{order_id % 2}
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.props.write-data-source-name=write-ds-0
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.props.read-data-source-names=write-ds-0-read-0, write-ds-0-read-1
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.props.write-data-source-name=write-ds-1
-spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.props.read-data-source-names=write-ds-1-read-0, write-ds-1-read-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.static-strategy.write-data-source-name=write-ds-0
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-0.static-strategy.read-data-source-names=write-ds-0-read-0, write-ds-0-read-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.static-strategy.write-data-source-name=write-ds-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.ds-1.static-strategy.read-data-source-names=write-ds-1-read-0, write-ds-1-read-1
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml
index eda5fd2e028..56a16792129 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml
@@ -147,17 +147,11 @@
</sharding:broadcast-table-rules>
</sharding:rule>
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="demo_readwrite_ds_0" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds_0</prop>
- <prop key="read-data-source-names">demo_write_ds_0_read_0, demo_write_ds_0_read_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_readwrite_ds_0" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="staticStrategyForDs0" write-data-source-name="demo_write_ds_0" read-data-source-names="demo_write_ds_0_read_0, demo_write_ds_0_read_1"/>
</readwrite-splitting:data-source-rule>
- <readwrite-splitting:data-source-rule id="demo_readwrite_ds_1" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds_1</prop>
- <prop key="read-data-source-names">demo_write_ds_1_read_0, demo_write_ds_1_read_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_readwrite_ds_1" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="staticStrategyForDs0" write-data-source-name="demo_write_ds_1" read-data-source-names="demo_write_ds_1_read_0, demo_write_ds_1_read_1"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml
index 1cfdea80478..56f544a869c 100644
--- a/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml
+++ b/examples/shardingsphere-jdbc-example/mixed-feature-example/sharding-readwrite-splitting-example/sharding-readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-sharding-readwrite-splitting.xml
@@ -121,17 +121,11 @@
</sharding:broadcast-table-rules>
</sharding:rule>
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="demo_readwrite_ds_0" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds_0</prop>
- <prop key="read-data-source-names">demo_write_ds_0_read_0, demo_write_ds_0_read_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_readwrite_ds_0" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="StaticStrategyWithDs0" write-data-source-name="demo_write_ds_0" read-data-source-names="demo_write_ds_0_read_0, demo_write_ds_0_read_1"/>
</readwrite-splitting:data-source-rule>
- <readwrite-splitting:data-source-rule id="demo_readwrite_ds_1" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds_1</prop>
- <prop key="read-data-source-names">demo_write_ds_1_read_0, demo_write_ds_1_read_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_readwrite_ds_1" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="StaticStrategyWithDs1" write-data-source-name="demo_write_ds_1" read-data-source-names="demo_write_ds_1_read_0, demo_write_ds_1_read_1"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalReadwriteSplittingConfiguration.java b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalReadwriteSplittingConfiguration.java
index 419fa8f6f42..ac4afe8456e 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalReadwriteSplittingConfiguration.java
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalReadwriteSplittingConfiguration.java
@@ -23,12 +23,14 @@ import org.apache.shardingsphere.example.core.api.DataSourceUtil;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.Arrays;
import java.util.Properties;
public final class LocalReadwriteSplittingConfiguration implements ExampleConfiguration {
@@ -42,18 +44,12 @@ public final class LocalReadwriteSplittingConfiguration implements ExampleConfig
@Override
public DataSource getDataSource() throws SQLException {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new ReadwriteSplittingDataSourceRuleConfiguration(
- "demo_readwrite_splitting_ds", "Static", getReadProperties(), null);
+ "demo_readwrite_splitting_ds", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds",
+ Arrays.asList("demo_read_ds_0", "demo_read_ds_1")), null, null);
ReadwriteSplittingRuleConfiguration ruleConfig = new ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceConfig), Collections.emptyMap());
return ShardingSphereDataSourceFactory.createDataSource(modeConfig, createDataSourceMap(), Collections.singleton(ruleConfig), new Properties());
}
- private Properties getReadProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "demo_write_ds");
- result.setProperty("read-data-source-names", "demo_read_ds_0, demo_read_ds_1");
- return result;
- }
-
private Map<String, DataSource> createDataSourceMap() {
Map<String, DataSource> result = new HashMap<>(3, 1);
result.put("demo_write_ds", DataSourceUtil.createDataSource("demo_write_ds"));
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalShardingReadwriteSplittingConfiguration.java b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalShardingReadwriteSplittingConfigura [...]
index 4f31b2fefc6..aab297956da 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalShardingReadwriteSplittingConfiguration.java
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalShardingReadwriteSplittingConfiguration.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmC
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
@@ -86,9 +87,11 @@ public final class LocalShardingReadwriteSplittingConfiguration implements Examp
private ReadwriteSplittingRuleConfiguration getReadwriteSplittingRuleConfiguration() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration1 = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_0", "Static", getReadWriteProperties("demo_write_ds_0", "demo_write_ds_0_read_0, demo_write_ds_0_read_1"), null);
+ "ds_0", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds_0",
+ Arrays.asList("demo_write_ds_0_read_0", "demo_write_ds_0_read_1")), null,null);
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration2 = new ReadwriteSplittingDataSourceRuleConfiguration(
- "ds_1", "Static", getReadWriteProperties("demo_write_ds_1", "demo_write_ds_1_read_0, demo_write_ds_1_read_1"), null);
+ "ds_1", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds_1",
+ Arrays.asList("demo_write_ds_1_read_0", "demo_write_ds_1_read_1")), null,null);
return new ReadwriteSplittingRuleConfiguration(Arrays.asList(dataSourceConfiguration1, dataSourceConfiguration2), Collections.emptyMap());
}
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/resources/META-INF/zookeeper/local/readwrite-splitting.yaml b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/resources/META-INF/zookeeper/local/readwrite-splitting.yaml
index 47f56aa1fd4..7217851945b 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/resources/META-INF/zookeeper/local/readwrite-splitting.yaml
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/resources/META-INF/zookeeper/local/readwrite-splitting.yaml
@@ -48,10 +48,11 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0, read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
props:
sql-show: true
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-boot-mybatis-example/src/main/resources/application-local-zookeeper-readwrite-splitting.properties b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-boot-mybatis-example/src/main/resources/application-local-zookeeper-readwrite-splitting.properties
index 7962ef54f91..a82cdd43c4d 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-boot-mybatis-example/src/main/resources/application-local-zookeeper-readwrite-splitting.properties
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-boot-mybatis-example/src/main/resources/application-local-zookeeper-readwrite-splitting.properties
@@ -41,8 +41,7 @@ spring.shardingsphere.datasource.read-ds-1.driver-class-name=com.mysql.jdbc.Driv
spring.shardingsphere.datasource.read-ds-1.username=root
spring.shardingsphere.datasource.read-ds-1.password=
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=write-ds
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=read-ds-0,read-ds-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=write-ds
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=read-ds-0,read-ds-1
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=round_robin
spring.shardingsphere.rules.readwrite-splitting.load-balancers.round_robin.type=ROUND_ROBIN
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-namespace-mybatis-example/src/main/resources/META-INF/zookeeper/local/application-readwrite-splitting.xml b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-namespace-mybatis-example/src/main/resources/META-INF/zookeeper/local/application-readwrite-splitting.xml
index baaf4800404..872561ea20b 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-namespace-mybatis-example/src/main/resources/META-INF/zookeeper/local/application-readwrite-splitting.xml
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-spring-namespace-mybatis-example/src/main/resources/META-INF/zookeeper/local/application-readwrite-splitting.xml
@@ -58,11 +58,8 @@
<readwrite-splitting:load-balance-algorithm id="randomStrategy" type="RANDOM" />
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="demo_ds" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds</prop>
- <prop key="read-data-source-names">demo_read_ds_0, demo_read_ds_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_ds" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="staticStrategy" write-data-source-name="demo_write_ds" read-data-source-names="demo_read_ds_0, demo_read_ds_1"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/readwrite/splitting/raw/jdbc/config/ReadwriteSplittingConfiguration.java b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/readwrite/splitting/raw/jdbc/config/ReadwriteSplittingConfi [...]
index c653b3f5880..b221ccd3121 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/readwrite/splitting/raw/jdbc/config/ReadwriteSplittingConfiguration.java
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/readwrite/splitting/raw/jdbc/config/ReadwriteSplittingConfiguration.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.example.core.api.DataSourceUtil;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -30,13 +31,15 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import java.util.Arrays;
public final class ReadwriteSplittingConfiguration implements ExampleConfiguration {
@Override
public DataSource getDataSource() throws SQLException {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new ReadwriteSplittingDataSourceRuleConfiguration(
- "demo_read_query_ds", "Static", getProperties(), "demo_weight_lb");
+ "demo_read_query_ds", new StaticReadwriteSplittingStrategyConfiguration("demo_write_ds",
+ Arrays.asList("demo_read_ds_0", "demo_read_ds_1")), null,"demo_weight_lb");
Properties algorithmProps = new Properties();
algorithmProps.setProperty("demo_read_ds_0", "2");
algorithmProps.setProperty("demo_read_ds_1", "1");
@@ -55,11 +58,4 @@ public final class ReadwriteSplittingConfiguration implements ExampleConfigurati
result.put("demo_read_ds_1", DataSourceUtil.createDataSource("demo_read_ds_1"));
return result;
}
-
- private Properties getProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "demo_write_ds");
- result.setProperty("read-data-source-names", "demo_read_ds_0, demo_read_ds_1");
- return result;
- }
}
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/readwrite-splitting.yaml b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/readwrite-splitting.yaml
index 002d3c0c137..b7330134b6a 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/readwrite-splitting.yaml
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-raw-jdbc-example/src/main/resources/META-INF/readwrite-splitting.yaml
@@ -39,10 +39,11 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0, read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
loadBalancerName: weight_lb
loadBalancers:
weight_lb:
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-readwrite-splitting.properties b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-readwrite-splitting.properties
index b187fded7cc..967243b4549 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-readwrite-splitting.properties
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-jpa-example/src/main/resources/application-readwrite-splitting.properties
@@ -35,8 +35,7 @@ spring.shardingsphere.datasource.read-ds-1.driver-class-name=com.mysql.jdbc.Driv
spring.shardingsphere.datasource.read-ds-1.username=root
spring.shardingsphere.datasource.read-ds-1.password=
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=write-ds
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=read-ds-0,read-ds-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=write-ds
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=read-ds-0,read-ds-1
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=round_robin
spring.shardingsphere.rules.readwrite-splitting.load-balancers.round_robin.type=ROUND_ROBIN
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-readwrite-splitting.properties b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-readwrite-splitting.properties
index b187fded7cc..967243b4549 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-readwrite-splitting.properties
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-boot-mybatis-example/src/main/resources/application-readwrite-splitting.properties
@@ -35,8 +35,7 @@ spring.shardingsphere.datasource.read-ds-1.driver-class-name=com.mysql.jdbc.Driv
spring.shardingsphere.datasource.read-ds-1.username=root
spring.shardingsphere.datasource.read-ds-1.password=
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=write-ds
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=read-ds-0,read-ds-1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=write-ds
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=read-ds-0,read-ds-1
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=round_robin
spring.shardingsphere.rules.readwrite-splitting.load-balancers.round_robin.type=ROUND_ROBIN
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-readwrite-splitting.xml b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-readwrite-splitting.xml
index db448ffb0ba..9c81dae0049 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-readwrite-splitting.xml
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-jpa-example/src/main/resources/META-INF/application-readwrite-splitting.xml
@@ -78,11 +78,8 @@
<readwrite-splitting:load-balance-algorithm id="randomStrategy" type="RANDOM" />
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="demo_ds" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds</prop>
- <prop key="read-data-source-names">demo_read_ds_0, demo_read_ds_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_ds" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="staticStrategy" write-data-source-name="demo_write_ds" read-data-source-names="demo_read_ds_0, demo_read_ds_1"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-readwrite-splitting.xml b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-readwrite-splitting.xml
index c4c57f7223a..1b25591be9e 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-readwrite-splitting.xml
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/readwrite-splitting-example/readwrite-splitting-spring-namespace-mybatis-example/src/main/resources/META-INF/application-readwrite-splitting.xml
@@ -59,11 +59,8 @@
<readwrite-splitting:load-balance-algorithm id="randomStrategy" type="RANDOM" />
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="demo_ds" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">demo_write_ds</prop>
- <prop key="read-data-source-names">demo_read_ds_0, demo_read_ds_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_ds" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="staticStrategy" write-data-source-name="demo_write_ds" read-data-source-names="demo_read_ds_0, demo_read_ds_1"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-boot-mybatis-example/src/main/resources/application-shadow-readwrite-splitting.properties b/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-boot-mybatis-example/src/main/resources/application-shadow-readwrite-splitting.properties
index 54f041df4f5..4adac72e260 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-boot-mybatis-example/src/main/resources/application-shadow-readwrite-splitting.properties
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-boot-mybatis-example/src/main/resources/application-shadow-readwrite-splitting.properties
@@ -41,9 +41,8 @@ spring.shardingsphere.datasource.shadow-read-ds.driver-class-name=com.mysql.jdbc
spring.shardingsphere.datasource.shadow-read-ds.username=root
spring.shardingsphere.datasource.shadow-read-ds.password=
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=shadow-data-source-write
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=shadow-data-source-read
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=shadow-data-source-write
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=shadow-data-source-read
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=round_robin
spring.shardingsphere.rules.readwrite-splitting.load-balancers.round_robin.type=ROUND_ROBIN
diff --git a/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-namespace-mybatis-example/src/main/resources/META-INF/application-shadow-readwrite-splitting.xml b/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-namespace-mybatis-example/src/main/resources/META-INF/application-shadow-readwrite-splitting.xml
index a4bcce38fa2..f0b064f7433 100644
--- a/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-namespace-mybatis-example/src/main/resources/META-INF/application-shadow-readwrite-splitting.xml
+++ b/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-spring-namespace-mybatis-example/src/main/resources/META-INF/application-shadow-readwrite-splitting.xml
@@ -68,11 +68,8 @@
<readwrite-splitting:load-balance-algorithm id="randomStrategy" type="RANDOM" />
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="demo_ds" type="Static" load-balance-algorithm-ref="randomStrategy">
- <props>
- <prop key="write-data-source-name">write_ds</prop>
- <prop key="read-data-source-names">read_ds</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="demo_ds" load-balance-algorithm-ref="randomStrategy">
+ <readwrite-splitting:static-strategy id="staticStrategy" write-data-source-name="write-ds" read-data-source-names="read-ds"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/config-readwrite-splitting.yaml b/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/config-readwrite-splitting.yaml
index 604f0ce3f29..72dc1ff8ed3 100644
--- a/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/config-readwrite-splitting.yaml
+++ b/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/config-readwrite-splitting.yaml
@@ -57,7 +57,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0, read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
diff --git a/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/config-write-only.yaml b/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/config-write-only.yaml
index 79b385f78da..7406fa8f2d5 100644
--- a/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/config-write-only.yaml
+++ b/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/config-write-only.yaml
@@ -50,7 +50,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0, read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java
index 2aa8dde81a6..dd80c2df78f 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java
@@ -19,9 +19,8 @@ package org.apache.shardingsphere.readwritesplitting.api.rule;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-
-import java.util.Optional;
-import java.util.Properties;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
/**
* Readwrite-splitting data source rule configuration.
@@ -32,36 +31,9 @@ public final class ReadwriteSplittingDataSourceRuleConfiguration {
private final String name;
- private final String type;
+ private final StaticReadwriteSplittingStrategyConfiguration staticStrategy;
- private final Properties props;
+ private final DynamicReadwriteSplittingStrategyConfiguration dynamicStrategy;
private final String loadBalancerName;
-
- /**
- * Get auto aware data source name.
- *
- * @return auto aware data source name
- */
- public Optional<String> getAutoAwareDataSourceName() {
- return Optional.ofNullable(props.getProperty("auto-aware-data-source-name"));
- }
-
- /**
- * Get write data source name.
- *
- * @return write data source name
- */
- public Optional<String> getWriteDataSourceName() {
- return Optional.ofNullable(props.getProperty("write-data-source-name"));
- }
-
- /**
- * Get read data source names.
- *
- * @return read data source names
- */
- public Optional<String> getReadDataSourceNames() {
- return Optional.ofNullable(props.getProperty("read-data-source-names"));
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/strategy/DynamicReadwriteSplittingStrategyConfiguration.java
similarity index 57%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/strategy/DynamicReadwriteSplittingStrategyConfiguration.java
index 8f50aadcddb..4f6664ad8c1 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/strategy/DynamicReadwriteSplittingStrategyConfiguration.java
@@ -15,24 +15,24 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.yaml.config.rule;
+package org.apache.shardingsphere.readwritesplitting.api.strategy;
import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.infra.yaml.config.pojo.YamlConfiguration;
-
-import java.util.Properties;
+import lombok.RequiredArgsConstructor;
/**
- * Readwrite-splitting data source rule configuration for YAML.
+ * Dynamic Readwrite-splitting strategy configuration.
*/
+@RequiredArgsConstructor
@Getter
-@Setter
-public final class YamlReadwriteSplittingDataSourceRuleConfiguration implements YamlConfiguration {
+public final class DynamicReadwriteSplittingStrategyConfiguration {
- private String type;
+ private final String autoAwareDataSourceName;
- private Properties props;
+ private String writeDataSourceQueryEnabled;
- private String loadBalancerName;
+ public DynamicReadwriteSplittingStrategyConfiguration(final String autoAwareDataSourceName, final String writeDataSourceQueryEnabled) {
+ this.autoAwareDataSourceName = autoAwareDataSourceName;
+ this.writeDataSourceQueryEnabled = writeDataSourceQueryEnabled;
+ }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/strategy/StaticReadwriteSplittingStrategyConfiguration.java
similarity index 64%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/strategy/StaticReadwriteSplittingStrategyConfiguration.java
index 8f50aadcddb..1905f91afee 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/strategy/StaticReadwriteSplittingStrategyConfiguration.java
@@ -15,24 +15,21 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.yaml.config.rule;
+package org.apache.shardingsphere.readwritesplitting.api.strategy;
import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.infra.yaml.config.pojo.YamlConfiguration;
+import lombok.RequiredArgsConstructor;
-import java.util.Properties;
+import java.util.List;
/**
- * Readwrite-splitting data source rule configuration for YAML.
+ * Static Readwrite-splitting strategy configuration.
*/
+@RequiredArgsConstructor
@Getter
-@Setter
-public final class YamlReadwriteSplittingDataSourceRuleConfiguration implements YamlConfiguration {
+public final class StaticReadwriteSplittingStrategyConfiguration {
- private String type;
+ private final String writeDataSourceName;
- private Properties props;
-
- private String loadBalancerName;
+ private final List<String> readDataSourceNames;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/factory/ReplicaLoadBalanceAlgorithmFactory.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/factory/ReplicaLoadBalanceAlgorithmFactory.java
index ffc61df1bed..e2e2011de07 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/factory/ReplicaLoadBalanceAlgorithmFactory.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-api/src/main/java/org/apache/shardingsphere/readwritesplitting/factory/ReplicaLoadBalanceAlgorithmFactory.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.spi.type.required.RequiredSPIRegistry;
import org.apache.shardingsphere.spi.type.typed.TypedSPIRegistry;
/**
- * Replica load-balance algorithm factory.
+ * Read query load-balance algorithm factory.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ReplicaLoadBalanceAlgorithmFactory {
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/AbstractReadwriteSplittingRuleConfigurationChecker.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/AbstractReadwriteSplittingRuleConfigurationChecker.java
index 2fea469738f..7892ef77db4 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/AbstractReadwriteSplittingRuleConfigurationChecker.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/AbstractReadwriteSplittingRuleConfigurationChecker.java
@@ -37,10 +37,8 @@ public abstract class AbstractReadwriteSplittingRuleConfigurationChecker<T exten
}
private void checkDataSources(final String databaseName, final Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources) {
- dataSources.forEach(each -> {
- Preconditions.checkState(!each.getType().isEmpty(), "No available readwrite-splitting rule configuration in database `%s`.", databaseName);
- Preconditions.checkState(!each.getProps().isEmpty(), "No available readwrite-splitting rule configuration in database `%s`.", databaseName);
- });
+ dataSources.forEach(each -> Preconditions.checkState(null != each.getStaticStrategy() || null != each.getDynamicStrategy(),
+ "No available readwrite-splitting rule configuration in database `%s`.", databaseName));
}
protected abstract Collection<ReadwriteSplittingDataSourceRuleConfiguration> getDataSources(T config);
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
index 40e786786d4..74aa7c6c7b7 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
@@ -51,7 +51,7 @@ public final class ReadwriteSplittingDataSourceRule {
Preconditions.checkArgument(!Strings.isNullOrEmpty(config.getName()), "Name is required.");
name = config.getName();
this.loadBalancer = loadBalancer;
- readwriteSplittingStrategy = ReadwriteSplittingStrategyFactory.newInstance(config.getType(), config.getProps());
+ readwriteSplittingStrategy = ReadwriteSplittingStrategyFactory.newInstance(config);
}
/**
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java
index 26e44c296f8..61bd768067e 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java
@@ -18,18 +18,18 @@
package org.apache.shardingsphere.readwritesplitting.strategy;
import com.google.common.base.Preconditions;
-import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.datasource.strategy.DynamicDataSourceStrategy;
import org.apache.shardingsphere.infra.datasource.strategy.DynamicDataSourceStrategyFactory;
+import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.strategy.type.DynamicReadwriteSplittingStrategy;
import org.apache.shardingsphere.readwritesplitting.strategy.type.StaticReadwriteSplittingStrategy;
-import java.util.List;
import java.util.Optional;
-import java.util.Properties;
/**
* Readwrite splitting strategy factory.
@@ -40,28 +40,25 @@ public final class ReadwriteSplittingStrategyFactory {
/**
* Create new instance of readwrite splitting strategy.
*
- * @param type type of readwrite splitting strategy
- * @param props properties of readwrite splitting strategy
+ * @param readwriteSplittingConfig readwrite-splitting rule config
* @return created instance
*/
- public static ReadwriteSplittingStrategy newInstance(final String type, final Properties props) {
- return "STATIC".equalsIgnoreCase(type) ? createStaticReadwriteSplittingStrategy(props) : createDynamicReadwriteSplittingStrategy(props);
+ public static ReadwriteSplittingStrategy newInstance(final ReadwriteSplittingDataSourceRuleConfiguration readwriteSplittingConfig) {
+ return null != readwriteSplittingConfig.getStaticStrategy() ? createStaticReadwriteSplittingStrategy(readwriteSplittingConfig.getStaticStrategy())
+ : createDynamicReadwriteSplittingStrategy(readwriteSplittingConfig.getDynamicStrategy());
}
- private static StaticReadwriteSplittingStrategy createStaticReadwriteSplittingStrategy(final Properties props) {
- String writeDataSourceName = props.getProperty("write-data-source-name");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(writeDataSourceName), "Write data source name is required.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(props.getProperty("read-data-source-names")), "Read data source names are required.");
- List<String> readDataSourceNames = Splitter.on(",").trimResults().splitToList(props.getProperty("read-data-source-names"));
- return new StaticReadwriteSplittingStrategy(writeDataSourceName, readDataSourceNames);
+ private static StaticReadwriteSplittingStrategy createStaticReadwriteSplittingStrategy(final StaticReadwriteSplittingStrategyConfiguration staticConfig) {
+ Preconditions.checkArgument(!Strings.isNullOrEmpty(staticConfig.getWriteDataSourceName()), "Write data source name is required.");
+ Preconditions.checkArgument(!staticConfig.getReadDataSourceNames().isEmpty(), "Read data source names are required.");
+ return new StaticReadwriteSplittingStrategy(staticConfig.getWriteDataSourceName(), staticConfig.getReadDataSourceNames());
}
- private static DynamicReadwriteSplittingStrategy createDynamicReadwriteSplittingStrategy(final Properties props) {
- String autoAwareDataSourceName = props.getProperty("auto-aware-data-source-name");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(autoAwareDataSourceName), "Auto aware data source name is required.");
+ private static DynamicReadwriteSplittingStrategy createDynamicReadwriteSplittingStrategy(final DynamicReadwriteSplittingStrategyConfiguration dynamicConfig) {
+ Preconditions.checkArgument(!Strings.isNullOrEmpty(dynamicConfig.getAutoAwareDataSourceName()), "Auto aware data source name is required.");
Optional<DynamicDataSourceStrategy> dynamicDataSourceStrategy = DynamicDataSourceStrategyFactory.findInstance();
Preconditions.checkArgument(dynamicDataSourceStrategy.isPresent(), "Dynamic data source strategy is required.");
- boolean allowWriteDataSourceQuery = Boolean.parseBoolean(props.getOrDefault("write-data-source-query-enabled", String.valueOf(Boolean.TRUE)).toString());
- return new DynamicReadwriteSplittingStrategy(autoAwareDataSourceName, allowWriteDataSourceQuery, dynamicDataSourceStrategy.get());
+ boolean allowWriteDataSourceQuery = Strings.isNullOrEmpty(dynamicConfig.getWriteDataSourceQueryEnabled()) ? Boolean.TRUE : Boolean.parseBoolean(dynamicConfig.getWriteDataSourceQueryEnabled());
+ return new DynamicReadwriteSplittingStrategy(dynamicConfig.getAutoAwareDataSourceName(), allowWriteDataSourceQuery, dynamicDataSourceStrategy.get());
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
index 8f50aadcddb..15c3371a9f0 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.readwritesplitting.yaml.config.rule;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlConfiguration;
-
-import java.util.Properties;
+import org.apache.shardingsphere.readwritesplitting.yaml.config.strategy.YamlDynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.config.strategy.YamlStaticReadwriteSplittingStrategyConfiguration;
/**
* Readwrite-splitting data source rule configuration for YAML.
@@ -30,9 +30,9 @@ import java.util.Properties;
@Setter
public final class YamlReadwriteSplittingDataSourceRuleConfiguration implements YamlConfiguration {
- private String type;
+ private YamlStaticReadwriteSplittingStrategyConfiguration staticStrategy;
- private Properties props;
+ private YamlDynamicReadwriteSplittingStrategyConfiguration dynamicStrategy;
private String loadBalancerName;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlDynamicReadwriteSplittingStrategyConfiguration.java
similarity index 77%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlDynamicReadwriteSplittingStrategyConfiguration.java
index 8f50aadcddb..95ff886881b 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlDynamicReadwriteSplittingStrategyConfiguration.java
@@ -15,24 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.yaml.config.rule;
+package org.apache.shardingsphere.readwritesplitting.yaml.config.strategy;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlConfiguration;
-import java.util.Properties;
-
/**
- * Readwrite-splitting data source rule configuration for YAML.
+ * Dynamic Readwrite-splitting strategy configuration for YAML.
*/
@Getter
@Setter
-public final class YamlReadwriteSplittingDataSourceRuleConfiguration implements YamlConfiguration {
-
- private String type;
+public final class YamlDynamicReadwriteSplittingStrategyConfiguration implements YamlConfiguration {
- private Properties props;
+ private String autoAwareDataSourceName;
- private String loadBalancerName;
+ private String writeDataSourceQueryEnabled;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlReadwriteSplittingStrategyConfiguration.java
similarity index 76%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlReadwriteSplittingStrategyConfiguration.java
index 8f50aadcddb..0b9bf269f0d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlReadwriteSplittingStrategyConfiguration.java
@@ -15,24 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.yaml.config.rule;
+package org.apache.shardingsphere.readwritesplitting.yaml.config.strategy;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlConfiguration;
-import java.util.Properties;
-
/**
- * Readwrite-splitting data source rule configuration for YAML.
+ * Readwrite-splitting strategy configuration for YAML.
*/
@Getter
@Setter
-public final class YamlReadwriteSplittingDataSourceRuleConfiguration implements YamlConfiguration {
-
- private String type;
+public final class YamlReadwriteSplittingStrategyConfiguration implements YamlConfiguration {
- private Properties props;
+ private YamlStaticReadwriteSplittingStrategyConfiguration staticStrategy;
- private String loadBalancerName;
+ private YamlDynamicReadwriteSplittingStrategyConfiguration dynamicStrategy;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlStaticReadwriteSplittingStrategyConfiguration.java
similarity index 80%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlStaticReadwriteSplittingStrategyConfiguration.java
index 8f50aadcddb..283cbccb413 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/rule/YamlReadwriteSplittingDataSourceRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/config/strategy/YamlStaticReadwriteSplittingStrategyConfiguration.java
@@ -15,24 +15,22 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.yaml.config.rule;
+package org.apache.shardingsphere.readwritesplitting.yaml.config.strategy;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlConfiguration;
-import java.util.Properties;
+import java.util.List;
/**
- * Readwrite-splitting data source rule configuration for YAML.
+ * Static Readwrite-splitting strategy configuration for YAML.
*/
@Getter
@Setter
-public final class YamlReadwriteSplittingDataSourceRuleConfiguration implements YamlConfiguration {
+public final class YamlStaticReadwriteSplittingStrategyConfiguration implements YamlConfiguration {
- private String type;
+ private String writeDataSourceName;
- private Properties props;
-
- private String loadBalancerName;
+ private List<String> readDataSourceNames;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapper.java
index 54d8de70842..5685fb46ec4 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapper.java
@@ -24,6 +24,8 @@ import org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwri
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapper;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.swapper.strategy.DynamicReadwriteSplittingStrategyConfigurationYamlSwapper;
+import org.apache.shardingsphere.readwritesplitting.yaml.swapper.strategy.StaticReadwriteSplittingStrategyConfigurationYamlSwapper;
import java.util.Collection;
import java.util.LinkedHashMap;
@@ -38,6 +40,10 @@ public final class ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapp
implements
YamlRuleConfigurationSwapper<YamlReadwriteSplittingRuleConfiguration, AlgorithmProvidedReadwriteSplittingRuleConfiguration> {
+ private final StaticReadwriteSplittingStrategyConfigurationYamlSwapper staticReadwriteSplittingYamlSwapper = new StaticReadwriteSplittingStrategyConfigurationYamlSwapper();
+
+ private final DynamicReadwriteSplittingStrategyConfigurationYamlSwapper dynamicReadwriteSplittingYamlSwapper = new DynamicReadwriteSplittingStrategyConfigurationYamlSwapper();
+
@Override
public YamlReadwriteSplittingRuleConfiguration swapToYamlConfiguration(final AlgorithmProvidedReadwriteSplittingRuleConfiguration data) {
YamlReadwriteSplittingRuleConfiguration result = new YamlReadwriteSplittingRuleConfiguration();
@@ -51,8 +57,12 @@ public final class ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapp
private YamlReadwriteSplittingDataSourceRuleConfiguration swapToYamlConfiguration(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig) {
YamlReadwriteSplittingDataSourceRuleConfiguration result = new YamlReadwriteSplittingDataSourceRuleConfiguration();
- result.setType(dataSourceRuleConfig.getType());
- result.setProps(dataSourceRuleConfig.getProps());
+ if (null != dataSourceRuleConfig.getStaticStrategy()) {
+ result.setStaticStrategy(staticReadwriteSplittingYamlSwapper.swapToYamlConfiguration(dataSourceRuleConfig.getStaticStrategy()));
+ }
+ if (null != dataSourceRuleConfig.getDynamicStrategy()) {
+ result.setDynamicStrategy(dynamicReadwriteSplittingYamlSwapper.swapToYamlConfiguration(dataSourceRuleConfig.getDynamicStrategy()));
+ }
result.setLoadBalancerName(dataSourceRuleConfig.getLoadBalancerName());
return result;
}
@@ -69,7 +79,8 @@ public final class ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapp
}
private ReadwriteSplittingDataSourceRuleConfiguration swapToObject(final String name, final YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) {
- return new ReadwriteSplittingDataSourceRuleConfiguration(name, yamlDataSourceRuleConfig.getType(), yamlDataSourceRuleConfig.getProps(), yamlDataSourceRuleConfig.getLoadBalancerName());
+ return new ReadwriteSplittingDataSourceRuleConfiguration(name, staticReadwriteSplittingYamlSwapper.swapToObject(yamlDataSourceRuleConfig.getStaticStrategy()),
+ dynamicReadwriteSplittingYamlSwapper.swapToObject(yamlDataSourceRuleConfig.getDynamicStrategy()), yamlDataSourceRuleConfig.getLoadBalancerName());
}
@Override
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleConfigurationYamlSwapper.java
index b077bced3fe..e3b754030ba 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/ReadwriteSplittingRuleConfigurationYamlSwapper.java
@@ -25,6 +25,8 @@ import org.apache.shardingsphere.infra.yaml.config.swapper.algorithm.ShardingSph
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.swapper.strategy.DynamicReadwriteSplittingStrategyConfigurationYamlSwapper;
+import org.apache.shardingsphere.readwritesplitting.yaml.swapper.strategy.StaticReadwriteSplittingStrategyConfigurationYamlSwapper;
import java.util.Collection;
import java.util.LinkedHashMap;
@@ -40,6 +42,10 @@ public final class ReadwriteSplittingRuleConfigurationYamlSwapper
implements
YamlRuleConfigurationSwapper<YamlReadwriteSplittingRuleConfiguration, ReadwriteSplittingRuleConfiguration> {
+ private final StaticReadwriteSplittingStrategyConfigurationYamlSwapper staticReadwriteSplittingYamlSwapper = new StaticReadwriteSplittingStrategyConfigurationYamlSwapper();
+
+ private final DynamicReadwriteSplittingStrategyConfigurationYamlSwapper dynamicReadwriteSplittingYamlSwapper = new DynamicReadwriteSplittingStrategyConfigurationYamlSwapper();
+
private final ShardingSphereAlgorithmConfigurationYamlSwapper algorithmSwapper = new ShardingSphereAlgorithmConfigurationYamlSwapper();
@Override
@@ -55,8 +61,12 @@ public final class ReadwriteSplittingRuleConfigurationYamlSwapper
private YamlReadwriteSplittingDataSourceRuleConfiguration swapToYamlConfiguration(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig) {
YamlReadwriteSplittingDataSourceRuleConfiguration result = new YamlReadwriteSplittingDataSourceRuleConfiguration();
- result.setType(dataSourceRuleConfig.getType());
- result.setProps(dataSourceRuleConfig.getProps());
+ if (null != dataSourceRuleConfig.getStaticStrategy()) {
+ result.setStaticStrategy(staticReadwriteSplittingYamlSwapper.swapToYamlConfiguration(dataSourceRuleConfig.getStaticStrategy()));
+ }
+ if (null != dataSourceRuleConfig.getDynamicStrategy()) {
+ result.setDynamicStrategy(dynamicReadwriteSplittingYamlSwapper.swapToYamlConfiguration(dataSourceRuleConfig.getDynamicStrategy()));
+ }
result.setLoadBalancerName(dataSourceRuleConfig.getLoadBalancerName());
return result;
}
@@ -75,7 +85,8 @@ public final class ReadwriteSplittingRuleConfigurationYamlSwapper
}
private ReadwriteSplittingDataSourceRuleConfiguration swapToObject(final String name, final YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) {
- return new ReadwriteSplittingDataSourceRuleConfiguration(name, yamlDataSourceRuleConfig.getType(), yamlDataSourceRuleConfig.getProps(), yamlDataSourceRuleConfig.getLoadBalancerName());
+ return new ReadwriteSplittingDataSourceRuleConfiguration(name, staticReadwriteSplittingYamlSwapper.swapToObject(yamlDataSourceRuleConfig.getStaticStrategy()),
+ dynamicReadwriteSplittingYamlSwapper.swapToObject(yamlDataSourceRuleConfig.getDynamicStrategy()), yamlDataSourceRuleConfig.getLoadBalancerName());
}
@Override
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/strategy/DynamicReadwriteSplittingStrategyConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/strategy/DynamicReadwriteSplittingStrategyConfigurationYamlSwapper.java
new file mode 100644
index 00000000000..f852d23026a
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/strategy/DynamicReadwriteSplittingStrategyConfigurationYamlSwapper.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+package org.apache.shardingsphere.readwritesplitting.yaml.swapper.strategy;
+
+import org.apache.shardingsphere.infra.yaml.config.swapper.YamlConfigurationSwapper;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.config.strategy.YamlDynamicReadwriteSplittingStrategyConfiguration;
+
+/**
+ * Dynamic Readwrite-splitting strategy configuration YAML swapper.
+ */
+public final class DynamicReadwriteSplittingStrategyConfigurationYamlSwapper
+ implements
+ YamlConfigurationSwapper<YamlDynamicReadwriteSplittingStrategyConfiguration, DynamicReadwriteSplittingStrategyConfiguration> {
+
+ @Override
+ public YamlDynamicReadwriteSplittingStrategyConfiguration swapToYamlConfiguration(final DynamicReadwriteSplittingStrategyConfiguration config) {
+ YamlDynamicReadwriteSplittingStrategyConfiguration result = new YamlDynamicReadwriteSplittingStrategyConfiguration();
+ result.setAutoAwareDataSourceName(config.getAutoAwareDataSourceName());
+ result.setWriteDataSourceQueryEnabled(config.getWriteDataSourceQueryEnabled());
+ return result;
+ }
+
+ @Override
+ public DynamicReadwriteSplittingStrategyConfiguration swapToObject(final YamlDynamicReadwriteSplittingStrategyConfiguration config) {
+ DynamicReadwriteSplittingStrategyConfiguration result = null;
+ if (null != config) {
+ result = new DynamicReadwriteSplittingStrategyConfiguration(config.getAutoAwareDataSourceName(), config.getWriteDataSourceQueryEnabled());
+ }
+ return result;
+ }
+}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/strategy/StaticReadwriteSplittingStrategyConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/strategy/StaticReadwriteSplittingStrategyConfigurationYamlSwapper.java
new file mode 100644
index 00000000000..820bd75d1c7
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/strategy/StaticReadwriteSplittingStrategyConfigurationYamlSwapper.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+package org.apache.shardingsphere.readwritesplitting.yaml.swapper.strategy;
+
+import org.apache.shardingsphere.infra.yaml.config.swapper.YamlConfigurationSwapper;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.config.strategy.YamlStaticReadwriteSplittingStrategyConfiguration;
+
+/**
+ * Static Readwrite-splitting strategy configuration YAML swapper.
+ */
+public final class StaticReadwriteSplittingStrategyConfigurationYamlSwapper
+ implements
+ YamlConfigurationSwapper<YamlStaticReadwriteSplittingStrategyConfiguration, StaticReadwriteSplittingStrategyConfiguration> {
+
+ @Override
+ public YamlStaticReadwriteSplittingStrategyConfiguration swapToYamlConfiguration(final StaticReadwriteSplittingStrategyConfiguration config) {
+ YamlStaticReadwriteSplittingStrategyConfiguration result = new YamlStaticReadwriteSplittingStrategyConfiguration();
+ result.setWriteDataSourceName(config.getWriteDataSourceName());
+ result.setReadDataSourceNames(config.getReadDataSourceNames());
+ return result;
+ }
+
+ @Override
+ public StaticReadwriteSplittingStrategyConfiguration swapToObject(final YamlStaticReadwriteSplittingStrategyConfiguration yamlConfig) {
+ StaticReadwriteSplittingStrategyConfiguration result = null;
+ if (null != yamlConfig) {
+ result = new StaticReadwriteSplittingStrategyConfiguration(yamlConfig.getWriteDataSourceName(), yamlConfig.getReadDataSourceNames());
+ }
+ return result;
+ }
+}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTest.java
index 82fc8fb70e4..54a81ad7686 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTest.java
@@ -21,11 +21,11 @@ import org.apache.shardingsphere.infra.config.checker.RuleConfigurationChecker;
import org.apache.shardingsphere.infra.config.checker.RuleConfigurationCheckerFactory;
import org.apache.shardingsphere.readwritesplitting.algorithm.config.AlgorithmProvidedReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
import org.junit.Test;
import java.util.Collections;
import java.util.Optional;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
@@ -48,18 +48,11 @@ public final class AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTe
private AlgorithmProvidedReadwriteSplittingRuleConfiguration createValidConfiguration() {
AlgorithmProvidedReadwriteSplittingRuleConfiguration result = mock(AlgorithmProvidedReadwriteSplittingRuleConfiguration.class);
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
- when(dataSourceConfig.getType()).thenReturn("Dynamic");
- when(dataSourceConfig.getProps()).thenReturn(getProperties());
+ when(dataSourceConfig.getDynamicStrategy()).thenReturn(new DynamicReadwriteSplittingStrategyConfiguration("ds0"));
when(result.getDataSources()).thenReturn(Collections.singleton(dataSourceConfig));
return result;
}
- private Properties getProperties() {
- Properties result = new Properties();
- result.setProperty("auto-aware-data-source-name", "ds0");
- return result;
- }
-
@SuppressWarnings({"rawtypes", "unchecked"})
@Test(expected = IllegalStateException.class)
public void assertInValidCheck() {
@@ -73,8 +66,6 @@ public final class AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTe
private AlgorithmProvidedReadwriteSplittingRuleConfiguration createInvalidConfiguration() {
AlgorithmProvidedReadwriteSplittingRuleConfiguration result = mock(AlgorithmProvidedReadwriteSplittingRuleConfiguration.class);
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
- when(dataSourceConfig.getType()).thenReturn("Dynamic");
- when(dataSourceConfig.getProps()).thenReturn(new Properties());
when(result.getDataSources()).thenReturn(Collections.singleton(dataSourceConfig));
return result;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
index 88f2a78da2c..280b30e8a28 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
@@ -21,11 +21,11 @@ import org.apache.shardingsphere.infra.config.checker.RuleConfigurationChecker;
import org.apache.shardingsphere.infra.config.checker.RuleConfigurationCheckerFactory;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
import org.junit.Test;
import java.util.Collections;
import java.util.Optional;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
@@ -48,18 +48,11 @@ public final class ReadwriteSplittingRuleConfigurationCheckerTest {
private ReadwriteSplittingRuleConfiguration createValidConfiguration() {
ReadwriteSplittingRuleConfiguration result = mock(ReadwriteSplittingRuleConfiguration.class);
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
- when(dataSourceConfig.getType()).thenReturn("Dynamic");
- when(dataSourceConfig.getProps()).thenReturn(getProperties());
+ when(dataSourceConfig.getDynamicStrategy()).thenReturn(new DynamicReadwriteSplittingStrategyConfiguration("ds0"));
when(result.getDataSources()).thenReturn(Collections.singletonList(dataSourceConfig));
return result;
}
- private Properties getProperties() {
- Properties result = new Properties();
- result.setProperty("auto-aware-data-source-name", "ds0");
- return result;
- }
-
@SuppressWarnings({"rawtypes", "unchecked"})
@Test(expected = IllegalStateException.class)
public void assertInvalidCheck() {
@@ -73,8 +66,6 @@ public final class ReadwriteSplittingRuleConfigurationCheckerTest {
private ReadwriteSplittingRuleConfiguration createInvalidConfiguration() {
ReadwriteSplittingRuleConfiguration result = mock(ReadwriteSplittingRuleConfiguration.class);
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
- when(dataSourceConfig.getType()).thenReturn("Dynamic");
- when(dataSourceConfig.getProps()).thenReturn(new Properties());
when(result.getDataSources()).thenReturn(Collections.singleton(dataSourceConfig));
return result;
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
index 97801199fbb..7f1bd2e2a62 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
@@ -33,6 +33,8 @@ import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.LockSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -46,6 +48,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.Optional;
@@ -82,26 +85,17 @@ public final class ReadwriteSplittingSQLRouterTest {
@Before
public void setUp() {
rule = new ReadwriteSplittingRule(new ReadwriteSplittingRuleConfiguration(Collections.singleton(
- new ReadwriteSplittingDataSourceRuleConfiguration(DATASOURCE_NAME, "Static", createProperties(), "")), Collections.emptyMap()));
+ new ReadwriteSplittingDataSourceRuleConfiguration(DATASOURCE_NAME,
+ new StaticReadwriteSplittingStrategyConfiguration(WRITE_DATASOURCE, Arrays.asList(READ_DATASOURCE)), null, "")),
+ Collections.emptyMap()));
sqlRouter = (ReadwriteSplittingSQLRouter) SQLRouterFactory.getInstances(Collections.singleton(rule)).get(rule);
dynamicRule = new ReadwriteSplittingRule(new ReadwriteSplittingRuleConfiguration(Collections.singleton(
- new ReadwriteSplittingDataSourceRuleConfiguration(DATASOURCE_NAME, "Dynamic", createDynamicProperties(), "")), Collections.emptyMap()));
+ new ReadwriteSplittingDataSourceRuleConfiguration(DATASOURCE_NAME, null,
+ new DynamicReadwriteSplittingStrategyConfiguration("readwrite_ds"), "")),
+ Collections.emptyMap()));
dynamicSqlRouter = (ReadwriteSplittingSQLRouter) SQLRouterFactory.getInstances(Collections.singleton(dynamicRule)).get(dynamicRule);
}
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", WRITE_DATASOURCE);
- result.setProperty("read-data-source-names", READ_DATASOURCE);
- return result;
- }
-
- private Properties createDynamicProperties() {
- Properties result = new Properties();
- result.setProperty("auto-aware-data-source-name", "readwrite_ds");
- return result;
- }
-
@Test
public void assertCreateRouteContextToPrimaryWithoutRouteUnits() {
LogicSQL logicSQL = new LogicSQL(mock(SQLStatementContext.class), "", Collections.emptyList());
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadWriteSplittingDataSourceRuleConfigurationTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadWriteSplittingDataSourceRuleConfigurationTest.java
index 8365645949d..83b8bca2421 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadWriteSplittingDataSourceRuleConfigurationTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadWriteSplittingDataSourceRuleConfigurationTest.java
@@ -19,9 +19,12 @@ package org.apache.shardingsphere.readwritesplitting.rule;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.junit.Before;
import org.junit.Test;
-import java.util.Properties;
+
+import java.util.Arrays;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
@@ -35,38 +38,24 @@ public final class ReadWriteSplittingDataSourceRuleConfigurationTest {
@Before
public void setup() {
- readwriteSplittingDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("ds", "Static", getStaticReadwriteSplittingProperties(), "");
- readwriteSplittingDataSourceRuleConfigDynamic = new ReadwriteSplittingDataSourceRuleConfiguration("ds", "Dynamic", getDynamicReadwriteSplittingProperties(), "");
- }
-
- @Test
- public void assertDynamicReadWriteSplittingConfig() {
- assertNotNull(readwriteSplittingDataSourceRuleConfigDynamic.getProps());
- assertThat(readwriteSplittingDataSourceRuleConfigDynamic.getProps().getProperty("auto-aware-data-source-name"), is("readwrite_ds"));
- assertThat(readwriteSplittingDataSourceRuleConfigDynamic.getProps().getProperty("write-data-source-query-enabled"), is("false"));
+ readwriteSplittingDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("ds",
+ new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds_0", "read_ds_1")), null, "");
+ readwriteSplittingDataSourceRuleConfigDynamic = new ReadwriteSplittingDataSourceRuleConfiguration("ds", null,
+ new DynamicReadwriteSplittingStrategyConfiguration("readwrite_ds"), "");
}
@Test
- public void assertGetWriteDataSourceName() {
- assertThat(readwriteSplittingDataSourceRuleConfig.getProps().getProperty("write-data-source-name"), is("write_ds"));
+ public void assertStaticReadWriteSplittingConfig() {
+ assertNotNull(readwriteSplittingDataSourceRuleConfig.getStaticStrategy());
+ StaticReadwriteSplittingStrategyConfiguration actual = readwriteSplittingDataSourceRuleConfig.getStaticStrategy();
+ assertThat(actual.getWriteDataSourceName(), is("write_ds"));
+ assertThat(actual.getReadDataSourceNames(), is(Arrays.asList("read_ds_0", "read_ds_1")));
}
@Test
- public void assertGetReadDataSourceNames() {
- assertThat(readwriteSplittingDataSourceRuleConfig.getProps().getProperty("read-data-source-names"), is("read_ds_0,read_ds_1"));
- }
-
- private Properties getStaticReadwriteSplittingProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "write_ds");
- result.setProperty("read-data-source-names", "read_ds_0,read_ds_1");
- return result;
- }
-
- private Properties getDynamicReadwriteSplittingProperties() {
- Properties result = new Properties();
- result.setProperty("auto-aware-data-source-name", "readwrite_ds");
- result.setProperty("write-data-source-query-enabled", "false");
- return result;
+ public void assertDynamicReadWriteSplittingConfig() {
+ assertNotNull(readwriteSplittingDataSourceRuleConfigDynamic.getDynamicStrategy());
+ DynamicReadwriteSplittingStrategyConfiguration actual = readwriteSplittingDataSourceRuleConfigDynamic.getDynamicStrategy();
+ assertThat(actual.getAutoAwareDataSourceName(), is("readwrite_ds"));
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
index 484771b1e85..ff7f2582c0d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
@@ -20,12 +20,12 @@ package org.apache.shardingsphere.readwritesplitting.rule;
import org.apache.shardingsphere.readwritesplitting.algorithm.loadbalance.RandomReplicaLoadBalanceAlgorithm;
import org.apache.shardingsphere.readwritesplitting.algorithm.loadbalance.RoundRobinReplicaLoadBalanceAlgorithm;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -37,23 +37,30 @@ public final class ReadwriteSplittingDataSourceRuleTest {
@Before
public void setUp() {
readwriteSplittingDataSourceRule = new ReadwriteSplittingDataSourceRule(
- new ReadwriteSplittingDataSourceRuleConfiguration("test_pr", "Static", getProperties("write_ds", "read_ds_0,read_ds_1"), ""), new RandomReplicaLoadBalanceAlgorithm());
+ new ReadwriteSplittingDataSourceRuleConfiguration("test_pr",
+ new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds_0", "read_ds_1")), null, null),
+ new RandomReplicaLoadBalanceAlgorithm());
}
@Test(expected = IllegalArgumentException.class)
public void assertNewReadwriteSplittingDataSourceRuleWithoutName() {
- new ReadwriteSplittingDataSourceRule(new ReadwriteSplittingDataSourceRuleConfiguration("", "Static", getProperties("write_ds", "read_ds"), null), new RoundRobinReplicaLoadBalanceAlgorithm());
+ new ReadwriteSplittingDataSourceRule(new ReadwriteSplittingDataSourceRuleConfiguration("",
+ new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds")),
+ null, null), new RoundRobinReplicaLoadBalanceAlgorithm());
}
@Test(expected = IllegalArgumentException.class)
public void assertNewReadwriteSplittingDataSourceRuleWithoutWriteDataSourceName() {
- new ReadwriteSplittingDataSourceRule(new ReadwriteSplittingDataSourceRuleConfiguration("ds", "Static", getProperties("", "read_ds"), null),
- new RoundRobinReplicaLoadBalanceAlgorithm());
+ new ReadwriteSplittingDataSourceRule(new ReadwriteSplittingDataSourceRuleConfiguration("ds",
+ new StaticReadwriteSplittingStrategyConfiguration("", Arrays.asList("read_ds")),
+ null, null), new RoundRobinReplicaLoadBalanceAlgorithm());
}
@Test(expected = IllegalArgumentException.class)
public void assertNewReadwriteSplittingDataSourceRuleWithEmptyReadDataSourceName() {
- new ReadwriteSplittingDataSourceRule(new ReadwriteSplittingDataSourceRuleConfiguration("ds", "Static", getProperties("write_ds", ""), ""), new RoundRobinReplicaLoadBalanceAlgorithm());
+ new ReadwriteSplittingDataSourceRule(new ReadwriteSplittingDataSourceRuleConfiguration("ds",
+ new StaticReadwriteSplittingStrategyConfiguration("write_ds", Collections.emptyList()),
+ null, null), new RoundRobinReplicaLoadBalanceAlgorithm());
}
@Test
@@ -91,11 +98,4 @@ public final class ReadwriteSplittingDataSourceRuleTest {
readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
}
-
- private Properties getProperties(final String writeDataSource, final String readDataSources) {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", writeDataSource);
- result.setProperty("read-data-source-names", readDataSources);
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
index 8f75eb859af..ce4f729fc4d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.mode.metadata.storage.StorageNodeStatus;
import org.apache.shardingsphere.mode.metadata.storage.event.StorageNodeDataSourceChangedEvent;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.junit.Test;
import java.util.Arrays;
@@ -59,18 +60,11 @@ public final class ReadwriteSplittingRuleTest {
private ReadwriteSplittingRule createReadwriteSplittingRule() {
ReadwriteSplittingDataSourceRuleConfiguration config =
- new ReadwriteSplittingDataSourceRuleConfiguration("test_pr", "Static", createProperties(), "random");
+ new ReadwriteSplittingDataSourceRuleConfiguration("test_pr", new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds_0", "read_ds_1")), null, "random");
return new ReadwriteSplittingRule(new ReadwriteSplittingRuleConfiguration(
Collections.singleton(config), Collections.singletonMap("random", new ShardingSphereAlgorithmConfiguration("RANDOM", new Properties()))));
}
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "write_ds");
- result.setProperty("read-data-source-names", "read_ds_0,read_ds_1");
- return result;
- }
-
private void assertDataSourceRule(final ReadwriteSplittingDataSourceRule actual) {
assertThat(actual.getName(), is("test_pr"));
assertThat(actual.getReadwriteSplittingStrategy().getWriteDataSource(), is("write_ds"));
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/AlgorithmProvidedReadwriteSplittingRuleBuilderTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/AlgorithmProvidedReadwriteSplittingRuleBuilderTest.java
index 270e5be6f48..8b1d81b52aa 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/AlgorithmProvidedReadwriteSplittingRuleBuilderTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/AlgorithmProvidedReadwriteSplittingRuleBuilderTest.java
@@ -21,11 +21,12 @@ import org.apache.shardingsphere.infra.rule.builder.schema.DatabaseRuleBuilder;
import org.apache.shardingsphere.infra.rule.builder.schema.DatabaseRuleBuilderFactory;
import org.apache.shardingsphere.readwritesplitting.algorithm.config.AlgorithmProvidedReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.junit.Test;
+import java.util.Arrays;
import java.util.Collections;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
@@ -36,15 +37,10 @@ public final class AlgorithmProvidedReadwriteSplittingRuleBuilderTest {
@Test
public void assertBuild() {
AlgorithmProvidedReadwriteSplittingRuleConfiguration ruleConfig = new AlgorithmProvidedReadwriteSplittingRuleConfiguration(
- Collections.singletonList(new ReadwriteSplittingDataSourceRuleConfiguration("name", "Static", createProperties(), "loadBalancerName")), Collections.emptyMap());
+ Collections.singletonList(new ReadwriteSplittingDataSourceRuleConfiguration("name",
+ new StaticReadwriteSplittingStrategyConfiguration("writeDataSourceName", Arrays.asList("readDataSourceName")), null, "loadBalancerName")),
+ Collections.emptyMap());
DatabaseRuleBuilder builder = DatabaseRuleBuilderFactory.getInstanceMap(Collections.singletonList(ruleConfig)).get(ruleConfig);
assertThat(builder.build(ruleConfig, "", Collections.emptyMap(), Collections.emptyList()), instanceOf(ReadwriteSplittingRule.class));
}
-
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "writeDataSourceName");
- result.setProperty("read-data-source-names", "readDataSourceName");
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
index c34b605ad0b..7fb1105344c 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
@@ -21,11 +21,12 @@ import org.apache.shardingsphere.infra.rule.builder.schema.DatabaseRuleBuilder;
import org.apache.shardingsphere.infra.rule.builder.schema.DatabaseRuleBuilderFactory;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.junit.Test;
+import java.util.Arrays;
import java.util.Collections;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
@@ -36,15 +37,11 @@ public final class ReadwriteSplittingRuleBuilderTest {
@Test
public void assertBuild() {
ReadwriteSplittingRuleConfiguration ruleConfig = new ReadwriteSplittingRuleConfiguration(
- Collections.singletonList(new ReadwriteSplittingDataSourceRuleConfiguration("name", "Static", createProperties(), "loadBalancerName")), Collections.emptyMap());
+ Collections.singletonList(new ReadwriteSplittingDataSourceRuleConfiguration("name",
+ new StaticReadwriteSplittingStrategyConfiguration("writeDataSourceName", Arrays.asList("readDataSourceName")),
+ null, "loadBalancerName")),
+ Collections.emptyMap());
DatabaseRuleBuilder builder = DatabaseRuleBuilderFactory.getInstanceMap(Collections.singletonList(ruleConfig)).get(ruleConfig);
assertThat(builder.build(ruleConfig, "", Collections.emptyMap(), Collections.emptyList()), instanceOf(ReadwriteSplittingRule.class));
}
-
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "writeDataSourceName");
- result.setProperty("read-data-source-names", "readDataSourceName");
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapperTest.java
index 317663ea278..bc12db9260d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapperTest.java
@@ -20,16 +20,18 @@ package org.apache.shardingsphere.readwritesplitting.swapper;
import org.apache.shardingsphere.readwritesplitting.algorithm.config.AlgorithmProvidedReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.algorithm.loadbalance.RandomReplicaLoadBalanceAlgorithm;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.config.YamlReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.swapper.ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapper;
import org.junit.Test;
+import java.util.Arrays;
import java.util.Collections;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
public final class ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapperTest {
@@ -39,9 +41,9 @@ public final class ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapp
public void assertSwapToYamlConfiguration() {
YamlReadwriteSplittingRuleConfiguration actual = createYamlReadwriteSplittingRuleConfiguration();
assertThat(actual.getDataSources().keySet(), is(Collections.singleton("name")));
- Properties props = actual.getDataSources().get("name").getProps();
- assertThat(props.getProperty("write-data-source-name"), is("writeDataSourceName"));
- assertThat(props.getProperty("read-data-source-names"), is("readDataSourceName"));
+ assertNotNull(actual.getDataSources().get("name").getStaticStrategy());
+ assertThat(actual.getDataSources().get("name").getStaticStrategy().getWriteDataSourceName(), is("writeDataSourceName"));
+ assertThat(actual.getDataSources().get("name").getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("readDataSourceName")));
assertThat(actual.getDataSources().get("name").getLoadBalancerName(), is("loadBalancerName"));
assertThat(actual.getLoadBalancers().keySet(), is(Collections.singleton("name")));
assertThat(actual.getLoadBalancers().get("name").getType(), is("RANDOM"));
@@ -53,22 +55,17 @@ public final class ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapp
assertTrue(actual.getDataSources().iterator().hasNext());
ReadwriteSplittingDataSourceRuleConfiguration ruleConfig = actual.getDataSources().iterator().next();
assertThat(ruleConfig.getName(), is("name"));
- assertThat(ruleConfig.getProps().getProperty("write-data-source-name"), is("writeDataSourceName"));
- assertThat(ruleConfig.getProps().getProperty("read-data-source-names"), is("readDataSourceName"));
+ assertNotNull(ruleConfig.getStaticStrategy());
+ assertThat(ruleConfig.getStaticStrategy().getWriteDataSourceName(), is("writeDataSourceName"));
+ assertThat(ruleConfig.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("readDataSourceName")));
assertThat(ruleConfig.getLoadBalancerName(), is("loadBalancerName"));
assertThat(actual.getLoadBalanceAlgorithms(), is(Collections.emptyMap()));
}
private YamlReadwriteSplittingRuleConfiguration createYamlReadwriteSplittingRuleConfiguration() {
- ReadwriteSplittingDataSourceRuleConfiguration ruleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("name", "Static", createProperties(), "loadBalancerName");
+ ReadwriteSplittingDataSourceRuleConfiguration ruleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("name",
+ new StaticReadwriteSplittingStrategyConfiguration("writeDataSourceName", Arrays.asList("readDataSourceName")), null, "loadBalancerName");
return swapper.swapToYamlConfiguration(
new AlgorithmProvidedReadwriteSplittingRuleConfiguration(Collections.singletonList(ruleConfig), Collections.singletonMap("name", new RandomReplicaLoadBalanceAlgorithm())));
}
-
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "writeDataSourceName");
- result.setProperty("read-data-source-names", "readDataSourceName");
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
index 525b92a7f33..30a7ead8ae4 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java
@@ -21,17 +21,21 @@ import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmC
import org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperFactory;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.config.YamlReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.config.strategy.YamlStaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.swapper.ReadwriteSplittingRuleConfigurationYamlSwapper;
import org.junit.Test;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Optional;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@@ -40,31 +44,28 @@ public final class ReadwriteSplittingRuleConfigurationYamlSwapperTest {
@Test
public void assertSwapToYamlWithLoadBalanceAlgorithm() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig =
- new ReadwriteSplittingDataSourceRuleConfiguration("ds", "Static", getProperties(), "roundRobin");
+ new ReadwriteSplittingDataSourceRuleConfiguration("ds",
+ new StaticReadwriteSplittingStrategyConfiguration("write", Arrays.asList("read")), null, "roundRobin");
YamlReadwriteSplittingRuleConfiguration actual = getReadwriteSplittingRuleConfigurationYamlSwapper().swapToYamlConfiguration(new ReadwriteSplittingRuleConfiguration(
Collections.singleton(dataSourceConfig), Collections.singletonMap("roundRobin", new ShardingSphereAlgorithmConfiguration("ROUND_ROBIN", new Properties()))));
- assertThat(actual.getDataSources().get("ds").getProps().getProperty("write-data-source-name"), is("write"));
- assertThat(actual.getDataSources().get("ds").getProps().getProperty("read-data-source-names"), is("read"));
+ assertNotNull(actual.getDataSources().get("ds").getStaticStrategy());
+ assertThat((actual.getDataSources().get("ds").getStaticStrategy()).getWriteDataSourceName(), is("write"));
+ assertThat((actual.getDataSources().get("ds").getStaticStrategy()).getReadDataSourceNames(), is(Arrays.asList("read")));
assertThat(actual.getDataSources().get("ds").getLoadBalancerName(), is("roundRobin"));
}
@Test
public void assertSwapToYamlWithoutLoadBalanceAlgorithm() {
- ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new ReadwriteSplittingDataSourceRuleConfiguration("ds", "Static", getProperties(), null);
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new ReadwriteSplittingDataSourceRuleConfiguration("ds",
+ new StaticReadwriteSplittingStrategyConfiguration("write", Arrays.asList("read")), null, null);
YamlReadwriteSplittingRuleConfiguration actual = getReadwriteSplittingRuleConfigurationYamlSwapper().swapToYamlConfiguration(
new ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceConfig), Collections.emptyMap()));
- assertThat(actual.getDataSources().get("ds").getProps().getProperty("write-data-source-name"), is("write"));
- assertThat(actual.getDataSources().get("ds").getProps().getProperty("read-data-source-names"), is("read"));
+ assertNotNull(actual.getDataSources().get("ds").getStaticStrategy());
+ assertThat(actual.getDataSources().get("ds").getStaticStrategy().getWriteDataSourceName(), is("write"));
+ assertThat(actual.getDataSources().get("ds").getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("read")));
assertNull(actual.getDataSources().get("ds").getLoadBalancerName());
}
- private Properties getProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "write");
- result.setProperty("read-data-source-names", "read");
- return result;
- }
-
@Test
public void assertSwapToObjectWithLoadBalanceAlgorithmType() {
YamlReadwriteSplittingRuleConfiguration yamlConfig = createYamlReadwriteSplittingRuleConfiguration();
@@ -85,16 +86,19 @@ public final class ReadwriteSplittingRuleConfigurationYamlSwapperTest {
private YamlReadwriteSplittingRuleConfiguration createYamlReadwriteSplittingRuleConfiguration() {
YamlReadwriteSplittingRuleConfiguration result = new YamlReadwriteSplittingRuleConfiguration();
result.getDataSources().put("read_query_ds", new YamlReadwriteSplittingDataSourceRuleConfiguration());
- result.getDataSources().get("read_query_ds").setType("Static");
- result.getDataSources().get("read_query_ds").setProps(getProperties());
+ YamlStaticReadwriteSplittingStrategyConfiguration staticConfig = new YamlStaticReadwriteSplittingStrategyConfiguration();
+ staticConfig.setWriteDataSourceName("write");
+ staticConfig.setReadDataSourceNames(Arrays.asList("read"));
+ result.getDataSources().get("read_query_ds").setStaticStrategy(staticConfig);
return result;
}
private void assertReadwriteSplittingRuleConfiguration(final ReadwriteSplittingRuleConfiguration actual) {
ReadwriteSplittingDataSourceRuleConfiguration group = actual.getDataSources().iterator().next();
assertThat(group.getName(), is("read_query_ds"));
- assertThat(group.getProps().getProperty("write-data-source-name"), is("write"));
- assertThat(group.getProps().getProperty("read-data-source-names"), is("read"));
+ assertNotNull(group.getStaticStrategy());
+ assertThat(group.getStaticStrategy().getWriteDataSourceName(), is("write"));
+ assertThat(group.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("read")));
}
private ReadwriteSplittingRuleConfigurationYamlSwapper getReadwriteSplittingRuleConfigurationYamlSwapper() {
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/YamlRootRuleConfigurationsForYamlReadwriteSplittingRuleConfigurationTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/YamlRootRuleConfigurationsForYamlReadwriteSplittingRuleConfiguration [...]
index e79b90b0113..f799e9e577d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/YamlRootRuleConfigurationsForYamlReadwriteSplittingRuleConfigurationTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/swapper/YamlRootRuleConfigurationsForYamlReadwriteSplittingRuleConfigurationTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.readwritesplitting.swapper;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.apache.shardingsphere.readwritesplitting.yaml.config.YamlReadwriteSplittingRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.yaml.config.strategy.YamlStaticReadwriteSplittingStrategyConfiguration;
import org.junit.Test;
import java.io.BufferedReader;
@@ -68,14 +69,16 @@ public final class YamlRootRuleConfigurationsForYamlReadwriteSplittingRuleConfig
}
private void assertReadwriteSplittingRuleForDs0(final YamlReadwriteSplittingRuleConfiguration actual) {
- assertThat(actual.getDataSources().get("ds_0").getType(), is("Static"));
- assertThat(actual.getDataSources().get("ds_0").getProps().getProperty("write-data-source-name"), is("write_ds_0"));
+ assertNotNull(actual.getDataSources().get("ds_0").getStaticStrategy());
+ YamlStaticReadwriteSplittingStrategyConfiguration staticConfig = actual.getDataSources().get("ds_0").getStaticStrategy();
+ assertThat(staticConfig.getWriteDataSourceName(), is("write_ds_0"));
assertThat(actual.getDataSources().get("ds_0").getLoadBalancerName(), is("roundRobin"));
}
private void assertReadwriteSplittingRuleForDs1(final YamlReadwriteSplittingRuleConfiguration actual) {
- assertThat(actual.getDataSources().get("ds_1").getType(), is("Static"));
- assertThat(actual.getDataSources().get("ds_1").getProps().getProperty("write-data-source-name"), is("write_ds_1"));
+ assertNotNull(actual.getDataSources().get("ds_1").getStaticStrategy());
+ YamlStaticReadwriteSplittingStrategyConfiguration staticConfig = actual.getDataSources().get("ds_1").getStaticStrategy();
+ assertThat(staticConfig.getWriteDataSourceName(), is("write_ds_1"));
assertThat(actual.getDataSources().get("ds_1").getLoadBalancerName(), is("random"));
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/resources/yaml/readwrite-splitting-rule.yaml b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/resources/yaml/readwrite-splitting-rule.yaml
index 3c4875e9a2b..b706f35d8b7 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/resources/yaml/readwrite-splitting-rule.yaml
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/resources/yaml/readwrite-splitting-rule.yaml
@@ -33,16 +33,18 @@ rules:
- !READWRITE_SPLITTING
dataSources:
ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: write_ds_0_read_0,write_ds_0_read_1
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - write_ds_0_read_0
+ - write_ds_0_read_1
loadBalancerName: roundRobin
ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: write_ds_1_read_0,write_ds_1_read_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - write_ds_1_read_0
+ - write_ds_1_read_1
loadBalancerName: random
loadBalancers:
roundRobin:
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/r [...]
index 39c47cd0ff8..0f68614f8ca 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java
@@ -22,13 +22,15 @@ import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
-import java.util.Properties;
/**
* Readwrite splitting rule statement converter.
@@ -49,17 +51,20 @@ public final class ReadwriteSplittingRuleStatementConverter {
if (null != each.getLoadBalancer()) {
String loadBalancerName = getLoadBalancerName(each.getName(), each.getLoadBalancer());
loadBalancers.put(loadBalancerName, createLoadBalancer(each));
- dataSources.add(createDataSourceRuleConfiguration(each.getName(), createProperties(each), loadBalancerName, each.isAutoAware()));
+ dataSources.add(createDataSourceRuleConfiguration(each, loadBalancerName, each.isAutoAware()));
} else {
- dataSources.add(createDataSourceRuleConfiguration(each.getName(), createProperties(each), null, each.isAutoAware()));
+ dataSources.add(createDataSourceRuleConfiguration(each, null, each.isAutoAware()));
}
}
return new ReadwriteSplittingRuleConfiguration(dataSources, loadBalancers);
}
- private static ReadwriteSplittingDataSourceRuleConfiguration createDataSourceRuleConfiguration(final String name, final Properties prop, final String loadBalancerName, final boolean isAutoAware) {
- return isAutoAware ? new ReadwriteSplittingDataSourceRuleConfiguration(name, "Dynamic", prop, loadBalancerName)
- : new ReadwriteSplittingDataSourceRuleConfiguration(name, "Static", prop, loadBalancerName);
+ private static ReadwriteSplittingDataSourceRuleConfiguration createDataSourceRuleConfiguration(final ReadwriteSplittingRuleSegment segment,
+ final String loadBalancerName, final boolean isAutoAware) {
+ return isAutoAware ? new ReadwriteSplittingDataSourceRuleConfiguration(segment.getName(), null,
+ new DynamicReadwriteSplittingStrategyConfiguration(segment.getAutoAwareResource()), loadBalancerName)
+ : new ReadwriteSplittingDataSourceRuleConfiguration(segment.getName(),
+ new StaticReadwriteSplittingStrategyConfiguration(segment.getWriteDataSource(), new ArrayList<>(segment.getReadDataSources())), null, loadBalancerName);
}
private static ShardingSphereAlgorithmConfiguration createLoadBalancer(final ReadwriteSplittingRuleSegment ruleSegment) {
@@ -69,15 +74,4 @@ public final class ReadwriteSplittingRuleStatementConverter {
private static String getLoadBalancerName(final String ruleName, final String type) {
return String.format("%s_%s", ruleName, type);
}
-
- private static Properties createProperties(final ReadwriteSplittingRuleSegment segment) {
- Properties result = new Properties();
- if (segment.isAutoAware()) {
- result.setProperty("auto-aware-data-source-name", segment.getAutoAwareResource());
- } else {
- result.setProperty("write-data-source-name", segment.getWriteDataSource());
- result.setProperty("read-data-source-names", String.join(",", segment.getReadDataSources()));
- }
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ReadwriteSplittingRuleQueryResultSet.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwrite [...]
index 6a53c0860c0..8cd6611ab27 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ReadwriteSplittingRuleQueryResultSet.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ReadwriteSplittingRuleQueryResultSet.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.readwritesplitting.distsql.handler.query;
+import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.distsql.constant.ExportableConstants;
@@ -78,10 +79,10 @@ public final class ReadwriteSplittingRuleQueryResultSet implements DistSQLResult
private Collection<Object> buildDataItem(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final Map<String, ShardingSphereAlgorithmConfiguration> loadBalancers) {
String name = dataSourceRuleConfig.getName();
- Map<String, String> exportDataSources = DYNAMIC.equalsIgnoreCase(dataSourceRuleConfig.getType()) ? exportableAutoAwareDataSource.get(name) : exportableDataSourceMap.get(name);
+ Map<String, String> exportDataSources = null != dataSourceRuleConfig.getDynamicStrategy() ? exportableAutoAwareDataSource.get(name) : exportableDataSourceMap.get(name);
Optional<ShardingSphereAlgorithmConfiguration> loadBalancer = Optional.ofNullable(loadBalancers.get(dataSourceRuleConfig.getLoadBalancerName()));
return Arrays.asList(name,
- dataSourceRuleConfig.getAutoAwareDataSourceName().orElse(""),
+ getAutoAwareDataSourceName(dataSourceRuleConfig),
getWriteDataSourceName(dataSourceRuleConfig, exportDataSources),
getReadDataSourceNames(dataSourceRuleConfig, exportDataSources),
loadBalancer.map(ShardingSphereAlgorithmConfiguration::getType).orElse(""),
@@ -93,18 +94,25 @@ public final class ReadwriteSplittingRuleQueryResultSet implements DistSQLResult
return null != loadBalancers ? loadBalancers : Collections.emptyMap();
}
+ private String getAutoAwareDataSourceName(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig) {
+ if (null == dataSourceRuleConfig.getDynamicStrategy()) {
+ return "";
+ }
+ return dataSourceRuleConfig.getDynamicStrategy().getAutoAwareDataSourceName();
+ }
+
private String getWriteDataSourceName(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final Map<String, String> exportDataSources) {
if (null != exportDataSources) {
return exportDataSources.get(ExportableItemConstants.PRIMARY_DATA_SOURCE_NAME);
}
- return dataSourceRuleConfig.getWriteDataSourceName().orElse("");
+ return dataSourceRuleConfig.getStaticStrategy().getWriteDataSourceName();
}
private String getReadDataSourceNames(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final Map<String, String> exportDataSources) {
if (null != exportDataSources) {
return exportDataSources.get(ExportableItemConstants.REPLICA_DATA_SOURCE_NAMES);
}
- return dataSourceRuleConfig.getReadDataSourceNames().orElse("");
+ return Joiner.on(",").join(dataSourceRuleConfig.getStaticStrategy().getReadDataSourceNames());
}
@Override
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphe [...]
index a2e9245ab2d..7e1de25b4f4 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.readwritesplitting.distsql.handler.converter;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
@@ -31,7 +29,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Properties;
import java.util.stream.Stream;
@@ -40,6 +37,7 @@ import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
public final class ReadwriteSplittingRuleStatementConverterTest {
@@ -65,8 +63,9 @@ public final class ReadwriteSplittingRuleStatementConverterTest {
assertThat(actualRuleConfig.getName(), is(expectedSingleReadwriteSplittingRuleSegment.getName()));
String expectedLoadBalancerName = String.format("%s_%s", expectedSingleReadwriteSplittingRuleSegment.getName(), expectedSingleReadwriteSplittingRuleSegment.getLoadBalancer());
assertThat(actualRuleConfig.getLoadBalancerName(), is(expectedLoadBalancerName));
- assertThat(actualRuleConfig.getWriteDataSourceName(), is(Optional.ofNullable(expectedSingleReadwriteSplittingRuleSegment.getWriteDataSource())));
- assertThat(convertToList(actualRuleConfig.getReadDataSourceNames().orElse(null)), is(expectedSingleReadwriteSplittingRuleSegment.getReadDataSources()));
+ assertNotNull(actualRuleConfig.getStaticStrategy());
+ assertThat(actualRuleConfig.getStaticStrategy().getWriteDataSourceName(), is(expectedSingleReadwriteSplittingRuleSegment.getWriteDataSource()));
+ assertThat(actualRuleConfig.getStaticStrategy().getReadDataSourceNames(), is(expectedSingleReadwriteSplittingRuleSegment.getReadDataSources()));
String actualLoadBalancerName = actualSingleRuleSegmentConvertResultLoadBalancers.keySet().iterator().next();
assertThat(actualLoadBalancerName, is(expectedLoadBalancerName));
ShardingSphereAlgorithmConfiguration actualSphereAlgorithmConfig = actualSingleRuleSegmentConvertResultLoadBalancers.get(actualLoadBalancerName);
@@ -93,11 +92,10 @@ public final class ReadwriteSplittingRuleStatementConverterTest {
assertThat(actualRuleConfig.getName(), is(expectedReadwriteSplittingRuleSegment.getName()));
String expectedLoadBalancerName = String.format("%s_%s", expectedReadwriteSplittingRuleSegment.getName(), expectedReadwriteSplittingRuleSegment.getLoadBalancer());
assertThat(actualRuleConfig.getLoadBalancerName(), is(expectedLoadBalancerName));
- assertThat(actualRuleConfig.getWriteDataSourceName().orElse(null), is(expectedReadwriteSplittingRuleSegment.getWriteDataSource()));
- assertThat(convertToList(actualRuleConfig.getReadDataSourceNames().orElse(null)),
- equalTo(expectedReadwriteSplittingRuleSegment.getReadDataSources() == null
- ? Collections.emptyList()
- : expectedReadwriteSplittingRuleSegment.getReadDataSources()));
+ assertThat(getWriteDataSourceName(actualRuleConfig), is(expectedReadwriteSplittingRuleSegment.getWriteDataSource()));
+ assertThat(getReadDataSourceNames(actualRuleConfig), equalTo(expectedReadwriteSplittingRuleSegment.getReadDataSources() == null
+ ? Collections.emptyList()
+ : expectedReadwriteSplittingRuleSegment.getReadDataSources()));
assertTrue(actualMultipleRuleSegmentConvertResultLoadBalancers.containsKey(expectedLoadBalancerName));
ShardingSphereAlgorithmConfiguration actualSphereAlgorithmConfig = actualMultipleRuleSegmentConvertResultLoadBalancers.get(actualRuleConfig.getLoadBalancerName());
assertThat(actualSphereAlgorithmConfig.getType(), containsString(expectedReadwriteSplittingRuleSegment.getLoadBalancer()));
@@ -105,6 +103,14 @@ public final class ReadwriteSplittingRuleStatementConverterTest {
});
}
+ private String getWriteDataSourceName(final ReadwriteSplittingDataSourceRuleConfiguration ruleConfiguration) {
+ return null != ruleConfiguration.getDynamicStrategy() ? null : ruleConfiguration.getStaticStrategy().getWriteDataSourceName();
+ }
+
+ private Collection<String> getReadDataSourceNames(final ReadwriteSplittingDataSourceRuleConfiguration ruleConfiguration) {
+ return null != ruleConfiguration.getDynamicStrategy() ? Collections.emptyList() : ruleConfiguration.getStaticStrategy().getReadDataSourceNames();
+ }
+
private ReadwriteSplittingRuleSegment createReadwriteSplittingRuleSegment(final String name, final String writeDataSource, final List<String> readDataSources, final String loadBalancerTypeName,
final Properties props) {
return new ReadwriteSplittingRuleSegment(name, writeDataSource, readDataSources, loadBalancerTypeName, props);
@@ -113,8 +119,4 @@ public final class ReadwriteSplittingRuleStatementConverterTest {
private ReadwriteSplittingRuleSegment createReadwriteSplittingRuleSegment(final String name, final String autoAwareResource, final String loadBalancer, final Properties props) {
return new ReadwriteSplittingRuleSegment(name, autoAwareResource, loadBalancer, props);
}
-
- private Collection<String> convertToList(final String readDataSourceNames) {
- return Strings.isNullOrEmpty(readDataSourceNames) ? Collections.emptyList() : Splitter.on(",").trimResults().splitToList(readDataSourceNames);
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ReadwriteSplittingRuleQueryResultSetTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readw [...]
index 75bcc41743d..eb7072d04d3 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ReadwriteSplittingRuleQueryResultSetTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ReadwriteSplittingRuleQueryResultSetTest.java
@@ -24,10 +24,13 @@ import org.apache.shardingsphere.infra.distsql.constant.ExportableItemConstants;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingRulesStatement;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.junit.Test;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -72,7 +75,8 @@ public final class ReadwriteSplittingRuleQueryResultSetTest {
private RuleConfiguration createRuleConfiguration() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
- new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", getProperties("ds_primary", "ds_slave_0,ds_slave_1"), "test");
+ new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("ds_primary", Arrays.asList("ds_slave_0", "ds_slave_1")), null, "test");
Properties props = new Properties();
props.setProperty("read_weight", "2:1");
return new ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceRuleConfig), Collections.singletonMap("test", new ShardingSphereAlgorithmConfiguration("random", props)));
@@ -96,17 +100,11 @@ public final class ReadwriteSplittingRuleQueryResultSetTest {
private RuleConfiguration createRuleConfigurationWithoutLoadBalancer() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
- new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", getProperties("write_ds", "read_ds_0,read_ds_1"), null);
+ new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds_0", "read_ds_1")), null, null);
return new ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceRuleConfig), null);
}
- private Properties getProperties(final String writeDataSource, final String readDataSources) {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", writeDataSource);
- result.setProperty("read-data-source-names", readDataSources);
- return result;
- }
-
@Test
public void assertGetRowDataWithAutoAwareDataSource() {
ShardingSphereDatabase metaData = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
@@ -155,9 +153,8 @@ public final class ReadwriteSplittingRuleQueryResultSetTest {
}
private RuleConfiguration createRuleConfigurationWithAutoAwareDataSource() {
- Properties props = new Properties();
- props.setProperty("auto-aware-data-source-name", "rd_rs");
- ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Dynamic", props, "");
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", null,
+ new DynamicReadwriteSplittingStrategyConfiguration("rd_rs"), "");
return new ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceRuleConfig), null);
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphe [...]
index 0b5cefe8fe4..b142a4cc61a 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphere
import org.apache.shardingsphere.infra.rule.identifier.type.exportable.ExportableRule;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
import org.junit.Before;
@@ -99,14 +100,8 @@ public final class AlterReadwriteSplittingRuleStatementUpdaterTest {
private ReadwriteSplittingRuleConfiguration createCurrentRuleConfiguration() {
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
- new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", createProperties(), "TEST");
+ new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("ds_write", Arrays.asList("read_ds_0", "read_ds_1")), null, "TEST");
return new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Collections.singleton(dataSourceRuleConfig)), Collections.emptyMap());
}
-
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "ds_write");
- result.setProperty("read-data-source-names", "read_ds_0,read_ds_1");
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsph [...]
index 45a467af86c..8d27da87114 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
@@ -28,6 +28,7 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphere
import org.apache.shardingsphere.infra.rule.identifier.type.exportable.ExportableRule;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.readwritesplitting.factory.ReplicaLoadBalanceAlgorithmFactory;
@@ -137,14 +138,8 @@ public final class CreateReadwriteSplittingRuleStatementUpdaterTest {
}
private ReadwriteSplittingRuleConfiguration createCurrentRuleConfiguration() {
- ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", createProperties(), "TEST");
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("ds_write", Arrays.asList("read_ds_0", "read_ds_1")), null, "TEST");
return new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Collections.singleton(dataSourceRuleConfig)), Collections.emptyMap());
}
-
- private Properties createProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "ds_write");
- result.setProperty("read-data-source-names", "read_ds_0,read_ds_1");
- return result;
- }
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdaterTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingspher [...]
index 98f1f7388a0..ac2aa71e998 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdaterTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdaterTest.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRul
import org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.DropReadwriteSplittingRuleStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -109,20 +110,24 @@ public final class DropReadwriteSplittingRuleStatementUpdaterTest {
}
private ReadwriteSplittingRuleConfiguration createCurrentRuleConfiguration() {
- ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", new Properties(), "TEST");
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("", Collections.emptyList()), null, "TEST");
Map<String, ShardingSphereAlgorithmConfiguration> loadBalancers = Collections.singletonMap("readwrite_ds", new ShardingSphereAlgorithmConfiguration("TEST", new Properties()));
return new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Collections.singleton(dataSourceRuleConfig)), loadBalancers);
}
private ReadwriteSplittingRuleConfiguration createCurrentRuleConfigurationWithoutLoadBalancerName() {
- ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", new Properties(), null);
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("", Collections.emptyList()), null, null);
Map<String, ShardingSphereAlgorithmConfiguration> loadBalancers = Collections.singletonMap("readwrite_ds", new ShardingSphereAlgorithmConfiguration("TEST", new Properties()));
return new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Collections.singleton(dataSourceRuleConfig)), loadBalancers);
}
private ReadwriteSplittingRuleConfiguration createMultipleCurrentRuleConfigurations() {
- ReadwriteSplittingDataSourceRuleConfiguration fooDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("foo_ds", "Static", new Properties(), "TEST");
- ReadwriteSplittingDataSourceRuleConfiguration barDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("bar_ds", "Static", new Properties(), "TEST");
+ ReadwriteSplittingDataSourceRuleConfiguration fooDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("foo_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("", Collections.emptyList()), null, "TEST");
+ ReadwriteSplittingDataSourceRuleConfiguration barDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration("bar_ds",
+ new StaticReadwriteSplittingStrategyConfiguration("", Collections.emptyList()), null, "TEST");
Map<String, ShardingSphereAlgorithmConfiguration> loadBalancers = Collections.singletonMap("foo_ds", new ShardingSphereAlgorithmConfiguration("TEST", new Properties()));
return new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Arrays.asList(fooDataSourceRuleConfig, barDataSourceRuleConfig)), loadBalancers);
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/java/org/apache/shardingsphere/readwritesplitting/spring/boot/ReadwriteSplittingSpringBootStarterTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/java/org/apache/shardingsphere/readwrites [...]
index 32e1b3c6293..937865cc6d4 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/java/org/apache/shardingsphere/readwritesplitting/spring/boot/ReadwriteSplittingSpringBootStarterTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/java/org/apache/shardingsphere/readwritesplitting/spring/boot/ReadwriteSplittingSpringBootStarterTest.java
@@ -29,9 +29,12 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
+import java.util.Arrays;
+
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ReadwriteSplittingSpringBootStarterTest.class)
@@ -54,13 +57,13 @@ public class ReadwriteSplittingSpringBootStarterTest {
public void assertReadwriteSplittingRuleConfiguration() {
assertThat(config.getDataSources().size(), is(1));
assertTrue(config.getDataSources().stream().findFirst().isPresent());
- ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = config.getDataSources().stream().findFirst().get();
- assertThat(dataSourceRuleConfig.getName(), is("readwrite_ds"));
- assertThat(dataSourceRuleConfig.getType(), is("Static"));
- assertThat(dataSourceRuleConfig.getProps().getProperty("write-data-source-name"), is("write_ds"));
- assertThat(dataSourceRuleConfig.getProps().getProperty("read-data-source-names"), is("read_ds_0,read_ds_1"));
- assertThat(dataSourceRuleConfig.getLoadBalancerName(), is("random"));
- assertTrue(config.getDataSources().contains(dataSourceRuleConfig));
+ ReadwriteSplittingDataSourceRuleConfiguration actual = config.getDataSources().stream().findFirst().get();
+ assertThat(actual.getName(), is("readwrite_ds"));
+ assertNotNull(actual.getStaticStrategy());
+ assertThat(actual.getStaticStrategy().getWriteDataSourceName(), is("write_ds"));
+ assertThat(actual.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("read_ds_0", "read_ds_1")));
+ assertThat(actual.getLoadBalancerName(), is("random"));
+ assertTrue(config.getDataSources().contains(actual));
assertThat(config.getLoadBalanceAlgorithms().size(), is(1));
assertTrue(config.getLoadBalanceAlgorithms().containsKey("random"));
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/resources/application-readwrite-splitting.properties b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/resources/application-readwrite-splitting.properties
index f989763bc0c..a78e73de68d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/resources/application-readwrite-splitting.properties
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-boot-starter/src/test/resources/application-readwrite-splitting.properties
@@ -15,11 +15,10 @@
# limitations under the License.
#
-spring.shardingsphere.rules.readwrite-splitting.load-balancers.random.type=RANDOM
-
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=write_ds
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=read_ds_0,read_ds_1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=write_ds
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=read_ds_0, read_ds_1
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=random
+spring.shardingsphere.rules.readwrite-splitting.load-balancers.random.type=RANDOM
+
spring.main.banner-mode=off
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/parser/ReadwriteSplittingRuleBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/r [...]
index 1a210dfd60e..854651cd4c4 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/parser/ReadwriteSplittingRuleBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/parser/ReadwriteSplittingRuleBeanDefinitionParser.java
@@ -17,10 +17,15 @@
package org.apache.shardingsphere.readwritesplitting.spring.namespace.parser;
+import com.google.common.base.Splitter;
import org.apache.shardingsphere.readwritesplitting.algorithm.config.AlgorithmProvidedReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.spring.namespace.factorybean.ReplicaLoadBalanceAlgorithmFactoryBean;
import org.apache.shardingsphere.readwritesplitting.spring.namespace.tag.ReadwriteSplittingRuleBeanDefinitionTag;
+import org.apache.shardingsphere.readwritesplitting.spring.namespace.tag.strategy.DynamicReadwriteSplittingBeanDefinitionTag;
+import org.apache.shardingsphere.readwritesplitting.spring.namespace.tag.strategy.StaticReadwriteSplittingBeanDefinitionTag;
import org.apache.shardingsphere.spring.namespace.registry.ShardingSphereAlgorithmBeanRegistry;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
@@ -32,7 +37,6 @@ import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
import java.util.List;
-import java.util.Properties;
/**
* Readwrite-splitting rule bean definition parser.
@@ -42,31 +46,52 @@ public final class ReadwriteSplittingRuleBeanDefinitionParser extends AbstractBe
@Override
protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(AlgorithmProvidedReadwriteSplittingRuleConfiguration.class);
- factory.addConstructorArgValue(parseReadwriteSplittingDataSourceRuleConfigurations(element, parserContext));
+ factory.addConstructorArgValue(parseReadwriteSplittingDataSourceRuleConfigurations(element));
factory.addConstructorArgValue(ShardingSphereAlgorithmBeanRegistry.getAlgorithmBeanReferences(parserContext, ReplicaLoadBalanceAlgorithmFactoryBean.class));
return factory.getBeanDefinition();
}
- private List<BeanDefinition> parseReadwriteSplittingDataSourceRuleConfigurations(final Element element, final ParserContext parserContext) {
+ private List<BeanDefinition> parseReadwriteSplittingDataSourceRuleConfigurations(final Element element) {
List<Element> dataSourceElements = DomUtils.getChildElementsByTagName(element, ReadwriteSplittingRuleBeanDefinitionTag.DATA_SOURCE_TAG);
List<BeanDefinition> result = new ManagedList<>(dataSourceElements.size());
for (Element each : dataSourceElements) {
- result.add(parseReadwriteSplittingDataSourceRuleConfiguration(each, parserContext));
+ result.add(parseReadwriteSplittingDataSourceRuleConfiguration(each));
}
return result;
}
- private BeanDefinition parseReadwriteSplittingDataSourceRuleConfiguration(final Element element, final ParserContext parserContext) {
+ private BeanDefinition parseReadwriteSplittingDataSourceRuleConfiguration(final Element element) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(ReadwriteSplittingDataSourceRuleConfiguration.class);
factory.addConstructorArgValue(element.getAttribute(ReadwriteSplittingRuleBeanDefinitionTag.READWRITE_SPLITTING_DATA_SOURCE_ID_ATTRIBUTE));
- factory.addConstructorArgValue(element.getAttribute(ReadwriteSplittingRuleBeanDefinitionTag.READWRITE_SPLITTING_TYPE));
- factory.addConstructorArgValue(parseProperties(element, parserContext));
+ parseReadwriteSplittingStrategyConfiguration(element, factory);
factory.addConstructorArgValue(element.getAttribute(ReadwriteSplittingRuleBeanDefinitionTag.LOAD_BALANCE_ALGORITHM_REF_ATTRIBUTE));
return factory.getBeanDefinition();
}
- private Properties parseProperties(final Element element, final ParserContext parserContext) {
- Element propsElement = DomUtils.getChildElementByTagName(element, ReadwriteSplittingRuleBeanDefinitionTag.READWRITE_SPLITTING_PROPS);
- return null == propsElement ? new Properties() : parserContext.getDelegate().parsePropsElement(propsElement);
+ private void parseReadwriteSplittingStrategyConfiguration(final Element element, final BeanDefinitionBuilder factory) {
+ Element strategyElement = DomUtils.getChildElementByTagName(element, StaticReadwriteSplittingBeanDefinitionTag.STATIC_STRATEGY_ROOT_TAG);
+ if (null != strategyElement) {
+ factory.addConstructorArgValue(getStaticReadwriteSplittingStrategyConfigBeanDefinition(DomUtils.getChildElementByTagName(element,
+ StaticReadwriteSplittingBeanDefinitionTag.STATIC_STRATEGY_ROOT_TAG)));
+ factory.addConstructorArgValue(null);
+ } else {
+ factory.addConstructorArgValue(null);
+ factory.addConstructorArgValue(getDynamicReadwriteSplittingStrategyConfigBeanDefinition(DomUtils.getChildElementByTagName(element,
+ DynamicReadwriteSplittingBeanDefinitionTag.DYNAMIC_STRATEGY_ROOT_TAG)));
+ }
+ }
+
+ private AbstractBeanDefinition getStaticReadwriteSplittingStrategyConfigBeanDefinition(final Element element) {
+ BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(StaticReadwriteSplittingStrategyConfiguration.class);
+ factory.addConstructorArgValue(element.getAttribute(StaticReadwriteSplittingBeanDefinitionTag.WRITE_DATA_SOURCE_NAME));
+ factory.addConstructorArgValue(Splitter.on(',').trimResults().splitToList(element.getAttribute(StaticReadwriteSplittingBeanDefinitionTag.READ_DATA_SOURCE_NAMES)));
+ return factory.getBeanDefinition();
+ }
+
+ private AbstractBeanDefinition getDynamicReadwriteSplittingStrategyConfigBeanDefinition(final Element element) {
+ BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(DynamicReadwriteSplittingStrategyConfiguration.class);
+ factory.addConstructorArgValue(element.getAttribute(DynamicReadwriteSplittingBeanDefinitionTag.AUTO_AWARE_DATA_SOURCE_NAME));
+ factory.addConstructorArgValue(element.getAttribute(DynamicReadwriteSplittingBeanDefinitionTag.WRITE_DATA_SOURCE_QUERY_ENABLED));
+ return factory.getBeanDefinition();
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwri [...]
index d76a3e4630d..f9df058d1af 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java
@@ -32,9 +32,5 @@ public final class ReadwriteSplittingRuleBeanDefinitionTag {
public static final String READWRITE_SPLITTING_DATA_SOURCE_ID_ATTRIBUTE = "id";
- public static final String READWRITE_SPLITTING_TYPE = "type";
-
- public static final String READWRITE_SPLITTING_PROPS = "props";
-
public static final String LOAD_BALANCE_ALGORITHM_REF_ATTRIBUTE = "load-balance-algorithm-ref";
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwri [...]
similarity index 63%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/strategy/DynamicReadwriteSplittingBeanDefinitionTag.java
index d76a3e4630d..86bf4d38ee2 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/strategy/DynamicReadwriteSplittingBeanDefinitionTag.java
@@ -15,26 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.spring.namespace.tag;
+package org.apache.shardingsphere.readwritesplitting.spring.namespace.tag.strategy;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
/**
- * Readwrite-splitting rule bean definition tag.
+ * Readwrite-splitting Dynamic bean definition tag.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ReadwriteSplittingRuleBeanDefinitionTag {
+public final class DynamicReadwriteSplittingBeanDefinitionTag {
- public static final String ROOT_TAG = "rule";
+ public static final String DYNAMIC_STRATEGY_ROOT_TAG = "dynamic-strategy";
- public static final String DATA_SOURCE_TAG = "data-source-rule";
+ public static final String AUTO_AWARE_DATA_SOURCE_NAME = "auto-aware-data-source-name";
- public static final String READWRITE_SPLITTING_DATA_SOURCE_ID_ATTRIBUTE = "id";
-
- public static final String READWRITE_SPLITTING_TYPE = "type";
-
- public static final String READWRITE_SPLITTING_PROPS = "props";
-
- public static final String LOAD_BALANCE_ALGORITHM_REF_ATTRIBUTE = "load-balance-algorithm-ref";
+ public static final String WRITE_DATA_SOURCE_QUERY_ENABLED = "write-data-source-query-enabled";
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwri [...]
similarity index 63%
copy from shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java
copy to shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/strategy/StaticReadwriteSplittingBeanDefinitionTag.java
index d76a3e4630d..4f3d24c7b7f 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/ReadwriteSplittingRuleBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/tag/strategy/StaticReadwriteSplittingBeanDefinitionTag.java
@@ -15,26 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.spring.namespace.tag;
+package org.apache.shardingsphere.readwritesplitting.spring.namespace.tag.strategy;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
/**
- * Readwrite-splitting rule bean definition tag.
+ * Readwrite-splitting static bean definition tag.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ReadwriteSplittingRuleBeanDefinitionTag {
+public final class StaticReadwriteSplittingBeanDefinitionTag {
- public static final String ROOT_TAG = "rule";
+ public static final String STATIC_STRATEGY_ROOT_TAG = "static-strategy";
- public static final String DATA_SOURCE_TAG = "data-source-rule";
+ public static final String WRITE_DATA_SOURCE_NAME = "write-data-source-name";
- public static final String READWRITE_SPLITTING_DATA_SOURCE_ID_ATTRIBUTE = "id";
-
- public static final String READWRITE_SPLITTING_TYPE = "type";
-
- public static final String READWRITE_SPLITTING_PROPS = "props";
-
- public static final String LOAD_BALANCE_ALGORITHM_REF_ATTRIBUTE = "load-balance-algorithm-ref";
+ public static final String READ_DATA_SOURCE_NAMES = "read-data-source-names";
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/resources/META-INF/namespace/readwrite-splitting.xsd b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/resources/META-INF/namespace/readwrite-splitting.xsd
index 3f97015fa17..74f04742df8 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/resources/META-INF/namespace/readwrite-splitting.xsd
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/main/resources/META-INF/namespace/readwrite-splitting.xsd
@@ -34,14 +34,30 @@
<xsd:element name="data-source-rule">
<xsd:complexType>
- <xsd:all>
- <xsd:element ref="beans:props" minOccurs="0" />
- </xsd:all>
+ <xsd:sequence>
+ <xsd:element ref="static-strategy" minOccurs="0" />
+ <xsd:element ref="dynamic-strategy" minOccurs="0" />
+ </xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required" />
- <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="load-balance-algorithm-ref" type="xsd:string" />
</xsd:complexType>
</xsd:element>
+
+ <xsd:element name="static-strategy">
+ <xsd:complexType>
+ <xsd:attribute name="id" type="xsd:string" use="required" />
+ <xsd:attribute name="write-data-source-name" type="xsd:string" use="required" />
+ <xsd:attribute name="read-data-source-names" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="dynamic-strategy">
+ <xsd:complexType>
+ <xsd:attribute name="id" type="xsd:string" use="required" />
+ <xsd:attribute name="auto-aware-data-source-name" type="xsd:string" use="required" />
+ <xsd:attribute name="write-data-source-query-enabled" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
<xsd:element name="load-balance-algorithm">
<xsd:complexType>
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/ReadwriteSplittingSpringNamespaceTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/java/org/apache/shardingsphere/readwritespli [...]
index fbd01f1b127..10c6275ae64 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/ReadwriteSplittingSpringNamespaceTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/java/org/apache/shardingsphere/readwritesplitting/spring/namespace/ReadwriteSplittingSpringNamespaceTest.java
@@ -26,11 +26,13 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import javax.annotation.Resource;
+import java.util.Arrays;
import java.util.Map;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertNotNull;
@ContextConfiguration(locations = "classpath:META-INF/spring/readwrite-splitting-application-context.xml")
public final class ReadwriteSplittingSpringNamespaceTest extends AbstractJUnit4SpringContextTests {
@@ -62,9 +64,10 @@ public final class ReadwriteSplittingSpringNamespaceTest extends AbstractJUnit4S
}
private void assertDefaultDataSourceRule(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig) {
+ assertNotNull(dataSourceRuleConfig.getStaticStrategy());
assertThat(dataSourceRuleConfig.getName(), is("default_ds"));
- assertThat(dataSourceRuleConfig.getProps().getProperty("write-data-source-name"), is("write_ds"));
- assertThat(dataSourceRuleConfig.getProps().getProperty("read-data-source-names"), is("read_ds_0, read_ds_1"));
+ assertThat(dataSourceRuleConfig.getStaticStrategy().getWriteDataSourceName(), is("write_ds"));
+ assertThat(dataSourceRuleConfig.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("read_ds_0", "read_ds_1")));
assertThat(dataSourceRuleConfig.getLoadBalancerName(), is(""));
}
@@ -77,8 +80,9 @@ public final class ReadwriteSplittingSpringNamespaceTest extends AbstractJUnit4S
private void assertRandomDataSourceRule(final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig) {
assertThat(dataSourceRuleConfig.getName(), is("random_ds"));
- assertThat(dataSourceRuleConfig.getProps().getProperty("write-data-source-name"), is("write_ds"));
- assertThat(dataSourceRuleConfig.getProps().getProperty("read-data-source-names"), is("read_ds_0, read_ds_1"));
+ assertNotNull(dataSourceRuleConfig.getStaticStrategy());
+ assertThat(dataSourceRuleConfig.getStaticStrategy().getWriteDataSourceName(), is("write_ds"));
+ assertThat(dataSourceRuleConfig.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("read_ds_0", "read_ds_1")));
assertThat(dataSourceRuleConfig.getLoadBalancerName(), is("randomLoadbalancer"));
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/resources/META-INF/spring/readwrite-splitting-application-context.xml b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/resources/META-INF/spring/readwrite-splitting-application-context.xml
index 12261adf8ec..f4327a94206 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/resources/META-INF/spring/readwrite-splitting-application-context.xml
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-spring/shardingsphere-readwrite-splitting-spring-namespace/src/test/resources/META-INF/spring/readwrite-splitting-application-context.xml
@@ -27,20 +27,14 @@
<readwrite-splitting:load-balance-algorithm id="randomLoadbalancer" type="RANDOM" />
<readwrite-splitting:rule id="defaultRule">
- <readwrite-splitting:data-source-rule id="default_ds" type="Static">
- <props>
- <prop key="write-data-source-name">write_ds</prop>
- <prop key="read-data-source-names">read_ds_0, read_ds_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="default_ds" >
+ <readwrite-splitting:static-strategy id="StaticReadwriteSplittingStrategy" write-data-source-name="write_ds" read-data-source-names="read_ds_0, read_ds_1" />
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
-
+
<readwrite-splitting:rule id="randomRule">
- <readwrite-splitting:data-source-rule id="random_ds" type="Static" load-balance-algorithm-ref="randomLoadbalancer">
- <props>
- <prop key="write-data-source-name">write_ds</prop>
- <prop key="read-data-source-names">read_ds_0, read_ds_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="random_ds" load-balance-algorithm-ref="randomLoadbalancer">
+ <readwrite-splitting:static-strategy id="StaticReadwriteSplittingStrategy" write-data-source-name="write_ds" read-data-source-names="read_ds_0, read_ds_1" />
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
</beans>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/config/config-readwrite-splitting.yaml b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/config/config-readwrite-splitting.yaml
index f5c7b31f723..7e26fab49f2 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/config/config-readwrite-splitting.yaml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/config/config-readwrite-splitting.yaml
@@ -21,10 +21,10 @@ rules:
- !READWRITE_SPLITTING
dataSources:
test_ds:
- type: Static
- props:
- write-data-source-name: test_primary_ds
- read-data-source-names: test_replica_ds
+ staticStrategy:
+ writeDataSourceName: test_primary_ds
+ readDataSourceNames:
+ - test_replica_ds
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
index 78a7b41e997..e31ac8b356e 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties
@@ -24,9 +24,8 @@ spring.shardingsphere.datasource.ds1.type=org.apache.shardingsphere.test.mock.Mo
spring.shardingsphere.rules.readwrite-splitting.load-balancers.random.type=RANDOM
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.type=Static
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.write-data-source-name=write_ds
-spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.props.read-data-source-names=read_ds_0,read_ds_1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.write-data-source-name=write_ds
+spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.static-strategy.read-data-source-names=read_ds_0,read_ds_1
spring.shardingsphere.rules.readwrite-splitting.data-sources.readwrite_ds.load-balancer-name=random
spring.shardingsphere.rules.sharding.sharding-algorithms.databaseShardingAlgorithm.type=INLINE
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/spring/included/rules-context.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/spring/included/rules-context.xml
index ca9169a58c7..7db40aeee30 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/spring/included/rules-context.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/spring/included/rules-context.xml
@@ -66,17 +66,11 @@
</encrypt:rule>
<readwrite-splitting:rule id="readWriteSplittingRule">
- <readwrite-splitting:data-source-rule id="ds_0" type="Static">
- <props>
- <prop key="write-data-source-name">ds_0_write</prop>
- <prop key="read-data-source-names">ds_0_read_0, ds_0_read_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="ds_0">
+ <readwrite-splitting:static-strategy id="staticReadwriteSplittingStrategyWithDs0" write-data-source-name="ds_0_write" read-data-source-names="ds_0_read_0, ds_0_read_1"/>
</readwrite-splitting:data-source-rule>
- <readwrite-splitting:data-source-rule id="ds_1" type="Static">
- <props>
- <prop key="write-data-source-name">ds_1_write</prop>
- <prop key="read-data-source-names">ds_1_read_0, ds_1_read_1</prop>
- </props>
+ <readwrite-splitting:data-source-rule id="ds_1">
+ <readwrite-splitting:static-strategy id="staticReadwriteSplittingStrategyWithDs1" write-data-source-name="ds_1_write" read-data-source-names="ds_1_read_0, ds_1_read_1"/>
</readwrite-splitting:data-source-rule>
</readwrite-splitting:rule>
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/checker/ReadwriteSplittingRuleConfigurationImportChecker.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/checker/ReadwriteSplittingRuleConfigurationImportChecker.java
index aa8872a6a50..dffc8bc2036 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/checker/ReadwriteSplittingRuleConfigurationImportChecker.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/checker/ReadwriteSplittingRuleConfigurationImportChecker.java
@@ -21,7 +21,6 @@ import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmC
import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
import org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
import org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
-import org.apache.shardingsphere.infra.expr.InlineExpressionParser;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
@@ -56,14 +55,16 @@ public final class ReadwriteSplittingRuleConfigurationImportChecker {
Collection<String> requireResources = new LinkedHashSet<>();
Collection<String> requireDiscoverableResources = new LinkedHashSet<>();
currentRuleConfig.getDataSources().forEach(each -> {
- if (each.getAutoAwareDataSourceName().isPresent()) {
- requireDiscoverableResources.add(each.getAutoAwareDataSourceName().get());
+ if (null != each.getDynamicStrategy()) {
+ requireDiscoverableResources.add(each.getDynamicStrategy().getAutoAwareDataSourceName());
}
- if (each.getWriteDataSourceName().isPresent()) {
- requireResources.add(each.getWriteDataSourceName().get());
- }
- if (each.getReadDataSourceNames().isPresent()) {
- requireResources.addAll(new InlineExpressionParser(each.getReadDataSourceNames().get()).splitAndEvaluate());
+ if (null != each.getStaticStrategy()) {
+ if (null != each.getStaticStrategy().getWriteDataSourceName()) {
+ requireResources.add(each.getStaticStrategy().getWriteDataSourceName());
+ }
+ if (!each.getStaticStrategy().getReadDataSourceNames().isEmpty()) {
+ requireResources.addAll(each.getStaticStrategy().getReadDataSourceNames());
+ }
}
});
Collection<String> notExistResources = database.getResource().getNotExistedResources(requireResources);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/RulesUsedResourceQueryResultSet.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/RulesUsedResourceQueryResultSet.java
index 8b907004104..1f5d4ff3e09 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/RulesUsedResourceQueryResultSet.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/RulesUsedResourceQueryResultSet.java
@@ -100,11 +100,13 @@ public final class RulesUsedResourceQueryResultSet implements DistSQLResultSet {
Collection<Collection<Object>> result = new LinkedList<>();
ReadwriteSplittingRuleConfiguration config = (ReadwriteSplittingRuleConfiguration) rule.get().getConfiguration();
for (ReadwriteSplittingDataSourceRuleConfiguration each : config.getDataSources()) {
- if (each.getWriteDataSourceName().isPresent() && each.getWriteDataSourceName().get().equalsIgnoreCase(resourceName)) {
- result.add(buildRow(READWRITE_SPLITTING, each.getName()));
- }
- if (each.getReadDataSourceNames().isPresent() && Arrays.asList(each.getReadDataSourceNames().get().split(",")).contains(resourceName)) {
- result.add(buildRow(READWRITE_SPLITTING, each.getName()));
+ if (null != each.getStaticStrategy()) {
+ if (each.getStaticStrategy().getWriteDataSourceName().equalsIgnoreCase(resourceName)) {
+ result.add(buildRow(READWRITE_SPLITTING, each.getName()));
+ }
+ if (each.getStaticStrategy().getReadDataSourceNames().contains(resourceName)) {
+ result.add(buildRow(READWRITE_SPLITTING, each.getName()));
+ }
}
}
return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoaderTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoaderTest.java
index f22c663cd73..a357c4d3f3e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoaderTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoaderTest.java
@@ -28,6 +28,7 @@ import org.apache.shardingsphere.sharding.yaml.config.YamlShardingRuleConfigurat
import org.junit.Test;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.Optional;
@@ -92,9 +93,9 @@ public final class ProxyConfigurationLoaderTest {
}
private void assertReadwriteSplittingRuleConfiguration(final YamlReadwriteSplittingDataSourceRuleConfiguration actual) {
- assertNotNull(actual.getProps());
- assertThat(actual.getProps().getProperty("write-data-source-name"), is("write_ds"));
- assertThat(actual.getProps().getProperty("read-data-source-names"), is("read_ds_0,read_ds_1"));
+ assertNotNull(actual.getStaticStrategy());
+ assertThat(actual.getStaticStrategy().getWriteDataSourceName(), is("write_ds"));
+ assertThat(actual.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("read_ds_0", "read_ds_1")));
}
private void assertEncryptRuleConfiguration(final YamlProxyDatabaseConfiguration actual) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
index b2fed8cc3af..30099f2bbf6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
@@ -34,10 +34,12 @@ import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
+import java.util.Arrays;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
public final class YamlProxyConfigurationSwapperTest {
@@ -78,10 +80,9 @@ public final class YamlProxyConfigurationSwapperTest {
assertThat(actual.getDataSources().size(), is(1));
ReadwriteSplittingDataSourceRuleConfiguration dataSource = actual.getDataSources().iterator().next();
assertThat(dataSource.getName(), is("readwrite_ds"));
- assertThat(dataSource.getType(), is("Static"));
- assertThat(dataSource.getProps().size(), is(2));
- assertThat(dataSource.getProps().getProperty("read-data-source-names"), is("foo_db"));
- assertThat(dataSource.getProps().getProperty("write-data-source-name"), is("foo_db"));
+ assertNotNull(dataSource.getStaticStrategy());
+ assertThat(dataSource.getStaticStrategy().getWriteDataSourceName(), is("foo_db"));
+ assertThat(dataSource.getStaticStrategy().getReadDataSourceNames(), is(Arrays.asList("foo_db")));
assertThat(actual.getLoadBalancers().size(), is(1));
ShardingSphereAlgorithmConfiguration loadBalancer = actual.getLoadBalancers().get("round_robin");
assertThat(loadBalancer.getProps().size(), is(1));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DatabaseRulesCountResultSetTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DatabaseRulesCountResultSetTest.java
index a9d8f4033c8..cefc97d7ce9 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DatabaseRulesCountResultSetTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DatabaseRulesCountResultSetTest.java
@@ -28,6 +28,7 @@ import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRule
import org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.DatabaseRulesCountResultSet;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.apache.shardingsphere.shadow.rule.ShadowRule;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
@@ -42,7 +43,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Optional;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -134,7 +134,8 @@ public final class DatabaseRulesCountResultSetTest {
private ReadwriteSplittingRule mockReadwriteSplittingRule() {
ReadwriteSplittingRule result = mock(ReadwriteSplittingRule.class);
ReadwriteSplittingRuleConfiguration config = mock(ReadwriteSplittingRuleConfiguration.class);
- when(config.getDataSources()).thenReturn(Collections.singletonList(new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_splitting", "", new Properties(), "")));
+ when(config.getDataSources()).thenReturn(Collections.singletonList(new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_splitting",
+ new StaticReadwriteSplittingStrategyConfiguration("", Collections.emptyList()), null, "")));
when(result.getConfiguration()).thenReturn(config);
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RulesUsedResourceQueryResultSetTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RulesUsedResourceQueryResultSetTest.java
index e4dad9b7b0e..80cc92cbfb8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RulesUsedResourceQueryResultSetTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RulesUsedResourceQueryResultSetTest.java
@@ -31,6 +31,7 @@ import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRule
import org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.RulesUsedResourceQueryResultSet;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.api.config.datasource.ShadowDataSourceConfiguration;
@@ -47,7 +48,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Optional;
-import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
@@ -94,18 +94,12 @@ public final class RulesUsedResourceQueryResultSetTest {
private ReadwriteSplittingRule mockReadwriteSplittingRule() {
ReadwriteSplittingRule result = mock(ReadwriteSplittingRule.class);
ReadwriteSplittingRuleConfiguration config = mock(ReadwriteSplittingRuleConfiguration.class);
- when(config.getDataSources()).thenReturn(Collections.singleton(new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_splitting_source", "", createReadwriteSplittingProperties(), "")));
+ when(config.getDataSources()).thenReturn(Collections.singleton(new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_splitting_source",
+ new StaticReadwriteSplittingStrategyConfiguration("foo_ds", Arrays.asList("foo_ds", "bar_ds")), null, "")));
when(result.getConfiguration()).thenReturn(config);
return result;
}
- private Properties createReadwriteSplittingProperties() {
- Properties result = new Properties();
- result.setProperty("write-data-source-name", "foo_ds");
- result.setProperty("read-data-source-names", "foo_ds,bar_ds");
- return result;
- }
-
private DatabaseDiscoveryRule mockDatabaseDiscoveryRule() {
DatabaseDiscoveryRule result = mock(DatabaseDiscoveryRule.class);
DatabaseDiscoveryRuleConfiguration config = mock(DatabaseDiscoveryRuleConfiguration.class);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/config_loader/config-readwrite-splitting.yaml b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/config_loader/config-readwrite-splitting.yaml
index 0f69e48f079..428ae4a8743 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/config_loader/config-readwrite-splitting.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/config_loader/config-readwrite-splitting.yaml
@@ -50,7 +50,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0,read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/import/config-readwrite-splitting.yaml b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/import/config-readwrite-splitting.yaml
index 1066ac7555b..5a80db2e32c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/import/config-readwrite-splitting.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/import/config-readwrite-splitting.yaml
@@ -50,7 +50,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds_0,read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/swap/config-readwrite-splitting.yaml b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/swap/config-readwrite-splitting.yaml
index 5fbf8949e33..b1edb518a7e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/swap/config-readwrite-splitting.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/resources/conf/swap/config-readwrite-splitting.yaml
@@ -33,10 +33,10 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: foo_db
- read-data-source-names: foo_db
+ staticStrategy:
+ writeDataSourceName: foo_db
+ readDataSourceNames:
+ - foo_db
loadBalancers:
round_robin:
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-readwrite-splitting.yaml b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-readwrite-splitting.yaml
index 2f0e2b7ec03..cdb3929cde6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-readwrite-splitting.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-readwrite-splitting.yaml
@@ -57,10 +57,11 @@
#- !READWRITE_SPLITTING
# dataSources:
# readwrite_ds:
-# type: Static
-# props:
-# write-data-source-name: primary_ds
-# read-data-source-names: replica_ds_0,replica_ds_1
+# staticStrategy:
+# writeDataSourceName: primary_ds
+# readDataSourceNames:
+# - replica_ds_0
+# - replica_ds_1
# loadBalancerName: random
# loadBalancers:
# random:
@@ -107,10 +108,11 @@
#- !READWRITE_SPLITTING
# dataSources:
# readwrite_ds:
-# type: Static
-# props:
-# write-data-source-name: write_ds
-# read-data-source-names: read_ds_0,read_ds_1
+# staticStrategy:
+# writeDataSourceName: write_ds
+# readDataSourceNames:
+# - read_ds_0
+# - read_ds_1
# loadBalancerName: random
# loadBalancers:
# random:
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithProps.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithProps.yaml
index 1e65eb2a217..60c6da64dac 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithProps.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithProps.yaml
@@ -42,10 +42,11 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: db_write
- read-data-source-names: read_ds_0,read_ds_1
+ staticStrategy:
+ writeDataSourceName: db_write
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
mode:
type: Cluster
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithoutProps.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithoutProps.yaml
index 28257ce699a..8bce0dff6a3 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithoutProps.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/readwrite_splitting/configWithReadwriteSplittingDataSourceWithoutProps.yaml
@@ -42,10 +42,11 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: db_write
- read-data-source-names: read_ds_0,read_ds_1
+ staticStrategy:
+ writeDataSourceName: db_write
+ readDataSourceNames:
+ - read_ds_0
+ - read_ds_1
mode:
type: Cluster
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithProps.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithProps.yaml
index 694e6edc0f6..b5fa286b518 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithProps.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithProps.yaml
@@ -107,16 +107,16 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: random
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancerName: roundRobin
loadBalancers:
random:
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithoutProps.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithoutProps.yaml
index 32fa5161c78..fd532f8a92f 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithoutProps.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithDataSourceWithoutProps.yaml
@@ -111,16 +111,16 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithProps.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithProps.yaml
index 1b63cb9c82a..b11d2e7810f 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithProps.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithProps.yaml
@@ -86,16 +86,16 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancers:
roundRobin:
type: ROUND_ROBIN
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithoutProps.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithoutProps.yaml
index 947886c327e..fddd760798c 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithoutProps.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/integrate/sharding_readwrite_splitting/configWithoutDataSourceWithoutProps.yaml
@@ -86,16 +86,16 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancers:
roundRobin:
type: ROUND_ROBIN
diff --git a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/unit/sharding.yaml b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/unit/sharding.yaml
index 919eef9a460..1dd789bd36e 100644
--- a/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/unit/sharding.yaml
+++ b/shardingsphere-test/shardingsphere-integration-driver-test/src/test/resources/yaml/unit/sharding.yaml
@@ -97,9 +97,9 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_ds
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_ds
props:
sql-show: false
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting.yaml
index 781a7bdf1f0..32bfb2b4f31 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting.yaml
@@ -271,64 +271,64 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancerName: roundRobin
readwrite_ds_2:
- type: Static
- props:
- write-data-source-name: write_ds_2
- read-data-source-names: read_ds_2
+ staticStrategy:
+ writeDataSourceName: write_ds_2
+ readDataSourceNames:
+ - read_ds_2
loadBalancerName: roundRobin
readwrite_ds_3:
- type: Static
- props:
- write-data-source-name: write_ds_3
- read-data-source-names: read_ds_3
+ staticStrategy:
+ writeDataSourceName: write_ds_3
+ readDataSourceNames:
+ - read_ds_3
loadBalancerName: roundRobin
readwrite_ds_4:
- type: Static
- props:
- write-data-source-name: write_ds_4
- read-data-source-names: read_ds_4
+ staticStrategy:
+ writeDataSourceName: write_ds_4
+ readDataSourceNames:
+ - read_ds_4
loadBalancerName: roundRobin
readwrite_ds_5:
- type: Static
- props:
- write-data-source-name: write_ds_5
- read-data-source-names: read_ds_5
+ staticStrategy:
+ writeDataSourceName: write_ds_5
+ readDataSourceNames:
+ - read_ds_5
loadBalancerName: roundRobin
readwrite_ds_6:
- type: Static
- props:
- write-data-source-name: write_ds_6
- read-data-source-names: read_ds_6
+ staticStrategy:
+ writeDataSourceName: write_ds_6
+ readDataSourceNames:
+ - read_ds_6
loadBalancerName: roundRobin
readwrite_ds_7:
- type: Static
- props:
- write-data-source-name: write_ds_7
- read-data-source-names: read_ds_7
+ staticStrategy:
+ writeDataSourceName: write_ds_7
+ readDataSourceNames:
+ - read_ds_7
loadBalancerName: roundRobin
readwrite_ds_8:
- type: Static
- props:
- write-data-source-name: write_ds_8
- read-data-source-names: read_ds_8
+ staticStrategy:
+ writeDataSourceName: write_ds_8
+ readDataSourceNames:
+ - read_ds_8
loadBalancerName: roundRobin
readwrite_ds_9:
- type: Static
- props:
- write-data-source-name: write_ds_9
- read-data-source-names: read_ds_9
+ staticStrategy:
+ writeDataSourceName: write_ds_9
+ readDataSourceNames:
+ - read_ds_9
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting.yaml
index 72e59dcf471..ea9235ceb1b 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting.yaml
@@ -271,64 +271,64 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancerName: roundRobin
readwrite_ds_2:
- type: Static
- props:
- write-data-source-name: write_ds_2
- read-data-source-names: read_ds_2
+ staticStrategy:
+ writeDataSourceName: write_ds_2
+ readDataSourceNames:
+ - read_ds_2
loadBalancerName: roundRobin
readwrite_ds_3:
- type: Static
- props:
- write-data-source-name: write_ds_3
- read-data-source-names: read_ds_3
+ staticStrategy:
+ writeDataSourceName: write_ds_3
+ readDataSourceNames:
+ - read_ds_3
loadBalancerName: roundRobin
readwrite_ds_4:
- type: Static
- props:
- write-data-source-name: write_ds_4
- read-data-source-names: read_ds_4
+ staticStrategy:
+ writeDataSourceName: write_ds_4
+ readDataSourceNames:
+ - read_ds_4
loadBalancerName: roundRobin
readwrite_ds_5:
- type: Static
- props:
- write-data-source-name: write_ds_5
- read-data-source-names: read_ds_5
+ staticStrategy:
+ writeDataSourceName: write_ds_5
+ readDataSourceNames:
+ - read_ds_5
loadBalancerName: roundRobin
readwrite_ds_6:
- type: Static
- props:
- write-data-source-name: write_ds_6
- read-data-source-names: read_ds_6
+ staticStrategy:
+ writeDataSourceName: write_ds_6
+ readDataSourceNames:
+ - read_ds_6
loadBalancerName: roundRobin
readwrite_ds_7:
- type: Static
- props:
- write-data-source-name: write_ds_7
- read-data-source-names: read_ds_7
+ staticStrategy:
+ writeDataSourceName: write_ds_7
+ readDataSourceNames:
+ - read_ds_7
loadBalancerName: roundRobin
readwrite_ds_8:
- type: Static
- props:
- write-data-source-name: write_ds_8
- read-data-source-names: read_ds_8
+ staticStrategy:
+ writeDataSourceName: write_ds_8
+ readDataSourceNames:
+ - read_ds_8
loadBalancerName: roundRobin
readwrite_ds_9:
- type: Static
- props:
- write-data-source-name: write_ds_9
- read-data-source-names: read_ds_9
+ staticStrategy:
+ writeDataSourceName: write_ds_9
+ readDataSourceNames:
+ - read_ds_9
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/rules.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/rules.yaml
index 13cb4e427d1..c29018578de 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/rules.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting/rules.yaml
@@ -88,64 +88,64 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: write_ds_0
- read-data-source-names: read_ds_0
+ staticStrategy:
+ writeDataSourceName: write_ds_0
+ readDataSourceNames:
+ - read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: write_ds_1
- read-data-source-names: read_ds_1
+ staticStrategy:
+ writeDataSourceName: write_ds_1
+ readDataSourceNames:
+ - read_ds_1
loadBalancerName: roundRobin
readwrite_ds_2:
- type: Static
- props:
- write-data-source-name: write_ds_2
- read-data-source-names: read_ds_2
+ staticStrategy:
+ writeDataSourceName: write_ds_2
+ readDataSourceNames:
+ - read_ds_2
loadBalancerName: roundRobin
readwrite_ds_3:
- type: Static
- props:
- write-data-source-name: write_ds_3
- read-data-source-names: read_ds_3
+ staticStrategy:
+ writeDataSourceName: write_ds_3
+ readDataSourceNames:
+ - read_ds_3
loadBalancerName: roundRobin
readwrite_ds_4:
- type: Static
- props:
- write-data-source-name: write_ds_4
- read-data-source-names: read_ds_4
+ staticStrategy:
+ writeDataSourceName: write_ds_4
+ readDataSourceNames:
+ - read_ds_4
loadBalancerName: roundRobin
readwrite_ds_5:
- type: Static
- props:
- write-data-source-name: write_ds_5
- read-data-source-names: read_ds_5
+ staticStrategy:
+ writeDataSourceName: write_ds_5
+ readDataSourceNames:
+ - read_ds_5
loadBalancerName: roundRobin
readwrite_ds_6:
- type: Static
- props:
- write-data-source-name: write_ds_6
- read-data-source-names: read_ds_6
+ staticStrategy:
+ writeDataSourceName: write_ds_6
+ readDataSourceNames:
+ - read_ds_6
loadBalancerName: roundRobin
readwrite_ds_7:
- type: Static
- props:
- write-data-source-name: write_ds_7
- read-data-source-names: read_ds_7
+ staticStrategy:
+ writeDataSourceName: write_ds_7
+ readDataSourceNames:
+ - read_ds_7
loadBalancerName: roundRobin
readwrite_ds_8:
- type: Static
- props:
- write-data-source-name: write_ds_8
- read-data-source-names: read_ds_8
+ staticStrategy:
+ writeDataSourceName: write_ds_8
+ readDataSourceNames:
+ - read_ds_8
loadBalancerName: roundRobin
readwrite_ds_9:
- type: Static
- props:
- write-data-source-name: write_ds_9
- read-data-source-names: read_ds_9
+ staticStrategy:
+ writeDataSourceName: write_ds_9
+ readDataSourceNames:
+ - read_ds_9
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
index 89f982e914b..6370ed711cc 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/mysql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
@@ -283,64 +283,64 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_0
- read-data-source-names: encrypt_read_ds_0
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_0
+ readDataSourceNames:
+ - encrypt_read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_1
- read-data-source-names: encrypt_read_ds_1
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_1
+ readDataSourceNames:
+ - encrypt_read_ds_1
loadBalancerName: roundRobin
readwrite_ds_2:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_2
- read-data-source-names: encrypt_read_ds_2
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_2
+ readDataSourceNames:
+ - encrypt_read_ds_2
loadBalancerName: roundRobin
readwrite_ds_3:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_3
- read-data-source-names: encrypt_read_ds_3
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_3
+ readDataSourceNames:
+ - encrypt_read_ds_3
loadBalancerName: roundRobin
readwrite_ds_4:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_4
- read-data-source-names: encrypt_read_ds_4
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_4
+ readDataSourceNames:
+ - encrypt_read_ds_4
loadBalancerName: roundRobin
readwrite_ds_5:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_5
- read-data-source-names: encrypt_read_ds_5
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_5
+ readDataSourceNames:
+ - encrypt_read_ds_5
loadBalancerName: roundRobin
readwrite_ds_6:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_6
- read-data-source-names: encrypt_read_ds_6
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_6
+ readDataSourceNames:
+ - encrypt_read_ds_6
loadBalancerName: roundRobin
readwrite_ds_7:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_7
- read-data-source-names: encrypt_read_ds_7
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_7
+ readDataSourceNames:
+ - encrypt_read_ds_7
loadBalancerName: roundRobin
readwrite_ds_8:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_8
- read-data-source-names: encrypt_read_ds_8
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_8
+ readDataSourceNames:
+ - encrypt_read_ds_8
loadBalancerName: roundRobin
readwrite_ds_9:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_9
- read-data-source-names: encrypt_read_ds_9
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_9
+ readDataSourceNames:
+ - encrypt_read_ds_9
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
index 25e14f52c05..f544ce35c62 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/postgresql/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
@@ -283,64 +283,64 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_0
- read-data-source-names: encrypt_read_ds_0
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_0
+ readDataSourceNames:
+ - encrypt_read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_1
- read-data-source-names: encrypt_read_ds_1
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_1
+ readDataSourceNames:
+ - encrypt_read_ds_1
loadBalancerName: roundRobin
readwrite_ds_2:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_2
- read-data-source-names: encrypt_read_ds_2
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_2
+ readDataSourceNames:
+ - encrypt_read_ds_2
loadBalancerName: roundRobin
readwrite_ds_3:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_3
- read-data-source-names: encrypt_read_ds_3
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_3
+ readDataSourceNames:
+ - encrypt_read_ds_3
loadBalancerName: roundRobin
readwrite_ds_4:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_4
- read-data-source-names: encrypt_read_ds_4
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_4
+ readDataSourceNames:
+ - encrypt_read_ds_4
loadBalancerName: roundRobin
readwrite_ds_5:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_5
- read-data-source-names: encrypt_read_ds_5
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_5
+ readDataSourceNames:
+ - encrypt_read_ds_5
loadBalancerName: roundRobin
readwrite_ds_6:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_6
- read-data-source-names: encrypt_read_ds_6
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_6
+ readDataSourceNames:
+ - encrypt_read_ds_6
loadBalancerName: roundRobin
readwrite_ds_7:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_7
- read-data-source-names: encrypt_read_ds_7
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_7
+ readDataSourceNames:
+ - encrypt_read_ds_7
loadBalancerName: roundRobin
readwrite_ds_8:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_8
- read-data-source-names: encrypt_read_ds_8
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_8
+ readDataSourceNames:
+ - encrypt_read_ds_8
loadBalancerName: roundRobin
readwrite_ds_9:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_9
- read-data-source-names: encrypt_read_ds_9
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_9
+ readDataSourceNames:
+ - encrypt_read_ds_9
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
index fbb1af0f0a7..2e3420bff86 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
@@ -99,64 +99,64 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_0
- read-data-source-names: encrypt_read_ds_0
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_0
+ readDataSourceNames:
+ - encrypt_read_ds_0
loadBalancerName: roundRobin
readwrite_ds_1:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_1
- read-data-source-names: encrypt_read_ds_1
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_1
+ readDataSourceNames:
+ - encrypt_read_ds_1
loadBalancerName: roundRobin
readwrite_ds_2:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_2
- read-data-source-names: encrypt_read_ds_2
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_2
+ readDataSourceNames:
+ - encrypt_read_ds_2
loadBalancerName: roundRobin
readwrite_ds_3:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_3
- read-data-source-names: encrypt_read_ds_3
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_3
+ readDataSourceNames:
+ - encrypt_read_ds_3
loadBalancerName: roundRobin
readwrite_ds_4:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_4
- read-data-source-names: encrypt_read_ds_4
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_4
+ readDataSourceNames:
+ - encrypt_read_ds_4
loadBalancerName: roundRobin
readwrite_ds_5:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_5
- read-data-source-names: encrypt_read_ds_5
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_5
+ readDataSourceNames:
+ - encrypt_read_ds_5
loadBalancerName: roundRobin
readwrite_ds_6:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_6
- read-data-source-names: encrypt_read_ds_6
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_6
+ readDataSourceNames:
+ - encrypt_read_ds_6
loadBalancerName: roundRobin
readwrite_ds_7:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_7
- read-data-source-names: encrypt_read_ds_7
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_7
+ readDataSourceNames:
+ - encrypt_read_ds_7
loadBalancerName: roundRobin
readwrite_ds_8:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_8
- read-data-source-names: encrypt_read_ds_8
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_8
+ readDataSourceNames:
+ - encrypt_read_ds_8
loadBalancerName: roundRobin
readwrite_ds_9:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_9
- read-data-source-names: encrypt_read_ds_9
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_9
+ readDataSourceNames:
+ - encrypt_read_ds_9
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/mysql/config-empty-rules.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/mysql/config-empty-rules.yaml
index 9351e5b368c..a351672210e 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/mysql/config-empty-rules.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/mysql/config-empty-rules.yaml
@@ -243,10 +243,10 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_0
- read-data-source-names: encrypt_read_ds_0
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_0
+ readDataSourceNames:
+ - encrypt_read_ds_0
loadBalancerName: roundRobin
loadBalancers:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/postgresql/config-empty-rules.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/postgresql/config-empty-rules.yaml
index f61cd912d15..da72a89313e 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/postgresql/config-empty-rules.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/empty_rules/proxy/conf/postgresql/config-empty-rules.yaml
@@ -243,10 +243,10 @@ rules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds_0:
- type: Static
- props:
- write-data-source-name: encrypt_write_ds_0
- read-data-source-names: encrypt_read_ds_0
+ staticStrategy:
+ writeDataSourceName: encrypt_write_ds_0
+ readDataSourceNames:
+ - encrypt_read_ds_0
loadBalancerName: roundRobin
loadBalancers:
roundRobin:
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/mysql/config-readwrite-splitting.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/mysql/config-readwrite-splitting.yaml
index fe86cc8dde4..d22fe745428 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/mysql/config-readwrite-splitting.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/mysql/config-readwrite-splitting.yaml
@@ -76,7 +76,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
write-read-ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_0,read_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_0
+ - read_1
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/postgresql/config-readwrite-splitting.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/postgresql/config-readwrite-splitting.yaml
index 65c59c3767a..6f191904e3a 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/postgresql/config-readwrite-splitting.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/proxy/conf/postgresql/config-readwrite-splitting.yaml
@@ -76,7 +76,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
write-read-ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_0,read_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_0
+ - read_1
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/rules.yaml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/rules.yaml
index b98c8b9ff92..4c0b9e79bb1 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/rules.yaml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/scenario/readwrite_splitting/rules.yaml
@@ -45,7 +45,8 @@ rules:
- !READWRITE_SPLITTING
dataSources:
write-read-ds:
- type: Static
- props:
- write-data-source-name: write_ds
- read-data-source-names: read_0, read_1
+ staticStrategy:
+ writeDataSourceName: write_ds
+ readDataSourceNames:
+ - read_0
+ - read_1