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/12 11:36:37 UTC
[shardingsphere] branch master updated: Add shadow switch and
optimize API parameters. (#11785)
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 56acbff Add shadow switch and optimize API parameters. (#11785)
56acbff is described below
commit 56acbfff6b98149a5f397e00b454bd6da861d3ad
Author: gin <ja...@163.com>
AuthorDate: Thu Aug 12 19:36:08 2021 +0800
Add shadow switch and optimize API parameters. (#11785)
---
.../shadow/api/config/ShadowRuleConfiguration.java | 10 +-
.../AlgorithmProvidedShadowRuleConfiguration.java | 4 +-
.../shadow/route/ShadowSQLRouter.java | 7 +-
.../shardingsphere/shadow/rule/ShadowRule.java | 14 ++-
.../yaml/config/YamlShadowRuleConfiguration.java | 4 +-
...eAlgorithmProviderConfigurationYamlSwapper.java | 6 +-
.../ShadowRuleConfigurationYamlSwapper.java | 4 +-
...orithmProviderConfigurationYamlSwapperTest.java | 120 +++++++++++++--------
.../ShadowRuleConfigurationYamlSwapperTest.java | 42 ++++++--
.../PropertiesShadowSpringBootStarterTest.java | 3 +-
.../boot/YmlShadowSpringBootStarterTest.java | 3 +-
.../application-shadow-properties.properties | 10 +-
.../src/test/resources/application-shadow-yml.yml | 5 +-
.../parser/ShadowRuleBeanDefinitionParser.java | 7 +-
.../namespace/tag/ShadowRuleBeanDefinitionTag.java | 4 +-
.../main/resources/META-INF/namespace/shadow.xsd | 5 +-
.../ShadowAlgorithmSpringNamespaceTest.java | 3 +-
.../namespace/ShadowSpringNamespaceTest.java | 3 +-
.../shadow-algorithm-application-context.xml | 10 +-
19 files changed, 170 insertions(+), 94 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-api/src/main/java/org/apache/shardingsphere/shadow/api/config/ShadowRuleConfiguration.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-api/src/main/java/org/apache/shardingsphere/shadow/api/config/ShadowRuleConfiguration.java
index b2ca065..c441ded 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-api/src/main/java/org/apache/shardingsphere/shadow/api/config/ShadowRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-api/src/main/java/org/apache/shardingsphere/shadow/api/config/ShadowRuleConfiguration.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.shadow.api.config;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.function.DistributedRuleConfiguration;
@@ -36,6 +37,7 @@ import java.util.Map;
*/
@Getter
@Setter
+@RequiredArgsConstructor
public final class ShadowRuleConfiguration implements SchemaRuleConfiguration, DistributedRuleConfiguration {
private final String column;
@@ -44,19 +46,19 @@ public final class ShadowRuleConfiguration implements SchemaRuleConfiguration, D
private final List<String> shadowDataSourceNames;
+ private final boolean enable;
+
private Map<String, ShadowDataSourceConfiguration> dataSources = new LinkedHashMap<>();
- private Map<String, ShadowTableConfiguration> shadowTables = new LinkedHashMap<>();
+ private Map<String, ShadowTableConfiguration> tables = new LinkedHashMap<>();
private Map<String, ShardingSphereAlgorithmConfiguration> shadowAlgorithms = new LinkedHashMap<>();
public ShadowRuleConfiguration(final String column, final List<String> sourceDataSourceNames, final List<String> shadowDataSourceNames) {
+ this(column, sourceDataSourceNames, shadowDataSourceNames, false);
Preconditions.checkArgument(!Strings.isNullOrEmpty(column), "Column is required.");
Preconditions.checkArgument(!sourceDataSourceNames.isEmpty(), "SourceDataSourceNames is required.");
Preconditions.checkArgument(!shadowDataSourceNames.isEmpty(), "ShadowDataSourceNames is required.");
Preconditions.checkArgument(sourceDataSourceNames.size() == shadowDataSourceNames.size(), "SourceDataSourceNames and ShadowDataSourceNames size must same.");
- this.column = column;
- this.sourceDataSourceNames = sourceDataSourceNames;
- this.shadowDataSourceNames = shadowDataSourceNames;
}
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/config/AlgorithmProvidedShadowRuleConfiguration.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/config/AlgorithmProvidedShadowRuleConfiguration.java
index 2438536..d935a8b 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/config/AlgorithmProvidedShadowRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/algorithm/config/AlgorithmProvidedShadowRuleConfiguration.java
@@ -45,9 +45,11 @@ public final class AlgorithmProvidedShadowRuleConfiguration implements SchemaRul
private final List<String> shadowDataSourceNames;
+ private boolean enable;
+
private Map<String, ShadowDataSourceConfiguration> dataSources = new LinkedHashMap<>();
- private Map<String, ShadowTableConfiguration> shadowTables = new LinkedHashMap<>();
+ private Map<String, ShadowTableConfiguration> tables = new LinkedHashMap<>();
private Map<String, ShadowAlgorithm> shadowAlgorithms = new LinkedHashMap<>();
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
index b5f156d..bbe512f 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/route/ShadowSQLRouter.java
@@ -84,7 +84,7 @@ public final class ShadowSQLRouter implements SQLRouter<ShadowRule> {
@Override
public void decorateRouteContext(final RouteContext routeContext,
final LogicSQL logicSQL, final ShardingSphereMetaData metaData, final ShadowRule rule, final ConfigurationProperties props) {
- if (isShadowEnable()) {
+ if (rule.isEnable()) {
doShadowDecorateFuture(routeContext, logicSQL, metaData, rule, props);
} else {
doShadowDecorate(routeContext, logicSQL, rule);
@@ -117,11 +117,6 @@ public final class ShadowSQLRouter implements SQLRouter<ShadowRule> {
ShadowRouteEngineFactory.newInstance(logicSQL).route(routeContext, logicSQL, metaData, rule, props);
}
- // fixme the shadow switch reconstruction is complete
- private boolean isShadowEnable() {
- return false;
- }
-
@Override
public int getOrder() {
return ShadowOrder.ORDER;
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 b5a2e0f..5047c20 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
@@ -49,37 +49,41 @@ public final class ShadowRule implements FeatureRule, SchemaRule, DataSourceCont
private final String column;
+ private final boolean enable;
+
private final Map<String, ShadowDataSourceConfiguration> dataSources = new LinkedHashMap<>();
- private final Map<String, ShadowTableConfiguration> shadowTables = new LinkedHashMap<>();
+ private final Map<String, ShadowTableConfiguration> tables = new LinkedHashMap<>();
private final Map<String, ShadowAlgorithm> shadowAlgorithms = new LinkedHashMap<>();
public ShadowRule(final ShadowRuleConfiguration shadowRuleConfig) {
column = shadowRuleConfig.getColumn();
shadowMappings = new HashMap<>(shadowRuleConfig.getShadowDataSourceNames().size());
+ enable = shadowRuleConfig.isEnable();
for (int i = 0; i < shadowRuleConfig.getSourceDataSourceNames().size(); i++) {
shadowMappings.put(shadowRuleConfig.getSourceDataSourceNames().get(i), shadowRuleConfig.getShadowDataSourceNames().get(i));
}
if (!shadowRuleConfig.getDataSources().isEmpty()) {
dataSources.putAll(shadowRuleConfig.getDataSources());
}
- if (!shadowRuleConfig.getShadowTables().isEmpty()) {
- shadowTables.putAll(shadowRuleConfig.getShadowTables());
+ if (!shadowRuleConfig.getTables().isEmpty()) {
+ tables.putAll(shadowRuleConfig.getTables());
}
}
public ShadowRule(final AlgorithmProvidedShadowRuleConfiguration shadowRuleConfig) {
column = shadowRuleConfig.getColumn();
shadowMappings = new HashMap<>(shadowRuleConfig.getShadowDataSourceNames().size());
+ enable = shadowRuleConfig.isEnable();
for (int i = 0; i < shadowRuleConfig.getSourceDataSourceNames().size(); i++) {
shadowMappings.put(shadowRuleConfig.getSourceDataSourceNames().get(i), shadowRuleConfig.getShadowDataSourceNames().get(i));
}
if (!shadowRuleConfig.getDataSources().isEmpty()) {
dataSources.putAll(shadowRuleConfig.getDataSources());
}
- if (!shadowRuleConfig.getShadowTables().isEmpty()) {
- shadowTables.putAll(shadowRuleConfig.getShadowTables());
+ if (!shadowRuleConfig.getTables().isEmpty()) {
+ tables.putAll(shadowRuleConfig.getTables());
}
if (!shadowRuleConfig.getShadowAlgorithms().isEmpty()) {
shadowAlgorithms.putAll(shadowRuleConfig.getShadowAlgorithms());
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java
index 1ddd258..3827cc9 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/config/YamlShadowRuleConfiguration.java
@@ -43,9 +43,11 @@ public final class YamlShadowRuleConfiguration implements YamlRuleConfiguration
private List<String> shadowDataSourceNames;
+ private boolean enable;
+
private Map<String, YamlShadowDataSourceConfiguration> dataSources = new LinkedHashMap<>();
- private Map<String, YamlShadowTableConfiguration> shadowTables = new LinkedHashMap<>();
+ private Map<String, YamlShadowTableConfiguration> tables = new LinkedHashMap<>();
private Map<String, YamlShardingSphereAlgorithmConfiguration> shadowAlgorithms = new LinkedHashMap<>();
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapper.java
index 923d8f2..dba813b 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapper.java
@@ -37,6 +37,7 @@ public final class ShadowRuleAlgorithmProviderConfigurationYamlSwapper implement
@Override
public YamlShadowRuleConfiguration swapToYamlConfiguration(final AlgorithmProvidedShadowRuleConfiguration dataConfiguration) {
YamlShadowRuleConfiguration result = new YamlShadowRuleConfiguration();
+ result.setEnable(dataConfiguration.isEnable());
parseBasicShadowRule(dataConfiguration, result);
parseDataSources(dataConfiguration, result);
parseShadowTables(dataConfiguration, result);
@@ -50,7 +51,7 @@ public final class ShadowRuleAlgorithmProviderConfigurationYamlSwapper implement
}
private void parseShadowTables(final AlgorithmProvidedShadowRuleConfiguration dataConfiguration, final YamlShadowRuleConfiguration yamlConfiguration) {
- dataConfiguration.getShadowTables().forEach((key, value) -> yamlConfiguration.getShadowTables().put(key, tableConfigurationYamlSwapper.swapToYamlConfiguration(value)));
+ dataConfiguration.getTables().forEach((key, value) -> yamlConfiguration.getTables().put(key, tableConfigurationYamlSwapper.swapToYamlConfiguration(value)));
}
private void parseDataSources(final AlgorithmProvidedShadowRuleConfiguration dataConfiguration, final YamlShadowRuleConfiguration yamlConfiguration) {
@@ -67,13 +68,14 @@ public final class ShadowRuleAlgorithmProviderConfigurationYamlSwapper implement
@Override
public AlgorithmProvidedShadowRuleConfiguration swapToObject(final YamlShadowRuleConfiguration yamlConfiguration) {
AlgorithmProvidedShadowRuleConfiguration result = createBasicAlgorithmProvidedShadowRule(yamlConfiguration);
+ result.setEnable(yamlConfiguration.isEnable());
parseYamlDataSources(yamlConfiguration, result);
parseYamlShadowTables(yamlConfiguration, result);
return result;
}
private void parseYamlShadowTables(final YamlShadowRuleConfiguration yamlConfiguration, final AlgorithmProvidedShadowRuleConfiguration dataConfiguration) {
- yamlConfiguration.getShadowTables().forEach((key, value) -> dataConfiguration.getShadowTables().put(key, tableConfigurationYamlSwapper.swapToObject(value)));
+ yamlConfiguration.getTables().forEach((key, value) -> dataConfiguration.getTables().put(key, tableConfigurationYamlSwapper.swapToObject(value)));
}
private void parseYamlDataSources(final YamlShadowRuleConfiguration yamlConfiguration, final AlgorithmProvidedShadowRuleConfiguration dataConfiguration) {
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleConfigurationYamlSwapper.java
index bf1b9e9..8a73ff8 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/main/java/org/apache/shardingsphere/shadow/yaml/swapper/ShadowRuleConfigurationYamlSwapper.java
@@ -51,7 +51,7 @@ public final class ShadowRuleConfigurationYamlSwapper implements YamlRuleConfigu
}
private void parseShadowTables(final ShadowRuleConfiguration dataConfiguration, final YamlShadowRuleConfiguration yamlConfiguration) {
- dataConfiguration.getShadowTables().forEach((key, value) -> yamlConfiguration.getShadowTables().put(key, tableConfigurationYamlSwapper.swapToYamlConfiguration(value)));
+ dataConfiguration.getTables().forEach((key, value) -> yamlConfiguration.getTables().put(key, tableConfigurationYamlSwapper.swapToYamlConfiguration(value)));
}
private void parseDataSources(final ShadowRuleConfiguration dataConfiguration, final YamlShadowRuleConfiguration yamlConfiguration) {
@@ -79,7 +79,7 @@ public final class ShadowRuleConfigurationYamlSwapper implements YamlRuleConfigu
}
private void parseYamlShadowTables(final YamlShadowRuleConfiguration yamlConfiguration, final ShadowRuleConfiguration dataConfiguration) {
- yamlConfiguration.getShadowTables().forEach((key, value) -> dataConfiguration.getShadowTables().put(key, tableConfigurationYamlSwapper.swapToObject(value)));
+ yamlConfiguration.getTables().forEach((key, value) -> dataConfiguration.getTables().put(key, tableConfigurationYamlSwapper.swapToObject(value)));
}
private void parseYamlDataSources(final YamlShadowRuleConfiguration yamlConfiguration, final ShadowRuleConfiguration dataConfiguration) {
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapperTest.java
index c5443ce..4834439 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleAlgorithmProviderConfigurationYamlSwapperTest.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.shadow.yaml.config.YamlShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.yaml.config.datasource.YamlShadowDataSourceConfiguration;
import org.apache.shardingsphere.shadow.yaml.config.table.YamlShadowTableConfiguration;
import org.apache.shardingsphere.shadow.yaml.swapper.ShadowRuleAlgorithmProviderConfigurationYamlSwapper;
+import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
@@ -36,84 +37,111 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
public final class ShadowRuleAlgorithmProviderConfigurationYamlSwapperTest {
-
- private AlgorithmProvidedShadowRuleConfiguration algorithmProvidedShadowRuleConfiguration;
-
- private YamlShadowRuleConfiguration yamlShadowRuleConfiguration;
-
+
+ private ShadowRuleAlgorithmProviderConfigurationYamlSwapper swapper;
+
+ @Before
+ public void init() {
+ swapper = new ShadowRuleAlgorithmProviderConfigurationYamlSwapper();
+ }
+
@Test
public void assertSwapToYamlConfiguration() {
- buildAlgorithmProvidedShadowRuleConfiguration();
- ShadowRuleAlgorithmProviderConfigurationYamlSwapper swapper = new ShadowRuleAlgorithmProviderConfigurationYamlSwapper();
- YamlShadowRuleConfiguration yamlShadowRuleConfiguration = swapper.swapToYamlConfiguration(algorithmProvidedShadowRuleConfiguration);
- assertThat(yamlShadowRuleConfiguration.getColumn(), is(algorithmProvidedShadowRuleConfiguration.getColumn()));
- assertThat(yamlShadowRuleConfiguration.getShadowDataSourceNames(), is(algorithmProvidedShadowRuleConfiguration.getShadowDataSourceNames()));
- assertThat(yamlShadowRuleConfiguration.getSourceDataSourceNames(), is(algorithmProvidedShadowRuleConfiguration.getSourceDataSourceNames()));
- yamlShadowRuleConfiguration.getDataSources().entrySet().forEach(each -> {
- ShadowDataSourceConfiguration dataSourceConfiguration = algorithmProvidedShadowRuleConfiguration.getDataSources().get(each.getKey());
+ AlgorithmProvidedShadowRuleConfiguration expectedConfiguration = buildAlgorithmProvidedShadowRuleConfiguration();
+ YamlShadowRuleConfiguration actualConfiguration = swapper.swapToYamlConfiguration(expectedConfiguration);
+ assertThat(actualConfiguration.isEnable(), is(expectedConfiguration.isEnable()));
+ assertBasicYamlShadowRule(actualConfiguration, expectedConfiguration);
+ actualConfiguration.getDataSources().entrySet().forEach(each -> {
+ ShadowDataSourceConfiguration dataSourceConfiguration = expectedConfiguration.getDataSources().get(each.getKey());
assertNotNull(dataSourceConfiguration);
assertThat(each.getValue().getShadowDataSourceName(), is(dataSourceConfiguration.getShadowDataSourceName()));
assertThat(each.getValue().getSourceDataSourceName(), is(dataSourceConfiguration.getSourceDataSourceName()));
});
- yamlShadowRuleConfiguration.getShadowTables().entrySet().forEach(each -> {
- ShadowTableConfiguration shadowTableConfiguration = algorithmProvidedShadowRuleConfiguration.getShadowTables().get(each.getKey());
+ actualConfiguration.getTables().entrySet().forEach(each -> {
+ ShadowTableConfiguration shadowTableConfiguration = expectedConfiguration.getTables().get(each.getKey());
assertNotNull(shadowTableConfiguration);
assertThat(each.getValue().getShadowAlgorithmNames(), is(shadowTableConfiguration.getShadowAlgorithmNames()));
});
- yamlShadowRuleConfiguration.getShadowAlgorithms().entrySet().forEach(each -> {
- ShadowAlgorithm shadowAlgorithm = algorithmProvidedShadowRuleConfiguration.getShadowAlgorithms().get(each.getKey());
+ actualConfiguration.getShadowAlgorithms().entrySet().forEach(each -> {
+ ShadowAlgorithm shadowAlgorithm = expectedConfiguration.getShadowAlgorithms().get(each.getKey());
assertNotNull(shadowAlgorithm);
assertThat(each.getValue().getType(), is(shadowAlgorithm.getType()));
});
}
-
+
+ private AlgorithmProvidedShadowRuleConfiguration buildAlgorithmProvidedShadowRuleConfiguration() {
+ AlgorithmProvidedShadowRuleConfiguration result = createAlgorithmProvidedShadowRuleConfiguration();
+ result.setEnable(true);
+ result.getDataSources().put("shadow-data-source", new ShadowDataSourceConfiguration("ds", "ds-shadow"));
+ result.getTables().put("t_order", new ShadowTableConfiguration(Arrays.asList("user-id-match-algorithm", "note-algorithm")));
+ result.getShadowAlgorithms().put("user-id-match-algorithm", new ColumnRegularMatchShadowAlgorithm());
+ return result;
+ }
+
+ // fixme remove method when the api refactoring is complete
+ private void assertBasicYamlShadowRule(final YamlShadowRuleConfiguration actualConfiguration, final AlgorithmProvidedShadowRuleConfiguration expectedConfiguration) {
+ assertThat(actualConfiguration.getColumn(), is(expectedConfiguration.getColumn()));
+ assertThat(actualConfiguration.getShadowDataSourceNames(), is(expectedConfiguration.getShadowDataSourceNames()));
+ assertThat(actualConfiguration.getSourceDataSourceNames(), is(expectedConfiguration.getSourceDataSourceNames()));
+ }
+
+ // fixme remove method when the api refactoring is complete
+ private AlgorithmProvidedShadowRuleConfiguration createAlgorithmProvidedShadowRuleConfiguration() {
+ return new AlgorithmProvidedShadowRuleConfiguration("id", Arrays.asList("ds"), Arrays.asList("ds-shadow"));
+ }
+
@Test
public void assertSwapToObject() {
- buildYamlShadowRuleConfiguration();
- ShadowRuleAlgorithmProviderConfigurationYamlSwapper swapper = new ShadowRuleAlgorithmProviderConfigurationYamlSwapper();
- AlgorithmProvidedShadowRuleConfiguration targetConfiguration = swapper.swapToObject(yamlShadowRuleConfiguration);
- assertThat(targetConfiguration.getColumn(), is(yamlShadowRuleConfiguration.getColumn()));
- assertThat(targetConfiguration.getShadowDataSourceNames(), is(yamlShadowRuleConfiguration.getShadowDataSourceNames()));
- assertThat(targetConfiguration.getSourceDataSourceNames(), is(yamlShadowRuleConfiguration.getSourceDataSourceNames()));
- targetConfiguration.getDataSources().entrySet().forEach(each -> {
- YamlShadowDataSourceConfiguration yamlShadowDataSourceConfiguration = yamlShadowRuleConfiguration.getDataSources().get(each.getKey());
+ YamlShadowRuleConfiguration expectedConfiguration = buildYamlShadowRuleConfiguration();
+ AlgorithmProvidedShadowRuleConfiguration actualConfiguration = swapper.swapToObject(expectedConfiguration);
+ assertBasicAlgorithmShadowRule(actualConfiguration, expectedConfiguration);
+ assertThat(actualConfiguration.isEnable(), is(expectedConfiguration.isEnable()));
+ actualConfiguration.getDataSources().entrySet().forEach(each -> {
+ YamlShadowDataSourceConfiguration yamlShadowDataSourceConfiguration = expectedConfiguration.getDataSources().get(each.getKey());
assertNotNull(yamlShadowDataSourceConfiguration);
assertThat(each.getValue().getShadowDataSourceName(), is(yamlShadowDataSourceConfiguration.getShadowDataSourceName()));
assertThat(each.getValue().getSourceDataSourceName(), is(yamlShadowDataSourceConfiguration.getSourceDataSourceName()));
});
- targetConfiguration.getShadowTables().entrySet().forEach(each -> {
- YamlShadowTableConfiguration yamlShadowTableConfiguration = yamlShadowRuleConfiguration.getShadowTables().get(each.getKey());
+ actualConfiguration.getTables().entrySet().forEach(each -> {
+ YamlShadowTableConfiguration yamlShadowTableConfiguration = expectedConfiguration.getTables().get(each.getKey());
assertNotNull(yamlShadowTableConfiguration);
assertThat(each.getValue().getShadowAlgorithmNames(), is(yamlShadowTableConfiguration.getShadowAlgorithmNames()));
});
- targetConfiguration.getShadowAlgorithms().entrySet().forEach(each -> {
- YamlShardingSphereAlgorithmConfiguration yamlShardingSphereAlgorithmConfiguration = yamlShadowRuleConfiguration.getShadowAlgorithms().get(each.getKey());
+ actualConfiguration.getShadowAlgorithms().entrySet().forEach(each -> {
+ YamlShardingSphereAlgorithmConfiguration yamlShardingSphereAlgorithmConfiguration = expectedConfiguration.getShadowAlgorithms().get(each.getKey());
assertNotNull(yamlShardingSphereAlgorithmConfiguration);
assertThat(each.getValue().getType(), is(yamlShardingSphereAlgorithmConfiguration.getType()));
});
}
-
- private void buildAlgorithmProvidedShadowRuleConfiguration() {
- algorithmProvidedShadowRuleConfiguration = new AlgorithmProvidedShadowRuleConfiguration("id", Arrays.asList("ds"), Arrays.asList("ds-shadow"));
- algorithmProvidedShadowRuleConfiguration.getDataSources().put("shadow-data-source", new ShadowDataSourceConfiguration("ds", "ds-shadow"));
- algorithmProvidedShadowRuleConfiguration.getShadowTables().put("t_order", new ShadowTableConfiguration(Arrays.asList("user-id-match-algorithm", "note-algorithm")));
- algorithmProvidedShadowRuleConfiguration.getShadowAlgorithms().put("user-id-match-algorithm", new ColumnRegularMatchShadowAlgorithm());
- }
-
- private void buildYamlShadowRuleConfiguration() {
- yamlShadowRuleConfiguration = new YamlShadowRuleConfiguration();
- yamlShadowRuleConfiguration.setColumn("id");
- yamlShadowRuleConfiguration.setSourceDataSourceNames(Arrays.asList("ds"));
- yamlShadowRuleConfiguration.setShadowDataSourceNames(Arrays.asList("ds-shadow"));
+
+ private YamlShadowRuleConfiguration buildYamlShadowRuleConfiguration() {
+ YamlShadowRuleConfiguration result = new YamlShadowRuleConfiguration();
+ buildBasicYamlShadowRule(result);
+ result.setEnable(true);
YamlShadowDataSourceConfiguration yamlShadowDataSourceConfiguration = new YamlShadowDataSourceConfiguration();
yamlShadowDataSourceConfiguration.setSourceDataSourceName("ds");
yamlShadowDataSourceConfiguration.setShadowDataSourceName("ds-shadow");
- yamlShadowRuleConfiguration.getDataSources().put("shadow-data-source", yamlShadowDataSourceConfiguration);
+ result.getDataSources().put("shadow-data-source", yamlShadowDataSourceConfiguration);
YamlShadowTableConfiguration yamlShadowTableConfiguration = new YamlShadowTableConfiguration();
yamlShadowTableConfiguration.setShadowAlgorithmNames(Arrays.asList("user-id-match-algorithm", "note-algorithm"));
- yamlShadowRuleConfiguration.getShadowTables().put("t_order", yamlShadowTableConfiguration);
+ result.getTables().put("t_order", yamlShadowTableConfiguration);
YamlShardingSphereAlgorithmConfiguration yamlShardingSphereAlgorithmConfiguration = new YamlShardingSphereAlgorithmConfiguration();
yamlShardingSphereAlgorithmConfiguration.setType("COLUMN-REGULAR-MATCH");
- yamlShadowRuleConfiguration.getShadowAlgorithms().put("user-id-match-algorithm", yamlShardingSphereAlgorithmConfiguration);
+ result.getShadowAlgorithms().put("user-id-match-algorithm", yamlShardingSphereAlgorithmConfiguration);
+ return result;
+ }
+
+ // fixme remove method when the api refactoring is complete
+ private void buildBasicYamlShadowRule(final YamlShadowRuleConfiguration yamlShadowRuleConfiguration) {
+ yamlShadowRuleConfiguration.setColumn("id");
+ yamlShadowRuleConfiguration.setSourceDataSourceNames(Arrays.asList("ds"));
+ yamlShadowRuleConfiguration.setShadowDataSourceNames(Arrays.asList("ds-shadow"));
+ }
+
+ // fixme remove method when the api refactoring is complete
+ private void assertBasicAlgorithmShadowRule(final AlgorithmProvidedShadowRuleConfiguration actualConfiguration, final YamlShadowRuleConfiguration expectedConfiguration) {
+ assertThat(actualConfiguration.getColumn(), is(expectedConfiguration.getColumn()));
+ assertThat(actualConfiguration.getShadowDataSourceNames(), is(expectedConfiguration.getShadowDataSourceNames()));
+ assertThat(actualConfiguration.getSourceDataSourceNames(), is(expectedConfiguration.getSourceDataSourceNames()));
}
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleConfigurationYamlSwapperTest.java
index e69664a..6c31f0f 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/swapper/ShadowRuleConfigurationYamlSwapperTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.shadow.swapper;
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.yaml.config.YamlShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.yaml.swapper.ShadowRuleConfigurationYamlSwapper;
+import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
@@ -29,13 +30,42 @@ import static org.junit.Assert.assertThat;
public final class ShadowRuleConfigurationYamlSwapperTest {
+ private ShadowRuleConfigurationYamlSwapper swapper;
+
+ @Before
+ public void init() {
+ swapper = new ShadowRuleConfigurationYamlSwapper();
+ }
+
@Test
public void assertSwapToYamlConfiguration() {
- ShadowRuleConfiguration shadowRuleConfig = new ShadowRuleConfiguration("shadow", Arrays.asList("ds", "ds1"), Arrays.asList("shadow_ds", "shadow_ds1"));
- YamlShadowRuleConfiguration actual = new ShadowRuleConfigurationYamlSwapper().swapToYamlConfiguration(shadowRuleConfig);
- assertThat(actual.getColumn(), is("shadow"));
- assertThat(actual.getSourceDataSourceNames().size(), is(actual.getShadowDataSourceNames().size()));
- assertThat(actual.getSourceDataSourceNames(), is(Arrays.asList("ds", "ds1")));
- assertThat(actual.getShadowDataSourceNames(), is(Arrays.asList("shadow_ds", "shadow_ds1")));
+ ShadowRuleConfiguration expectedConfiguration = createShadowRuleConfiguration();
+ YamlShadowRuleConfiguration actualConfiguration = swapper.swapToYamlConfiguration(expectedConfiguration);
+ assertThat(actualConfiguration.isEnable(), is(expectedConfiguration.isEnable()));
+ assertThat(actualConfiguration.getColumn(), is(expectedConfiguration.getColumn()));
+ assertThat(actualConfiguration.getSourceDataSourceNames(), is(expectedConfiguration.getSourceDataSourceNames()));
+ assertThat(actualConfiguration.getShadowDataSourceNames(), is(expectedConfiguration.getShadowDataSourceNames()));
+ }
+
+ private ShadowRuleConfiguration createShadowRuleConfiguration() {
+ return new ShadowRuleConfiguration("shadow", Arrays.asList("ds", "ds1"), Arrays.asList("shadow_ds", "shadow_ds1"));
+ }
+
+ @Test
+ public void assertSwapToObject() {
+ YamlShadowRuleConfiguration expectedConfiguration = createYamlShadowRuleConfiguration();
+ ShadowRuleConfiguration actualConfiguration = swapper.swapToObject(expectedConfiguration);
+ assertThat(actualConfiguration.isEnable(), is(expectedConfiguration.isEnable()));
+ assertThat(actualConfiguration.getColumn(), is(expectedConfiguration.getColumn()));
+ assertThat(actualConfiguration.getSourceDataSourceNames(), is(expectedConfiguration.getSourceDataSourceNames()));
+ assertThat(actualConfiguration.getShadowDataSourceNames(), is(expectedConfiguration.getShadowDataSourceNames()));
+ }
+
+ private YamlShadowRuleConfiguration createYamlShadowRuleConfiguration() {
+ YamlShadowRuleConfiguration result = new YamlShadowRuleConfiguration();
+ result.setColumn("shadow");
+ result.setSourceDataSourceNames(Arrays.asList("ds", "ds1"));
+ result.setShadowDataSourceNames(Arrays.asList("shadow_ds", "shadow_ds1"));
+ return result;
}
}
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 a4d1c35..4dfa1ba 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
@@ -49,9 +49,10 @@ public class PropertiesShadowSpringBootStarterTest {
@Test
public void assertShadowRuleConfiguration() {
+ assertThat(shadowRuleConfiguration.isEnable(), is(false));
assertBasicShadowRule(shadowRuleConfiguration.getColumn(), shadowRuleConfiguration.getSourceDataSourceNames(), shadowRuleConfiguration.getShadowDataSourceNames());
assertShadowDataSources(shadowRuleConfiguration.getDataSources());
- assertShadowTables(shadowRuleConfiguration.getShadowTables());
+ assertShadowTables(shadowRuleConfiguration.getTables());
assertShadowAlgorithms(shadowRuleConfiguration.getShadowAlgorithms());
}
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 d6b3d4b..aa07bed 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
@@ -49,9 +49,10 @@ public class YmlShadowSpringBootStarterTest {
@Test
public void assertShadowRuleConfiguration() {
+ assertThat(shadowRuleConfiguration.isEnable(), is(true));
assertBasicShadowRule(shadowRuleConfiguration.getColumn(), shadowRuleConfiguration.getSourceDataSourceNames(), shadowRuleConfiguration.getShadowDataSourceNames());
assertShadowDataSources(shadowRuleConfiguration.getDataSources());
- assertShadowTables(shadowRuleConfiguration.getShadowTables());
+ assertShadowTables(shadowRuleConfiguration.getTables());
assertShadowAlgorithms(shadowRuleConfiguration.getShadowAlgorithms());
}
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 cd6511f..c5d9dd9 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
@@ -22,12 +22,12 @@ 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.shadow-tables.t_order.shadow-algorithm-names[0]=t-order-user-id-algorithm
-spring.shardingsphere.rules.shadow.shadow-tables.t_order.shadow-algorithm-names[1]=t-order-note-algorithm
-spring.shardingsphere.rules.shadow.shadow-tables.t_order.shadow-algorithm-names[2]=t-order-note-algorithm
+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.shadow-tables.t_user.shadow-algorithm-names[0]=t-order-user-id-algorithm
-spring.shardingsphere.rules.shadow.shadow-tables.t_user.shadow-algorithm-names[1]=t-order-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.t-order-user-id-algorithm.type=COLUMN-REGULAR-MATCH
spring.shardingsphere.rules.shadow.shadow-algorithms.t-order-user-id-algorithm.props.column=user_id
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 000676e..411cb30 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
@@ -23,12 +23,12 @@ spring:
source-data-source-names: ds,ds1
shadow-data-source-names: shadow_ds,shadow_ds1
+ enable: true
data-sources:
shadow-data-source:
source-data-source-name: ds-write-0
shadow-data-source-name: ds-write-0-shadow
-
- shadow-tables:
+ tables:
t_order:
shadow-algorithm-names:
- t-order-user-id-algorithm
@@ -37,7 +37,6 @@ spring:
shadow-algorithm-names:
- t-order-user-id-algorithm
- t-order-note-algorithm
-
shadow-algorithms:
t-order-user-id-algorithm:
type: COLUMN-REGULAR-MATCH
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/parser/ShadowRuleBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/parser/ShadowRuleBeanDefinitionParser.java
index 02b58cb..006a628 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/parser/ShadowRuleBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/parser/ShadowRuleBeanDefinitionParser.java
@@ -52,12 +52,17 @@ public final class ShadowRuleBeanDefinitionParser extends AbstractBeanDefinition
protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(AlgorithmProvidedShadowRuleConfiguration.class);
addConstructorArgValue(element, factory);
+ factory.addPropertyValue("enable", parseShadowEnableConfiguration(element));
factory.addPropertyValue("dataSources", parseDataSourcesConfiguration(element));
- factory.addPropertyValue("shadowTables", parseShadowTablesConfiguration(element));
+ factory.addPropertyValue("tables", parseShadowTablesConfiguration(element));
factory.addPropertyValue("shadowAlgorithms", ShardingSphereAlgorithmBeanRegistry.getAlgorithmBeanReferences(parserContext, ShadowAlgorithmFactoryBean.class));
return factory.getBeanDefinition();
}
+ private boolean parseShadowEnableConfiguration(final Element element) {
+ return Boolean.parseBoolean(element.getAttribute(ShadowRuleBeanDefinitionTag.SHADOW_ENABLE_TAG));
+ }
+
private Map<String, BeanDefinition> parseShadowTablesConfiguration(final Element element) {
List<Element> tableRuleElements = DomUtils.getChildElementsByTagName(element, ShadowRuleBeanDefinitionTag.SHADOW_TABLE_TAG);
Map<String, BeanDefinition> result = new ManagedMap<>(tableRuleElements.size());
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/tag/ShadowRuleBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/tag/ShadowRuleBeanDefinitionTag.java
index aa1d916..3e08ddd 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/tag/ShadowRuleBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/java/org/apache/shardingsphere/shadow/spring/namespace/tag/ShadowRuleBeanDefinitionTag.java
@@ -35,6 +35,8 @@ public final class ShadowRuleBeanDefinitionTag {
public static final String SOURCE_DATASOURCE_NAMES_TAG = "sourceDataSourceNames";
+ public static final String SHADOW_ENABLE_TAG = "enable";
+
public static final String DATA_SOURCE_TAG = "data-source";
public static final String DATA_SOURCE_ID_ATTRIBUTE = "id";
@@ -43,7 +45,7 @@ public final class ShadowRuleBeanDefinitionTag {
public static final String SHADOW_DATA_SOURCE_NAME_ATTRIBUTE = "shadow-data-source-name";
- public static final String SHADOW_TABLE_TAG = "shadow-table";
+ public static final String SHADOW_TABLE_TAG = "table";
public static final String SHADOW_TABLE_NAME_ATTRIBUTE = "name";
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/resources/META-INF/namespace/shadow.xsd b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/resources/META-INF/namespace/shadow.xsd
index 9985365..14c07a3 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/resources/META-INF/namespace/shadow.xsd
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-namespace/src/main/resources/META-INF/namespace/shadow.xsd
@@ -28,9 +28,10 @@
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="data-source" minOccurs="0" maxOccurs="unbounded" />
- <xsd:element ref="shadow-table" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element ref="table" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required"/>
+ <xsd:attribute name="enable" type="xsd:boolean"/>
<!-- fixme remove when the api refactoring is complete start -->
<xsd:attribute name="column" type="xsd:string" use="required"/>
<xsd:attribute name="sourceDataSourceNames" type="list" use="required"/>
@@ -53,7 +54,7 @@
</xsd:complexType>
</xsd:element>
- <xsd:element name="shadow-table">
+ <xsd:element name="table">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="table-algorithm" maxOccurs="unbounded" />
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 b43c27e..440bc29 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
@@ -43,9 +43,10 @@ public final class ShadowAlgorithmSpringNamespaceTest extends AbstractJUnit4Spri
@Test
public void assertDataSource() {
+ assertThat(shadowRule.isEnable(), is(true));
assertBasicShadowRule(shadowRule.getColumn(), shadowRule.getSourceDataSourceNames(), shadowRule.getShadowDataSourceNames());
assertShadowDataSources(shadowRule.getDataSources());
- assertShadowTables(shadowRule.getShadowTables());
+ assertShadowTables(shadowRule.getTables());
assertShadowAlgorithms(shadowRule.getShadowAlgorithms());
}
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 acfec7e..000d505 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
@@ -38,9 +38,10 @@ public final class ShadowSpringNamespaceTest extends AbstractJUnit4SpringContext
@Test
public void assertDataSource() {
+ assertThat(shadowRule.isEnable(), is(false));
assertBasicShadowRule(shadowRule.getColumn(), shadowRule.getSourceDataSourceNames(), shadowRule.getShadowDataSourceNames());
assertTrue(shadowRule.getDataSources().isEmpty());
- assertTrue(shadowRule.getShadowTables().isEmpty());
+ assertTrue(shadowRule.getTables().isEmpty());
assertTrue(shadowRule.getShadowAlgorithms().isEmpty());
}
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 c67cf83..5c9ec8a 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
@@ -38,15 +38,15 @@
</props>
</shadow:shadow-algorithm>
- <shadow:rule id="shadowRule" column="shadow" sourceDataSourceNames="ds0,ds1" shadowDataSourceNames="shadow_ds0,shadow_ds1">
+ <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:shadow-table name="t_order">
+ <shadow:table name="t_order">
<shadow:table-algorithm shadow-algorithm-ref= "columnRegularMatchShadowAlgorithm" />
<shadow:table-algorithm shadow-algorithm-ref= "noteShadowAlgorithm" />
- </shadow:shadow-table>
- <shadow:shadow-table name="t_user">
+ </shadow:table>
+ <shadow:table name="t_user">
<shadow:table-algorithm shadow-algorithm-ref= "columnRegularMatchShadowAlgorithm" />
<shadow:table-algorithm shadow-algorithm-ref= "noteShadowAlgorithm" />
- </shadow:shadow-table>
+ </shadow:table>
</shadow:rule>
</beans>