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))

Reply via email to