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 fdc2559a258b731f8c9a1052761da1f6c681a933..8470d4db36c833c248901b269f1fd1e18a86c40f 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 6837a33f67fca31cd204c6b6ed8e4dd7f7f2c734..30c55554d299185cd1c66971659ae2a7282109c5 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 13829cac80c313d668d4c384b084354bc84181ee..ed636e15736c6cf74206f92c37de9f1d57ec6440 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 a942c708721ff27ae8ccc2b6d9d317203520db02..96da3677297df7960bdcee5ad1271417b186bec1 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 311480536d4d7a4b8771bfa37782e39d133f01b3..a3aa3fcf3a2e5601e21a4373d2b4cc21b1ac8fc0 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 5f6ffecd4356c211e085657f9bbf13ed431898da..d09c1bb6d4550bae87add4d922d023477946683b 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 8af3827ee299c2a2cde22363e8df93311dcaf63e..4ef6b761f7de2e7751311d815fddb04ae1f3c12c 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 fdf8940f08e2ba8c84e4fc01a32cb694098fb2f0..95954e0a711717964c4c4d81d0e454549c9cf16c 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 a5d8c451351889a0a3cc7ffd76f491b9a53fff77..64bc78d7d070cce40b7ee0c73561d581cab436f6 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 db06b2a30ebd55fc14f183891ec8f2a7c895a8f7..9e1b1a66bcaaae247e68c84e7163ddc9d8999b7a 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 20a6ab4f684d4f060f4f5cb26a76e23ff37ff649..fa32c2c6e946f73d7543735fb2b41cd566ac8aac 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 a06fa130e8af26b659f2d3a0cb1114cd966a9b0e..f74a42883dd31972617d6bb3b293294fe19b0bdc 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