diff --git a/lombok.config b/lombok.config index d07dd9b0e2b0281fbf514a968b9451cb6af62f93..a06fa130e8af26b659f2d3a0cb1114cd966a9b0e 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/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java index 769ede696d42b30f92dff964ab4826b3c57a6a2f..c9dea1532cd7a392ed564c176b6fe1188c770594 100644 --- a/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java +++ b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java @@ -38,11 +38,25 @@ 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; @ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") - @Bean("processorManager_OzgCloudCommandService") + @Bean(OZGCLOUD_VORGANG_SERVICE_NAME) // NOSONAR OzgCloudVorgangService grpcOzgCloudCommandService(OzgCloudVorgangMapper vorgangMapper, OzgCloudVorgangStubMapper vorgangStubMapper, 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 a4528d058690d54726cd03ae75f20842060dc7e6..7d4cbff45ef9e0d33033a7546b72b1c307c05d44 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java @@ -5,18 +5,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 5955c5ff30a86cae2db73f201bfad6f9e66f74ca..be8623afc611ef0fb72a6863cae0038a47d8adc2 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java @@ -6,6 +6,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; @@ -15,6 +16,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; @@ -23,15 +25,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 ae2223900bc2b824bc24ba0bf359d13349e24088..9b345b39212ecbdc1f490f85388d4171772c7ce2 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java @@ -9,6 +9,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; @@ -20,7 +21,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 42f2a02a9d1dcb5ced61b9b191a031e1cba6c00b..cf766ab1b17a65c67a886125e6289885265db32c 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java @@ -6,6 +6,7 @@ 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; @@ -17,6 +18,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; @@ -26,13 +28,14 @@ import lombok.extern.log4j.Log4j2; import reactor.core.publisher.Mono; @ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") -@Service +@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 5ea0a781e2dae87a703198a7d221060feb283c70..014e9ce9a18c9e599d1f255016500cf54934388b 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java @@ -8,6 +8,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; @@ -15,7 +16,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 ec61ada8c3526f5e1c9357ccf24a9dd835c77796..9f48112247a7e2103d61f7c127a886742831aede 100644 --- a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java +++ b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java @@ -2,9 +2,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 507c3e445c2c7fd8a265ebf1a30c8b417fe7608a..a4628844358fd7210228eeb1dae80156ef47d378 100644 --- a/src/main/java/de/ozgcloud/processor/result/ResultService.java +++ b/src/main/java/de/ozgcloud/processor/result/ResultService.java @@ -2,21 +2,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 5c7c9129d38866c5cc219145374759af553bcc94..4b640f070d989dfb06e51c461c1c33e576a0b863 100644 --- a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java +++ b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java @@ -4,9 +4,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; @@ -19,8 +21,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 dca2e610ff81292835bc9aa3ce2d2218eeb341c3..ad3823ac13f540007ebbbb9e65c73e8f0492b7f9 100644 --- a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java +++ b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java @@ -1,23 +1,25 @@ 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; @ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address") -@Service("processorVorgangService") +@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()));