diff --git a/kop-common-lib/pom.xml b/kop-common-lib/pom.xml index 408d548c463afcd517e80bde937ee7dc4ea8f5a9..ae3cff9eb837a493dd9b52205c7fc29f788bae42 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 0000000000000000000000000000000000000000..3b5405ff578ab23823efca4c165c51e44711c61e --- /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(); + } + +}