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 e9cc399b6a3 Use VersionNodePath on other NodePath (#34580) e9cc399b6a3 is described below commit e9cc399b6a36f756269b724d1269484824691723 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Thu Feb 6 23:39:35 2025 +0800 Use VersionNodePath on other NodePath (#34580) * Use VersionNodePath on other NodePath * Use VersionNodePath on other NodePath * Use VersionNodePath on other NodePath * Use VersionNodePath on other NodePath * Use VersionNodePath on other NodePath * Use VersionNodePath on other NodePath * Use VersionNodePath on other NodePath --- .../node/path/config/GlobalPropertiesNodePath.java | 11 +++----- .../mode/node/path/config/GlobalRuleNodePath.java | 11 +++----- .../config/rule/item/NamedRuleItemNodePath.java | 31 ++++++++++++---------- .../config/rule/item/UniqueRuleItemNodePath.java | 15 ++++++----- .../path/metadata/DataSourceMetaDataNodePath.java | 15 +++++------ .../metadata/DatabaseRuleMetaDataNodePath.java | 11 +++----- .../node/path/metadata/TableMetaDataNodePath.java | 9 +++---- .../node/path/metadata/ViewMetaDataNodePath.java | 11 +++----- .../tuple/YamlRepositoryTupleSwapperEngine.java | 4 +-- .../node/path/config/GlobalRuleNodePathTest.java | 20 ++++++++++++++ .../node/path/config/rule/RuleNodePathTest.java | 2 +- .../rule/item/NamedRuleItemNodePathTest.java | 26 +++++++++++------- .../rule/RuleConfigurationChangedHandler.java | 4 +-- .../type/RuleItemAlteredBuildExecutor.java | 2 +- .../type/RuleItemDroppedBuildExecutor.java | 2 +- 15 files changed, 93 insertions(+), 81 deletions(-) diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalPropertiesNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalPropertiesNodePath.java index 3b692b66bec..cee9de2e574 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalPropertiesNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/GlobalPropertiesNodePath.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.node.path.config; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -31,10 +32,6 @@ public final class GlobalPropertiesNodePath { private static final String ROOT_NODE = "/props"; - private static final String VERSIONS_NODE = "versions"; - - private static final String ACTIVE_VERSION_NODE = "active_version"; - /** * Get properties path. * @@ -50,7 +47,7 @@ public final class GlobalPropertiesNodePath { * @return properties version root path */ public static String getVersionRootPath() { - return String.join("/", getRootPath(), VERSIONS_NODE); + return new VersionNodePath(getRootPath()).getVersionsPath(); } /** @@ -60,7 +57,7 @@ public final class GlobalPropertiesNodePath { * @return properties version path */ public static String getVersionPath(final int version) { - return String.join("/", getVersionRootPath(), String.valueOf(version)); + return new VersionNodePath(getRootPath()).getVersionPath(version); } /** @@ -69,7 +66,7 @@ public final class GlobalPropertiesNodePath { * @return properties active version path */ public static String getActiveVersionPath() { - return String.join("/", getRootPath(), ACTIVE_VERSION_NODE); + return new VersionNodePath(getRootPath()).getActiveVersionPath(); } /** 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 525478a6681..7bcc64e35f5 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 @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.node.path.config; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.Optional; import java.util.regex.Matcher; @@ -32,10 +33,6 @@ public final class GlobalRuleNodePath { private static final String ROOT_NODE = "/rules"; - private static final String VERSIONS_NODE = "versions"; - - private static final String ACTIVE_VERSION_NODE = "active_version"; - private static final String IDENTIFIER_PATTERN = "(\\w+)"; private static final String VERSION_PATTERN = "(\\d+)"; @@ -66,7 +63,7 @@ public final class GlobalRuleNodePath { * @return global rule version root path */ public static String getVersionRootPath(final String ruleTypeName) { - return String.join("/", getRulePath(ruleTypeName), VERSIONS_NODE); + return new VersionNodePath(getRulePath(ruleTypeName)).getVersionsPath(); } /** @@ -77,7 +74,7 @@ public final class GlobalRuleNodePath { * @return global rule version path */ public static String getVersionPath(final String ruleTypeName, final int version) { - return String.join("/", getVersionRootPath(ruleTypeName), String.valueOf(version)); + return new VersionNodePath(getRulePath(ruleTypeName)).getVersionPath(version); } /** @@ -87,7 +84,7 @@ public final class GlobalRuleNodePath { * @return global rule active version path */ public static String getActiveVersionPath(final String ruleTypeName) { - return String.join("/", getRulePath(ruleTypeName), ACTIVE_VERSION_NODE); + return new VersionNodePath(getRulePath(ruleTypeName)).getActiveVersionPath(); } /** diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePath.java index 76c90905aba..b5e4f2852b3 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePath.java @@ -18,6 +18,7 @@ package org.apache.shardingsphere.mode.node.path.config.rule.item; import org.apache.shardingsphere.mode.node.path.config.rule.root.RuleRootNodePath; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.Optional; import java.util.regex.Matcher; @@ -28,9 +29,9 @@ import java.util.regex.Pattern; */ public final class NamedRuleItemNodePath { - private static final String NAME = "/([\\w\\-]+)/versions/\\d+$"; + private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)"; - private static final String ACTIVE_VERSION = "/([\\w\\-]+)/active_version$"; + private static final String VERSION_PATTERN = "(\\d+)"; private final String type; @@ -42,9 +43,11 @@ public final class NamedRuleItemNodePath { public NamedRuleItemNodePath(final RuleRootNodePath rootNodePath, final String type) { this.type = type; - namePathPattern = Pattern.compile(rootNodePath.getNodePrefix() + type + NAME); - activeVersionPathPattern = Pattern.compile(rootNodePath.getNodePrefix() + type + ACTIVE_VERSION); - itemPathPattern = Pattern.compile(rootNodePath.getNodePrefix() + type + "/([\\w\\-]+)$"); + String pattern = String.join("/", rootNodePath.getNodePrefix() + type, IDENTIFIER_PATTERN); + VersionNodePath versionNodePath = new VersionNodePath(pattern); + namePathPattern = Pattern.compile(String.join("/", versionNodePath.getVersionsPath(), VERSION_PATTERN)); + activeVersionPathPattern = Pattern.compile(versionNodePath.getActiveVersionPath() + "$"); + itemPathPattern = Pattern.compile(pattern + "$"); } /** @@ -58,34 +61,34 @@ public final class NamedRuleItemNodePath { } /** - * Get rule item name. + * Find rule item name. * * @param path path - * @return got item rule name + * @return found item rule name */ - public Optional<String> getName(final String path) { + public Optional<String> findName(final String path) { Matcher matcher = namePathPattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } /** - * Get rule item name by active version. + * Find rule item name by active version. * * @param path path - * @return got rule item name + * @return found rule item name */ - public Optional<String> getNameByActiveVersion(final String path) { + public Optional<String> findNameByActiveVersion(final String path) { Matcher matcher = activeVersionPathPattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } /** - * Get rule item name by item path. + * Find rule item name by item path. * * @param path path - * @return got rule item name + * @return found rule item name */ - public Optional<String> getNameByItemPath(final String path) { + public Optional<String> findNameByItemPath(final String path) { Matcher matcher = itemPathPattern.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/config/rule/item/UniqueRuleItemNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/UniqueRuleItemNodePath.java index c8de8a19dee..585405bcd65 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/UniqueRuleItemNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/config/rule/item/UniqueRuleItemNodePath.java @@ -18,6 +18,7 @@ package org.apache.shardingsphere.mode.node.path.config.rule.item; import org.apache.shardingsphere.mode.node.path.config.rule.root.RuleRootNodePath; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -27,9 +28,7 @@ import java.util.regex.Pattern; */ public final class UniqueRuleItemNodePath { - private static final String VERSIONS = "/versions/\\d+$"; - - private static final String ACTIVE_VERSION = "/active_version$"; + private static final String VERSION_PATTERN = "(\\d+)"; private final String parentNode; @@ -42,15 +41,17 @@ public final class UniqueRuleItemNodePath { public UniqueRuleItemNodePath(final RuleRootNodePath ruleRootNodePath, final String type) { parentNode = null; this.type = type; - pathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + type + VERSIONS); - activeVersionPathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + type + ACTIVE_VERSION); + VersionNodePath versionNodePath = new VersionNodePath(ruleRootNodePath.getNodePrefix() + type); + pathPattern = Pattern.compile(String.join("/", versionNodePath.getVersionsPath(), VERSION_PATTERN)); + activeVersionPathPattern = Pattern.compile(versionNodePath.getActiveVersionPath() + "$"); } public UniqueRuleItemNodePath(final RuleRootNodePath ruleRootNodePath, final String parentNode, final String type) { this.parentNode = parentNode; this.type = type; - pathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + parentNode + "/" + type + VERSIONS); - activeVersionPathPattern = Pattern.compile(ruleRootNodePath.getNodePrefix() + parentNode + "/" + type + ACTIVE_VERSION); + VersionNodePath versionNodePath = new VersionNodePath(ruleRootNodePath.getNodePrefix() + parentNode + "/" + type); + pathPattern = Pattern.compile(String.join("/", versionNodePath.getVersionsPath(), VERSION_PATTERN)); + activeVersionPathPattern = Pattern.compile(versionNodePath.getActiveVersionPath() + "$"); } /** diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java index 3f603240b06..8ced51bd191 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.node.path.metadata; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.Optional; import java.util.regex.Matcher; @@ -38,10 +39,6 @@ public final class DataSourceMetaDataNodePath { private static final String UNITS_NODE = "units"; - private static final String VERSIONS_NODE = "versions"; - - private static final String ACTIVE_VERSION_NODE = "active_version"; - private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)"; /** @@ -105,7 +102,7 @@ public final class DataSourceMetaDataNodePath { * @return storage unit version path */ public static String getStorageUnitVersionPath(final String databaseName, final String storageUnitName, final int version) { - return String.join("/", getStorageUnitVersionsPath(databaseName, storageUnitName), String.valueOf(version)); + return new VersionNodePath(String.join("/", getStorageUnitsPath(databaseName), storageUnitName)).getVersionPath(version); } /** @@ -116,7 +113,7 @@ public final class DataSourceMetaDataNodePath { * @return storage unit versions path */ public static String getStorageUnitVersionsPath(final String databaseName, final String dataSourceName) { - return String.join("/", getStorageUnitsPath(databaseName), dataSourceName, VERSIONS_NODE); + return new VersionNodePath(String.join("/", getStorageUnitsPath(databaseName), dataSourceName)).getVersionsPath(); } /** @@ -127,7 +124,7 @@ public final class DataSourceMetaDataNodePath { * @return storage unit active version path */ public static String getStorageUnitActiveVersionPath(final String databaseName, final String dataSourceName) { - return String.join("/", getStorageUnitsPath(databaseName), dataSourceName, ACTIVE_VERSION_NODE); + return new VersionNodePath(String.join("/", getStorageUnitsPath(databaseName), dataSourceName)).getActiveVersionPath(); } /** @@ -138,7 +135,7 @@ public final class DataSourceMetaDataNodePath { * @return storage node versions path */ public static String getStorageNodeVersionsPath(final String databaseName, final String storageNodeName) { - return String.join("/", getStorageNodesPath(databaseName), storageNodeName, VERSIONS_NODE); + return new VersionNodePath(String.join("/", getStorageNodesPath(databaseName), storageNodeName)).getVersionsPath(); } /** @@ -149,7 +146,7 @@ public final class DataSourceMetaDataNodePath { * @return storage node active version path */ public static String getStorageNodeActiveVersionPath(final String databaseName, final String storageNodeName) { - return String.join("/", getStorageNodesPath(databaseName), storageNodeName, ACTIVE_VERSION_NODE); + return new VersionNodePath(String.join("/", getStorageNodesPath(databaseName), storageNodeName)).getActiveVersionPath(); } /** diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java index 984e171665e..765875cca2a 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.node.path.metadata; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; /** * Database rule meta data node path. @@ -30,10 +31,6 @@ public final class DatabaseRuleMetaDataNodePath { 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. * @@ -76,7 +73,7 @@ public final class DatabaseRuleMetaDataNodePath { * @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); + return new VersionNodePath(getRulePath(databaseName, ruleTypeName, key)).getVersionsPath(); } /** @@ -89,7 +86,7 @@ public final class DatabaseRuleMetaDataNodePath { * @return database rule next version */ public static String getVersionPath(final String databaseName, final String ruleTypeName, final String key, final int version) { - return String.join("/", getVersionsPath(databaseName, ruleTypeName, key), String.valueOf(version)); + return new VersionNodePath(getRulePath(databaseName, ruleTypeName, key)).getVersionPath(version); } /** @@ -101,6 +98,6 @@ public final class DatabaseRuleMetaDataNodePath { * @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); + return new VersionNodePath(getRulePath(databaseName, ruleTypeName, key)).getActiveVersionPath(); } } diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java index 57c82685521..2c5b6494eb6 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.node.path.metadata; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.Optional; import java.util.regex.Matcher; @@ -32,10 +33,6 @@ public final class TableMetaDataNodePath { private static final String TABLES_NODE = "tables"; - private static final String VERSIONS_NODE = "versions"; - - private static final String ACTIVE_VERSION_NODE = "active_version"; - private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)"; /** @@ -70,7 +67,7 @@ public final class TableMetaDataNodePath { * @return tables active version path */ public static String getTableActiveVersionPath(final String databaseName, final String schemaName, final String tableName) { - return String.join("/", getTablePath(databaseName, schemaName, tableName), ACTIVE_VERSION_NODE); + return new VersionNodePath(getTablePath(databaseName, schemaName, tableName)).getActiveVersionPath(); } /** @@ -82,7 +79,7 @@ public final class TableMetaDataNodePath { * @return tables versions path */ public static String getTableVersionsPath(final String databaseName, final String schemaName, final String tableName) { - return String.join("/", getTablePath(databaseName, schemaName, tableName), VERSIONS_NODE); + return new VersionNodePath(getTablePath(databaseName, schemaName, tableName)).getVersionsPath(); } /** diff --git a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java index 91d467756a8..c5820e9bd32 100644 --- a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java +++ b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.node.path.metadata; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.mode.node.path.version.VersionNodePath; import java.util.Optional; import java.util.regex.Matcher; @@ -32,10 +33,6 @@ public final class ViewMetaDataNodePath { private static final String VIEWS_NODE = "views"; - private static final String VERSIONS_NODE = "versions"; - - private static final String ACTIVE_VERSION_NODE = "active_version"; - private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)"; /** @@ -70,7 +67,7 @@ public final class ViewMetaDataNodePath { * @return view active version path */ public static String getViewActiveVersionPath(final String databaseName, final String schemaName, final String viewName) { - return String.join("/", getViewPath(databaseName, schemaName, viewName), ACTIVE_VERSION_NODE); + return new VersionNodePath(getViewPath(databaseName, schemaName, viewName)).getActiveVersionPath(); } /** @@ -82,7 +79,7 @@ public final class ViewMetaDataNodePath { * @return view versions path */ public static String getViewVersionsPath(final String databaseName, final String schemaName, final String viewName) { - return String.join("/", getViewPath(databaseName, schemaName, viewName), VERSIONS_NODE); + return new VersionNodePath(getViewPath(databaseName, schemaName, viewName)).getVersionsPath(); } /** @@ -95,7 +92,7 @@ public final class ViewMetaDataNodePath { * @return view version path */ public static String getViewVersionPath(final String databaseName, final String schemaName, final String viewName, final int version) { - return String.join("/", getViewVersionsPath(databaseName, schemaName, viewName), String.valueOf(version)); + return new VersionNodePath(getViewPath(databaseName, schemaName, viewName)).getVersionPath(version); } /** 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 6cc5926d466..44607e65b98 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 @@ -202,12 +202,12 @@ public final class YamlRepositoryTupleSwapperEngine { String tupleName = getTupleName(field); RepositoryTupleKeyListNameGenerator tupleKeyListNameGenerator = field.getAnnotation(RepositoryTupleKeyListNameGenerator.class); if (null != tupleKeyListNameGenerator && fieldValue instanceof Collection) { - ruleNodePath.getNamedItem(tupleName).getName(repositoryTuple.getKey()).ifPresent(optional -> ((Collection) fieldValue).add(repositoryTuple.getValue())); + ruleNodePath.getNamedItem(tupleName).findName(repositoryTuple.getKey()).ifPresent(optional -> ((Collection) fieldValue).add(repositoryTuple.getValue())); return; } if (fieldValue instanceof Map) { Class<?> valueClass = (Class) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[1]; - ruleNodePath.getNamedItem(tupleName).getName(repositoryTuple.getKey()) + ruleNodePath.getNamedItem(tupleName).findName(repositoryTuple.getKey()) .ifPresent(optional -> ((Map) fieldValue).put(optional, YamlEngine.unmarshal(repositoryTuple.getValue(), valueClass))); return; } 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 781fa7c5816..8c0de9913d5 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 @@ -23,6 +23,7 @@ import java.util.Optional; 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 GlobalRuleNodePathTest { @@ -52,10 +53,29 @@ class GlobalRuleNodePathTest { assertThat(GlobalRuleNodePath.getActiveVersionPath("foo_rule"), is("/rules/foo_rule/active_version")); } + @Test + void assertFindRuleTypeNameFromActiveVersion() { + Optional<String> actual = GlobalRuleNodePath.findRuleTypeNameFromActiveVersion("/rules/foo_rule/active_version"); + assertTrue(actual.isPresent()); + assertThat(actual.get(), is("foo_rule")); + } + + @Test + void assertNotFindRuleTypeNameFromActiveVersion() { + 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/config/rule/RuleNodePathTest.java b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/RuleNodePathTest.java index 5b977e424af..82567756d4a 100644 --- a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/RuleNodePathTest.java +++ b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/RuleNodePathTest.java @@ -46,7 +46,7 @@ class RuleNodePathTest { void assertGetNamedItem() { NamedRuleItemNodePath namedRulePath = ruleNodePath.getNamedItem("tables"); assertThat(namedRulePath.getPath("foo_tbl"), is("tables/foo_tbl")); - Optional<String> path = namedRulePath.getName("/metadata/foo_db/rules/foo/tables/foo_tbl/versions/0"); + Optional<String> path = namedRulePath.findName("/metadata/foo_db/rules/foo/tables/foo_tbl/versions/0"); assertTrue(path.isPresent()); assertThat(path.get(), is("foo_tbl")); } diff --git a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePathTest.java b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePathTest.java index 6a95cc0f0f3..7f104b8ec89 100644 --- a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePathTest.java +++ b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/rule/item/NamedRuleItemNodePathTest.java @@ -37,34 +37,40 @@ class NamedRuleItemNodePathTest { } @Test - void assertGetName() { - Optional<String> actual = converter.getName("/metadata/foo_db/rules/foo/tables/foo_tbl/versions/0"); + void assertFindName() { + Optional<String> actual = converter.findName("/metadata/foo_db/rules/foo/tables/foo_tbl/versions/0"); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_tbl")); } @Test - void assertGetNameWithInvalidPath() { - assertFalse(converter.getName("/metadata/foo_db/rules/bar/tables/foo_tbl/versions/0").isPresent()); + void assertFindNameWithInvalidPath() { + assertFalse(converter.findName("/metadata/foo_db/rules/bar/tables/foo_tbl/versions/0").isPresent()); } @Test - void assertGetNameByActiveVersion() { - Optional<String> actual = converter.getNameByActiveVersion("/metadata/foo_db/rules/foo/tables/foo_tbl/active_version"); + void assertFindNameByActiveVersion() { + Optional<String> actual = converter.findNameByActiveVersion("/metadata/foo_db/rules/foo/tables/foo_tbl/active_version"); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_tbl")); } @Test - void assertGetNameByActiveVersionWhenNotFound() { - Optional<String> actual = converter.getNameByActiveVersion("/invalid"); + void assertFindNameByActiveVersionWhenNotFound() { + Optional<String> actual = converter.findNameByActiveVersion("/invalid"); assertFalse(actual.isPresent()); } @Test - void assertGetNameByItemPath() { - Optional<String> actual = converter.getNameByItemPath("/metadata/foo_db/rules/foo/tables/foo_tbl"); + void assertFindNameByItemPath() { + Optional<String> actual = converter.findNameByItemPath("/metadata/foo_db/rules/foo/tables/foo_tbl"); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_tbl")); } + + @Test + void assertNotFindNameByItemPath() { + Optional<String> actual = converter.findNameByItemPath("/metadata/foo_db/rules/foo/tables/foo_tbl/xxx"); + assertFalse(actual.isPresent()); + } } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java index d67d40368bb..8d9e23be09b 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandler.java @@ -92,10 +92,10 @@ public final class RuleConfigurationChangedHandler { private Optional<String> getItemName(final DataChangedEvent event, final NamedRuleItemNodePath ruleItemNodePath) { if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) { - return ruleItemNodePath.getNameByActiveVersion(event.getKey()); + return ruleItemNodePath.findNameByActiveVersion(event.getKey()); } if (Type.DELETED == event.getType()) { - return ruleItemNodePath.getNameByItemPath(event.getKey()); + return ruleItemNodePath.findNameByItemPath(event.getKey()); } return Optional.empty(); } 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 eae8e56db86..387cd437a30 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 @@ -39,7 +39,7 @@ public final class RuleItemAlteredBuildExecutor implements RuleItemChangedBuildE public Optional<AlterRuleItem> build(final RuleNodePath ruleNodePath, final String databaseName, final MetaDataVersion metaDataVersion) { String activeVersionPath = new VersionNodePath(metaDataVersion.getPath()).getActiveVersionPath(); for (Entry<String, NamedRuleItemNodePath> entry : ruleNodePath.getNamedItems().entrySet()) { - Optional<String> itemName = entry.getValue().getNameByActiveVersion(activeVersionPath); + Optional<String> itemName = entry.getValue().findNameByActiveVersion(activeVersionPath); if (itemName.isPresent()) { return Optional.of( new AlterNamedRuleItem(databaseName, itemName.get(), activeVersionPath, metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); 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 39a323ba038..c07cd93d117 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 @@ -39,7 +39,7 @@ public final class RuleItemDroppedBuildExecutor implements RuleItemChangedBuildE public Optional<DropRuleItem> build(final RuleNodePath ruleNodePath, final String databaseName, final MetaDataVersion metaDataVersion) { String activeVersionPath = new VersionNodePath(metaDataVersion.getPath()).getActiveVersionPath(); for (Entry<String, NamedRuleItemNodePath> entry : ruleNodePath.getNamedItems().entrySet()) { - Optional<String> itemName = entry.getValue().getNameByItemPath(activeVersionPath); + Optional<String> itemName = entry.getValue().findNameByItemPath(activeVersionPath); if (itemName.isPresent()) { return Optional.of(new DropNamedRuleItem(databaseName, itemName.get(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey())); }