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 2021/08/31 12:33:18 UTC
[shardingsphere] branch master updated: API standardization.
(#12132)
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 57c3859 API standardization. (#12132)
57c3859 is described below
commit 57c38598dee30716ffed290963f8c75406748ecb
Author: gin <ja...@163.com>
AuthorDate: Tue Aug 31 20:32:01 2021 +0800
API standardization. (#12132)
* API standardization.
* Optimization name and add test method.
---
.../column/ColumnRegexMatchShadowAlgorithm.java | 8 +++----
.../shardingsphere/shadow/rule/ShadowRule.java | 10 ++++-----
.../shadow/rule/ShadowTableRule.java | 2 +-
...ableRuleChecker.java => ShadowRuleChecker.java} | 2 +-
.../table/ShadowTableConfigurationYamlSwapper.java | 4 +++-
...CheckerTest.java => ShadowRuleCheckerTest.java} | 22 ++++++++++++++++---
.../PropertiesShadowSpringBootStarterTest.java | 22 +++++++++++++------
.../boot/YmlShadowSpringBootStarterTest.java | 22 +++++++++++++------
.../application-shadow-properties.properties | 25 ++++++++++------------
.../src/test/resources/application-shadow-yml.yml | 20 ++++++++---------
.../ShadowAlgorithmSpringNamespaceTest.java | 17 +++++++++++----
.../namespace/ShadowSpringNamespaceTest.java | 1 +
.../shadow-algorithm-application-context.xml | 16 +++++++-------
13 files changed, 108 insertions(+), 63 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/column/ColumnRegexMatchShadowAlgorithm.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/column/ColumnRegexMatchShadowAlgorithm.java
index 129d5de..271e59b 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/column/ColumnRegexMatchShadowAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/column/ColumnRegexMatchShadowAlgorithm.java
@@ -63,13 +63,13 @@ public final class ColumnRegexMatchShadowAlgorithm implements ColumnShadowAlgori
}
private void checkRegex() {
- String expression = props.getProperty(REGEX);
- Preconditions.checkNotNull(expression, "Column regex match shadow algorithm regex cannot be null.");
+ String regex = props.getProperty(REGEX);
+ Preconditions.checkNotNull(regex, "Column regex match shadow algorithm regex cannot be null.");
}
private void checkColumn() {
- String expression = props.getProperty(COLUMN);
- Preconditions.checkNotNull(expression, "Column regex match shadow algorithm column cannot be null.");
+ String column = props.getProperty(COLUMN);
+ Preconditions.checkNotNull(column, "Column regex match shadow algorithm column cannot be null.");
}
private void checkOperation() {
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
index 28b342b..284e85c 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowRule.java
@@ -25,7 +25,7 @@ import org.apache.shardingsphere.shadow.algorithm.config.AlgorithmProvidedShadow
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.api.config.datasource.ShadowDataSourceConfiguration;
import org.apache.shardingsphere.shadow.api.config.table.ShadowTableConfiguration;
-import org.apache.shardingsphere.shadow.rule.checker.ShadowTableRuleChecker;
+import org.apache.shardingsphere.shadow.rule.checker.ShadowRuleChecker;
import org.apache.shardingsphere.shadow.spi.ShadowAlgorithm;
import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
@@ -86,11 +86,11 @@ public final class ShadowRule implements FeatureRule, SchemaRule, DataSourceCont
}
private void initShadowTableRules(final Map<String, ShadowTableConfiguration> tables, final Map<String, ShadowAlgorithm> shadowAlgorithms) {
- ShadowTableRuleChecker.checkShadowTables(tables);
+ ShadowRuleChecker.checkShadowTables(tables);
tables.forEach((key, value) -> {
Collection<String> tableShadowAlgorithmNames = value.getShadowAlgorithmNames();
uselessShadowAlgorithmFilter(tableShadowAlgorithmNames, shadowAlgorithms);
- ShadowTableRuleChecker.checkTableShadowAlgorithms(key, tableShadowAlgorithmNames, shadowAlgorithms);
+ ShadowRuleChecker.checkTableShadowAlgorithms(key, tableShadowAlgorithmNames, shadowAlgorithms);
shadowTableRules.put(key, new ShadowTableRule(key, tableShadowAlgorithmNames));
});
}
@@ -100,12 +100,12 @@ public final class ShadowRule implements FeatureRule, SchemaRule, DataSourceCont
}
private void initShadowAlgorithms(final Map<String, ShadowAlgorithm> shadowAlgorithms) {
- ShadowTableRuleChecker.checkShadowAlgorithms(shadowAlgorithms);
+ ShadowRuleChecker.checkShadowAlgorithms(shadowAlgorithms);
this.shadowAlgorithms.putAll(shadowAlgorithms);
}
private void initShadowDataSourceMappings(final Map<String, ShadowDataSourceConfiguration> dataSources) {
- ShadowTableRuleChecker.checkDataSources(dataSources);
+ ShadowRuleChecker.checkDataSources(dataSources);
dataSources.forEach((key, value) -> shadowDataSourceMappings.put(value.getSourceDataSourceName(), value.getShadowDataSourceName()));
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java
index 86bd16e..d96e16c 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java
@@ -29,7 +29,7 @@ import java.util.Collection;
@Getter
public final class ShadowTableRule {
- private final String logicTableName;
+ private final String tableName;
private final Collection<String> shadowAlgorithmNames;
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/checker/ShadowTableRuleChecker.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleChecker.java
similarity index 99%
rename from shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/checker/ShadowTableRuleChecker.java
rename to shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleChecker.java
index 0aa2c25..a389f44 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/checker/ShadowTableRuleChecker.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleChecker.java
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
/**
* Shadow table rule checker.
*/
-public final class ShadowTableRuleChecker {
+public final class ShadowRuleChecker {
/**
* Check data sources mappings size.
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/table/ShadowTableConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/table/ShadowTableConfigurationYamlSwapper.java
index 44f5dba..8962f85 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/table/ShadowTableConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/table/ShadowTableConfigurationYamlSwapper.java
@@ -21,6 +21,8 @@ import org.apache.shardingsphere.infra.yaml.config.swapper.YamlConfigurationSwap
import org.apache.shardingsphere.shadow.api.config.table.ShadowTableConfiguration;
import org.apache.shardingsphere.shadow.yaml.config.table.YamlShadowTableConfiguration;
+import java.util.LinkedList;
+
/**
* Shadow table configuration YAML swapper.
*/
@@ -35,6 +37,6 @@ public class ShadowTableConfigurationYamlSwapper implements YamlConfigurationSwa
@Override
public ShadowTableConfiguration swapToObject(final YamlShadowTableConfiguration yamlConfig) {
- return new ShadowTableConfiguration(yamlConfig.getShadowAlgorithmNames());
+ return new ShadowTableConfiguration(new LinkedList<>(yamlConfig.getShadowAlgorithmNames()));
}
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowTableRuleCheckerTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleCheckerTest.java
similarity index 84%
rename from shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowTableRuleCheckerTest.java
rename to shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleCheckerTest.java
index d9242a0..7d58606 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowTableRuleCheckerTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleCheckerTest.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.shadow.rule.checker;
+import com.google.common.collect.Maps;
import org.apache.shardingsphere.shadow.algorithm.shadow.column.ColumnRegexMatchShadowAlgorithm;
import org.apache.shardingsphere.shadow.algorithm.shadow.note.SimpleSQLNoteShadowAlgorithm;
import org.apache.shardingsphere.shadow.spi.ShadowAlgorithm;
@@ -28,13 +29,28 @@ import java.util.LinkedList;
import java.util.Map;
import java.util.Properties;
-public final class ShadowTableRuleCheckerTest {
+public final class ShadowRuleCheckerTest {
+
+ @Test(expected = IllegalStateException.class)
+ public void assertCheckDataSources() {
+ ShadowRuleChecker.checkDataSources(Maps.newLinkedHashMap());
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void assertCheckShadowTables() {
+ ShadowRuleChecker.checkShadowTables(Maps.newLinkedHashMap());
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void assertCheckShadowAlgorithms() {
+ ShadowRuleChecker.checkShadowAlgorithms(Maps.newLinkedHashMap());
+ }
@Test
public void assertCheckTableShadowAlgorithmsPass() {
Collection<String> tableShadowAlgorithmNames = createTableShadowAlgorithmNames();
Map<String, ShadowAlgorithm> shadowAlgorithms = createShadowAlgorithms(tableShadowAlgorithmNames);
- ShadowTableRuleChecker.checkTableShadowAlgorithms("t_user", tableShadowAlgorithmNames, shadowAlgorithms);
+ ShadowRuleChecker.checkTableShadowAlgorithms("t_user", tableShadowAlgorithmNames, shadowAlgorithms);
}
@Test(expected = IllegalStateException.class)
@@ -42,7 +58,7 @@ public final class ShadowTableRuleCheckerTest {
Collection<String> tableShadowAlgorithmNames = createTableShadowAlgorithmNames();
tableShadowAlgorithmNames.add("order-id-insert-regex-algorithm");
Map<String, ShadowAlgorithm> shadowAlgorithms = createShadowAlgorithms(tableShadowAlgorithmNames);
- ShadowTableRuleChecker.checkTableShadowAlgorithms("t_user", tableShadowAlgorithmNames, shadowAlgorithms);
+ ShadowRuleChecker.checkTableShadowAlgorithms("t_user", tableShadowAlgorithmNames, shadowAlgorithms);
}
private Map<String, ShadowAlgorithm> createShadowAlgorithms(final Collection<String> tableShadowAlgorithmNames) {
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/PropertiesShadowSpringBootStarterTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/PropertiesShadowSpringBootStarterTest.java
index 33590a3..d6838a8 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/PropertiesShadowSpringBootStarterTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/PropertiesShadowSpringBootStarterTest.java
@@ -57,22 +57,32 @@ public class PropertiesShadowSpringBootStarterTest {
}
private void assertShadowAlgorithms(final Map<String, ShadowAlgorithm> shadowAlgorithms) {
- assertThat(shadowAlgorithms.get("t-order-user-id-algorithm") instanceof ColumnRegexMatchShadowAlgorithm, is(true));
- assertThat(shadowAlgorithms.get("t-order-note-algorithm") instanceof SimpleSQLNoteShadowAlgorithm, is(true));
+ ShadowAlgorithm userIdMatchAlgorithm = shadowAlgorithms.get("user-id-match-algorithm");
+ assertThat(userIdMatchAlgorithm instanceof ColumnRegexMatchShadowAlgorithm, is(true));
+ assertThat(userIdMatchAlgorithm.getType(), is("COLUMN_REGEX_MATCH"));
+ assertThat(userIdMatchAlgorithm.getProps().get("operation"), is("insert"));
+ assertThat(userIdMatchAlgorithm.getProps().get("column"), is("user_id"));
+ assertThat(userIdMatchAlgorithm.getProps().get("regex"), is("[1]"));
+ ShadowAlgorithm simpleNoteAlgorithm = shadowAlgorithms.get("simple-note-algorithm");
+ assertThat(simpleNoteAlgorithm instanceof SimpleSQLNoteShadowAlgorithm, is(true));
+ assertThat(simpleNoteAlgorithm.getType(), is("SIMPLE_NOTE"));
+ assertThat(simpleNoteAlgorithm.getProps().get("shadow"), is("true"));
+ assertThat(simpleNoteAlgorithm.getProps().get("foo"), is("bar"));
}
private void assertShadowTables(final Map<String, ShadowTableConfiguration> shadowTables) {
assertThat(shadowTables.size(), is(2));
- assertThat(shadowTables.get("t_order").getShadowAlgorithmNames(), is(Arrays.asList("t-order-user-id-algorithm", "t-order-note-algorithm", "t-order-note-algorithm")));
- assertThat(shadowTables.get("t_user").getShadowAlgorithmNames(), is(Arrays.asList("t-order-user-id-algorithm", "t-order-note-algorithm")));
+ assertThat(shadowTables.get("t_order").getShadowAlgorithmNames(), is(Arrays.asList("user-id-match-algorithm", "simple-note-algorithm")));
+ assertThat(shadowTables.get("t_user").getShadowAlgorithmNames(), is(Arrays.asList("simple-note-algorithm")));
}
private void assertShadowDataSources(final Map<String, ShadowDataSourceConfiguration> dataSources) {
assertThat(dataSources.size(), is(1));
- assertThat(dataSources.get("shadow-data-source").getSourceDataSourceName(), is("ds0"));
- assertThat(dataSources.get("shadow-data-source").getShadowDataSourceName(), is("ds0-shadow"));
+ assertThat(dataSources.get("shadow-data-source").getSourceDataSourceName(), is("ds"));
+ assertThat(dataSources.get("shadow-data-source").getShadowDataSourceName(), is("ds-shadow"));
}
+ // fixme remove method when the api refactoring is complete
private void assertBasicShadowRule(final String column, final List<String> sourceDataSourceNames, final List<String> shadowDataSourceNames) {
assertThat(column, is("shadow"));
assertThat(sourceDataSourceNames, is(Arrays.asList("ds", "ds1")));
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/YmlShadowSpringBootStarterTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/YmlShadowSpringBootStarterTest.java
index 90707d7..d7c32ae 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/YmlShadowSpringBootStarterTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/YmlShadowSpringBootStarterTest.java
@@ -57,22 +57,32 @@ public class YmlShadowSpringBootStarterTest {
}
private void assertShadowAlgorithms(final Map<String, ShadowAlgorithm> shadowAlgorithms) {
- assertThat(shadowAlgorithms.get("t-order-user-id-algorithm") instanceof ColumnRegexMatchShadowAlgorithm, is(true));
- assertThat(shadowAlgorithms.get("t-order-note-algorithm") instanceof SimpleSQLNoteShadowAlgorithm, is(true));
+ ShadowAlgorithm userIdMatchAlgorithm = shadowAlgorithms.get("user-id-match-algorithm");
+ assertThat(userIdMatchAlgorithm instanceof ColumnRegexMatchShadowAlgorithm, is(true));
+ assertThat(userIdMatchAlgorithm.getType(), is("COLUMN_REGEX_MATCH"));
+ assertThat(userIdMatchAlgorithm.getProps().get("operation"), is("insert"));
+ assertThat(userIdMatchAlgorithm.getProps().get("column"), is("user_id"));
+ assertThat(userIdMatchAlgorithm.getProps().get("regex"), is("[1]"));
+ ShadowAlgorithm simpleNoteAlgorithm = shadowAlgorithms.get("simple-note-algorithm");
+ assertThat(simpleNoteAlgorithm instanceof SimpleSQLNoteShadowAlgorithm, is(true));
+ assertThat(simpleNoteAlgorithm.getType(), is("SIMPLE_NOTE"));
+ assertThat(simpleNoteAlgorithm.getProps().get("shadow"), is(true));
+ assertThat(simpleNoteAlgorithm.getProps().get("foo"), is("bar"));
}
private void assertShadowTables(final Map<String, ShadowTableConfiguration> shadowTables) {
assertThat(shadowTables.size(), is(2));
- assertThat(shadowTables.get("t_order").getShadowAlgorithmNames(), is(Arrays.asList("t-order-user-id-algorithm", "t-order-note-algorithm")));
- assertThat(shadowTables.get("t_user").getShadowAlgorithmNames(), is(Arrays.asList("t-order-user-id-algorithm", "t-order-note-algorithm")));
+ assertThat(shadowTables.get("t_order").getShadowAlgorithmNames(), is(Arrays.asList("user-id-match-algorithm", "simple-note-algorithm")));
+ assertThat(shadowTables.get("t_user").getShadowAlgorithmNames(), is(Arrays.asList("simple-note-algorithm")));
}
private void assertShadowDataSources(final Map<String, ShadowDataSourceConfiguration> dataSources) {
assertThat(dataSources.size(), is(1));
- assertThat(dataSources.get("shadow-data-source").getSourceDataSourceName(), is("ds-write-0"));
- assertThat(dataSources.get("shadow-data-source").getShadowDataSourceName(), is("ds-write-0-shadow"));
+ assertThat(dataSources.get("shadow-data-source").getSourceDataSourceName(), is("ds"));
+ assertThat(dataSources.get("shadow-data-source").getShadowDataSourceName(), is("ds-shadow"));
}
+ // fixme remove method when the api refactoring is complete
private void assertBasicShadowRule(final String column, final List<String> sourceDataSourceNames, final List<String> shadowDataSourceNames) {
assertThat(column, is("shadow"));
assertThat(sourceDataSourceNames, is(Arrays.asList("ds", "ds1")));
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-properties.properties b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-properties.properties
index b44dca1..396a74d 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-properties.properties
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-properties.properties
@@ -19,20 +19,17 @@ spring.shardingsphere.rules.shadow.column=shadow
spring.shardingsphere.rules.shadow.sourceDataSourceNames=ds,ds1
spring.shardingsphere.rules.shadow.shadowDataSourceNames=shadow_ds,shadow_ds1
-spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.source-data-source-name=ds0
-spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.shadow-data-source-name=ds0-shadow
+spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.source-data-source-name=ds
+spring.shardingsphere.rules.shadow.data-sources.shadow-data-source.shadow-data-source-name=ds-shadow
-spring.shardingsphere.rules.shadow.tables.t_order.shadow-algorithm-names[0]=t-order-user-id-algorithm
-spring.shardingsphere.rules.shadow.tables.t_order.shadow-algorithm-names[1]=t-order-note-algorithm
-spring.shardingsphere.rules.shadow.tables.t_order.shadow-algorithm-names[2]=t-order-note-algorithm
+spring.shardingsphere.rules.shadow.tables.t_order.shadow-algorithm-names=user-id-match-algorithm,simple-note-algorithm
+spring.shardingsphere.rules.shadow.tables.t_user.shadow-algorithm-names=simple-note-algorithm
-spring.shardingsphere.rules.shadow.tables.t_user.shadow-algorithm-names[0]=t-order-user-id-algorithm
-spring.shardingsphere.rules.shadow.tables.t_user.shadow-algorithm-names[1]=t-order-note-algorithm
+spring.shardingsphere.rules.shadow.shadow-algorithms.user-id-match-algorithm.type=COLUMN_REGEX_MATCH
+spring.shardingsphere.rules.shadow.shadow-algorithms.user-id-match-algorithm.props.operation=insert
+spring.shardingsphere.rules.shadow.shadow-algorithms.user-id-match-algorithm.props.column=user_id
+spring.shardingsphere.rules.shadow.shadow-algorithms.user-id-match-algorithm.props.regex=[1]
-spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-user-id-algorithm.type=COLUMN_REGEX_MATCH
-spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-user-id-algorithm.props.column=user_id
-spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-user-id-algorithm.props.operation=INSERT
-spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-user-id-algorithm.props.regex=[a]
-
-spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-note-algorithm.type=SIMPLE_NOTE
-spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-note-algorithm.props.shadow=true
+spring.shardingsphere.rules.shadow.shadow-algorithms.simple-note-algorithm.type=SIMPLE_NOTE
+spring.shardingsphere.rules.shadow.shadow-algorithms.simple-note-algorithm.props.shadow=true
+spring.shardingsphere.rules.shadow.shadow-algorithms.simple-note-algorithm.props.foo=bar
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-yml.yml b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-yml.yml
index 84dd3e8..1a5dc49 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-yml.yml
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow-yml.yml
@@ -26,25 +26,25 @@ spring:
enable: true
data-sources:
shadow-data-source:
- source-data-source-name: ds-write-0
- shadow-data-source-name: ds-write-0-shadow
+ source-data-source-name: ds
+ shadow-data-source-name: ds-shadow
tables:
t_order:
shadow-algorithm-names:
- - t-order-user-id-algorithm
- - t-order-note-algorithm
+ - user-id-match-algorithm
+ - simple-note-algorithm
t_user:
shadow-algorithm-names:
- - t-order-user-id-algorithm
- - t-order-note-algorithm
+ - simple-note-algorithm
shadow-algorithms:
- t-order-user-id-algorithm:
+ user-id-match-algorithm:
type: COLUMN_REGEX_MATCH
props:
- operation: INSERT
+ operation: insert
column: user_id
- regex: aa
- t-order-note-algorithm:
+ regex: "[1]"
+ simple-note-algorithm:
type: SIMPLE_NOTE
props:
shadow: true
+ foo: bar
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowAlgorithmSpringNamespaceTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowAlgorithmSpringNamespaceTest.java
index 6f42032..119ad52 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowAlgorithmSpringNamespaceTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowAlgorithmSpringNamespaceTest.java
@@ -51,14 +51,23 @@ public final class ShadowAlgorithmSpringNamespaceTest extends AbstractJUnit4Spri
}
private void assertShadowAlgorithms(final Map<String, ShadowAlgorithm> shadowAlgorithms) {
- assertThat(shadowAlgorithms.get("columnRegularMatchShadowAlgorithm") instanceof ColumnRegexMatchShadowAlgorithm, is(true));
- assertThat(shadowAlgorithms.get("noteShadowAlgorithm") instanceof SimpleSQLNoteShadowAlgorithm, is(true));
+ ShadowAlgorithm userIdMatchAlgorithm = shadowAlgorithms.get("user-id-match-algorithm");
+ assertThat(userIdMatchAlgorithm instanceof ColumnRegexMatchShadowAlgorithm, is(true));
+ assertThat(userIdMatchAlgorithm.getType(), is("COLUMN_REGEX_MATCH"));
+ assertThat(userIdMatchAlgorithm.getProps().get("operation"), is("insert"));
+ assertThat(userIdMatchAlgorithm.getProps().get("column"), is("user_id"));
+ assertThat(userIdMatchAlgorithm.getProps().get("regex"), is("[1]"));
+ ShadowAlgorithm simpleNoteAlgorithm = shadowAlgorithms.get("simple-note-algorithm");
+ assertThat(simpleNoteAlgorithm instanceof SimpleSQLNoteShadowAlgorithm, is(true));
+ assertThat(simpleNoteAlgorithm.getType(), is("SIMPLE_NOTE"));
+ assertThat(simpleNoteAlgorithm.getProps().get("shadow"), is("true"));
+ assertThat(simpleNoteAlgorithm.getProps().get("foo"), is("bar"));
}
private void assertShadowTables(final Map<String, ShadowTableConfiguration> shadowTables) {
assertThat(shadowTables.size(), is(2));
- assertThat(shadowTables.get("t_order").getShadowAlgorithmNames(), is(Arrays.asList("columnRegularMatchShadowAlgorithm", "noteShadowAlgorithm")));
- assertThat(shadowTables.get("t_user").getShadowAlgorithmNames(), is(Arrays.asList("columnRegularMatchShadowAlgorithm", "noteShadowAlgorithm")));
+ assertThat(shadowTables.get("t_order").getShadowAlgorithmNames(), is(Arrays.asList("user-id-match-algorithm", "simple-note-algorithm")));
+ assertThat(shadowTables.get("t_user").getShadowAlgorithmNames(), is(Arrays.asList("simple-note-algorithm")));
}
private void assertShadowDataSources(final Map<String, ShadowDataSourceConfiguration> dataSources) {
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowSpringNamespaceTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowSpringNamespaceTest.java
index 000d505..adb0d70 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowSpringNamespaceTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/java/org/apache/shardingsphere/shadow/spring/namespace/ShadowSpringNamespaceTest.java
@@ -45,6 +45,7 @@ public final class ShadowSpringNamespaceTest extends AbstractJUnit4SpringContext
assertTrue(shadowRule.getShadowAlgorithms().isEmpty());
}
+ // fixme remove method when the api refactoring is complete
private void assertBasicShadowRule(final String column, final List<String> sourceDataSourceNames, final List<String> shadowDataSourceNames) {
assertThat(column, is("shadow"));
assertThat(sourceDataSourceNames, is(Arrays.asList("ds", "ds1")));
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/resources/META-INF/spring/shadow-algorithm-application-context.xml b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/resources/META-INF/spring/shadow-algorithm-application-context.xml
index 6bb6b83..903fe6b 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/resources/META-INF/spring/shadow-algorithm-application-context.xml
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/test/resources/META-INF/spring/shadow-algorithm-application-context.xml
@@ -25,28 +25,28 @@
http://shardingsphere.apache.org/schema/shardingsphere/shadow/shadow.xsd
">
- <shadow:shadow-algorithm id="columnRegularMatchShadowAlgorithm" type="COLUMN_REGEX_MATCH">
+ <shadow:shadow-algorithm id="user-id-match-algorithm" type="COLUMN_REGEX_MATCH">
<props>
+ <prop key="operation">insert</prop>
<prop key="column">user_id</prop>
- <prop key="regex">[a]</prop>
- <prop key="operation">UPDATE</prop>
+ <prop key="regex">[1]</prop>
</props>
</shadow:shadow-algorithm>
- <shadow:shadow-algorithm id="noteShadowAlgorithm" type="SIMPLE_NOTE">
+ <shadow:shadow-algorithm id="simple-note-algorithm" type="SIMPLE_NOTE">
<props>
<prop key="shadow">true</prop>
+ <prop key="foo">bar</prop>
</props>
</shadow:shadow-algorithm>
<shadow:rule id="shadowRule" enable="true" column="shadow" sourceDataSourceNames="ds0,ds1" shadowDataSourceNames="shadow_ds0,shadow_ds1">
<shadow:data-source id="shadow-data-source" source-data-source-name="ds" shadow-data-source-name="ds-shadow"/>
<shadow:table name="t_order">
- <shadow:table-algorithm shadow-algorithm-ref= "columnRegularMatchShadowAlgorithm" />
- <shadow:table-algorithm shadow-algorithm-ref= "noteShadowAlgorithm" />
+ <shadow:table-algorithm shadow-algorithm-ref= "user-id-match-algorithm" />
+ <shadow:table-algorithm shadow-algorithm-ref= "simple-note-algorithm" />
</shadow:table>
<shadow:table name="t_user">
- <shadow:table-algorithm shadow-algorithm-ref= "columnRegularMatchShadowAlgorithm" />
- <shadow:table-algorithm shadow-algorithm-ref= "noteShadowAlgorithm" />
+ <shadow:table-algorithm shadow-algorithm-ref= "simple-note-algorithm" />
</shadow:table>
</shadow:rule>
</beans>