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