This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 36cccbcba4d Splitting YamlSingleTableRuleConfiguration tuple (#31146)
36cccbcba4d is described below
commit 36cccbcba4d50619d6f37e22d128585543bb88ab
Author: zhaojinchao <[email protected]>
AuthorDate: Tue May 7 15:24:45 2024 +0800
Splitting YamlSingleTableRuleConfiguration tuple (#31146)
* Splitting YamlSingleTableRuleConfiguration tuple
* Fix checkstyle
* Fix unit test
---
.../DefaultShadowAlgorithmNameChangedProcessor.java | 2 --
.../nodepath/SingleRuleNodePathProvider.java | 5 ++++-
...r.java => DefaultDataSourceChangedProcessor.java} | 20 +++++++-------------
.../rule/changed/SingleTableChangedProcessor.java | 9 ++++-----
.../config/pojo/YamlSingleRuleConfiguration.java | 6 +++---
...re.mode.spi.RuleItemConfigurationChangedProcessor | 1 +
...eConfigurationRepositoryTupleSwapperEngineIT.java | 6 ++++--
.../nodepath/SingleRuleNodePathProviderTest.java | 3 ++-
8 files changed, 25 insertions(+), 27 deletions(-)
diff --git
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/changed/DefaultShadowAlgorithmNameChangedProcessor.java
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/changed/DefaultShadowAlgorithmNameChangedProcessor.java
index 8af6195de5e..33bc32a0985 100644
---
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/changed/DefaultShadowAlgorithmNameChangedProcessor.java
+++
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/changed/DefaultShadowAlgorithmNameChangedProcessor.java
@@ -30,8 +30,6 @@ import org.apache.shardingsphere.shadow.rule.ShadowRule;
*/
public final class DefaultShadowAlgorithmNameChangedProcessor implements
RuleItemConfigurationChangedProcessor<ShadowRuleConfiguration, String> {
- public static final String TYPE = "Shadow.DefaultShadowAlgorithmName";
-
@Override
public String swapRuleItemConfiguration(final AlterRuleItemEvent event,
final String yamlContent) {
return yamlContent;
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProvider.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProvider.java
index a67e4cb900a..1e4ac134ccb 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProvider.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProvider.java
@@ -22,6 +22,7 @@ import org.apache.shardingsphere.mode.path.rule.RuleNodePath;
import org.apache.shardingsphere.mode.spi.RuleNodePathProvider;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
+import java.util.Arrays;
import java.util.Collections;
/**
@@ -33,7 +34,9 @@ public final class SingleRuleNodePathProvider implements
RuleNodePathProvider {
public static final String TABLES = "tables";
- private static final RuleNodePath INSTANCE = new RuleNodePath(RULE_TYPE,
Collections.emptyList(), Collections.singleton(TABLES));
+ public static final String DEFAULT_DATA_SOURCE = "default_data_source";
+
+ private static final RuleNodePath INSTANCE = new RuleNodePath(RULE_TYPE,
Collections.emptyList(), Arrays.asList(TABLES, DEFAULT_DATA_SOURCE));
@Override
public RuleNodePath getRuleNodePath() {
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/DefaultDataSourceChangedProcessor.java
similarity index 66%
copy from
kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
copy to
kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/DefaultDataSourceChangedProcessor.java
index 52cf5c9205a..46da75a5c1c 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/DefaultDataSourceChangedProcessor.java
@@ -20,22 +20,19 @@ package org.apache.shardingsphere.single.rule.changed;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.rule.event.rule.alter.AlterRuleItemEvent;
import org.apache.shardingsphere.infra.rule.event.rule.drop.DropRuleItemEvent;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
import
org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProvider;
import org.apache.shardingsphere.single.rule.SingleRule;
-import
org.apache.shardingsphere.single.yaml.config.pojo.YamlSingleRuleConfiguration;
-import
org.apache.shardingsphere.single.yaml.config.swapper.YamlSingleRuleConfigurationSwapper;
/**
- * Single table changed processor.
+ * Default data source changed processor.
*/
-public final class SingleTableChangedProcessor implements
RuleItemConfigurationChangedProcessor<SingleRuleConfiguration,
SingleRuleConfiguration> {
+public final class DefaultDataSourceChangedProcessor implements
RuleItemConfigurationChangedProcessor<SingleRuleConfiguration, String> {
@Override
- public SingleRuleConfiguration swapRuleItemConfiguration(final
AlterRuleItemEvent event, final String yamlContent) {
- return new
YamlSingleRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContent,
YamlSingleRuleConfiguration.class));
+ public String swapRuleItemConfiguration(final AlterRuleItemEvent event,
final String yamlContent) {
+ return yamlContent;
}
@Override
@@ -44,20 +41,17 @@ public final class SingleTableChangedProcessor implements
RuleItemConfigurationC
}
@Override
- public void changeRuleItemConfiguration(final AlterRuleItemEvent event,
final SingleRuleConfiguration currentRuleConfig, final SingleRuleConfiguration
toBeChangedItemConfig) {
- currentRuleConfig.getTables().clear();
-
currentRuleConfig.getTables().addAll(toBeChangedItemConfig.getTables());
- toBeChangedItemConfig.getDefaultDataSource().ifPresent(optional ->
currentRuleConfig.setDefaultDataSource(toBeChangedItemConfig.getDefaultDataSource().get()));
+ public void changeRuleItemConfiguration(final AlterRuleItemEvent event,
final SingleRuleConfiguration currentRuleConfig, final String
toBeChangedItemConfig) {
+ currentRuleConfig.setDefaultDataSource(toBeChangedItemConfig);
}
@Override
public void dropRuleItemConfiguration(final DropRuleItemEvent event, final
SingleRuleConfiguration currentRuleConfig) {
- currentRuleConfig.getTables().clear();
currentRuleConfig.setDefaultDataSource(null);
}
@Override
public String getType() {
- return SingleRuleNodePathProvider.RULE_TYPE + "." +
SingleRuleNodePathProvider.TABLES;
+ return SingleRuleNodePathProvider.RULE_TYPE + "." +
SingleRuleNodePathProvider.DEFAULT_DATA_SOURCE;
}
}
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
index 52cf5c9205a..bcacd90538b 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/rule/changed/SingleTableChangedProcessor.java
@@ -25,17 +25,18 @@ import
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
import
org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProvider;
import org.apache.shardingsphere.single.rule.SingleRule;
-import
org.apache.shardingsphere.single.yaml.config.pojo.YamlSingleRuleConfiguration;
-import
org.apache.shardingsphere.single.yaml.config.swapper.YamlSingleRuleConfigurationSwapper;
+
+import java.util.LinkedHashSet;
/**
* Single table changed processor.
*/
public final class SingleTableChangedProcessor implements
RuleItemConfigurationChangedProcessor<SingleRuleConfiguration,
SingleRuleConfiguration> {
+ @SuppressWarnings("unchecked")
@Override
public SingleRuleConfiguration swapRuleItemConfiguration(final
AlterRuleItemEvent event, final String yamlContent) {
- return new
YamlSingleRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContent,
YamlSingleRuleConfiguration.class));
+ return new SingleRuleConfiguration(YamlEngine.unmarshal(yamlContent,
LinkedHashSet.class), null);
}
@Override
@@ -47,13 +48,11 @@ public final class SingleTableChangedProcessor implements
RuleItemConfigurationC
public void changeRuleItemConfiguration(final AlterRuleItemEvent event,
final SingleRuleConfiguration currentRuleConfig, final SingleRuleConfiguration
toBeChangedItemConfig) {
currentRuleConfig.getTables().clear();
currentRuleConfig.getTables().addAll(toBeChangedItemConfig.getTables());
- toBeChangedItemConfig.getDefaultDataSource().ifPresent(optional ->
currentRuleConfig.setDefaultDataSource(toBeChangedItemConfig.getDefaultDataSource().get()));
}
@Override
public void dropRuleItemConfiguration(final DropRuleItemEvent event, final
SingleRuleConfiguration currentRuleConfig) {
currentRuleConfig.getTables().clear();
- currentRuleConfig.setDefaultDataSource(null);
}
@Override
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
index 0c9050f6cf4..96e765ea2a6 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/yaml/config/pojo/YamlSingleRuleConfiguration.java
@@ -20,10 +20,9 @@ package org.apache.shardingsphere.single.yaml.config.pojo;
import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
-import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleType;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
+import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleField;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
-import
org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProvider;
import java.util.Collection;
import java.util.LinkedList;
@@ -32,13 +31,14 @@ import java.util.LinkedList;
* Single rule configuration for YAML.
*/
@RepositoryTupleEntity("single")
-@RepositoryTupleType(SingleRuleNodePathProvider.TABLES)
@Getter
@Setter
public final class YamlSingleRuleConfiguration implements
YamlRuleConfiguration {
+ @RepositoryTupleField(type = RepositoryTupleField.Type.TABLE)
private Collection<String> tables = new LinkedList<>();
+ @RepositoryTupleField(type = RepositoryTupleField.Type.OTHER)
private String defaultDataSource;
@Override
diff --git
a/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor
b/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor
index 24b59669f4c..c8eff10b4ac 100644
---
a/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor
+++
b/kernel/single/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor
@@ -16,3 +16,4 @@
#
org.apache.shardingsphere.single.rule.changed.SingleTableChangedProcessor
+org.apache.shardingsphere.single.rule.changed.DefaultDataSourceChangedProcessor
diff --git
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/it/SingleRuleConfigurationRepositoryTupleSwapperEngineIT.java
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/it/SingleRuleConfigurationRepositoryTupleSwapperEngineIT.java
index 60c68e5bda6..78a299e77c9 100644
---
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/it/SingleRuleConfigurationRepositoryTupleSwapperEngineIT.java
+++
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/it/SingleRuleConfigurationRepositoryTupleSwapperEngineIT.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.single.it;
import org.apache.shardingsphere.mode.tuple.RepositoryTuple;
import
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import
org.apache.shardingsphere.single.yaml.config.pojo.YamlSingleRuleConfiguration;
import org.apache.shardingsphere.test.it.yaml.RepositoryTupleSwapperEngineIT;
import java.util.List;
@@ -34,7 +35,8 @@ class SingleRuleConfigurationRepositoryTupleSwapperEngineIT
extends RepositoryTu
@Override
protected void assertRepositoryTuples(final List<RepositoryTuple>
actualRepositoryTuples, final YamlRuleConfiguration expectedYamlRuleConfig) {
- assertThat(actualRepositoryTuples.size(), is(1));
- assertRepositoryTuple(actualRepositoryTuples.get(0), "tables",
expectedYamlRuleConfig);
+ assertThat(actualRepositoryTuples.size(), is(2));
+ assertRepositoryTuple(actualRepositoryTuples.get(0), "tables",
((YamlSingleRuleConfiguration) expectedYamlRuleConfig).getTables());
+ assertRepositoryTuple(actualRepositoryTuples.get(1),
"default_data_source", ((YamlSingleRuleConfiguration)
expectedYamlRuleConfig).getDefaultDataSource());
}
}
diff --git
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProviderTest.java
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProviderTest.java
index f0a88b1950b..e369c312bd0 100644
---
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProviderTest.java
+++
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/nodepath/SingleRuleNodePathProviderTest.java
@@ -32,8 +32,9 @@ class SingleRuleNodePathProviderTest {
RuleNodePathProvider ruleNodePathProvider = new
SingleRuleNodePathProvider();
RuleNodePath actualRuleNodePath =
ruleNodePathProvider.getRuleNodePath();
assertTrue(actualRuleNodePath.getNamedItems().isEmpty());
- assertThat(actualRuleNodePath.getUniqueItems().size(), is(1));
+ assertThat(actualRuleNodePath.getUniqueItems().size(), is(2));
assertTrue(actualRuleNodePath.getUniqueItems().containsKey(SingleRuleNodePathProvider.TABLES));
+
assertTrue(actualRuleNodePath.getUniqueItems().containsKey(SingleRuleNodePathProvider.DEFAULT_DATA_SOURCE));
assertThat(actualRuleNodePath.getRoot().getRuleType(),
is(SingleRuleNodePathProvider.RULE_TYPE));
}
}