From 106c870858cea2755fe812652db844a26b9d2c4b Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 14 Nov 2024 13:58:54 +0100 Subject: [PATCH] OZG-6990 initialize default client attribute service --- .../OzgCloudClientAutoConfiguration.java | 13 ++ ...udClientAttributeServiceStarterITCase.java | 122 ++++++++++++++++++ .../OzgCloudFileServiceStarterITCase.java | 2 +- 3 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAttributeServiceStarterITCase.java diff --git a/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java index ecb1679..fc22fbc 100644 --- a/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java +++ b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java @@ -14,6 +14,8 @@ import org.springframework.context.annotation.ComponentScan; import de.ozgcloud.apilib.alfa.AlfaService; import de.ozgcloud.apilib.alfa.CommandAlfaService; import de.ozgcloud.apilib.alfa.dummy.DummyAlfaService; +import de.ozgcloud.apilib.client_attribute.OzgCloudClientAttributeService; +import de.ozgcloud.apilib.client_attribute.grpc.OzgCloudClientAttributeGrpcService; import de.ozgcloud.apilib.client_attribute.grpc.OzgCloudClientAttributeMapper; import de.ozgcloud.apilib.common.callcontext.DefaultOzgCloudCallContextProvider; import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider; @@ -35,6 +37,7 @@ import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangQueryMapper; import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper; import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc; import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc; +import de.ozgcloud.vorgang.grpc.clientAttribute.ClientAttributeServiceGrpc; import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc; import io.grpc.ManagedChannelBuilder; @@ -139,6 +142,16 @@ public class OzgCloudClientAutoConfiguration { return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper, queryMapper, contextProvider); } + @Bean + @ConditionalOnProperty("ozgcloud.vorgang-manager.address") + @ConditionalOnMissingBean + OzgCloudClientAttributeService grpcOzgCloudClientAttributeService(OzgCloudClientAttributeMapper clientAttributeMapper, + OzgCloudCallContextProvider contextProvider) { + var channel = ManagedChannelBuilder.forTarget(vorgangManagerProperties.getAddress()).usePlaintext().build(); + var blockingStub = ClientAttributeServiceGrpc.newBlockingStub(channel); + return new OzgCloudClientAttributeGrpcService(blockingStub, clientAttributeMapper, contextProvider); + } + @Bean OzgCloudVorgangMapper ozgCloudVorgangMapper() { return Mappers.getMapper(OzgCloudVorgangMapper.class); diff --git a/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAttributeServiceStarterITCase.java b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAttributeServiceStarterITCase.java new file mode 100644 index 0000000..86c5fb8 --- /dev/null +++ b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAttributeServiceStarterITCase.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.client.autoconfigure; + +import static org.assertj.core.api.Assertions.*; + +import java.util.Optional; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import org.springframework.test.annotation.DirtiesContext; + +import de.ozgcloud.apilib.autoconfig.ApiLibTestApplication; +import de.ozgcloud.apilib.client_attribute.OzgCloudBooleanClientAttribute; +import de.ozgcloud.apilib.client_attribute.OzgCloudClientAttributeService; +import de.ozgcloud.apilib.client_attribute.OzgCloudDoubleClientAttribute; +import de.ozgcloud.apilib.client_attribute.OzgCloudLongClientAttribute; +import de.ozgcloud.apilib.client_attribute.OzgCloudStringClientAttribute; +import de.ozgcloud.apilib.client_attribute.grpc.OzgCloudClientAttributeGrpcService; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; + +public class OzgCloudClientAttributeServiceStarterITCase { + + @Nested + @SpringBootTest(classes = ApiLibTestApplication.class) + @DirtiesContext + class TestWithoutOzgCloudClientAttributeService { + + @Autowired + private Optional<OzgCloudClientAttributeService> ozgCloudFileService; + + @Test + void shouldStart() { + assertThat(ozgCloudFileService).isEmpty(); + } + } + + @Nested + @SpringBootTest(classes = ApiLibTestApplication.class, properties = { + "ozgcloud.vorgang-manager.address=address" + }) + class TestWithOzgCloudClientAttributeService { + + @Autowired + private OzgCloudClientAttributeService attributeService; + + @Test + void shouldStart() { + assertThat(attributeService).isInstanceOf(OzgCloudClientAttributeGrpcService.class); + } + } + + @Nested + @SpringBootTest(classes = ApiLibTestApplication.class) + @Import(TestWithExistingOzgCloudClientAttributeService.Config.class) + class TestWithExistingOzgCloudClientAttributeService { + + @Autowired + private OzgCloudClientAttributeService attributeService; + + @Test + void shouldStart() { // NOSONAR + assertThat(attributeService).isInstanceOf(TestClientAttributeService.class); + } + + static class Config { + + @Bean + OzgCloudClientAttributeService ozgCloudFileService() { + return new TestClientAttributeService(); + } + } + + static class TestClientAttributeService implements OzgCloudClientAttributeService { + + @Override + public void setClientAttribute(final OzgCloudBooleanClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + + } + + @Override + public void setClientAttribute(final OzgCloudStringClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + + } + + @Override + public void setClientAttribute(final OzgCloudLongClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + + } + + @Override + public void setClientAttribute(final OzgCloudDoubleClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + + } + } + } +} diff --git a/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudFileServiceStarterITCase.java b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudFileServiceStarterITCase.java index 0581131..0f408d6 100644 --- a/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudFileServiceStarterITCase.java +++ b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudFileServiceStarterITCase.java @@ -44,7 +44,7 @@ public class OzgCloudFileServiceStarterITCase { @Nested @SpringBootTest(classes = ApiLibTestApplication.class) - @DirtiesContext() + @DirtiesContext class TestWithoutOzgCloudFileService { @Autowired -- GitLab