Closed johanhaleby closed 2 years ago
class LaissezFairCloudEventConverter : CloudEventConverter<GameEvent> { private val xstream = XStream().apply { allowTypesByWildcard(arrayOf(GameEvent::class.java.packageName + ".**")) } override fun toCloudEvent(e: GameEvent): CloudEvent = CloudEventBuilder.v1() .withId(UUID.randomUUID().toString()) .withSource(URI.create("urn:rockpaperscissors:game")) .withType(e::class.simpleName) .withTime(OffsetDateTime.ofInstant(e.timestamp.value.toInstant(), e.timestamp.value.zone)) .withDataContentType("application/xml") .withData(xstream.toXML(e).toByteArray()) .build() override fun toDomainEvent(cloudEvent: CloudEvent): GameEvent = xstream.fromXML(String(cloudEvent.data!!.toBytes())) as GameEvent }