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 24eb6881d13 Refactor TableMetaDataNodePath (#34565)
24eb6881d13 is described below

commit 24eb6881d136beb805cc541b85be1a81cf2c93bb
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Thu Feb 6 01:20:24 2025 +0800

    Refactor TableMetaDataNodePath (#34565)
    
    * Refactor TableMetaDataNodePath
    
    * Refactor TableMetaDataNodePath
---
 .../node/path/metadata/TableMetaDataNodePath.java  | 44 ++++++++++------------
 .../path/metadata/TableMetaDataNodePathTest.java   | 34 ++++++++---------
 .../database/metadata/MetaDataChangedHandler.java  |  2 +-
 .../metadata/type/TableChangedHandler.java         |  2 +-
 4 files changed, 38 insertions(+), 44 deletions(-)

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 86d5ca54858..57c82685521 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
@@ -30,19 +30,13 @@ import java.util.regex.Pattern;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class TableMetaDataNodePath {
     
-    private static final String ROOT_NODE = "/metadata";
-    
     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 TABLES_PATTERN = 
"/([\\w\\-]+)/schemas/([\\w\\-]+)/tables";
-    
-    private static final String ACTIVE_VERSION_SUFFIX = 
"/([\\w\\-]+)/active_version";
-    
-    private static final String TABLE_SUFFIX = "/([\\w\\-]+)$";
+    private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)";
     
     /**
      * Get table root path.
@@ -105,46 +99,46 @@ public final class TableMetaDataNodePath {
     }
     
     /**
-     * Get table name by active version path.
+     * Find table name.
      *
      * @param path path
-     * @return table name
+     * @return found table name
      */
-    public static Optional<String> getTableNameByActiveVersionPath(final 
String path) {
-        Pattern pattern = Pattern.compile(ROOT_NODE + TABLES_PATTERN + 
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE);
+    public static Optional<String> findTableName(final String path) {
+        Pattern pattern = Pattern.compile(getTablePath(IDENTIFIER_PATTERN, 
IDENTIFIER_PATTERN, IDENTIFIER_PATTERN) + "$", Pattern.CASE_INSENSITIVE);
         Matcher matcher = pattern.matcher(path);
         return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Find table name.
+     * Is table path.
      *
      * @param path path
-     * @return found table name
+     * @return true or false
      */
-    public static Optional<String> findTableName(final String path) {
-        Pattern pattern = Pattern.compile(ROOT_NODE + TABLES_PATTERN + 
"/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean isTablePath(final String path) {
+        return findTableName(path).isPresent();
     }
     
     /**
-     * Is table active version path.
+     * Get table name by active version path.
      *
      * @param path path
-     * @return true or false
+     * @return table name
      */
-    public static boolean isTableActiveVersionPath(final String path) {
-        return Pattern.compile(ROOT_NODE + TABLES_PATTERN + 
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
+    public static Optional<String> findTableNameByActiveVersionPath(final 
String path) {
+        Pattern pattern = 
Pattern.compile(getTableActiveVersionPath(IDENTIFIER_PATTERN, 
IDENTIFIER_PATTERN, IDENTIFIER_PATTERN), Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Is table path.
+     * Is table active version path.
      *
      * @param path path
-     * @return true or false
+     * @return is table active version path or not
      */
-    public static boolean isTablePath(final String path) {
-        return Pattern.compile(ROOT_NODE + TABLES_PATTERN + TABLE_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
+    public static boolean isTableActiveVersionPath(final String path) {
+        return findTableNameByActiveVersionPath(path).isPresent();
     }
 }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
index 275e1873929..a0e1c61cd26 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
@@ -33,6 +33,11 @@ class TableMetaDataNodePathTest {
         assertThat(TableMetaDataNodePath.getTableRootPath("foo_db", 
"foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables"));
     }
     
+    @Test
+    void assertGetTablePath() {
+        assertThat(TableMetaDataNodePath.getTablePath("foo_db", "foo_schema", 
"foo_tbl"), is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
+    }
+    
     @Test
     void assertGetTableActiveVersionPath() {
         assertThat(TableMetaDataNodePath.getTableActiveVersionPath("foo_db", 
"foo_schema", "foo_tbl"), 
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version"));
@@ -49,41 +54,36 @@ class TableMetaDataNodePathTest {
     }
     
     @Test
-    void assertGetTablePath() {
-        assertThat(TableMetaDataNodePath.getTablePath("foo_db", "foo_schema", 
"foo_tbl"), is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
+    void assertFindTableName() {
+        Optional<String> actual = 
TableMetaDataNodePath.findTableName("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("foo_tbl"));
     }
     
     @Test
-    void assertFindTableNameByActiveVersionPath() {
-        Optional<String> actual = 
TableMetaDataNodePath.getTableNameByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("foo_tbl"));
+    void assertFindTableNameIfNotFound() {
+        
assertFalse(TableMetaDataNodePath.findTableName("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl").isPresent());
     }
     
     @Test
-    void assertFindTableNameByActiveVersionPathIfNotFound() {
-        
assertFalse(TableMetaDataNodePath.getTableNameByActiveVersionPath("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl/active_version").isPresent());
+    void assertIsTablePath() {
+        
assertTrue(TableMetaDataNodePath.isTablePath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
     }
     
     @Test
-    void assertFindTableName() {
-        Optional<String> actual = 
TableMetaDataNodePath.findTableName("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl");
+    void assertFindTableNameByActiveVersionPath() {
+        Optional<String> actual = 
TableMetaDataNodePath.findTableNameByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version");
         assertTrue(actual.isPresent());
         assertThat(actual.get(), is("foo_tbl"));
     }
     
     @Test
-    void assertFindTableNameIfNotFound() {
-        
assertFalse(TableMetaDataNodePath.findTableName("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl").isPresent());
+    void assertFindTableNameByActiveVersionPathIfNotFound() {
+        
assertFalse(TableMetaDataNodePath.findTableNameByActiveVersionPath("/xxx/foo_db/schemas/foo_schema/tables/foo_tbl/active_version").isPresent());
     }
     
     @Test
     void assertIsTableActiveVersionPath() {
         
assertTrue(TableMetaDataNodePath.isTableActiveVersionPath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/active_version"));
     }
-    
-    @Test
-    void assertIsTablePath() {
-        
assertTrue(TableMetaDataNodePath.isTablePath("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl"));
-    }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
index d71dacc76f4..c2309bd92fe 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
@@ -94,7 +94,7 @@ public final class MetaDataChangedHandler {
     }
     
     private boolean isTableMetaDataChanged(final String key) {
-        return TableMetaDataNodePath.isTableActiveVersionPath(key) || 
TableMetaDataNodePath.isTablePath(key);
+        return TableMetaDataNodePath.isTablePath(key) || 
TableMetaDataNodePath.isTableActiveVersionPath(key);
     }
     
     private void handleTableChanged(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
index a23cdb9c7e8..a3260f86697 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
@@ -46,7 +46,7 @@ public final class TableChangedHandler {
      * @param event data changed event
      */
     public void handleCreatedOrAltered(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
-        String tableName = 
TableMetaDataNodePath.getTableNameByActiveVersionPath(event.getKey()).orElseThrow(()
 -> new IllegalStateException("Table name not found."));
+        String tableName = 
TableMetaDataNodePath.findTableNameByActiveVersionPath(event.getKey()).orElseThrow(()
 -> new IllegalStateException("Table name not found."));
         ActiveVersionChecker.checkActiveVersion(contextManager, event);
         ShardingSphereTable table = 
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseMetaDataFacade().getTable().load(databaseName,
 schemaName, tableName);
         
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().alterTable(databaseName,
 schemaName, table);

Reply via email to