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 <[email protected]>
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"));
}
}