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 89f574a4ca2 Add NodePathVersionGenerator (#34694)
89f574a4ca2 is described below

commit 89f574a4ca256bd96b531a02f18cf7269e2d1518
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Feb 16 14:28:23 2025 +0800

    Add NodePathVersionGenerator (#34694)
    
    * Add NodePathVersionGenerator
    
    * Add NodePathVersionGenerator
---
 .../config/global/PropertiesPersistService.java    |  6 ++---
 ...enerator.java => NodePathVersionGenerator.java} | 30 +++++++---------------
 .../global/GlobalPropertiesNodePathGenerator.java  | 12 +++------
 .../config/global/GlobalRuleNodePathGenerator.java | 15 ++++-------
 .../metadata/database/TableNodePathGenerator.java  | 15 ++++-------
 .../metadata/database/ViewNodePathGenerator.java   | 15 ++++-------
 .../rule/DatabaseRuleItemNodePathGenerator.java    | 15 ++++-------
 .../storage/StorageNodeNodePathGenerator.java      | 15 ++++-------
 .../storage/StorageUnitNodePathGenerator.java      | 15 ++++-------
 .../GlobalPropertiesNodePathGeneratorTest.java     |  2 +-
 10 files changed, 47 insertions(+), 93 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
index 63cdfd65684..242bbdbe02a 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
@@ -45,12 +45,12 @@ public final class PropertiesPersistService {
      */
     public Properties load() {
         return loadActiveVersion()
-                .map(optional -> YamlEngine.unmarshal(repository.query(new 
GlobalPropertiesNodePathGenerator().getVersion().getVersionPath(optional)), 
Properties.class))
+                .map(optional -> YamlEngine.unmarshal(repository.query(new 
GlobalPropertiesNodePathGenerator().getVersion("").getVersionPath(optional)), 
Properties.class))
                 .orElse(new Properties());
     }
     
     private Optional<Integer> loadActiveVersion() {
-        String value = repository.query(new 
GlobalPropertiesNodePathGenerator().getVersion().getActiveVersionPath());
+        String value = repository.query(new 
GlobalPropertiesNodePathGenerator().getVersion("").getActiveVersionPath());
         return Strings.isNullOrEmpty(value) ? Optional.empty() : 
Optional.of(Integer.parseInt(value));
     }
     
@@ -60,7 +60,7 @@ public final class PropertiesPersistService {
      * @param props properties
      */
     public void persist(final Properties props) {
-        VersionNodePathGenerator versionNodePathGenerator = new 
GlobalPropertiesNodePathGenerator().getVersion();
+        VersionNodePathGenerator versionNodePathGenerator = new 
GlobalPropertiesNodePathGenerator().getVersion("");
         metaDataVersionPersistService.persist(versionNodePathGenerator, 
YamlEngine.marshal(props));
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathVersionGenerator.java
similarity index 53%
copy from 
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
copy to 
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathVersionGenerator.java
index 679d1238bb6..d5e38e2f7f1 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/NodePathVersionGenerator.java
@@ -15,34 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.mode.node.path.config.global;
+package org.apache.shardingsphere.mode.node.path;
 
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
- * Global properties node path generator.
+ * Node path generator.
+ * 
+ * @param <T> type of node
  */
-public final class GlobalPropertiesNodePathGenerator implements 
NodePathGenerator<String> {
-    
-    private static final String ROOT_NODE = "/props";
-    
-    @Override
-    public String getRootPath() {
-        return ROOT_NODE;
-    }
-    
-    @Override
-    public String getPath(final String node) {
-        throw new UnsupportedOperationException("Global properties node do not 
need path.");
-    }
+public interface NodePathVersionGenerator<T> extends NodePathGenerator<T> {
     
     /**
-     * Get properties version node path generator.
+     * Get table version node path generator.
      *
-     * @return properties version node path generator
+     * @param node table name
+     * @return table version node path generator
      */
-    public VersionNodePathGenerator getVersion() {
-        return new VersionNodePathGenerator(getRootPath());
-    }
+    VersionNodePathGenerator getVersion(T node);
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
index 679d1238bb6..721245d8b07 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGenerator.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.mode.node.path.config.global;
 
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * Global properties node path generator.
  */
-public final class GlobalPropertiesNodePathGenerator implements 
NodePathGenerator<String> {
+public final class GlobalPropertiesNodePathGenerator implements 
NodePathVersionGenerator<String> {
     
     private static final String ROOT_NODE = "/props";
     
@@ -37,12 +37,8 @@ public final class GlobalPropertiesNodePathGenerator 
implements NodePathGenerato
         throw new UnsupportedOperationException("Global properties node do not 
need path.");
     }
     
-    /**
-     * Get properties version node path generator.
-     *
-     * @return properties version node path generator
-     */
-    public VersionNodePathGenerator getVersion() {
+    @Override
+    public VersionNodePathGenerator getVersion(final String node) {
         return new VersionNodePathGenerator(getRootPath());
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathGenerator.java
index e1c14867017..1d0ef912344 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalRuleNodePathGenerator.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.mode.node.path.config.global;
 
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * Global props node path generator.
  */
-public final class GlobalRuleNodePathGenerator implements 
NodePathGenerator<String> {
+public final class GlobalRuleNodePathGenerator implements 
NodePathVersionGenerator<String> {
     
     private static final String ROOT_NODE = "/rules";
     
@@ -37,13 +37,8 @@ public final class GlobalRuleNodePathGenerator implements 
NodePathGenerator<Stri
         return String.join("/", getRootPath(), node);
     }
     
-    /**
-     * Get global rule version node path generator.
-     *
-     * @param ruleType rule type
-     * @return global rule version node path generator
-     */
-    public VersionNodePathGenerator getVersion(final String ruleType) {
-        return new VersionNodePathGenerator(getPath(ruleType));
+    @Override
+    public VersionNodePathGenerator getVersion(final String node) {
+        return new VersionNodePathGenerator(getPath(node));
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableNodePathGenerator.java
index 1e9ad9a3d1f..28d43c78603 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/TableNodePathGenerator.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.mode.node.path.metadata.database;
 
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * Table node path generator.
  */
-public final class TableNodePathGenerator implements NodePathGenerator<String> 
{
+public final class TableNodePathGenerator implements 
NodePathVersionGenerator<String> {
     
     private static final String TABLES_NODE = "tables";
     
@@ -46,13 +46,8 @@ public final class TableNodePathGenerator implements 
NodePathGenerator<String> {
         return String.join("/", getRootPath(), node);
     }
     
-    /**
-     * Get table version node path generator.
-     *
-     * @param tableName table name
-     * @return table version node path generator
-     */
-    public VersionNodePathGenerator getVersion(final String tableName) {
-        return new VersionNodePathGenerator(getPath(tableName));
+    @Override
+    public VersionNodePathGenerator getVersion(final String node) {
+        return new VersionNodePathGenerator(getPath(node));
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewNodePathGenerator.java
index 274f7298c70..189c82610e9 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/database/ViewNodePathGenerator.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.mode.node.path.metadata.database;
 
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * View path generator.
  */
-public final class ViewNodePathGenerator implements NodePathGenerator<String> {
+public final class ViewNodePathGenerator implements 
NodePathVersionGenerator<String> {
     
     private static final String VIEWS_NODE = "views";
     
@@ -46,13 +46,8 @@ public final class ViewNodePathGenerator implements 
NodePathGenerator<String> {
         return String.join("/", getRootPath(), node);
     }
     
-    /**
-     * Get view version node path generator.
-     *
-     * @param viewName view name
-     * @return view version node path generator
-     */
-    public VersionNodePathGenerator getVersion(final String viewName) {
-        return new VersionNodePathGenerator(getPath(viewName));
+    @Override
+    public VersionNodePathGenerator getVersion(final String node) {
+        return new VersionNodePathGenerator(getPath(node));
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleItemNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleItemNodePathGenerator.java
index 97d43a9e785..ede8227adca 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleItemNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/rule/DatabaseRuleItemNodePathGenerator.java
@@ -17,14 +17,14 @@
 
 package org.apache.shardingsphere.mode.node.path.metadata.rule;
 
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.config.database.item.DatabaseRuleItem;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * Database rule item node path generator.
  */
-public final class DatabaseRuleItemNodePathGenerator implements 
NodePathGenerator<DatabaseRuleItem> {
+public final class DatabaseRuleItemNodePathGenerator implements 
NodePathVersionGenerator<DatabaseRuleItem> {
     
     private final DatabaseRuleNodePathGenerator databaseRuleNodePathGenerator;
     
@@ -45,13 +45,8 @@ public final class DatabaseRuleItemNodePathGenerator 
implements NodePathGenerato
         return String.join("/", getRootPath(), databaseRuleItem.toString());
     }
     
-    /**
-     * Get database rule item version node path generator.
-     *
-     * @param databaseRuleItem database rule item
-     * @return database rule item version node path generator
-     */
-    public VersionNodePathGenerator getVersion(final DatabaseRuleItem 
databaseRuleItem) {
-        return new VersionNodePathGenerator(getPath(databaseRuleItem));
+    @Override
+    public VersionNodePathGenerator getVersion(final DatabaseRuleItem node) {
+        return new VersionNodePathGenerator(getPath(node));
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathGenerator.java
index dc1cebe3cd0..2f63018182a 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageNodeNodePathGenerator.java
@@ -18,14 +18,14 @@
 package org.apache.shardingsphere.mode.node.path.metadata.storage;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * Storage node node path generator.
  */
 @RequiredArgsConstructor
-public final class StorageNodeNodePathGenerator implements 
NodePathGenerator<String> {
+public final class StorageNodeNodePathGenerator implements 
NodePathVersionGenerator<String> {
     
     private static final String NODES_NODE = "nodes";
     
@@ -41,13 +41,8 @@ public final class StorageNodeNodePathGenerator implements 
NodePathGenerator<Str
         return String.join("/", getRootPath(), node);
     }
     
-    /**
-     * Get storage node version node path generator.
-     *
-     * @param storageNodeName storage node name
-     * @return storage node version node path generator
-     */
-    public VersionNodePathGenerator getVersion(final String storageNodeName) {
-        return new VersionNodePathGenerator(String.join("/", getRootPath(), 
storageNodeName));
+    @Override
+    public VersionNodePathGenerator getVersion(final String node) {
+        return new VersionNodePathGenerator(String.join("/", getRootPath(), 
node));
     }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathGenerator.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathGenerator.java
index b828b22b8ff..ad34dabd0bb 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathGenerator.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/storage/StorageUnitNodePathGenerator.java
@@ -18,14 +18,14 @@
 package org.apache.shardingsphere.mode.node.path.metadata.storage;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathVersionGenerator;
 import 
org.apache.shardingsphere.mode.node.path.version.VersionNodePathGenerator;
 
 /**
  * Storage unit node path generator.
  */
 @RequiredArgsConstructor
-public final class StorageUnitNodePathGenerator implements 
NodePathGenerator<String> {
+public final class StorageUnitNodePathGenerator implements 
NodePathVersionGenerator<String> {
     
     private static final String UNITS_NODE = "units";
     
@@ -41,13 +41,8 @@ public final class StorageUnitNodePathGenerator implements 
NodePathGenerator<Str
         return String.join("/", getRootPath(), storageUnitName);
     }
     
-    /**
-     * Get storage unit version node path generator.
-     *
-     * @param storageUnitName storage unit name
-     * @return storage unit version node path generator
-     */
-    public VersionNodePathGenerator getVersion(final String storageUnitName) {
-        return new VersionNodePathGenerator(String.join("/", getRootPath(), 
storageUnitName));
+    @Override
+    public VersionNodePathGenerator getVersion(final String node) {
+        return new VersionNodePathGenerator(String.join("/", getRootPath(), 
node));
     }
 }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGeneratorTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGeneratorTest.java
index 150565bac92..8fa725e2acf 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGeneratorTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/global/GlobalPropertiesNodePathGeneratorTest.java
@@ -32,7 +32,7 @@ class GlobalPropertiesNodePathGeneratorTest {
     
     @Test
     void assertGetVersion() {
-        VersionNodePathGenerator versionNodePathGenerator = new 
GlobalPropertiesNodePathGenerator().getVersion();
+        VersionNodePathGenerator versionNodePathGenerator = new 
GlobalPropertiesNodePathGenerator().getVersion("");
         assertThat(versionNodePathGenerator.getActiveVersionPath(), 
is("/props/active_version"));
         assertThat(versionNodePathGenerator.getVersionsPath(), 
is("/props/versions"));
         assertThat(versionNodePathGenerator.getVersionPath(0), 
is("/props/versions/0"));

Reply via email to