This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git
The following commit(s) were added to refs/heads/rocketmq-studio by this push:
new 19a3a431 fix(acl): normalize boundType with root locale (#1662)
19a3a431 is described below
commit 19a3a431b823a4dc0d7421fbc7b06c33756c4bc0
Author: aias00 <[email protected]>
AuthorDate: Tue Aug 11 20:46:12 2026 +0800
fix(acl): normalize boundType with root locale (#1662)
---
.../apache/rocketmq/studio/instance/acl/AclService.java | 3 ++-
.../rocketmq/studio/instance/acl/AclServiceTest.java | 17 +++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
b/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
index daa7a736..bece9052 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
+import java.util.Locale;
import java.util.UUID;
@Slf4j
@@ -231,7 +232,7 @@ public class AclService {
}
private boolean isValidAcl2BoundType(String boundType) {
- return switch (boundType.trim().toUpperCase()) {
+ return switch (boundType.trim().toUpperCase(Locale.ROOT)) {
case "TOPIC", "GROUP", "*", "USER", "SERVICE_ACCOUNT" -> true;
default -> false;
};
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
b/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
index f9d6ce36..ec0ed5f5 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
@@ -37,6 +37,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.time.LocalDateTime;
import java.util.List;
+import java.util.Locale;
import java.util.Optional;
import java.util.stream.Stream;
@@ -651,6 +652,22 @@ class AclServiceTest {
aclService.validateAcl2Policy(policy);
}
+ @Test
+ void
validateAcl2PolicyShouldIgnoreTheJvmDefaultLocaleWhenNormalizingBoundType() {
+ Locale previous = Locale.getDefault();
+ try {
+ Locale.setDefault(Locale.forLanguageTag("tr-TR"));
+ Acl2PolicyContext policy = new Acl2PolicyContext();
+ policy.setPolicyName("orders-policy");
+ policy.setBoundType("topic");
+
policy.setRules(List.of(Acl2PolicyContext.AuthorizationRule.defaultAllowRule("orders-*")));
+
+ aclService.validateAcl2Policy(policy);
+ } finally {
+ Locale.setDefault(previous);
+ }
+ }
+
@Test
void validateAcl2PolicyShouldRejectNullPolicy() {
assertThatThrownBy(() -> aclService.validateAcl2Policy(null))