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 078d95469a2 Refactor RuleItemChangedBuildExecutor (#34573)
078d95469a2 is described below

commit 078d95469a24b39c2e6c125e620d76c5007624fd
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Thu Feb 6 18:13:07 2025 +0800

    Refactor RuleItemChangedBuildExecutor (#34573)
---
 .../manager/standalone/changed/RuleItemChangedBuilder.java  | 10 +++++-----
 .../changed/executor/RuleItemChangedBuildExecutor.java      |  6 +++---
 .../changed/executor/type/RuleItemAlteredBuildExecutor.java | 13 ++++++++-----
 .../changed/executor/type/RuleItemDroppedBuildExecutor.java |  7 ++++---
 .../service/StandaloneMetaDataManagerPersistService.java    |  4 ++--
 .../StandaloneMetaDataManagerPersistServiceTest.java        |  7 +++----
 .../util/YamlDatabaseConfigurationImportExecutor.java       |  3 +--
 7 files changed, 26 insertions(+), 24 deletions(-)

diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
index f8c0c0737ad..0a5a9121efe 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.mode.manager.standalone.changed;
 
+import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor;
 import org.apache.shardingsphere.mode.node.spi.RuleNodePathProvider;
@@ -33,18 +34,17 @@ public final class RuleItemChangedBuilder {
      * Build rule item changed.
      *
      * @param databaseName database name
-     * @param activeVersionKey active version key
-     * @param activeVersion active version
+     * @param metaDataVersion meta data version
      * @param executor rule item changed build executor
      * @param <T> type of rule changed item
      * @return built rule item
      */
-    public <T extends RuleChangedItem> Optional<T> build(final String 
databaseName, final String activeVersionKey, final int activeVersion, final 
RuleItemChangedBuildExecutor<T> executor) {
+    public <T extends RuleChangedItem> Optional<T> build(final String 
databaseName, final MetaDataVersion metaDataVersion, final 
RuleItemChangedBuildExecutor<T> executor) {
         for (RuleNodePathProvider each : 
ShardingSphereServiceLoader.getServiceInstances(RuleNodePathProvider.class)) {
-            if 
(!each.getRuleNodePath().getRoot().isValidatedPath(activeVersionKey)) {
+            if 
(!each.getRuleNodePath().getRoot().isValidatedPath(metaDataVersion.getActiveVersionNodePath()))
 {
                 continue;
             }
-            Optional<T> result = executor.build(each.getRuleNodePath(), 
databaseName, activeVersionKey, activeVersion);
+            Optional<T> result = executor.build(each.getRuleNodePath(), 
databaseName, metaDataVersion);
             if (result.isPresent()) {
                 return result;
             }
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java
index 4de7db07c07..450500bbdc6 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/RuleItemChangedBuildExecutor.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.mode.manager.standalone.changed.executor;
 
+import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.mode.node.path.rule.RuleNodePath;
 import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem;
 
@@ -34,9 +35,8 @@ public interface RuleItemChangedBuildExecutor<T extends 
RuleChangedItem> {
      *
      * @param ruleNodePath rule node path
      * @param databaseName database name
-     * @param activeVersionKey active version key
-     * @param activeVersion active version
+     * @param metaDataVersion meta data version
      * @return built rule item
      */
-    Optional<T> build(RuleNodePath ruleNodePath, String databaseName, String 
activeVersionKey, int activeVersion);
+    Optional<T> build(RuleNodePath ruleNodePath, String databaseName, 
MetaDataVersion metaDataVersion);
 }
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
index 6ddec44be84..9642a54248d 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
@@ -17,6 +17,7 @@
 
 package 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.type;
 
+import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor;
 import org.apache.shardingsphere.mode.node.path.rule.RuleNodePath;
 import 
org.apache.shardingsphere.mode.node.path.rule.item.NamedRuleItemNodePath;
@@ -34,16 +35,18 @@ import java.util.Optional;
 public final class RuleItemAlteredBuildExecutor implements 
RuleItemChangedBuildExecutor<AlterRuleItem> {
     
     @Override
-    public Optional<AlterRuleItem> build(final RuleNodePath ruleNodePath, 
final String databaseName, final String activeVersionKey, final int 
activeVersion) {
+    public Optional<AlterRuleItem> build(final RuleNodePath ruleNodePath, 
final String databaseName, final MetaDataVersion metaDataVersion) {
         for (Entry<String, NamedRuleItemNodePath> entry : 
ruleNodePath.getNamedItems().entrySet()) {
-            Optional<String> itemName = 
entry.getValue().getNameByActiveVersion(activeVersionKey);
+            Optional<String> itemName = 
entry.getValue().getNameByActiveVersion(metaDataVersion.getActiveVersionNodePath());
             if (itemName.isPresent()) {
-                return Optional.of(new AlterNamedRuleItem(databaseName, 
itemName.get(), activeVersionKey, activeVersion, 
ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
+                return Optional.of(new AlterNamedRuleItem(databaseName,
+                        itemName.get(), 
metaDataVersion.getActiveVersionNodePath(), 
metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + 
"." + entry.getKey()));
             }
         }
         for (Entry<String, UniqueRuleItemNodePath> entry : 
ruleNodePath.getUniqueItems().entrySet()) {
-            if (entry.getValue().isActiveVersionPath(activeVersionKey)) {
-                return Optional.of(new AlterUniqueRuleItem(databaseName, 
activeVersionKey, activeVersion, ruleNodePath.getRoot().getRuleType() + "." + 
entry.getKey()));
+            if 
(entry.getValue().isActiveVersionPath(metaDataVersion.getActiveVersionNodePath()))
 {
+                return Optional.of(new AlterUniqueRuleItem(databaseName,
+                        metaDataVersion.getActiveVersionNodePath(), 
metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + 
"." + entry.getKey()));
             }
         }
         return Optional.empty();
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
index 8b75752e74d..5d485a373a3 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
@@ -17,6 +17,7 @@
 
 package 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.type;
 
+import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor;
 import org.apache.shardingsphere.mode.node.path.rule.RuleNodePath;
 import 
org.apache.shardingsphere.mode.node.path.rule.item.NamedRuleItemNodePath;
@@ -34,15 +35,15 @@ import java.util.Optional;
 public final class RuleItemDroppedBuildExecutor implements 
RuleItemChangedBuildExecutor<DropRuleItem> {
     
     @Override
-    public Optional<DropRuleItem> build(final RuleNodePath ruleNodePath, final 
String databaseName, final String activeVersionKey, final int activeVersion) {
+    public Optional<DropRuleItem> build(final RuleNodePath ruleNodePath, final 
String databaseName, final MetaDataVersion metaDataVersion) {
         for (Entry<String, NamedRuleItemNodePath> entry : 
ruleNodePath.getNamedItems().entrySet()) {
-            Optional<String> itemName = 
entry.getValue().getNameByItemPath(activeVersionKey);
+            Optional<String> itemName = 
entry.getValue().getNameByItemPath(metaDataVersion.getActiveVersionNodePath());
             if (itemName.isPresent()) {
                 return Optional.of(new DropNamedRuleItem(databaseName, 
itemName.get(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
             }
         }
         for (Entry<String, UniqueRuleItemNodePath> entry : 
ruleNodePath.getUniqueItems().entrySet()) {
-            if (entry.getValue().isActiveVersionPath(activeVersionKey)) {
+            if 
(entry.getValue().isActiveVersionPath(metaDataVersion.getActiveVersionNodePath()))
 {
                 return Optional.of(new DropUniqueRuleItem(databaseName, 
ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
             }
         }
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
index e1d29fa919c..b01180083cc 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
@@ -211,7 +211,7 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
         Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), 
Collections.singleton(toBeAlteredRuleConfig));
         
metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(metaDataVersions);
         for (MetaDataVersion each : metaDataVersions) {
-            Optional<AlterRuleItem> alterRuleItem = 
ruleItemChangedBuilder.build(database.getName(), 
each.getActiveVersionNodePath(), each.getNextActiveVersion(), new 
RuleItemAlteredBuildExecutor());
+            Optional<AlterRuleItem> alterRuleItem = 
ruleItemChangedBuilder.build(database.getName(), each, new 
RuleItemAlteredBuildExecutor());
             if (alterRuleItem.isPresent()) {
                 
metaDataContextManager.getDatabaseRuleItemManager().alter(alterRuleItem.get());
             }
@@ -226,7 +226,7 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
         }
         Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistFacade.getDatabaseRuleService().delete(database.getName(), 
Collections.singleton(toBeRemovedRuleConfig));
         for (MetaDataVersion each : metaDataVersions) {
-            Optional<DropRuleItem> dropRuleItem = 
ruleItemChangedBuilder.build(database.getName(), 
each.getActiveVersionNodePath(), each.getNextActiveVersion(), new 
RuleItemDroppedBuildExecutor());
+            Optional<DropRuleItem> dropRuleItem = 
ruleItemChangedBuilder.build(database.getName(), each, new 
RuleItemDroppedBuildExecutor());
             if (dropRuleItem.isPresent()) {
                 
metaDataContextManager.getDatabaseRuleItemManager().drop(dropRuleItem.get());
             }
diff --git 
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
 
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
index c83fbc26bdc..f03036b59e0 100644
--- 
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
+++ 
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
@@ -27,8 +27,8 @@ import 
org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
-import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager;
 import 
org.apache.shardingsphere.mode.manager.standalone.changed.RuleItemChangedBuilder;
+import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade;
 import 
org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade;
 import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem;
@@ -52,7 +52,6 @@ import java.util.Properties;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyCollection;
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
@@ -177,7 +176,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
         when(metaDataPersistFacade.getDatabaseRuleService().persist("foo_db", 
Collections.singleton(ruleConfig))).thenReturn(metaDataVersion);
         AlterRuleItem alterRuleItem = mock(AlterRuleItem.class);
         RuleItemChangedBuilder ruleItemChangedBuilder = 
mock(RuleItemChangedBuilder.class);
-        when(ruleItemChangedBuilder.build(eq("foo_db"), any(), anyInt(), 
any())).thenReturn(Optional.of(alterRuleItem));
+        when(ruleItemChangedBuilder.build(eq("foo_db"), any(), 
any())).thenReturn(Optional.of(alterRuleItem));
         setRuleConfigurationEventBuilder(ruleItemChangedBuilder);
         metaDataManagerPersistService.alterRuleConfiguration(database, 
ruleConfig);
         
verify(metaDataPersistFacade.getMetaDataVersionService()).switchActiveVersion(metaDataVersion);
@@ -197,7 +196,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
         when(metaDataPersistFacade.getDatabaseRuleService().delete("foo_db", 
Collections.singleton(ruleConfig))).thenReturn(metaDataVersion);
         RuleItemChangedBuilder ruleItemChangedBuilder = 
mock(RuleItemChangedBuilder.class);
         DropRuleItem dropRuleItem = mock(DropRuleItem.class);
-        when(ruleItemChangedBuilder.build(eq("foo_db"), any(), anyInt(), 
any())).thenReturn(Optional.of(dropRuleItem));
+        when(ruleItemChangedBuilder.build(eq("foo_db"), any(), 
any())).thenReturn(Optional.of(dropRuleItem));
         setRuleConfigurationEventBuilder(ruleItemChangedBuilder);
         metaDataManagerPersistService.removeRuleConfigurationItem(new 
ShardingSphereDatabase("foo_db", mock(), mock(), mock(), 
Collections.emptyList()), ruleConfig);
         
verify(metaDataContextManager.getDatabaseRuleItemManager()).drop(any(DropRuleItem.class));
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
index e427faa3106..adcff86ae86 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
@@ -132,8 +132,7 @@ public final class YamlDatabaseConfigurationImportExecutor {
         MetaDataContexts metaDataContexts = 
contextManager.getMetaDataContexts();
         ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
         swapToRuleConfigs(yamlRuleConfigs).values().forEach(each -> 
addRule(ruleConfigs, each, database));
-        
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseRuleService()
-                
.persist(metaDataContexts.getMetaData().getDatabase(databaseName).getName(), 
ruleConfigs);
+        
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseRuleService().persist(metaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 ruleConfigs);
     }
     
     private void addRule(final Collection<RuleConfiguration> ruleConfigs, 
final RuleConfiguration ruleConfig, final ShardingSphereDatabase database) {

Reply via email to