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 50a5ddc64c3cb9917b6064df34fca514976af369..b46e9263f14285ff3abd6f41b55b16172cb1f571 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/common/command/grpc/GrpcOzgCloudCommandService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/GrpcOzgCloudCommandService.java index f411ba77ed41fe1f84fc46e4ca96936bf1f5d4aa..2506c223cc17f257ada388b6772728011b1ce830 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/GrpcOzgCloudCommandService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/GrpcOzgCloudCommandService.java @@ -2,6 +2,8 @@ package de.ozgcloud.apilib.common.command.grpc; import de.itvsh.ozg.pluto.grpc.command.CommandServiceGrpc.CommandServiceBlockingStub; import de.itvsh.ozg.pluto.grpc.command.GrpcGetCommandRequest; +import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor; +import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider; import de.ozgcloud.apilib.common.command.OzgCloudCommand; import de.ozgcloud.apilib.common.command.OzgCloudCommandId; import de.ozgcloud.apilib.common.command.OzgCloudCommandService; @@ -18,13 +20,15 @@ public class GrpcOzgCloudCommandService implements OzgCloudCommandService { private final CommandMapper mapper; + private final OzgCloudCallContextProvider contextProvider; + @Override public OzgCloudCommand createAndWaitUntilDone(OzgCloudCommand commandToCreate) { return waitUntilDone(create(commandToCreate)); } OzgCloudCommand create(OzgCloudCommand commandToCreate) { - var created = commandServiceStub.createCommand(mapper.buildCreateCommandRequest(commandToCreate)); + var created = getCommandServiceStub().createCommand(mapper.buildCreateCommandRequest(commandToCreate)); return mapper.fromGrpc(created.getCommand()); } @@ -46,6 +50,10 @@ public class GrpcOzgCloudCommandService implements OzgCloudCommandService { private OzgCloudCommand reloadCommand(OzgCloudCommandId commandId) { GrpcGetCommandRequest request = GrpcGetCommandRequest.newBuilder().setId(commandId.toString()).build(); - return mapper.fromGrpc(commandServiceStub.getCommand(request)); + return mapper.fromGrpc(getCommandServiceStub().getCommand(request)); + } + + CommandServiceBlockingStub getCommandServiceStub() { + return commandServiceStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider)); } } diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileService.java index e9830c36e3822f814cdbb98ba361ad4404590869..008293df6e258e65b4c27b4b1be99f671bb6bcb9 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileService.java @@ -18,6 +18,8 @@ import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcBinaryFilesRequest; import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcFindFilesResponse; import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcGetBinaryFileDataRequest; import de.itvsh.ozg.pluto.grpc.file.GrpcOzgFile; +import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor; +import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider; import de.ozgcloud.apilib.common.errorhandling.NotFoundException; import de.ozgcloud.apilib.file.OzgCloudFile; import de.ozgcloud.apilib.file.OzgCloudFileId; @@ -37,13 +39,15 @@ public class GrpcOzgCloudFileService implements OzgCloudFileService { @GrpcClient("file-manager") private final BinaryFileServiceStub asyncServiceStub; + private final OzgCloudCallContextProvider contextProvider; + private final OzgCloudFileMapper mapper; static final int CHUNK_SIZE = 255 * 1024; @Override public OzgCloudFile getFile(OzgCloudFileId id) { - var response = blockingStub.findBinaryFilesMetaData(buildFindFileRequest(id)); + var response = getBlockingStub().findBinaryFilesMetaData(buildFindFileRequest(id)); return mapper.fromGrpc(getSingleResponse(response, id)); } @@ -71,7 +75,7 @@ public class GrpcOzgCloudFileService implements OzgCloudFileService { var streamFuture = new CompletableFuture<Boolean>(); var responseObserver = new OzgCloudFileDownloadStreamObserver(streamFuture, streamToWriteData); - asyncServiceStub.getBinaryFileContent(buildGrpcGetBinaryFileDataRequest(fileId), responseObserver); + getAsyncServiceStub().getBinaryFileContent(buildGrpcGetBinaryFileDataRequest(fileId), responseObserver); waitUntilFutureToComplete(streamFuture); } @@ -90,4 +94,12 @@ public class GrpcOzgCloudFileService implements OzgCloudFileService { throw new TechnicalException(e.getMessage(), e); } } + + BinaryFileServiceBlockingStub getBlockingStub() { + return blockingStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider)); + } + + BinaryFileServiceStub getAsyncServiceStub() { + return asyncServiceStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider)); + } } 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 3cdba10574771336d6097d708ee4ac1c2062e116..31df378d1c8a0248032a9881ee08b5af2ab50fc4 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/common/command/grpc/GrpcOzgCloudCommandServiceTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/common/command/grpc/GrpcOzgCloudCommandServiceTest.java index de5ab15066349dfd74110048ad1ac0dbd0de4223..8cdc3f055d216c2859f07ed4b5d29b3169dcf094 100644 --- a/api-lib-core/src/test/java/de/ozgcloud/apilib/common/command/grpc/GrpcOzgCloudCommandServiceTest.java +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/common/command/grpc/GrpcOzgCloudCommandServiceTest.java @@ -54,6 +54,7 @@ class GrpcOzgCloudCommandServiceTest { @BeforeEach void init() { + when(serviceStub.withInterceptors(any())).thenReturn(serviceStub); when(serviceStub.createCommand(any())).thenReturn(GrpcCommandResponseTestFactory.create()); } diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java index ff27abc79bfa4fd74f3990e008d6c0a51ecc5b94..84d7d608d5eb8f112b402f16ab8f093645aa7b5e 100644 --- a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java @@ -34,6 +34,7 @@ class GrpcOzgCloudFileServiceTest { class CallGetFile { @BeforeEach void init() { + when(blockingStub.withInterceptors(any())).thenReturn(blockingStub); when(blockingStub.findBinaryFilesMetaData(any())).thenReturn(GrpcFindFilesResponse.newBuilder().addFile(GrpcOzgFileTestFactory.create()).build()); } 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 ad87c0e7ee60639e3d99ff2e33a331a7303e51f4..905f2734908fb0e9f8650fb9be7ec21e3812d7d8 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 4346546a300c8bd07f741e93526c5c94fc373191..61cc836003338e2e5dec2076f4c115abab6c8f8f 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 @@ -104,8 +104,8 @@ public class OzgCloudClientAutoConfiguration { @Bean @ConditionalOnProperty("ozgcloud.command-manager.address") OzgCloudCommandService grpcCommandService(@GrpcClient("command-manager") CommandServiceBlockingStub commandServiceStub, - CommandMapper commandMapper) { - return new GrpcOzgCloudCommandService(commandServiceStub, commandMapper); + CommandMapper commandMapper, OzgCloudCallContextProvider contextProvider) { + return new GrpcOzgCloudCommandService(commandServiceStub, commandMapper, contextProvider); } @Bean @@ -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")