From 7688e480f41af8e5ac055064664182ecc91375e5 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 24 Jul 2023 15:37:32 +0200
Subject: [PATCH] add json file data deserializer for memory efficient json
 parsing

---
 kop-common-lib/pom.xml                        |  8 +++++
 .../binaryfile/FileDataDeserializer.java      | 33 +++++++++++++++++++
 2 files changed, 41 insertions(+)
 create mode 100644 kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileDataDeserializer.java

diff --git a/kop-common-lib/pom.xml b/kop-common-lib/pom.xml
index 408d548..ae3cff9 100644
--- a/kop-common-lib/pom.xml
+++ b/kop-common-lib/pom.xml
@@ -95,6 +95,14 @@
 			<groupId>com.fasterxml.jackson.core</groupId>
 			<artifactId>jackson-annotations</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.apache.logging.log4j</groupId>
 			<artifactId>log4j-core</artifactId>
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileDataDeserializer.java b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileDataDeserializer.java
new file mode 100644
index 0000000..3b5405f
--- /dev/null
+++ b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileDataDeserializer.java
@@ -0,0 +1,33 @@
+package de.itvsh.kop.common.binaryfile;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JacksonException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+import lombok.SneakyThrows;
+
+public class FileDataDeserializer extends StdDeserializer<File> {
+
+	protected FileDataDeserializer() {
+		super(File.class);
+	}
+
+	@SneakyThrows
+	@Override
+	public File deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException {
+		var tempFile = TempFileUtils.createTmpFile();
+
+		try (var out = new FileOutputStream(tempFile.toFile())) {
+			p.readBinaryValue(out);
+			out.flush();
+		}
+
+		return tempFile.toFile();
+	}
+
+}
-- 
GitLab