diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java index edd7e9c0fd9d0..76f98613910bb 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java @@ -40,6 +40,8 @@ public final class DatabaseMetaDataNodePath { private static final String VERSIONS = "versions"; + private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)"; + /** * Get meta data root path. * @@ -92,13 +94,13 @@ public static String getTablesPath(final String databaseName, final String schem } /** - * Get version node by active version path. + * Get version path. * * @param rulePath rule path * @param activeVersion active version - * @return active version path + * @return version path */ - public static String getVersionNodeByActiveVersionPath(final String rulePath, final String activeVersion) { + public static String getVersionPath(final String rulePath, final String activeVersion) { return rulePath.replace(ACTIVE_VERSION, VERSIONS) + "/" + activeVersion; } @@ -110,7 +112,8 @@ public static String getVersionNodeByActiveVersionPath(final String rulePath, fi * @return found database name */ public static Optional findDatabaseName(final String path, final boolean containsChildPath) { - Pattern pattern = Pattern.compile(getRootPath() + "/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); + String endPattern = containsChildPath ? "?" : "$"; + Pattern pattern = Pattern.compile(getDatabasePath(IDENTIFIER_PATTERN) + endPattern, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } @@ -123,7 +126,8 @@ public static Optional findDatabaseName(final String path, final boolean * @return found schema name */ public static Optional findSchemaName(final String path, final boolean containsChildPath) { - Pattern pattern = Pattern.compile(getRootPath() + "/([\\w\\-]+)/schemas/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); + String endPattern = containsChildPath ? "?" : "$"; + Pattern pattern = Pattern.compile(getSchemaPath(IDENTIFIER_PATTERN, IDENTIFIER_PATTERN) + endPattern, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); } diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java index be1e2f83f7205..6db7277591ced 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java @@ -55,7 +55,7 @@ public String getActiveVersionByFullPath(final String fullPath) { @Override public String getVersionPathByActiveVersion(final String path, final String activeVersion) { - return repository.query(DatabaseMetaDataNodePath.getVersionNodeByActiveVersionPath(path, activeVersion)); + return repository.query(DatabaseMetaDataNodePath.getVersionPath(path, activeVersion)); } @Override diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java index 1e3c29038f535..fedbb260054f7 100644 --- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java +++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java @@ -54,8 +54,8 @@ void assertGetTablesPath() { } @Test - void assertGetVersionNodeByActiveVersionPath() { - assertThat(DatabaseMetaDataNodePath.getVersionNodeByActiveVersionPath("foo_rule", "1"), is("foo_rule/1")); + void assertGetVersionPath() { + assertThat(DatabaseMetaDataNodePath.getVersionPath("foo_rule", "1"), is("foo_rule/1")); } @Test