diff --git a/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Endpoint.java b/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Endpoint.java index 5bd6dd4..9a35cae 100644 --- a/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Endpoint.java +++ b/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Endpoint.java @@ -27,10 +27,10 @@ class Endpoint { @GET @Operation(summary = "Retrieves all registered events as a JSON stream") @RestStreamElementType(JsonFormat.CONTENT_TYPE) - public Multi events() { + public Multi events() { return Multi.createFrom() .iterable(events) - .map(this::workaroundQuarkus31587); + .map(Endpoint::workaroundQuarkus31587); } @POST @@ -48,8 +48,8 @@ public void receive(CloudEvent event) { * * TODO: Remove this method once the above issues is fixed. */ - private Event workaroundQuarkus31587(CloudEvent event) { - return Event.from(event, om); - } + private static byte[] workaroundQuarkus31587(CloudEvent event) { + var serializer = new JsonFormat(); + return serializer.serialize(event); } } diff --git a/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Event.java b/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Event.java deleted file mode 100644 index 6d16996..0000000 --- a/quarkus/src/main/java/com/redhat/openshift/knative/showcase/events/Event.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.redhat.openshift.knative.showcase.events; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; -import io.cloudevents.CloudEvent; - -import javax.annotation.Nullable; -import javax.ws.rs.core.MediaType; -import java.io.IOException; -import java.util.Map; - -/** - * A workaround for - * quarkusio/quarkus#31587 - * and cloudevents/sdk-java#533. - * - * TODO: Remove this class once the above issues is fixed. - */ -class Event { - @JsonProperty - String id; - @JsonProperty - String source; - @JsonProperty - String type; - @JsonProperty("specversion") - String specVersion; - @JsonProperty("datacontenttype") - String dataContentType; - @JsonProperty - Map data; - - static Event from(CloudEvent event, ObjectMapper om) { - var e = new Event(); - e.id = event.getId(); - e.source = event.getSource().toString(); - e.type = event.getType(); - e.specVersion = event.getSpecVersion().toString(); - e.dataContentType = event.getDataContentType(); - e.data = dataToMap(event, om); - return e; - } - - @Nullable - private static Map dataToMap(CloudEvent event, ObjectMapper om) { - var data = event.getData(); - if (data == null) { - return null; - } - var mt = MediaType.valueOf(event.getDataContentType()); - if (mt.isCompatible(MediaType.APPLICATION_JSON_TYPE)) { - try { - return om.readValue(data.toBytes(), Map.class); - } catch (IOException e) { - throw new IllegalArgumentException(e); - } - } - throw new IllegalArgumentException("Unsupported media type: " + mt); - } - -}