This is an automated email from the ASF dual-hosted git repository.
JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new ad4e62d003 [api] Use Locale.ROOT in DLFOpenApiV4Signer (#10087)
ad4e62d003 is described below
commit ad4e62d003ff9a520779351555c9a985b8da6dab
Author: Ran Tao <[email protected]>
AuthorDate: Thu Sep 24 14:40:08 2026 +0800
[api] Use Locale.ROOT in DLFOpenApiV4Signer (#10087)
---
.../paimon/rest/auth/DLFOpenApiV4Signer.java | 3 ++-
.../paimon/rest/auth/DLFOpenApiV4SignerTest.java | 22 ++++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git
a/paimon-api/src/main/java/org/apache/paimon/rest/auth/DLFOpenApiV4Signer.java
b/paimon-api/src/main/java/org/apache/paimon/rest/auth/DLFOpenApiV4Signer.java
index 4c090c7a8b..1b7e833210 100644
---
a/paimon-api/src/main/java/org/apache/paimon/rest/auth/DLFOpenApiV4Signer.java
+++
b/paimon-api/src/main/java/org/apache/paimon/rest/auth/DLFOpenApiV4Signer.java
@@ -34,6 +34,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.UUID;
@@ -252,7 +253,7 @@ public class DLFOpenApiV4Signer implements DLFRequestSigner
{
Map<String, String> valueMap = new HashMap<>();
for (Map.Entry<String, String> entry : headers.entrySet()) {
- String lowerKey = entry.getKey().toLowerCase();
+ String lowerKey = entry.getKey().toLowerCase(Locale.ROOT);
if (lowerKey.startsWith("x-acs-")
|| lowerKey.equals(HOST_HEADER)
|| lowerKey.equals(CONTENT_TYPE_HEADER)) {
diff --git
a/paimon-api/src/test/java/org/apache/paimon/rest/auth/DLFOpenApiV4SignerTest.java
b/paimon-api/src/test/java/org/apache/paimon/rest/auth/DLFOpenApiV4SignerTest.java
index a81358aa88..67d40499de 100644
---
a/paimon-api/src/test/java/org/apache/paimon/rest/auth/DLFOpenApiV4SignerTest.java
+++
b/paimon-api/src/test/java/org/apache/paimon/rest/auth/DLFOpenApiV4SignerTest.java
@@ -25,6 +25,7 @@ import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.Locale;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -164,6 +165,27 @@ public class DLFOpenApiV4SignerTest {
assertEquals(auth1, auth2);
}
+ @Test
+ public void testAuthorizationWithTurkishLocale() throws Exception {
+ Locale originalLocale = Locale.getDefault();
+ try {
+ Locale.setDefault(Locale.US);
+ DLFOpenApiV4Signer signer = new DLFOpenApiV4Signer(REGION);
+ DLFToken token = new DLFToken("TestAKId", "TestAKSecret", null,
null);
+ RESTAuthParameter restAuthParameter =
+ new RESTAuthParameter("/test/path", new HashMap<>(),
"GET", null);
+ Map<String, String> headers = signer.signHeaders(null, NOW, null,
HOST);
+ headers.put("x-acs-signature-nonce", "fixed-nonce-for-test");
+ headers.put("X-ACS-SIGNATURE-NONCE",
headers.remove("x-acs-signature-nonce"));
+
+ String expected = signer.authorization(restAuthParameter, token,
HOST, headers);
+ Locale.setDefault(new Locale("tr", "TR"));
+ assertEquals(expected, signer.authorization(restAuthParameter,
token, HOST, headers));
+ } finally {
+ Locale.setDefault(originalLocale);
+ }
+ }
+
@Test
public void testSignatureCoversQueryParameters() throws Exception {
DLFOpenApiV4Signer signer = new DLFOpenApiV4Signer(REGION);