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 5de4d6f4 fix(settings): normalize identifiers with root locale (#1472)
5de4d6f4 is described below
commit 5de4d6f4d05029aa4371aadeb77b4464a7ce2e11
Author: 0 <[email protected]>
AuthorDate: Mon Aug 10 21:12:11 2026 +0800
fix(settings): normalize identifiers with root locale (#1472)
---
.../rocketmq/studio/settings/SettingsService.java | 5 ++--
.../studio/settings/SettingsServiceTest.java | 30 ++++++++++++++++++++++
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/settings/SettingsService.java
b/server/src/main/java/org/apache/rocketmq/studio/settings/SettingsService.java
index 7fb02fb1..2e8023c8 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/settings/SettingsService.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/settings/SettingsService.java
@@ -186,7 +186,8 @@ public class SettingsService {
private boolean isPrometheusCompatible(String type) {
return StringUtils.hasText(type)
- &&
PROMETHEUS_COMPATIBLE_TYPES.contains(type.replaceAll("\\s+", "").toLowerCase());
+ && PROMETHEUS_COMPATIBLE_TYPES.contains(
+ type.replaceAll("\\s+", "").toLowerCase(Locale.ROOT));
}
private String normalizeDataSourceKey(String key) {
@@ -222,7 +223,7 @@ public class SettingsService {
if (!StringUtils.hasText(auth)) {
return AUTH_NONE;
}
- return auth.trim().replaceAll("\\s+", " ").toLowerCase();
+ return auth.trim().replaceAll("\\s+", " ").toLowerCase(Locale.ROOT);
}
private URI prometheusQueryUri(String baseUrl) throws URISyntaxException {
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/settings/SettingsServiceTest.java
b/server/src/test/java/org/apache/rocketmq/studio/settings/SettingsServiceTest.java
index 6d1c7684..f514c76d 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/settings/SettingsServiceTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/settings/SettingsServiceTest.java
@@ -36,6 +36,7 @@ import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
+import java.util.Locale;
import java.util.concurrent.atomic.AtomicReference;
import static org.assertj.core.api.Assertions.assertThat;
@@ -373,6 +374,35 @@ class SettingsServiceTest {
+
Base64.getEncoder().encodeToString("prom:secret".getBytes(StandardCharsets.UTF_8)));
}
+ @Test
+ void
testConnectionShouldNormalizeIdentifiersIndependentlyOfDefaultLocale() {
+ AtomicReference<String> authorization = new AtomicReference<>();
+ prometheusServer.createContext("/api/v1/query", exchange -> {
+
authorization.set(exchange.getRequestHeaders().getFirst("Authorization"));
+ respond(exchange, 200,
"{\"status\":\"success\",\"data\":{\"resultType\":\"vector\",\"result\":[]}}");
+ });
+ DataSourceTestDTO request = DataSourceTestDTO.builder()
+ .url(prometheusBaseUrl)
+ .type("MIMIR")
+ .auth("Basic Auth")
+ .username("prom")
+ .password("secret")
+ .build();
+ Locale originalLocale = Locale.getDefault();
+
+ DataSourceTestResultVO result;
+ try {
+ Locale.setDefault(Locale.forLanguageTag("tr-TR"));
+ result = settingsService.testDataSource(request);
+ } finally {
+ Locale.setDefault(originalLocale);
+ }
+
+ assertThat(result.isSuccess()).isTrue();
+ assertThat(authorization.get()).isEqualTo("Basic "
+ +
Base64.getEncoder().encodeToString("prom:secret".getBytes(StandardCharsets.UTF_8)));
+ }
+
@Test
void testConnectionShouldApplyBearerAuthentication() {
AtomicReference<String> authorization = new AtomicReference<>();