Skip to content
Snippets Groups Projects
Commit 736e2de0 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6990 [wip] use client call interceptor

parent 80921d35
Branches
Tags
No related merge requests found
Showing
with 64 additions and 28 deletions
......@@ -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;
......
......@@ -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";
......
......@@ -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;
......
......@@ -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;
......
......@@ -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));
......
......@@ -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) {
......
......@@ -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,16 +30,20 @@ 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())) {
......@@ -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,
......
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();
......
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) {
......
......@@ -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;
......
......@@ -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()));
......
......@@ -29,3 +29,4 @@ lombok.data.flagUsage = ERROR
lombok.nonNull.exceptionType = IllegalArgumentException
lombok.addLombokGeneratedAnnotation = true
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
lombok.copyableAnnotations += net.devh.boot.grpc.client.inject.GrpcClient
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment