From d770dccd10f50d344966d147549d84f2d642baeb Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 18 Jul 2023 16:50:04 +0200 Subject: [PATCH] implement autostarter to configure grpc-client --- api-lib-core/pom.xml | 7 ++++--- .../apilib/vorgang/OzgCloudVorgang.java | 2 ++ .../vorgang/dummy/DummyVorgangService.java | 2 ++ .../vorgang/grpc/GrpcVorgangService.java | 3 ++- .../de/ozgcloud/apilib/demo/DemoRunner.java | 3 ++- .../src/main/resources/application.yml | 3 +++ ozg-cloud-spring-boot-starter/pom.xml | 4 ++++ .../OzgCloudClientAutoConfiguration.java | 21 +++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 3 ++- .../src/main/resources/application.yml | 7 +++++++ 10 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 api-lib-demo/src/main/resources/application.yml create mode 100644 ozg-cloud-spring-boot-starter/src/main/resources/application.yml diff --git a/api-lib-core/pom.xml b/api-lib-core/pom.xml index ad3c80c..192bc44 100644 --- a/api-lib-core/pom.xml +++ b/api-lib-core/pom.xml @@ -9,7 +9,7 @@ </parent> <artifactId>api-lib-core</artifactId> - + <properties> <lombok.version>1.18.26</lombok.version> <mapstruct.version>1.5.4.Final</mapstruct.version> @@ -35,7 +35,8 @@ <!--spring --> <dependency> <groupId>net.devh</groupId> - <artifactId>grpc-client-spring-boot-starter</artifactId> + <artifactId>grpc-client-spring-boot-autoconfigure</artifactId> + <version>2.14.0.RELEASE</version> </dependency> <dependency> @@ -72,7 +73,7 @@ <optional>true</optional> </dependency> </dependencies> - + <build> <plugins> <plugin> diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgang.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgang.java index a04a802..11903e3 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgang.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgang.java @@ -5,9 +5,11 @@ import java.util.List; import lombok.Builder; import lombok.Getter; import lombok.Singular; +import lombok.ToString; @Builder @Getter +@ToString public class OzgCloudVorgang { private OzgCloudVorgangId id; diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java index 293e9fe..37b5144 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.stereotype.Service; import de.ozgcloud.apilib.errorhandling.NotFoundException; @@ -18,6 +19,7 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub; import de.ozgcloud.apilib.vorgang.VorgangStatus; @Service +@ConditionalOnMissingBean(OzgCloudVorgangService.class) class DummyVorgangService implements OzgCloudVorgangService { private final Map<OzgCloudVorgangId, OzgCloudVorgang> idToVorgang; diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangService.java index ab96c7e..ca36aaf 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangService.java @@ -2,6 +2,7 @@ package de.ozgcloud.apilib.vorgang.grpc; import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.itvsh.ozg.pluto.vorgang.GrpcFindVorgangWithEingangRequest; @@ -18,7 +19,7 @@ class GrpcVorgangService implements OzgCloudVorgangService { @GrpcClient("vorgang-manager") private VorgangServiceBlockingStub vorgangServiceStub; - + @Autowired private OzgCloudVorgangMapper mapper; @Override diff --git a/api-lib-demo/src/main/java/de/ozgcloud/apilib/demo/DemoRunner.java b/api-lib-demo/src/main/java/de/ozgcloud/apilib/demo/DemoRunner.java index d0324fe..a140db5 100644 --- a/api-lib-demo/src/main/java/de/ozgcloud/apilib/demo/DemoRunner.java +++ b/api-lib-demo/src/main/java/de/ozgcloud/apilib/demo/DemoRunner.java @@ -5,6 +5,7 @@ import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService; @Component @@ -15,7 +16,7 @@ class DemoRunner implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { - System.out.println(vorgangService.search("test")); + System.out.println(vorgangService.getById(OzgCloudVorgangId.from("647885a50b105b1e4995378e"))); } } diff --git a/api-lib-demo/src/main/resources/application.yml b/api-lib-demo/src/main/resources/application.yml new file mode 100644 index 0000000..3f50825 --- /dev/null +++ b/api-lib-demo/src/main/resources/application.yml @@ -0,0 +1,3 @@ +ozgcloud: + vorgang-manager: + url: static://127.0.0.1:9090 \ No newline at end of file diff --git a/ozg-cloud-spring-boot-starter/pom.xml b/ozg-cloud-spring-boot-starter/pom.xml index e652140..3e5414d 100644 --- a/ozg-cloud-spring-boot-starter/pom.xml +++ b/ozg-cloud-spring-boot-starter/pom.xml @@ -14,6 +14,10 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> + <dependency> + <groupId>net.devh</groupId> + <artifactId>grpc-client-spring-boot-starter</artifactId> + </dependency> <dependency> <groupId>de.ozgcloud.api-lib</groupId> 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 0ef6d54..2a2b6ab 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 @@ -1,10 +1,31 @@ package de.ozgcloud.client.autoconfigure; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration; +import net.devh.boot.grpc.client.config.GrpcChannelProperties; +import net.devh.boot.grpc.client.config.GrpcChannelsProperties; +import net.devh.boot.grpc.client.config.NegotiationType; + @AutoConfiguration @ComponentScan(basePackages = "de.ozgcloud.apilib.**") +@AutoConfigureBefore(GrpcClientAutoConfiguration.class) +//TODO remove component scan public class OzgCloudClientAutoConfiguration { + @Bean + GrpcChannelsProperties channelProperties() { + var properties = new GrpcChannelsProperties(); + var channelProps = new GrpcChannelProperties(); + + properties.getClient().put("vorgang-manager", channelProps); + + channelProps.setAddress("static://127.0.0.1:9090"); + channelProps.setNegotiationType(NegotiationType.PLAINTEXT); + + return properties; + } } diff --git a/ozg-cloud-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ozg-cloud-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 126a0de..daabf24 100644 --- a/ozg-cloud-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ozg-cloud-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,2 @@ -de.ozgcloud.client.autoconfigure.OzgCloudClientAutoConfiguration \ No newline at end of file +de.ozgcloud.client.autoconfigure.OzgCloudClientAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration \ No newline at end of file diff --git a/ozg-cloud-spring-boot-starter/src/main/resources/application.yml b/ozg-cloud-spring-boot-starter/src/main/resources/application.yml new file mode 100644 index 0000000..b770baa --- /dev/null +++ b/ozg-cloud-spring-boot-starter/src/main/resources/application.yml @@ -0,0 +1,7 @@ +grpc: + client: + vorgang-manager: +# address: ${ozgcloud.vorgang-manager.url} + address: static://127.0.0.1:9090 + negotiationType: PLAINTEXT + \ No newline at end of file -- GitLab