diff --git a/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContext.java b/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContext.java index d857207..0aac33f 100644 --- a/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContext.java +++ b/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContext.java @@ -33,6 +33,12 @@ public class RequestContext { public static final Context.Key CURRENT = Context.key("request_context"); private static final JwtParser JWT_PARSER = new JwtParser(); + public RequestContext() {} + + public RequestContext(RequestContext otherContext) { + this.headers.putAll(otherContext.headers); + } + public static RequestContext forTenantId(String tenantId) { return new RequestContext() .put(RequestContextConstants.TENANT_ID_HEADER_KEY, tenantId) diff --git a/grpc-context-utils/src/test/java/org/hypertrace/core/grpcutils/context/RequestContextTest.java b/grpc-context-utils/src/test/java/org/hypertrace/core/grpcutils/context/RequestContextTest.java index 0998cce..6119837 100644 --- a/grpc-context-utils/src/test/java/org/hypertrace/core/grpcutils/context/RequestContextTest.java +++ b/grpc-context-utils/src/test/java/org/hypertrace/core/grpcutils/context/RequestContextTest.java @@ -49,6 +49,15 @@ void testGetRequestHeaders() { requestHeaders); } + @Test + void testCopyConstructor() { + RequestContext originalContext = new RequestContext(); + originalContext.put(RequestContextConstants.AUTHORIZATION_HEADER, TEST_AUTH_HEADER); + originalContext.put("x-some-tenant-header", "v1"); + + assertEquals(originalContext, new RequestContext(originalContext)); + } + @Test void testCreateForTenantId() { RequestContext requestContext = RequestContext.forTenantId(TENANT_ID);