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

yasith pushed a commit to branch feat/airavata-service-layer
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 7f2e4748d1a0fde9c45e2664a877e95b8d4782f6
Author: yasithdev <[email protected]>
AuthorDate: Thu Mar 26 05:27:33 2026 -0500

    feat: add RequestContext for transport-agnostic identity
---
 .../airavata/service/context/RequestContext.java   | 24 ++++++++++++++++++++++
 .../service/context/RequestContextTest.java        | 24 ++++++++++++++++++++++
 2 files changed, 48 insertions(+)

diff --git 
a/airavata-api/src/main/java/org/apache/airavata/service/context/RequestContext.java
 
b/airavata-api/src/main/java/org/apache/airavata/service/context/RequestContext.java
new file mode 100644
index 0000000000..e20f2e534c
--- /dev/null
+++ 
b/airavata-api/src/main/java/org/apache/airavata/service/context/RequestContext.java
@@ -0,0 +1,24 @@
+package org.apache.airavata.service.context;
+
+import java.util.Collections;
+import java.util.Map;
+
+public class RequestContext {
+
+    private final String userId;
+    private final String gatewayId;
+    private final String accessToken;
+    private final Map<String, String> claims;
+
+    public RequestContext(String userId, String gatewayId, String accessToken, 
Map<String, String> claims) {
+        this.userId = userId;
+        this.gatewayId = gatewayId;
+        this.accessToken = accessToken;
+        this.claims = Collections.unmodifiableMap(claims);
+    }
+
+    public String getUserId() { return userId; }
+    public String getGatewayId() { return gatewayId; }
+    public String getAccessToken() { return accessToken; }
+    public Map<String, String> getClaims() { return claims; }
+}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/service/context/RequestContextTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/service/context/RequestContextTest.java
new file mode 100644
index 0000000000..ef14096c53
--- /dev/null
+++ 
b/airavata-api/src/test/java/org/apache/airavata/service/context/RequestContextTest.java
@@ -0,0 +1,24 @@
+package org.apache.airavata.service.context;
+
+import org.junit.jupiter.api.Test;
+import java.util.Map;
+import static org.junit.jupiter.api.Assertions.*;
+
+class RequestContextTest {
+
+    @Test
+    void constructorSetsFields() {
+        RequestContext ctx = new RequestContext("testUser", "testGateway", 
"token123",
+                Map.of("role", "admin"));
+        assertEquals("testUser", ctx.getUserId());
+        assertEquals("testGateway", ctx.getGatewayId());
+        assertEquals("token123", ctx.getAccessToken());
+        assertEquals("admin", ctx.getClaims().get("role"));
+    }
+
+    @Test
+    void claimsMapIsUnmodifiable() {
+        RequestContext ctx = new RequestContext("u", "g", "t", Map.of("k", 
"v"));
+        assertThrows(UnsupportedOperationException.class, () -> 
ctx.getClaims().put("new", "val"));
+    }
+}

Reply via email to