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");
+ }
}