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