From c688a2ee8e6e93d301713d82d85267a6b710b96f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sun, 26 Oct 2025 20:10:10 +0100 Subject: [PATCH] Let JsonFormatter implement Serializer Once in a while I need to write json output in some of my plugins as well but it is surprisingly hard to do so as the API to do so is all internal and non trivial to implement. On the other hand the JsonFormatter already has everything we need here, so this lets JsonFormatter now implement Serializer to conviently support this use-case --- .../main/java/io/cucumber/core/plugin/JsonFormatter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cucumber-core/src/main/java/io/cucumber/core/plugin/JsonFormatter.java b/cucumber-core/src/main/java/io/cucumber/core/plugin/JsonFormatter.java index dba97e9619..416fef67f4 100644 --- a/cucumber-core/src/main/java/io/cucumber/core/plugin/JsonFormatter.java +++ b/cucumber-core/src/main/java/io/cucumber/core/plugin/JsonFormatter.java @@ -1,6 +1,7 @@ package io.cucumber.core.plugin; import io.cucumber.jsonformatter.MessagesToJsonWriter; +import io.cucumber.messages.MessageToNdjsonWriter.Serializer; import io.cucumber.messages.types.Envelope; import io.cucumber.plugin.ConcurrentEventListener; import io.cucumber.plugin.event.EventPublisher; @@ -8,11 +9,12 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.io.Writer; import java.net.URI; import static io.cucumber.jsonformatter.MessagesToJsonWriter.builder; -public final class JsonFormatter implements ConcurrentEventListener { +public final class JsonFormatter implements ConcurrentEventListener, Serializer { private final MessagesToJsonWriter writer; @@ -45,4 +47,9 @@ private void write(Envelope event) { } } } + + @Override + public void writeValue(Writer writer, Envelope value) throws IOException { + Jackson.OBJECT_MAPPER.writeValue(writer, value); + } }