From c7a8a5bd47ee5c44bafac391ce83565b8f7c0cca Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 8 Jul 2024 07:42:41 +0200
Subject: [PATCH] OZG-6099 create context provider in processor manager

---
 pom.xml                                       | 18 +++++--
 .../ProcessorManagerConfiguration.java        | 47 +++++++++++++++++++
 .../ProzessorManagerCallContextProvider.java  | 42 +++++++++++++++++
 .../processor/vorgang/VorgangService.java     | 11 +++--
 .../processor/ProcessorTestApplication.java   |  8 +++-
 5 files changed, 117 insertions(+), 9 deletions(-)
 create mode 100644 src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java
 create mode 100644 src/main/java/de/ozgcloud/processor/ProzessorManagerCallContextProvider.java

diff --git a/pom.xml b/pom.xml
index 1315cf8..5517c19 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,19 +6,19 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.0.1</version>
+		<version>4.3.0</version>
 	</parent>
 
 	<groupId>de.ozgcloud.processor</groupId>
 	<artifactId>processor-manager</artifactId>
-	<version>0.4.0</version>
+	<version>0.4.1-SNAPSHOT</version>
 
 	<name>ozgcloud-processor-manager</name>
 	<description>OZG-Cloud Processor Manager</description>
 
 	<properties>
 		<vorgang-manager.version>2.5.0</vorgang-manager.version>
-		<api-lib.version>0.7.0</api-lib.version>
+		<api-lib.version>0.10.0</api-lib.version>
 		<tyrus-standalone-client.version>2.1.3</tyrus-standalone-client.version>
 		<okio.version>3.9.0</okio.version>
 	</properties>
@@ -48,6 +48,11 @@
 			<artifactId>ozg-cloud-spring-boot-starter</artifactId>
 			<version>${api-lib.version}</version>
 		</dependency>
+		<dependency>
+			<groupId>de.ozgcloud.api-lib</groupId>
+			<artifactId>api-lib-core</artifactId>
+			<version>${api-lib.version}</version>
+		</dependency>
 
 		<!-- spring -->
 		<dependency>
@@ -97,7 +102,12 @@
 			<version>${okio.version}</version>
 			<scope>test</scope>
 		</dependency>
-
+		<dependency>
+			<groupId>io.grpc</groupId>
+			<artifactId>grpc-inprocess</artifactId>
+			<version>1.65.0</version>
+			<scope>test</scope>
+		</dependency>
 
 		<!-- commons -->
 		<dependency>
diff --git a/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java
new file mode 100644
index 0000000..3ce4b10
--- /dev/null
+++ b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java
@@ -0,0 +1,47 @@
+/*
+ * 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.processor;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
+import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService;
+import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper;
+import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc;
+import net.devh.boot.grpc.client.inject.GrpcClient;
+
+@Configuration
+public class ProcessorManagerConfiguration {
+
+	@GrpcClient("vorgang-manager")
+	private VorgangServiceGrpc.VorgangServiceBlockingStub vorgangServiceStub;
+
+	@Bean("processorManager_OzgCloudCommandService")
+	OzgCloudVorgangService grpcOzgCloudCommandService(OzgCloudVorgangMapper vorgangMapper, OzgCloudVorgangStubMapper vorgangStubMapper,
+			ProzessorManagerCallContextProvider contextProvider) {
+		return new GrpcOzgCloudVorgangService(vorgangServiceStub, vorgangMapper, vorgangStubMapper, contextProvider);
+	}
+}
diff --git a/src/main/java/de/ozgcloud/processor/ProzessorManagerCallContextProvider.java b/src/main/java/de/ozgcloud/processor/ProzessorManagerCallContextProvider.java
new file mode 100644
index 0000000..0dfc4ca
--- /dev/null
+++ b/src/main/java/de/ozgcloud/processor/ProzessorManagerCallContextProvider.java
@@ -0,0 +1,42 @@
+/*
+ * 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.processor;
+
+import org.springframework.stereotype.Component;
+
+import de.ozgcloud.apilib.common.callcontext.CallContext;
+import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider;
+import lombok.RequiredArgsConstructor;
+
+@Component
+@RequiredArgsConstructor
+class ProzessorManagerCallContextProvider implements OzgCloudCallContextProvider {
+
+	static final String PROZESSOR_MANAGER_CLIENT_NAME = "OzgCloud_ProzessorManager";
+
+	@Override
+	public CallContext provideContext() {
+		return CallContext.builder().clientName(PROZESSOR_MANAGER_CLIENT_NAME).build();
+	}
+}
diff --git a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java
index 059b71d..fdafb96 100644
--- a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java
+++ b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java
@@ -1,18 +1,21 @@
 package de.ozgcloud.processor.vorgang;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
 import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
 
 @Service("processorVorgangService")
-@RequiredArgsConstructor
 public class VorgangService {
 
-	private final OzgCloudVorgangService ozgCloudService;
-	private final ProcessorVorgangMapper mapper;
+	@Autowired
+	@Qualifier("processorManager_OzgCloudCommandService")
+	private OzgCloudVorgangService ozgCloudService;
+	@Autowired
+	private ProcessorVorgangMapper mapper;
 
 	public Vorgang getVorgang(@NonNull VorgangId id) {
 		var loaded = ozgCloudService.getById(OzgCloudVorgangId.from(id.toString()));
diff --git a/src/test/java/de/ozgcloud/processor/ProcessorTestApplication.java b/src/test/java/de/ozgcloud/processor/ProcessorTestApplication.java
index 41966a3..09a2a6a 100644
--- a/src/test/java/de/ozgcloud/processor/ProcessorTestApplication.java
+++ b/src/test/java/de/ozgcloud/processor/ProcessorTestApplication.java
@@ -2,12 +2,18 @@ package de.ozgcloud.processor;
 
 import java.util.TimeZone;
 
+import org.mockito.Mock;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-@SpringBootApplication
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc;
+
+@SpringBootApplication(scanBasePackages = { "de.ozgcloud" })
 public class ProcessorTestApplication {
 
+	@Mock
+	private VorgangServiceGrpc.VorgangServiceBlockingStub vorgangServiceStub;
+
 	public static void main(String[] args) {
 		TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
 		SpringApplication.run(ProcessorTestApplication.class, args);
-- 
GitLab