From eec8ae70b4ce33c5946353db2bfcae61fb4b58f1 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 19 Oct 2023 14:11:21 +0200
Subject: [PATCH] prevent NPEs on using subobjects of eingang

---
 .../apilib/vorgang/OzgCloudEingang.java       |  9 +++-
 .../OzgCloudClientAutoConfiguration.java      | 42 ++++++++++---------
 2 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudEingang.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudEingang.java
index 44a7ef6..b77ede0 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudEingang.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudEingang.java
@@ -6,6 +6,7 @@ import de.ozgcloud.apilib.file.OzgCloudFile;
 import de.ozgcloud.apilib.file.OzgCloudFileGroup;
 import lombok.Builder;
 import lombok.Getter;
+import lombok.Singular;
 import lombok.ToString;
 
 @Builder
@@ -14,13 +15,17 @@ import lombok.ToString;
 public class OzgCloudEingang {
 
 	@ToString.Include
-	private OzgCloudEingangHeader header;
-	private OzgCloudAntragsteller antragsteller;
+	@Builder.Default
+	private OzgCloudEingangHeader header = OzgCloudEingangHeader.builder().build();
+	@Builder.Default
+	private OzgCloudAntragsteller antragsteller = OzgCloudAntragsteller.builder().build();
 	@ToString.Include
 	private OzgCloudZustaendigeStelle zustaendigeStelle;
 
 	private List<OzgCloudFormDataEntry> formDataEntrys;
 
+	@Singular
 	private List<OzgCloudFileGroup> attachments;
+	@Singular
 	private List<OzgCloudFile> representations;
 }
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 61cc836..5609fc4 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
@@ -41,9 +41,9 @@ import net.devh.boot.grpc.client.inject.GrpcClient;
 @AutoConfiguration(before = GrpcClientAutoConfiguration.class)
 @ComponentScan("de.ozgcloud.client.autoconfigure")
 @Import({
-	GrpcOzgCloudFileService.class, DummyOzgCloudFileService.class,
-	OzgCloudCallContextAttachingInterceptor.class,
-	OzgCloudVorgangMapperImpl.class, OzgCloudEingangMapperImpl.class, OzgCloudVorgangIdMapperImpl.class
+		GrpcOzgCloudFileService.class, DummyOzgCloudFileService.class,
+		OzgCloudCallContextAttachingInterceptor.class,
+		OzgCloudVorgangMapperImpl.class, OzgCloudEingangMapperImpl.class, OzgCloudVorgangIdMapperImpl.class
 })
 public class OzgCloudClientAutoConfiguration {
 
@@ -58,10 +58,10 @@ public class OzgCloudClientAutoConfiguration {
 	@Autowired
 	private OzgCloudCommandManagerProperties commandManagerProperties;
 
-	@Bean
-	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
-	GrpcChannelsProperties channelProperties() {
-		var properties = new GrpcChannelsProperties();
+//	@Bean
+//	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
+	GrpcChannelsProperties channelProperties(GrpcChannelsProperties properties) {
+//		var properties = new GrpcChannelsProperties();
 		var clientMap = properties.getClient();
 
 		addVorgangManager(clientMap);
@@ -101,10 +101,24 @@ public class OzgCloudClientAutoConfiguration {
 		return new DefaultOzgCloudCallContextProvider(ctxt);
 	}
 
+	@Bean("ozgCloudVorgangService")
+	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
+	OzgCloudVorgangService grpcOzgCloudVorgangService(VorgangServiceBlockingStub vorgangServiceStub, OzgCloudVorgangMapper mapper,
+			OzgCloudVorgangStubMapper stubMapper, OzgCloudCallContextProvider contextProvider) {
+
+		return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper, contextProvider);
+	}
+
+	@Bean("ozgCloudVorgangService")
+	@ConditionalOnMissingBean(OzgCloudVorgangService.class)
+	OzgCloudVorgangService dummyOzgCloudVorgangService() {
+		return new DummyVorgangService();
+	}
+
 	@Bean
 	@ConditionalOnProperty("ozgcloud.command-manager.address")
 	OzgCloudCommandService grpcCommandService(@GrpcClient("command-manager") CommandServiceBlockingStub commandServiceStub,
-		CommandMapper commandMapper,  OzgCloudCallContextProvider contextProvider) {
+			CommandMapper commandMapper, OzgCloudCallContextProvider contextProvider) {
 		return new GrpcOzgCloudCommandService(commandServiceStub, commandMapper, contextProvider);
 	}
 
@@ -126,16 +140,4 @@ public class OzgCloudClientAutoConfiguration {
 		return new DummyAlfaService();
 	}
 
-	@Bean("ozgCloudVorgangService")
-	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
-	public OzgCloudVorgangService grpcOzgCloudVorgangService(VorgangServiceBlockingStub vorgangServiceStub, OzgCloudVorgangMapper mapper,
-		OzgCloudVorgangStubMapper stubMapper, OzgCloudCallContextProvider contextProvider) {
-		return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper, contextProvider);
-	}
-
-	@Bean("ozgCloudVorgangService")
-	@ConditionalOnMissingBean(OzgCloudVorgangService.class)
-	public OzgCloudVorgangService dummyOzgCloudVorgangService() {
-		return new DummyVorgangService();
-	}
 }
-- 
GitLab