This is an automated email from the ASF dual-hosted git repository.

emaynard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new bf5e7fdb Treat headers as case-insensitive during RealmContext 
resolution (#1089)
bf5e7fdb is described below

commit bf5e7fdbbd845110e27b2353e693b162f38d0465
Author: Eric Maynard <[email protected]>
AuthorDate: Fri Feb 28 18:10:30 2025 -0800

    Treat headers as case-insensitive during RealmContext resolution (#1089)
    
    * initial commit
    
    * autolint
---
 .../polaris/service/context/RealmContextResolver.java       |  5 ++++-
 .../polaris/service/context/DefaultRealmIdResolverTest.java | 13 +++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git 
a/service/common/src/main/java/org/apache/polaris/service/context/RealmContextResolver.java
 
b/service/common/src/main/java/org/apache/polaris/service/context/RealmContextResolver.java
index e9c75360..ae2b2dc6 100644
--- 
a/service/common/src/main/java/org/apache/polaris/service/context/RealmContextResolver.java
+++ 
b/service/common/src/main/java/org/apache/polaris/service/context/RealmContextResolver.java
@@ -20,6 +20,7 @@ package org.apache.polaris.service.context;
 
 import java.util.Map;
 import java.util.function.Function;
+import org.apache.commons.collections.map.CaseInsensitiveMap;
 import org.apache.polaris.core.context.RealmContext;
 
 public interface RealmContextResolver {
@@ -35,6 +36,8 @@ public interface RealmContextResolver {
 
   default RealmContext resolveRealmContext(
       String requestURL, String method, String path, Map<String, String> 
headers) {
-    return resolveRealmContext(requestURL, method, path, headers::get);
+    CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap(headers);
+    return resolveRealmContext(
+        requestURL, method, path, (key) -> (String) 
caseInsensitiveMap.get(key));
   }
 }
diff --git 
a/service/common/src/test/java/org/apache/polaris/service/context/DefaultRealmIdResolverTest.java
 
b/service/common/src/test/java/org/apache/polaris/service/context/DefaultRealmIdResolverTest.java
index a68e10ff..7b114caf 100644
--- 
a/service/common/src/test/java/org/apache/polaris/service/context/DefaultRealmIdResolverTest.java
+++ 
b/service/common/src/test/java/org/apache/polaris/service/context/DefaultRealmIdResolverTest.java
@@ -82,4 +82,17 @@ class DefaultRealmContextResolverTest {
         .isInstanceOf(UnresolvableRealmContextException.class)
         .hasMessage("Missing required realm header: Polaris-Header");
   }
+
+  @Test
+  void headerCaseInsensitive() {
+    DefaultRealmContextResolver resolver = new 
DefaultRealmContextResolver(config);
+    RealmContext RealmContext1 =
+        resolver.resolveRealmContext(
+            "requestURL", "method", "path", Map.of("POLARIS-HEADER", 
"realm1"));
+    assertThat(RealmContext1.getRealmIdentifier()).isEqualTo("realm1");
+    RealmContext RealmContext2 =
+        resolver.resolveRealmContext(
+            "requestURL", "method", "path", Map.of("polaris-header", 
"realm2"));
+    assertThat(RealmContext2.getRealmIdentifier()).isEqualTo("realm2");
+  }
 }

Reply via email to