From 32de21fa3df1df90240c7de3f311675b298e3b05 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Fri, 3 Jan 2025 14:01:43 +0100
Subject: [PATCH] fix: Serializer for KML

---
 .../vips/logic/VIPSLogicApplication.java      |  1 +
 .../entity/helpers/KmlMessageBodyWriter.java  | 32 +++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 src/main/java/no/nibio/vips/logic/entity/helpers/KmlMessageBodyWriter.java

diff --git a/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java b/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java
index 9eb180af..75ee548e 100755
--- a/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java
+++ b/src/main/java/no/nibio/vips/logic/VIPSLogicApplication.java
@@ -58,6 +58,7 @@ public class VIPSLogicApplication extends Application
         resources.add(no.nibio.vips.logic.service.ObservationTimeSeriesService.class);
         resources.add(no.nibio.vips.logic.service.ModelFormService.class);
         resources.add(no.nibio.vips.logic.service.JacksonConfig.class);
+        resources.add(no.nibio.vips.logic.entity.helpers.KmlMessageBodyWriter.class);
         //resources.add(no.nibio.vips.logic.service.JSONBConfig.class);
         //resources.add(no.nibio.vips.coremanager.service.ManagerResourceImpl.class);
     }
diff --git a/src/main/java/no/nibio/vips/logic/entity/helpers/KmlMessageBodyWriter.java b/src/main/java/no/nibio/vips/logic/entity/helpers/KmlMessageBodyWriter.java
new file mode 100644
index 00000000..1c94212d
--- /dev/null
+++ b/src/main/java/no/nibio/vips/logic/entity/helpers/KmlMessageBodyWriter.java
@@ -0,0 +1,32 @@
+package no.nibio.vips.logic.entity.helpers;
+
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.ext.Provider;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.io.OutputStream;
+import java.io.IOException;
+import de.micromata.opengis.kml.v_2_2_0.Kml;
+
+@Provider
+@Produces("application/vnd.google-earth.kml+xml")
+public class KmlMessageBodyWriter implements MessageBodyWriter<Kml> {
+
+    @Override
+    public boolean isWriteable(Class<?> type, Type genericType, 
+                               Annotation[] annotations, MediaType mediaType) {
+        return Kml.class.isAssignableFrom(type);
+    }
+
+    @Override
+    public void writeTo(Kml kml, Class<?> type, Type genericType, Annotation[] annotations, 
+                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, 
+                        OutputStream entityStream) throws IOException {
+        kml.marshal(entityStream);
+    }
+
+    // Implement other MessageBodyWriter methods as needed
+}
-- 
GitLab