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 7914e089227 Add GlobalLockNodePath (#35020)
7914e089227 is described below

commit 7914e089227269112c03236559cbe7554e79e130
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Mon Mar 17 16:42:18 2025 +0800

    Add GlobalLockNodePath (#35020)
    
    * Add GlobalLockNodePath
    
    * Add GlobalLockNodePath
---
 .../mode/lock/global/GlobalLockDefinition.java     | 19 +++++++++++------
 .../node/path/type/lock/GlobalLockNodePath.java}   | 20 ++++++++----------
 .../path/type/lock/GlobalLockNodePathTest.java}    | 24 +++++++++-------------
 3 files changed, 32 insertions(+), 31 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
index 77f2d032c7a..a46afd2d717 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
@@ -17,20 +17,27 @@
 
 package org.apache.shardingsphere.mode.lock.global;
 
-import lombok.Getter;
 import org.apache.shardingsphere.infra.lock.LockDefinition;
+import 
org.apache.shardingsphere.mode.node.path.engine.generator.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.type.lock.GlobalLockNodePath;
 
 /**
  * Global lock definition.
  */
-@Getter
 public final class GlobalLockDefinition implements LockDefinition {
     
-    private static final String KEY_PATTERN = "/lock/global/locks/%s";
-    
-    private final String lockKey;
+    private final GlobalLockNodePath nodePath;
     
     public GlobalLockDefinition(final GlobalLock globalLock) {
-        lockKey = String.format(KEY_PATTERN, globalLock.getName());
+        nodePath = new GlobalLockNodePath(globalLock.getName());
+    }
+    
+    /**
+     * Get lock key.
+     *
+     * @return lock key
+     */
+    public String getLockKey() {
+        return NodePathGenerator.toPath(nodePath);
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/type/lock/GlobalLockNodePath.java
similarity index 64%
copy from 
mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
copy to 
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/type/lock/GlobalLockNodePath.java
index 77f2d032c7a..e6a89e5f4fb 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/type/lock/GlobalLockNodePath.java
@@ -15,22 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.mode.lock.global;
+package org.apache.shardingsphere.mode.node.path.type.lock;
 
 import lombok.Getter;
-import org.apache.shardingsphere.infra.lock.LockDefinition;
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.mode.node.path.NodePath;
+import org.apache.shardingsphere.mode.node.path.NodePathEntity;
 
 /**
- * Global lock definition.
+ * Global lock node path.
  */
+@NodePathEntity("/lock/global/locks/${name}")
+@RequiredArgsConstructor
 @Getter
-public final class GlobalLockDefinition implements LockDefinition {
+public final class GlobalLockNodePath implements NodePath {
     
-    private static final String KEY_PATTERN = "/lock/global/locks/%s";
-    
-    private final String lockKey;
-    
-    public GlobalLockDefinition(final GlobalLock globalLock) {
-        lockKey = String.format(KEY_PATTERN, globalLock.getName());
-    }
+    private final String name;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/type/lock/GlobalLockNodePathTest.java
similarity index 62%
copy from 
mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
copy to 
mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/type/lock/GlobalLockNodePathTest.java
index 77f2d032c7a..fca0dc4634a 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/type/lock/GlobalLockNodePathTest.java
@@ -15,22 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.mode.lock.global;
+package org.apache.shardingsphere.mode.node.path.type.lock;
 
-import lombok.Getter;
-import org.apache.shardingsphere.infra.lock.LockDefinition;
+import 
org.apache.shardingsphere.mode.node.path.engine.generator.NodePathGenerator;
+import org.junit.jupiter.api.Test;
 
-/**
- * Global lock definition.
- */
-@Getter
-public final class GlobalLockDefinition implements LockDefinition {
-    
-    private static final String KEY_PATTERN = "/lock/global/locks/%s";
-    
-    private final String lockKey;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+class GlobalLockNodePathTest {
     
-    public GlobalLockDefinition(final GlobalLock globalLock) {
-        lockKey = String.format(KEY_PATTERN, globalLock.getName());
+    @Test
+    void assertToPath() {
+        assertThat(NodePathGenerator.toPath(new 
GlobalLockNodePath("foo_lock")), is("/lock/global/locks/foo_lock"));
     }
 }

Reply via email to