diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/client_attribute/grpc/OzgCloudClientAttributeGrpcService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/client_attribute/grpc/OzgCloudClientAttributeGrpcService.java index cebaf6360285e9b87d9a95452fc0ef85ea010fb0..28e56c4f66513fc487ca27e557155a508b497b12 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/client_attribute/grpc/OzgCloudClientAttributeGrpcService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/client_attribute/grpc/OzgCloudClientAttributeGrpcService.java @@ -23,8 +23,8 @@ */ package de.ozgcloud.apilib.client_attribute.grpc; -import de.ozgcloud.apilib.client_attribute.OzgCloudClientAttributeService; 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; 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 2e135f9e90dfd4c175fade6a65c9108f7811da4c..2ff634b6d643afc894c9c99f1e86682e10d3dee4 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,9 @@ 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; import de.ozgcloud.apilib.common.command.OzgCloudCommandService; @@ -34,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; @@ -148,6 +152,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); @@ -163,6 +177,11 @@ public class OzgCloudClientAutoConfiguration { return Mappers.getMapper(OzgCloudVorgangQueryMapper.class); } + @Bean + OzgCloudClientAttributeMapper ozgCloudClientAttributeMapper() { + return Mappers.getMapper(OzgCloudClientAttributeMapper.class); + } + @Bean("ozgCloudVorgangService") @ConditionalOnMissingBean(OzgCloudVorgangService.class) OzgCloudVorgangService dummyOzgCloudVorgangService() { 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 0000000000000000000000000000000000000000..3e746eb848ff8576d2cc7df90346f593dcdd8ffa --- /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; + +class OzgCloudClientAttributeServiceStarterITCase { + + @Nested + @SpringBootTest(classes = ApiLibTestApplication.class) + @DirtiesContext + class TestWithoutOzgCloudClientAttributeService { + + @Autowired + private Optional<OzgCloudClientAttributeService> attributeService; + + @Test + void shouldStart() { + assertThat(attributeService).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() { + 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) { + // empty + } + + @Override + public void setClientAttribute(final OzgCloudStringClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + // empty + } + + @Override + public void setClientAttribute(final OzgCloudLongClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + // empty + } + + @Override + public void setClientAttribute(final OzgCloudDoubleClientAttribute clientAttribute, final OzgCloudVorgangId vorgangId) { + // empty + } + } + } +} 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 0581131a576eb0164e25074b68084a423d2808b7..0f408d67b5b5e8273830ad93df6964e7a294921f 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