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 239ba72cadf Add VersionNodePath.isVersionPath() (#34587)
239ba72cadf is described below

commit 239ba72cadfffee07d5a23d40ce870ff8f29b505
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Fri Feb 7 12:56:41 2025 +0800

    Add VersionNodePath.isVersionPath() (#34587)
---
 .../mode/node/path/config/GlobalRuleNodePath.java       | 13 -------------
 .../mode/node/path/version/VersionNodePath.java         | 17 +++++++++++++++++
 .../node/tuple/YamlRepositoryTupleSwapperEngine.java    |  2 +-
 .../mode/node/path/config/GlobalRuleNodePathTest.java   | 13 -------------
 .../mode/node/path/version/VersionNodePathTest.java     |  9 +++++++++
 5 files changed, 27 insertions(+), 27 deletions(-)

diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePath.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePath.java
index 31e5aabaa34..f9411856544 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePath.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePath.java
@@ -77,17 +77,4 @@ public final class GlobalRuleNodePath {
         Matcher matcher = pattern.matcher(path);
         return matcher.find() ? Optional.of(matcher.group(1)) : 
Optional.empty();
     }
-    
-    /**
-     * Find version.
-     *
-     * @param ruleTypeName rule type name
-     * @param path path to be found
-     * @return found version
-     */
-    public static Optional<String> findVersion(final String ruleTypeName, 
final String path) {
-        Pattern pattern = Pattern.compile(String.join("/", 
GlobalRuleNodePath.getVersionNodePath(ruleTypeName).getVersionsPath(), 
VERSION_PATTERN) + "$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(matcher.group(1)) : 
Optional.empty();
-    }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePath.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePath.java
index 5f65a48828e..52d7ba0925c 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePath.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePath.java
@@ -20,6 +20,9 @@ package org.apache.shardingsphere.mode.node.path.version;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  * Version node path.
  */
@@ -31,6 +34,8 @@ public final class VersionNodePath {
     
     private static final String VERSIONS = "versions";
     
+    private static final String VERSION_PATTERN = "(\\d+)";
+    
     private final String path;
     
     /**
@@ -60,4 +65,16 @@ public final class VersionNodePath {
     public String getVersionPath(final int version) {
         return String.join("/", getVersionsPath(), String.valueOf(version));
     }
+    
+    /**
+     * Judge whether to version path.
+     *
+     * @param path to be judged path
+     * @return is version path or not
+     */
+    public boolean isVersionPath(final String path) {
+        Pattern pattern = Pattern.compile(String.join("/", getVersionsPath(), 
VERSION_PATTERN) + "$", Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find();
+    }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/tuple/YamlRepositoryTupleSwapperEngine.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/tuple/YamlRepositoryTupleSwapperEngine.java
index 44607e65b98..28211d4b3e6 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/tuple/YamlRepositoryTupleSwapperEngine.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/tuple/YamlRepositoryTupleSwapperEngine.java
@@ -153,7 +153,7 @@ public final class YamlRepositoryTupleSwapperEngine {
                                                                         final 
Class<? extends YamlRuleConfiguration> toBeSwappedType, final 
RepositoryTupleEntity tupleEntity) {
         if 
(YamlGlobalRuleConfiguration.class.isAssignableFrom(toBeSwappedType)) {
             for (RepositoryTuple each : repositoryTuples) {
-                if (GlobalRuleNodePath.findVersion(tupleEntity.value(), 
each.getKey()).isPresent()) {
+                if 
(GlobalRuleNodePath.getVersionNodePath(tupleEntity.value()).isVersionPath(each.getKey()))
 {
                     return Optional.of(YamlEngine.unmarshal(each.getValue(), 
toBeSwappedType));
                 }
             }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePathTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePathTest.java
index 3e1cd3c8274..9717e6f657f 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePathTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/GlobalRuleNodePathTest.java
@@ -57,17 +57,4 @@ class GlobalRuleNodePathTest {
         Optional<String> actual = 
GlobalRuleNodePath.findRuleTypeNameFromActiveVersion("/rules/foo_rule/active_version/xxx");
         assertFalse(actual.isPresent());
     }
-    
-    @Test
-    void assertFindVersion() {
-        Optional<String> actual = GlobalRuleNodePath.findVersion("foo_rule", 
"/rules/foo_rule/versions/0");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("0"));
-    }
-    
-    @Test
-    void assertNotFindVersion() {
-        Optional<String> actual = GlobalRuleNodePath.findVersion("foo_rule", 
"/rules/foo_rule/versions/0/xxx");
-        assertFalse(actual.isPresent());
-    }
 }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePathTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePathTest.java
index 4f94288fcce..f64092a52c2 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePathTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/VersionNodePathTest.java
@@ -21,6 +21,8 @@ import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class VersionNodePathTest {
     
@@ -38,4 +40,11 @@ class VersionNodePathTest {
     void assertGetVersionPath() {
         assertThat(new VersionNodePath("foo").getVersionPath(0), 
is("foo/versions/0"));
     }
+    
+    @Test
+    void assertIsVersionPath() {
+        assertTrue(new VersionNodePath("foo").isVersionPath("foo/versions/0"));
+        assertFalse(new VersionNodePath("foo").isVersionPath("foo/versions"));
+        assertFalse(new 
VersionNodePath("foo").isVersionPath("foo/versions/0/xxx"));
+    }
 }

Reply via email to