From 736e2de0751effc3cb3244f5683b915b192939a6 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Sat, 23 Nov 2024 21:52:07 +0100 Subject: [PATCH] OZG-6990 [wip] use client call interceptor --- .../document/DocumentManagerConfiguration.java | 7 +++++++ ...BescheidCallContextAttachingInterceptor.java | 3 ++- .../bescheid/BescheidEventListener.java | 3 +++ .../document/bescheid/BescheidService.java | 3 +++ .../ClientAttributeRemoteService.java | 13 ++++++++----- .../attributes/ClientAttributeService.java | 5 ++++- .../binaryfile/BinaryFileRemoteService.java | 14 +++++++++++--- .../bescheid/vorgang/VorgangRemoteService.java | 17 +++++++++-------- .../bescheid/vorgang/VorgangService.java | 5 ++++- .../attached_item/AttachedItemService.java | 3 ++- .../VorgangAttachedItemRemoteService.java | 16 +++++++++------- lombok.config | 3 ++- 12 files changed, 64 insertions(+), 28 deletions(-) diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/DocumentManagerConfiguration.java b/document-manager-server/src/main/java/de/ozgcloud/document/DocumentManagerConfiguration.java index fdc2559..8470d4d 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/DocumentManagerConfiguration.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/DocumentManagerConfiguration.java @@ -45,6 +45,13 @@ public class DocumentManagerConfiguration { public static final String COMMAND_SERVICE_NAME = "document_OzgCloudCommandService"; public static final String USER_PROFILE_SERVICE_NAME = "document_OzgCloudUserProfileService"; + public static final String CALL_CONTEXT_CLIENT_INTERCEPTOR_NAME = "document_CallContextClientInterceptor"; + public static final String VORGANG_SERVICE_NAME = "document_VorgangService"; + public static final String VORGANG_REMOTE_SERVICE_NAME = "document_VorgangRemoteService"; + public static final String VORGANG_ATTACHED_ITEM_SERVICE_NAME = "document_VorgangAttachedItemService"; + public static final String VORGANG_ATTACHED_ITEM_REMOTE_SERVICE_NAME = "document_VorgangAttachedItemRemoteService"; + public static final String CLIENT_ATTRIBUTE_SERVICE_NAME = "document_ClientAttributeService"; + public static final String CLIENT_ATTRIBUTE_REMOTE_SERVICE_NAME = "document_ClientAttributeRemoteService"; @GrpcClient(GRPC_COMMAND_MANAGER_NAME) private CommandServiceGrpc.CommandServiceBlockingStub commandServiceStub; diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidCallContextAttachingInterceptor.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidCallContextAttachingInterceptor.java index 6837a33..30c5555 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidCallContextAttachingInterceptor.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidCallContextAttachingInterceptor.java @@ -7,6 +7,7 @@ import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import de.ozgcloud.document.DocumentManagerConfiguration; import de.ozgcloud.document.bescheid.common.callcontext.CurrentUserService; import io.grpc.CallOptions; import io.grpc.Channel; @@ -16,7 +17,7 @@ import io.grpc.ForwardingClientCall.SimpleForwardingClientCall; import io.grpc.Metadata; import io.grpc.MethodDescriptor; -@Component("bescheidCallContextInterceptor") +@Component(DocumentManagerConfiguration.CALL_CONTEXT_CLIENT_INTERCEPTOR_NAME) public class BescheidCallContextAttachingInterceptor implements ClientInterceptor { public static final String BESCHEID_MANAGER_CLIENT_NAME = "OzgCloud_BescheidManager"; diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidEventListener.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidEventListener.java index 13829ca..ed636e1 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidEventListener.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidEventListener.java @@ -34,11 +34,13 @@ import java.util.stream.Collectors; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.event.EventListener; import org.springframework.security.core.context.SecurityContext; import org.springframework.stereotype.Component; +import de.ozgcloud.document.DocumentManagerConfiguration; import de.ozgcloud.document.bescheid.Bescheid.SendBy; import de.ozgcloud.document.bescheid.binaryfile.BinaryFileService; import de.ozgcloud.document.bescheid.common.callcontext.CurrentUserService; @@ -93,6 +95,7 @@ class BescheidEventListener { private final BescheidService service; private final BinaryFileService fileService; + @Qualifier(DocumentManagerConfiguration.VORGANG_ATTACHED_ITEM_SERVICE_NAME) private final AttachedItemService attachedItemService; private final DocumentService documentService; diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidService.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidService.java index a942c70..96da367 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/BescheidService.java @@ -66,7 +66,9 @@ public class BescheidService { static final String FIELD_ATTACHMENTS = "attachments"; static final String SUBJECT = "Ihr Bescheid zum Antrag"; + @Qualifier(DocumentManagerConfiguration.VORGANG_SERVICE_NAME) private final VorgangService vorgangService; + @Qualifier(DocumentManagerConfiguration.VORGANG_ATTACHED_ITEM_SERVICE_NAME) private final AttachedItemService attachedItemService; private final UserProfileService userProfileService; @Qualifier(DocumentManagerConfiguration.COMMAND_SERVICE_NAME) @@ -74,6 +76,7 @@ public class BescheidService { private final AdministrationService administrationService; private final CommandMapper commandMapper; + @Qualifier(DocumentManagerConfiguration.CLIENT_ATTRIBUTE_SERVICE_NAME) private final ClientAttributeService bescheidClientAttributeService; private final BuildProperties buildProperties; private final Optional<BescheidRemoteService> remoteService; diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeRemoteService.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeRemoteService.java index 3114805..a3aa3fc 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeRemoteService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeRemoteService.java @@ -23,9 +23,10 @@ */ package de.ozgcloud.document.bescheid.attributes; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import de.ozgcloud.document.DocumentManagerConfiguration; import de.ozgcloud.document.bescheid.BescheidCallContextAttachingInterceptor; import de.ozgcloud.vorgang.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub; import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcAccessPermission; @@ -33,16 +34,18 @@ import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute; import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue; import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcSetClientAttributeRequest; import io.grpc.ClientInterceptor; +import lombok.RequiredArgsConstructor; import net.devh.boot.grpc.client.inject.GrpcClient; -@Service("bescheid_ClientAttributeRemoteService") +@Service(DocumentManagerConfiguration.CLIENT_ATTRIBUTE_REMOTE_SERVICE_NAME) +@RequiredArgsConstructor class ClientAttributeRemoteService { @GrpcClient("vorgang-manager") - private ClientAttributeServiceBlockingStub serviceBlockingStub; + private final ClientAttributeServiceBlockingStub serviceBlockingStub; - @Autowired - private ClientInterceptor bescheidCallContextInterceptor; + @Qualifier(DocumentManagerConfiguration.CALL_CONTEXT_CLIENT_INTERCEPTOR_NAME) + private final ClientInterceptor bescheidCallContextInterceptor; public void setBooleanReadOnlyClientAttribute(String vorgangId, String attributeName, boolean value) { serviceBlockingStub.withInterceptors(bescheidCallContextInterceptor).set(buildRequest(vorgangId, attributeName, value)); diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeService.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeService.java index 5f6ffec..d09c1bb 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/attributes/ClientAttributeService.java @@ -23,16 +23,19 @@ */ package de.ozgcloud.document.bescheid.attributes; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import de.ozgcloud.document.DocumentManagerConfiguration; import lombok.RequiredArgsConstructor; -@Service("bescheid_ClientAttributeService") +@Service(DocumentManagerConfiguration.CLIENT_ATTRIBUTE_SERVICE_NAME) @RequiredArgsConstructor public class ClientAttributeService { public static final String ATTRIBUTE_NAME_ANTRAG_BEWILLIGT = "antragBewilligt"; + @Qualifier(DocumentManagerConfiguration.CLIENT_ATTRIBUTE_REMOTE_SERVICE_NAME) private final ClientAttributeRemoteService bescheidClientAttributeRemoteService; public void setAntragResult(String vorgangId, boolean antragResult) { diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/binaryfile/BinaryFileRemoteService.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/binaryfile/BinaryFileRemoteService.java index 8af3827..4ef6b76 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/binaryfile/BinaryFileRemoteService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/binaryfile/BinaryFileRemoteService.java @@ -10,10 +10,13 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.google.protobuf.ByteString; +import de.ozgcloud.document.DocumentManagerConfiguration; +import de.ozgcloud.document.bescheid.BescheidCallContextAttachingInterceptor; import de.ozgcloud.document.bescheid.BescheidResponse; import de.ozgcloud.common.binaryfile.FileId; import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils; @@ -27,21 +30,25 @@ import de.ozgcloud.vorgang.grpc.command.GrpcCallContext; import io.grpc.stub.CallStreamObserver; import io.grpc.stub.StreamObserver; import lombok.NonNull; +import lombok.RequiredArgsConstructor; import net.devh.boot.grpc.client.inject.GrpcClient; @Service +@RequiredArgsConstructor class BinaryFileRemoteService { private static final String CALL_CONTEXT_CLIENT = "bescheid-manager"; private static final String VORGANG_ATTACHMENT_FIELD = "bescheid"; @GrpcClient("vorgang-manager") - private BinaryFileServiceStub binaryFileRemoteStub; + private final BinaryFileServiceStub binaryFileRemoteStub; + @Qualifier(DocumentManagerConfiguration.CALL_CONTEXT_CLIENT_INTERCEPTOR_NAME) + private final BescheidCallContextAttachingInterceptor callContextInterceptor; public FileId uploadBescheidFile(@NonNull BescheidResponse bescheid) { try (var in = openFile(bescheid.getBescheidFile())) { var resultFuture = GrpcFileUploadUtils.createSender(this::buildChunkRequest, in, - this::buildCallStreamObserver) + this::buildCallStreamObserver) .withMetaData(buildMetaDataRequest(bescheid)) .send(); @@ -79,7 +86,8 @@ class BinaryFileRemoteService { private CallStreamObserver<GrpcUploadBinaryFileRequest> buildCallStreamObserver( StreamObserver<GrpcUploadBinaryFileResponse> responseObserver) { - return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.uploadBinaryFileAsStream(responseObserver); + return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.withInterceptors(callContextInterceptor) + .uploadBinaryFileAsStream(responseObserver); } GrpcUploadBinaryFileResponse waitUntilFutureToComplete(FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> fileSender, diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangRemoteService.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangRemoteService.java index fdf8940..95954e0 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangRemoteService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangRemoteService.java @@ -1,24 +1,25 @@ package de.ozgcloud.document.bescheid.vorgang; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import de.ozgcloud.document.DocumentManagerConfiguration; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangRequest; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.ClientInterceptor; import lombok.NonNull; +import lombok.RequiredArgsConstructor; import net.devh.boot.grpc.client.inject.GrpcClient; -@Service("bescheid_VorgangRemoteService") +@Service(DocumentManagerConfiguration.VORGANG_REMOTE_SERVICE_NAME) +@RequiredArgsConstructor class VorgangRemoteService { @GrpcClient("vorgang-manager") - private VorgangServiceBlockingStub vorgangServiceStub; - @Autowired - private BescheidVorgangMapper mapper; - - @Autowired - private ClientInterceptor bescheidCallContextInterceptor; + private final VorgangServiceBlockingStub vorgangServiceStub; + private final BescheidVorgangMapper mapper; + @Qualifier(DocumentManagerConfiguration.CALL_CONTEXT_CLIENT_INTERCEPTOR_NAME) + private final ClientInterceptor bescheidCallContextInterceptor; public Vorgang getById(@NonNull VorgangId vorgangId) { var request = GrpcFindVorgangWithEingangRequest.newBuilder().setId(vorgangId.toString()).build(); diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangService.java b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangService.java index a5d8c45..64bc78d 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/bescheid/vorgang/VorgangService.java @@ -1,14 +1,17 @@ package de.ozgcloud.document.bescheid.vorgang; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import de.ozgcloud.document.DocumentManagerConfiguration; import lombok.NonNull; import lombok.RequiredArgsConstructor; -@Service("bescheid_VorgangService") +@Service(DocumentManagerConfiguration.VORGANG_SERVICE_NAME) @RequiredArgsConstructor public class VorgangService { + @Qualifier(DocumentManagerConfiguration.VORGANG_REMOTE_SERVICE_NAME) private final VorgangRemoteService remoteService; public Vorgang getById(@NonNull VorgangId id) { diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/AttachedItemService.java b/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/AttachedItemService.java index db06b2a..9e1b1a6 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/AttachedItemService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/AttachedItemService.java @@ -48,7 +48,7 @@ import de.ozgcloud.document.bescheid.BescheidMapper; import de.ozgcloud.document.bescheid.vorgang.VorgangId; import lombok.RequiredArgsConstructor; -@Service +@Service(DocumentManagerConfiguration.VORGANG_ATTACHED_ITEM_SERVICE_NAME) @RequiredArgsConstructor public class AttachedItemService { @@ -60,6 +60,7 @@ public class AttachedItemService { @Qualifier(DocumentManagerConfiguration.COMMAND_SERVICE_NAME) private final OzgCloudCommandService commandService; + @Qualifier(DocumentManagerConfiguration.VORGANG_ATTACHED_ITEM_REMOTE_SERVICE_NAME) private final VorgangAttachedItemRemoteService remoteService; private final CommandMapper commandMapper; diff --git a/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/VorgangAttachedItemRemoteService.java b/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/VorgangAttachedItemRemoteService.java index 20a6ab4..fa32c2c 100644 --- a/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/VorgangAttachedItemRemoteService.java +++ b/document-manager-server/src/main/java/de/ozgcloud/document/common/attached_item/VorgangAttachedItemRemoteService.java @@ -32,9 +32,10 @@ import java.util.Optional; import java.util.stream.Stream; import org.apache.commons.collections.MapUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import de.ozgcloud.document.DocumentManagerConfiguration; import de.ozgcloud.document.bescheid.Bescheid; import de.ozgcloud.document.bescheid.BescheidCallContextAttachingInterceptor; import de.ozgcloud.document.bescheid.vorgang.VorgangId; @@ -42,11 +43,13 @@ import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemReques import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest; import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub; import io.grpc.ClientInterceptor; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import net.devh.boot.grpc.client.inject.GrpcClient; -@Service +@Service(DocumentManagerConfiguration.VORGANG_ATTACHED_ITEM_REMOTE_SERVICE_NAME) @Log4j2 +@RequiredArgsConstructor class VorgangAttachedItemRemoteService { private static final Comparator<AttachedItem> BY_BESCHIEDEN_AM_DESC = (bescheid1, bescheid2) -> { @@ -56,11 +59,10 @@ class VorgangAttachedItemRemoteService { }; @GrpcClient("vorgang-manager") - private VorgangAttachedItemServiceBlockingStub serviceStub; - @Autowired - private ClientInterceptor bescheidCallContextInterceptor; - @Autowired - private AttachedItemMapper attachedItemMapper; + private final VorgangAttachedItemServiceBlockingStub serviceStub; + @Qualifier(DocumentManagerConfiguration.CALL_CONTEXT_CLIENT_INTERCEPTOR_NAME) + private final ClientInterceptor bescheidCallContextInterceptor; + private final AttachedItemMapper attachedItemMapper; public Optional<AttachedItem> findBescheidDraft(VorgangId vorgangId) { return findBescheidDraft(buildFindRequest(vorgangId.toString())); diff --git a/lombok.config b/lombok.config index a06fa13..f74a428 100644 --- a/lombok.config +++ b/lombok.config @@ -28,4 +28,5 @@ lombok.log.log4j.flagUsage = ERROR lombok.data.flagUsage = ERROR lombok.nonNull.exceptionType = IllegalArgumentException lombok.addLombokGeneratedAnnotation = true -lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier \ No newline at end of file +lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier +lombok.copyableAnnotations += net.devh.boot.grpc.client.inject.GrpcClient -- GitLab