diff --git a/lombok.config b/lombok.config index ed4a48cd7a5e63130f4ec89321184aafc4e9016b..e955a6b5b3b394bbae6458ecf7ac76f3b1b0f446 100644 --- a/lombok.config +++ b/lombok.config @@ -27,4 +27,5 @@ lombok.log.slf4j.flagUsage = ERROR lombok.log.log4j.flagUsage = ERROR lombok.data.flagUsage = ERROR lombok.nonNull.exceptionType = IllegalArgumentException -lombok.addLombokGeneratedAnnotation = true \ No newline at end of file +lombok.addLombokGeneratedAnnotation = true +lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier \ No newline at end of file diff --git a/pom.xml b/pom.xml index 97cabfc42f9626269f658147c62a7bf3c5aab331..f2c9efdf81d19278df0cf925bb3595625d5d1a8e 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ <parent> <groupId>de.ozgcloud.common</groupId> <artifactId>ozgcloud-common-parent</artifactId> - <version>4.3.0</version> + <version>4.5.0-SNAPSHOT</version> </parent> <groupId>de.ozgcloud.processor</groupId> @@ -42,10 +42,10 @@ <description>OZG-Cloud Processor Manager</description> <properties> - <vorgang-manager.version>2.5.0</vorgang-manager.version> - <api-lib.version>0.10.0</api-lib.version> - <tyrus-standalone-client.version>2.1.3</tyrus-standalone-client.version> - <okio.version>3.9.0</okio.version> + <vorgang-manager.version>2.17.0-SNAPSHOT</vorgang-manager.version> + <api-lib.version>0.13.0-SNAPSHOT</api-lib.version> + <tyrus-standalone-client.version>2.2.0</tyrus-standalone-client.version> + <okio.version>3.9.1</okio.version> </properties> <dependencies> <!-- OZG-Cloud --> @@ -60,13 +60,6 @@ <artifactId>command-manager</artifactId> <version>${vorgang-manager.version}</version> </dependency> - <dependency> - <groupId>de.ozgcloud.command</groupId> - <artifactId>command-manager</artifactId> - <version>${vorgang-manager.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> <dependency> <groupId>de.ozgcloud.api-lib</groupId> diff --git a/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java index 3ce4b10271262235a40bfff7806e6699a32af0c4..c9dea1532cd7a392ed564c176b6fe1188c770594 100644 --- a/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java +++ b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java @@ -23,12 +23,14 @@ */ package de.ozgcloud.processor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService; import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService; import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper; +import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangQueryMapper; import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc; import net.devh.boot.grpc.client.inject.GrpcClient; @@ -36,12 +38,27 @@ import net.devh.boot.grpc.client.inject.GrpcClient; @Configuration public class ProcessorManagerConfiguration { - @GrpcClient("vorgang-manager") + public static final String PROCESSOR_EVENT_LISTENER_NAME = "processorManager_ProcessorEventListener"; + public static final String PROCESSOR_PROPERTIES_NAME = "processorManager_ProcessorProperties"; + public static final String PROXY_PROPERTIES_NAME = "processorManager_ProxyProperties"; + public static final String AKTENNOTIZ_FACTORY_NAME = "processorManager_AktennotizFactory"; + public static final String VORGANG_MAPPER_NAME = "processorManager_VorgangMapper"; + + public static final String VORGANG_SERVICE_NAME = "processorManager_VorgangService"; + public static final String PROCESSOR_SERVICE_NAME = "processorManager_ProcessorService"; + public static final String RESULT_SERVICE_NAME = "processorManager_ResultService"; + + public static final String OZGCLOUD_VORGANG_SERVICE_NAME = "processorManager_OzgCloudVorgangService"; + + public static final String GRPC_VORGANG_SERVICE_ADDRESS = "vorgang-manager"; + + @GrpcClient(GRPC_VORGANG_SERVICE_ADDRESS) private VorgangServiceGrpc.VorgangServiceBlockingStub vorgangServiceStub; - @Bean("processorManager_OzgCloudCommandService") + @ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") + @Bean(OZGCLOUD_VORGANG_SERVICE_NAME) // NOSONAR OzgCloudVorgangService grpcOzgCloudCommandService(OzgCloudVorgangMapper vorgangMapper, OzgCloudVorgangStubMapper vorgangStubMapper, - ProzessorManagerCallContextProvider contextProvider) { - return new GrpcOzgCloudVorgangService(vorgangServiceStub, vorgangMapper, vorgangStubMapper, contextProvider); + OzgCloudVorgangQueryMapper vorgangQueryMapper, ProzessorManagerCallContextProvider contextProvider) { + return new GrpcOzgCloudVorgangService(vorgangServiceStub, vorgangMapper, vorgangStubMapper, vorgangQueryMapper, contextProvider); } } diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java index 3bd6df7af204ad995d74ed052dfd415faad9d8e6..0e87a5504251da330165435ee2769a8c7fbbe04e 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java @@ -28,18 +28,21 @@ import java.net.ProxySelector; import java.net.http.HttpClient; import java.util.Optional; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.reactive.ClientHttpConnector; import org.springframework.http.client.reactive.JdkClientHttpConnector; import org.springframework.web.reactive.function.client.WebClient; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import lombok.RequiredArgsConstructor; @Configuration @RequiredArgsConstructor class ProcessorConfiguration { + @Qualifier(ProcessorManagerConfiguration.PROXY_PROPERTIES_NAME) // NOSONAR private final Optional<ProxyProperties> proxyProperties; @Bean diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java index 84192fc956551c063398256c6bf8c40d67d5138a..5f8ac51fe140c015f7592cced1d9e922dfce6fe7 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java @@ -29,6 +29,7 @@ import java.util.function.Predicate; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.event.EventListener; @@ -38,6 +39,7 @@ import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEvent; import de.ozgcloud.command.CommandFailedEvent; import de.ozgcloud.command.VorgangCreatedEvent; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import de.ozgcloud.processor.result.ResultService; import de.ozgcloud.processor.vorgang.Vorgang; import de.ozgcloud.processor.vorgang.VorgangId; @@ -46,15 +48,21 @@ import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import reactor.core.publisher.Mono; -@Component("processorVorgangEventListener") +@Component(ProcessorManagerConfiguration.PROCESSOR_EVENT_LISTENER_NAME) // NOSONAR @ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") @RequiredArgsConstructor @Log4j2 class ProcessorEventListener { + @Qualifier(ProcessorManagerConfiguration.VORGANG_SERVICE_NAME) // NOSONAR private final VorgangService service; + + @Qualifier(ProcessorManagerConfiguration.PROCESSOR_SERVICE_NAME) // NOSONAR private final ProcessorService processorService; + + @Qualifier(ProcessorManagerConfiguration.RESULT_SERVICE_NAME) // NOSONAR private final ResultService resultService; + private final ApplicationEventPublisher publisher; static final String PROCESS_VORGANG_ORDER = "PROCESS_VORGANG"; diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java index caecd057967c3870ca19ad7dabe5cc956b29869b..e7706c445d815047256d6dd5deda5848c6f8d9fb 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java @@ -32,6 +32,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -43,7 +44,7 @@ import lombok.ToString; @ToString @Getter @Setter -@Configuration +@Configuration(ProcessorManagerConfiguration.PROCESSOR_PROPERTIES_NAME) // NOSONAR @ConfigurationProperties(prefix = "ozgcloud") @Validated @Builder diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java index a2d694dcb56d52de54e5eb5f095a8bd225fc5113..15dcb0253134f16dd3fc214e466feabd96435ef2 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java @@ -29,6 +29,8 @@ import java.util.Optional; import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.HttpEntity; import org.springframework.http.HttpStatusCode; import org.springframework.http.MediaType; @@ -39,6 +41,7 @@ import org.springframework.web.reactive.function.client.ClientResponse; import org.springframework.web.reactive.function.client.WebClient; import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import de.ozgcloud.processor.processor.ProcessorProperties.Form; import de.ozgcloud.processor.processor.ProcessorProperties.Processor; import de.ozgcloud.processor.result.ProcessorTechnicalException; @@ -47,13 +50,15 @@ import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import reactor.core.publisher.Mono; -@Service +@ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") +@Service(ProcessorManagerConfiguration.PROCESSOR_SERVICE_NAME) // NOSONAR @RequiredArgsConstructor @Log4j2 public class ProcessorService { private static final String KEY_VORGANG = "vorgang"; + @Qualifier(ProcessorManagerConfiguration.PROCESSOR_PROPERTIES_NAME) // NOSONAR private final ProcessorProperties properties; private final WebClient webClient; diff --git a/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java b/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java index 54d7b59612ca569dc569295e4d63ac72c2372baa..889fff90e47301ce4ab4621dfc1dfaafcef35b90 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java @@ -31,6 +31,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -38,7 +39,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; -@Configuration +@Configuration(ProcessorManagerConfiguration.PROXY_PROPERTIES_NAME) // NOSONAR @ConditionalOnProperty(prefix = "ozgcloud.http-proxy", name = { "host", "port" }) @ConfigurationProperties(prefix = "ozgcloud.http-proxy") @Validated diff --git a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java index 43b149c479cb8b0505160ee4546eaefd38de2030..5083d57cb9ac80fc9756e49c37f46fefbc570ce9 100644 --- a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java +++ b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java @@ -25,9 +25,10 @@ package de.ozgcloud.processor.result; import org.springframework.stereotype.Component; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import de.ozgcloud.processor.processor.ProcessorResult; -@Component +@Component(ProcessorManagerConfiguration.AKTENNOTIZ_FACTORY_NAME) // NOSONAR public class AktennotizFactory { static final String AKTENNOTIZ_ERROR_TEXT = """ diff --git a/src/main/java/de/ozgcloud/processor/result/ResultService.java b/src/main/java/de/ozgcloud/processor/result/ResultService.java index 8aac24e021268fc1f3d12bf60d72405a256d36b7..9fdc0b84b92d294f6b63fd7b597e7aafe942426e 100644 --- a/src/main/java/de/ozgcloud/processor/result/ResultService.java +++ b/src/main/java/de/ozgcloud/processor/result/ResultService.java @@ -25,21 +25,24 @@ package de.ozgcloud.processor.result; import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import de.ozgcloud.apilib.alfa.AlfaService; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import de.ozgcloud.processor.processor.ProcessorResult; import lombok.RequiredArgsConstructor; -@Service +@Service(ProcessorManagerConfiguration.RESULT_SERVICE_NAME) // NOSONAR @RequiredArgsConstructor @Validated public class ResultService { private final AlfaService alfaService; private final OzgCloudVorgangIdMapper vorgangIdMapper; + @Qualifier(ProcessorManagerConfiguration.AKTENNOTIZ_FACTORY_NAME) // NOSONAR private final AktennotizFactory aktennotizFactory; public void processResult(@Valid ProcessorResult result) { diff --git a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java index cce04e9a6f1a964ea471c0a49f08f63283f55d44..2774aed34bce917b8407cf19389408061491b4d7 100644 --- a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java +++ b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java @@ -27,9 +27,11 @@ import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.mapstruct.AnnotateWith; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; +import org.springframework.stereotype.Component; import de.ozgcloud.apilib.file.OzgCloudFileGroup; import de.ozgcloud.apilib.file.OzgCloudFileId; @@ -42,8 +44,10 @@ import de.ozgcloud.apilib.vorgang.OzgCloudSubForm; import de.ozgcloud.apilib.vorgang.OzgCloudVorgang; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; import de.ozgcloud.common.binaryfile.FileId; +import de.ozgcloud.processor.ProcessorManagerConfiguration; @Mapper +@AnnotateWith(value = Component.class, elements = @AnnotateWith.Element(strings = ProcessorManagerConfiguration.VORGANG_MAPPER_NAME)) public interface ProcessorVorgangMapper { @Mapping(target = "eingang", qualifiedByName = "mapEingang", source = "eingangs") diff --git a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java index 2eb18aaee20f844bd493f22976b81a599550d34c..ab58b3b9149601a2e4695caf11d17a0d00dd4775 100644 --- a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java +++ b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java @@ -23,22 +23,26 @@ */ package de.ozgcloud.processor.vorgang; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService; +import de.ozgcloud.processor.ProcessorManagerConfiguration; import lombok.NonNull; +import lombok.RequiredArgsConstructor; -@Service("processorVorgangService") +@ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") +@Service(ProcessorManagerConfiguration.VORGANG_SERVICE_NAME) // NOSONAR +@RequiredArgsConstructor public class VorgangService { - @Autowired - @Qualifier("processorManager_OzgCloudCommandService") - private OzgCloudVorgangService ozgCloudService; - @Autowired - private ProcessorVorgangMapper mapper; + @Qualifier(ProcessorManagerConfiguration.OZGCLOUD_VORGANG_SERVICE_NAME) // NOSONAR + private final OzgCloudVorgangService ozgCloudService; + + @Qualifier(ProcessorManagerConfiguration.VORGANG_MAPPER_NAME) // NOSONAR + private final ProcessorVorgangMapper mapper; public Vorgang getVorgang(@NonNull VorgangId id) { var loaded = ozgCloudService.getById(OzgCloudVorgangId.from(id.toString())); diff --git a/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java b/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java index 0e3504087cec390443adb5154a4aa428ea47abca..c354643602e40f7cf907ae7a0d50f275b9629d70 100644 --- a/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java +++ b/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java @@ -23,14 +23,20 @@ */ package de.ozgcloud.processor.vorgang; -import static de.ozgcloud.apilib.vorgang.AttachmentTestFactory.*; +import de.ozgcloud.processor.vorgang.FileGroup.FileGroupBuilder; public class AttachmentTestFactory { - public static FileGroup createFileGroup() { + public static final String GROUP_NAME = "File Group Name"; + + public static FileGroup create() { + return createBuilder().build(); + } + + public static FileGroupBuilder createBuilder() { return FileGroup.builder() .name(GROUP_NAME) - .file(FileMetaDataTestFactory.create()) - .build(); + .file(FileMetaDataTestFactory.create()); } + } diff --git a/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java b/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java index 9523d09402279553b011f522cb6a30cd2a83c55e..6a526f55d74b471103cafefb782d7f0d7c0a0233 100644 --- a/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java +++ b/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java @@ -36,7 +36,7 @@ public class EingangTestFactory { public static Eingang.EingangBuilder createBuilder() { return Eingang.builder() .antragsteller(AntragstellerTestFactory.create()) - .attachment(AttachmentTestFactory.createFileGroup()) + .attachment(AttachmentTestFactory.create()) .formData(List.<FormDataEntry>of( FormField.builder().name(FIELD_NAME).label(FIELD_LABEL).value(FIELD_VALUE).build(), SubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL)