From b76df19c0ca593a0260e87cae52792fe4c068825 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 22 Oct 2024 13:41:28 +0200
Subject: [PATCH] OZG-6710 fix initialization of OzgCloudVorgangService

---
 .../grpc/OzgCloudVorgangQueryMapper.java      |  3 +-
 .../OzgCloudClientAutoConfiguration.java      |  9 +--
 .../OzgCloudVorgangServiceStarterITCase.java  | 68 +++++++++++++++++++
 3 files changed, 74 insertions(+), 6 deletions(-)
 create mode 100644 ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudVorgangServiceStarterITCase.java

diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java
index aaf82cc..5a57685 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java
@@ -5,7 +5,6 @@ import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
 
-import org.apache.commons.collections.CollectionUtils;
 import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
@@ -44,7 +43,7 @@ public interface OzgCloudVorgangQueryMapper {
 	default GrpcQuery mapAllToQuery(OzgCloudVorgangQuery query) {
 		var queryBuilder = GrpcQuery.newBuilder().setLogicalOperator(GrpcLogicalOperator.AND);
 		query.getAktenzeichen().map(this::toAktenzeichenExpression).ifPresent(queryBuilder::addExpressions);
-		query.getForm().map(this::toFormExpressions).filter(CollectionUtils::isNotEmpty).ifPresent(queryBuilder::addAllExpressions);
+		query.getForm().map(this::toFormExpressions).ifPresent(queryBuilder::addAllExpressions);
 		query.getStatus().map(this::toStatusExpression).ifPresent(queryBuilder::addExpressions);
 		query.getOrganisationsEinheitId().map(this::toOrganisationsEinheitIdExpression).ifPresent(queryBuilder::addExpressions);
 		query.getQuery().map(this::toQuery).ifPresent(queryBuilder::setNestedQuery);
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 8435df9..ecd66e5 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
@@ -37,7 +37,7 @@ 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.command.CommandServiceGrpc;
-import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc;
 import io.grpc.ManagedChannelBuilder;
 import lombok.RequiredArgsConstructor;
 import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration;
@@ -134,9 +134,10 @@ public class OzgCloudClientAutoConfiguration {
 	@Bean("ozgCloudVorgangService")
 	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
 	@ConditionalOnMissingBean(OzgCloudVorgangService.class)
-	OzgCloudVorgangService grpcOzgCloudVorgangService(VorgangServiceBlockingStub vorgangServiceStub, OzgCloudVorgangMapper mapper,
-		OzgCloudVorgangStubMapper stubMapper, OzgCloudVorgangQueryMapper queryMapper, OzgCloudCallContextProvider contextProvider) {
-
+	OzgCloudVorgangService grpcOzgCloudVorgangService(OzgCloudVorgangMapper mapper, OzgCloudVorgangStubMapper stubMapper,
+		OzgCloudVorgangQueryMapper queryMapper, OzgCloudCallContextProvider contextProvider) {
+		var channel = ManagedChannelBuilder.forTarget(vorgangManagerProperties.getAddress()).usePlaintext().build();
+		var vorgangServiceStub = VorgangServiceGrpc.newBlockingStub(channel);
 		return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper, queryMapper, contextProvider);
 	}
 
diff --git a/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudVorgangServiceStarterITCase.java b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudVorgangServiceStarterITCase.java
new file mode 100644
index 0000000..6618638
--- /dev/null
+++ b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudVorgangServiceStarterITCase.java
@@ -0,0 +1,68 @@
+/*
+ * 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 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 de.ozgcloud.apilib.autoconfig.ApiLibTestApplication;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
+import de.ozgcloud.apilib.vorgang.dummy.DummyVorgangService;
+import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService;
+
+public class OzgCloudVorgangServiceStarterITCase {
+
+	@Nested
+	@SpringBootTest(classes = ApiLibTestApplication.class, properties = {
+		"ozgcloud.vorgang-manager.address=address"
+	})
+	class TestWithOzgCloudVorgangService {
+
+		@Autowired
+		private OzgCloudVorgangService ozgCloudVorgangService;
+
+		@Test
+		void shouldStart() {
+			assertThat(ozgCloudVorgangService).isInstanceOf(GrpcOzgCloudVorgangService.class);
+		}
+	}
+
+	@Nested
+	@SpringBootTest(classes = ApiLibTestApplication.class)
+	class TestWithExistingOzgCloudVorgangService {
+
+		@Autowired
+		private OzgCloudVorgangService ozgCloudVorgangService;
+
+		@Test
+		void shouldStart() { // NOSONAR
+			assertThat(ozgCloudVorgangService).isInstanceOf(DummyVorgangService.class);
+		}
+
+	}
+}
-- 
GitLab