From dfd6bae92043cd37880aef7ed732f44730dd7218 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 17 Oct 2023 19:09:19 +0200
Subject: [PATCH] OZG-4390 set interceptor for each request

---
 .../OzgCloudCallContextAttachingInterceptor.java      |  2 --
 .../vorgang/grpc/GrpcOzgCloudVorgangService.java      | 11 +++++++++--
 .../vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java  |  2 ++
 .../OzgCloudClientAutoConfiguration.java              |  4 ++--
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/common/callcontext/OzgCloudCallContextAttachingInterceptor.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/common/callcontext/OzgCloudCallContextAttachingInterceptor.java
index 50a5ddc..b46e926 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/common/callcontext/OzgCloudCallContextAttachingInterceptor.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/common/callcontext/OzgCloudCallContextAttachingInterceptor.java
@@ -16,9 +16,7 @@ import io.grpc.ForwardingClientCall.SimpleForwardingClientCall;
 import io.grpc.Metadata;
 import io.grpc.MethodDescriptor;
 import lombok.RequiredArgsConstructor;
-import net.devh.boot.grpc.client.interceptor.GrpcGlobalClientInterceptor;
 
-@GrpcGlobalClientInterceptor
 @RequiredArgsConstructor
 public class OzgCloudCallContextAttachingInterceptor implements ClientInterceptor {
 
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java
index 3cdba10..31df378 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java
@@ -7,6 +7,8 @@ import de.itvsh.ozg.pluto.vorgang.GrpcFindVorgangRequest;
 import de.itvsh.ozg.pluto.vorgang.GrpcFindVorgangRequest.GrpcOrderBy;
 import de.itvsh.ozg.pluto.vorgang.GrpcFindVorgangWithEingangRequest;
 import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor;
+import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgang;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
@@ -25,9 +27,11 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService {
 	private final OzgCloudVorgangMapper mapper;
 	private final OzgCloudVorgangStubMapper stubMapper;
 
+	private final OzgCloudCallContextProvider contextProvider;
+
 	@Override
 	public OzgCloudVorgang getById(@NonNull OzgCloudVorgangId vorgangId) {
-		var response = vorgangServiceStub.findVorgangWithEingang(buildRequest(vorgangId));
+		var response = getVorgangServiceStub().findVorgangWithEingang(buildRequest(vorgangId));
 
 		return mapper.fromGrpc(response.getVorgangWithEingang());
 	}
@@ -45,7 +49,7 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService {
 
 	@Override
 	public List<OzgCloudVorgangStub> search(@NonNull String searchString, Page page) {
-		var response = vorgangServiceStub.findVorgang(buildSearchRequest(searchString, page));
+		var response = getVorgangServiceStub().findVorgang(buildSearchRequest(searchString, page));
 
 		return response.getVorgangList().stream().map(stubMapper::fromGrpc).toList();
 	}
@@ -60,4 +64,7 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService {
 				.build();
 	}
 
+	VorgangServiceBlockingStub getVorgangServiceStub() {
+		return vorgangServiceStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider));
+	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java
index ad87c0e..905f273 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java
@@ -40,6 +40,7 @@ class GrpcOzgCloudVorgangServiceTest {
 
 		@BeforeEach
 		void init() {
+			when(stub.withInterceptors(any())).thenReturn(stub);
 			when(stub.findVorgangWithEingang(any())).thenReturn(GrpcFindVorgangWithEingangResponseTestFactory.create());
 		}
 
@@ -119,6 +120,7 @@ class GrpcOzgCloudVorgangServiceTest {
 
 			@BeforeEach
 			void init() {
+				when(stub.withInterceptors(any())).thenReturn(stub);
 				when(stub.findVorgang(any())).thenReturn(RESPONSE);
 			}
 
diff --git a/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
index 4346546..8bb4eae 100644
--- a/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
+++ b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
@@ -129,8 +129,8 @@ public class OzgCloudClientAutoConfiguration {
 	@Bean("ozgCloudVorgangService")
 	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
 	public OzgCloudVorgangService grpcOzgCloudVorgangService(VorgangServiceBlockingStub vorgangServiceStub, OzgCloudVorgangMapper mapper,
-		OzgCloudVorgangStubMapper stubMapper) {
-		return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper);
+		OzgCloudVorgangStubMapper stubMapper, OzgCloudCallContextProvider contextProvider) {
+		return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper, contextProvider);
 	}
 
 	@Bean("ozgCloudVorgangService")
-- 
GitLab