From 4808fb0975b729f03b83f65fe1a37debb551956d Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 13 Jul 2023 11:11:54 +0200
Subject: [PATCH] add autoconfiguration

---
 .../vorgang/dummy/DummyVorgangService.java    |  2 +-
 ozg-cloud-spring-boot-starter/pom.xml         | 44 +++++++++++++++++++
 .../OzgCloudClientAutoConfiguration.java      | 10 +++++
 ...ot.autoconfigure.AutoConfiguration.imports |  1 +
 .../autoconfig/ApiLibTestApplication.java     | 15 +++++++
 .../autoconfigure/OzgCloudStarterITCase.java  | 22 ++++++++++
 pom.xml                                       |  1 +
 7 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 ozg-cloud-spring-boot-starter/pom.xml
 create mode 100644 ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
 create mode 100644 ozg-cloud-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 create mode 100644 ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/apilib/autoconfig/ApiLibTestApplication.java
 create mode 100644 ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudStarterITCase.java

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 1dfcab5..293e9fe 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
@@ -41,7 +41,7 @@ class DummyVorgangService implements OzgCloudVorgangService {
 			.build();
 	private static final OzgCloudEingang EINGANG_2 = OzgCloudEingang.builder().build();
 
-	private DummyVorgangService() {
+	public DummyVorgangService() {
 		idToVorgang = buildMap();
 		vorgangs = initList();
 	}
diff --git a/ozg-cloud-spring-boot-starter/pom.xml b/ozg-cloud-spring-boot-starter/pom.xml
new file mode 100644
index 0000000..b18ffce
--- /dev/null
+++ b/ozg-cloud-spring-boot-starter/pom.xml
@@ -0,0 +1,44 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>de.ozgcloud.api-lib</groupId>
+		<artifactId>api-lib-parent</artifactId>
+		<version>0.1.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>ozg-cloud-spring-boot-starter</artifactId>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-autoconfigure</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>de.ozgcloud.api-lib</groupId>
+			<artifactId>api-lib-core</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+
+		<!--Test -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-test-autoconfigure</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.assertj</groupId>
+			<artifactId>assertj-core</artifactId>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
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
new file mode 100644
index 0000000..0ef6d54
--- /dev/null
+++ b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
@@ -0,0 +1,10 @@
+package de.ozgcloud.client.autoconfigure;
+
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+
+@AutoConfiguration
+@ComponentScan(basePackages = "de.ozgcloud.apilib.**")
+public class OzgCloudClientAutoConfiguration {
+
+}
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
new file mode 100644
index 0000000..126a0de
--- /dev/null
+++ b/ozg-cloud-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+de.ozgcloud.client.autoconfigure.OzgCloudClientAutoConfiguration
\ No newline at end of file
diff --git a/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/apilib/autoconfig/ApiLibTestApplication.java b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/apilib/autoconfig/ApiLibTestApplication.java
new file mode 100644
index 0000000..ad8ddb0
--- /dev/null
+++ b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/apilib/autoconfig/ApiLibTestApplication.java
@@ -0,0 +1,15 @@
+package de.ozgcloud.apilib.autoconfig;
+
+import java.util.TimeZone;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ApiLibTestApplication {
+
+	public static void main(String[] args) {
+		TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+		SpringApplication.run(ApiLibTestApplication.class, args);
+	}
+}
diff --git a/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudStarterITCase.java b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudStarterITCase.java
new file mode 100644
index 0000000..175c478
--- /dev/null
+++ b/ozg-cloud-spring-boot-starter/src/test/java/de/ozgcloud/client/autoconfigure/OzgCloudStarterITCase.java
@@ -0,0 +1,22 @@
+package de.ozgcloud.client.autoconfigure;
+
+import static org.assertj.core.api.Assertions.*;
+
+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;
+
+@SpringBootTest(classes = ApiLibTestApplication.class)
+class OzgCloudStarterITCase {
+
+	@Autowired(required = false)
+	private OzgCloudVorgangService vorgangService;
+
+	@Test
+	void shouldInitializeVorgangService() {
+		assertThat(vorgangService).isNotNull();
+	}
+}
diff --git a/pom.xml b/pom.xml
index f31c792..d89c2f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,6 +19,7 @@
 	<packaging>pom</packaging>
 	<modules>
 		<module>api-lib-core</module>
+		<module>ozg-cloud-spring-boot-starter</module>
 	</modules>
 		
 </project>
\ No newline at end of file
-- 
GitLab