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")); } }