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));
     }
 }

Reply via email to