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 1425b0a0f20 Refactor DatabaseRuleMetaDataNode (#34276)
1425b0a0f20 is described below

commit 1425b0a0f205e7bc23b7c58b2dd31c515304068c
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jan 8 01:48:50 2025 +0800

    Refactor DatabaseRuleMetaDataNode (#34276)
    
    * Refactor DatabaseRuleMetaDataNode
    
    * Refactor DatabaseRuleMetaDataNode
---
 .../node/metadata/DatabaseRuleMetaDataNode.java    | 110 ---------------------
 .../metadata/DatabaseRuleMetaDataNodePath.java     | 106 ++++++++++++++++++++
 .../database/DatabaseRulePersistService.java       |  18 ++--
 .../metadata/DatabaseRuleMetaDataNodePathTest.java |  55 +++++++++++
 .../metadata/DatabaseRuleMetaDataNodeTest.java     |  45 ---------
 5 files changed, 170 insertions(+), 164 deletions(-)

diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
deleted file mode 100644
index 87912a04965..00000000000
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNode.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.metadata.persist.node.metadata;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-/**
- * Database rule meta data node.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DatabaseRuleMetaDataNode {
-    
-    private static final String ROOT_NODE = "metadata";
-    
-    private static final String RULE_NODE = "rules";
-    
-    private static final String ACTIVE_VERSION = "active_version";
-    
-    private static final String VERSIONS = "versions";
-    
-    /**
-     * Get database rule active version node.
-     *
-     * @param databaseName database name
-     * @param ruleName rule name
-     * @param key key
-     * @return database rule active version node
-     */
-    public static String getDatabaseRuleActiveVersionNode(final String 
databaseName, final String ruleName, final String key) {
-        return String.join("/", getDatabaseRuleNode(databaseName, ruleName), 
key, ACTIVE_VERSION);
-    }
-    
-    /**
-     * Get database rule versions node.
-     *
-     * @param databaseName database name
-     * @param ruleName rule name
-     * @param key key
-     * @return database rule versions node
-     */
-    public static String getDatabaseRuleVersionsNode(final String 
databaseName, final String ruleName, final String key) {
-        return String.join("/", getDatabaseRuleNode(databaseName, ruleName), 
key, VERSIONS);
-    }
-    
-    /**
-     * Get database rule version node.
-     *
-     * @param databaseName database name
-     * @param ruleName rule name
-     * @param key key
-     * @param version version
-     * @return database rule next version
-     */
-    public static String getDatabaseRuleVersionNode(final String databaseName, 
final String ruleName, final String key, final String version) {
-        return String.join("/", getDatabaseRuleNode(databaseName, ruleName), 
key, VERSIONS, version);
-    }
-    
-    /**
-     * Get database rule node.
-     *
-     * @param databaseName database name
-     * @param ruleName rule name
-     * @param key key
-     * @return database rule node without version
-     */
-    public static String getDatabaseRuleNode(final String databaseName, final 
String ruleName, final String key) {
-        return String.join("/", getDatabaseRuleNode(databaseName, ruleName), 
key);
-    }
-    
-    /**
-     * Get database rule root node.
-     *
-     * @param databaseName database name
-     * @param ruleName rule name
-     * @return database rule root node
-     */
-    public static String getDatabaseRuleNode(final String databaseName, final 
String ruleName) {
-        return String.join("/", getRulesNode(databaseName), ruleName);
-    }
-    
-    /**
-     * Get database rules node.
-     *
-     * @param databaseName database name
-     * @return database rules node
-     */
-    public static String getRulesNode(final String databaseName) {
-        return String.join("/", getMetaDataNode(), databaseName, RULE_NODE);
-    }
-    
-    private static String getMetaDataNode() {
-        return String.join("/", "", ROOT_NODE);
-    }
-}
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePath.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePath.java
new file mode 100644
index 00000000000..1daa0ea87d1
--- /dev/null
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePath.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.metadata.persist.node.metadata;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+/**
+ * Database rule meta data node path.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DatabaseRuleMetaDataNodePath {
+    
+    private static final String ROOT_NODE = "/metadata";
+    
+    private static final String RULE_NODE = "rules";
+    
+    private static final String VERSIONS_NODE = "versions";
+    
+    private static final String ACTIVE_VERSION_NODE = "active_version";
+    
+    /**
+     * Get database root path.
+     *
+     * @param databaseName database name
+     * @return database root path
+     */
+    public static String getRootPath(final String databaseName) {
+        return String.join("/", ROOT_NODE, databaseName, RULE_NODE);
+    }
+    
+    /**
+     * Get database rule path.
+     *
+     * @param databaseName database name
+     * @param ruleTypeName rule type name
+     * @return database rule path
+     */
+    public static String getRulePath(final String databaseName, final String 
ruleTypeName) {
+        return String.join("/", getRootPath(databaseName), ruleTypeName);
+    }
+    
+    /**
+     * Get database rule path.
+     *
+     * @param databaseName database name
+     * @param ruleTypeName rule type name
+     * @param key key
+     * @return database rule path without version
+     */
+    public static String getRulePath(final String databaseName, final String 
ruleTypeName, final String key) {
+        return String.join("/", getRulePath(databaseName, ruleTypeName), key);
+    }
+    
+    /**
+     * Get database rule versions path.
+     *
+     * @param databaseName database name
+     * @param ruleTypeName rule type name
+     * @param key key
+     * @return database rule versions path
+     */
+    public static String getVersionsPath(final String databaseName, final 
String ruleTypeName, final String key) {
+        return String.join("/", getRulePath(databaseName, ruleTypeName, key), 
VERSIONS_NODE);
+    }
+    
+    /**
+     * Get database rule version path.
+     *
+     * @param databaseName database name
+     * @param ruleTypeName rule type name
+     * @param key key
+     * @param version version
+     * @return database rule next version
+     */
+    public static String getVersionPath(final String databaseName, final 
String ruleTypeName, final String key, final String version) {
+        return String.join("/", getVersionsPath(databaseName, ruleTypeName, 
key), version);
+    }
+    
+    /**
+     * Get database rule active version path.
+     *
+     * @param databaseName database name
+     * @param ruleTypeName rule type name
+     * @param key key
+     * @return database rule active version path
+     */
+    public static String getActiveVersionPath(final String databaseName, final 
String ruleTypeName, final String key) {
+        return String.join("/", getRulePath(databaseName, ruleTypeName, key), 
ACTIVE_VERSION_NODE);
+    }
+}
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
index 11ab3859480..464ad354eda 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
-import 
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNode;
+import 
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNodePath;
 import 
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
@@ -60,7 +60,7 @@ public final class DatabaseRulePersistService {
      * @return configurations
      */
     public Collection<RuleConfiguration> load(final String databaseName) {
-        return new 
RepositoryTupleSwapperEngine().swapToRuleConfigurations(repositoryTuplePersistService.load(DatabaseRuleMetaDataNode.getRulesNode(databaseName)));
+        return new 
RepositoryTupleSwapperEngine().swapToRuleConfigurations(repositoryTuplePersistService.load(DatabaseRuleMetaDataNodePath.getRootPath(databaseName)));
     }
     
     /**
@@ -85,19 +85,19 @@ public final class DatabaseRulePersistService {
     private Collection<MetaDataVersion> persistDataNodes(final String 
databaseName, final String ruleName, final Collection<RepositoryTuple> 
repositoryTuples) {
         Collection<MetaDataVersion> result = new LinkedList<>();
         for (RepositoryTuple each : repositoryTuples) {
-            List<String> versions = 
metaDataVersionPersistService.getVersions(DatabaseRuleMetaDataNode.getDatabaseRuleVersionsNode(databaseName,
 ruleName, each.getKey()));
+            List<String> versions = 
metaDataVersionPersistService.getVersions(DatabaseRuleMetaDataNodePath.getVersionsPath(databaseName,
 ruleName, each.getKey()));
             String nextVersion = versions.isEmpty() ? 
MetaDataVersion.DEFAULT_VERSION : 
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-            
repository.persist(DatabaseRuleMetaDataNode.getDatabaseRuleVersionNode(databaseName,
 ruleName, each.getKey(), nextVersion), each.getValue());
+            
repository.persist(DatabaseRuleMetaDataNodePath.getVersionPath(databaseName, 
ruleName, each.getKey(), nextVersion), each.getValue());
             if (Strings.isNullOrEmpty(getActiveVersion(databaseName, ruleName, 
each.getKey()))) {
-                
repository.persist(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
 ruleName, each.getKey()), MetaDataVersion.DEFAULT_VERSION);
+                
repository.persist(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
 ruleName, each.getKey()), MetaDataVersion.DEFAULT_VERSION);
             }
-            result.add(new 
MetaDataVersion(DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName, 
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName, 
each.getKey()), nextVersion));
+            result.add(new 
MetaDataVersion(DatabaseRuleMetaDataNodePath.getRulePath(databaseName, 
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName, 
each.getKey()), nextVersion));
         }
         return result;
     }
     
     private String getActiveVersion(final String databaseName, final String 
ruleName, final String key) {
-        return 
repository.query(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode(databaseName,
 ruleName, key));
+        return 
repository.query(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
 ruleName, key));
     }
     
     /**
@@ -107,7 +107,7 @@ public final class DatabaseRulePersistService {
      * @param ruleTypeName rule type name
      */
     public void delete(final String databaseName, final String ruleTypeName) {
-        
repository.delete(DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName, 
ruleTypeName));
+        
repository.delete(DatabaseRuleMetaDataNodePath.getRulePath(databaseName, 
ruleTypeName));
     }
     
     /**
@@ -135,7 +135,7 @@ public final class DatabaseRulePersistService {
     private Collection<MetaDataVersion> delete(final String databaseName, 
final String ruleName, final Collection<RepositoryTuple> repositoryTuples) {
         Collection<MetaDataVersion> result = new LinkedList<>();
         for (RepositoryTuple each : repositoryTuples) {
-            String toBeDeletedKey = 
DatabaseRuleMetaDataNode.getDatabaseRuleNode(databaseName, ruleName, 
each.getKey());
+            String toBeDeletedKey = 
DatabaseRuleMetaDataNodePath.getRulePath(databaseName, ruleName, each.getKey());
             repository.delete(toBeDeletedKey);
             result.add(new MetaDataVersion(toBeDeletedKey));
         }
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePathTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePathTest.java
new file mode 100644
index 00000000000..8afb5d95e8f
--- /dev/null
+++ 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodePathTest.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.metadata.persist.node.metadata;
+
+import org.junit.jupiter.api.Test;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+class DatabaseRuleMetaDataNodePathTest {
+    
+    @Test
+    void assertGetRootPath() {
+        assertThat(DatabaseRuleMetaDataNodePath.getRootPath("foo_db"), 
is("/metadata/foo_db/rules"));
+    }
+    
+    @Test
+    void assertGetRulePath() {
+        assertThat(DatabaseRuleMetaDataNodePath.getRulePath("foo_db", 
"foo_rule"), is("/metadata/foo_db/rules/foo_rule"));
+    }
+    
+    @Test
+    void assertGetRulePathWithKey() {
+        assertThat(DatabaseRuleMetaDataNodePath.getRulePath("foo_db", 
"foo_rule", "sharding"), is("/metadata/foo_db/rules/foo_rule/sharding"));
+    }
+    
+    @Test
+    void assertGetVersionsPath() {
+        assertThat(DatabaseRuleMetaDataNodePath.getVersionsPath("foo_db", 
"sharding", "foo_key"), is("/metadata/foo_db/rules/sharding/foo_key/versions"));
+    }
+    
+    @Test
+    void assertGetVersionPath() {
+        assertThat(DatabaseRuleMetaDataNodePath.getVersionPath("foo_db", 
"foo_rule", "foo_tbl", "1"), 
is("/metadata/foo_db/rules/foo_rule/foo_tbl/versions/1"));
+    }
+    
+    @Test
+    void assertGetActiveVersionPath() {
+        assertThat(DatabaseRuleMetaDataNodePath.getActiveVersionPath("foo_db", 
"foo_rule", "foo_tbl"), 
is("/metadata/foo_db/rules/foo_rule/foo_tbl/active_version"));
+    }
+}
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
deleted file mode 100644
index 0b1dd0f4017..00000000000
--- 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DatabaseRuleMetaDataNodeTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.metadata.persist.node.metadata;
-
-import org.junit.jupiter.api.Test;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class DatabaseRuleMetaDataNodeTest {
-    
-    @Test
-    void assertGetDatabaseRuleActiveVersionNode() {
-        
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleActiveVersionNode("foo_db", 
"foo_rule", "foo_tbl"), 
is("/metadata/foo_db/rules/foo_rule/foo_tbl/active_version"));
-    }
-    
-    @Test
-    void assertGetDatabaseRuleVersionsNode() {
-        
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleVersionsNode("foo_db", 
"sharding", "foo_key"), is("/metadata/foo_db/rules/sharding/foo_key/versions"));
-    }
-    
-    @Test
-    void assertGetDatabaseRuleVersionNode() {
-        
assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleVersionNode("foo_db", 
"foo_rule", "foo_tbl", "1"), 
is("/metadata/foo_db/rules/foo_rule/foo_tbl/versions/1"));
-    }
-    
-    @Test
-    void assertGetDatabaseRuleNode() {
-        assertThat(DatabaseRuleMetaDataNode.getDatabaseRuleNode("foo_db", 
"foo_rule", "sharding"), is("/metadata/foo_db/rules/foo_rule/sharding"));
-    }
-}

Reply via email to