From 479d4cc25ea0a524e1a68e7f1cd4ebee5f506228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brage=20Skj=C3=B8nborg?= Date: Sun, 12 Oct 2025 19:31:15 +0200 Subject: [PATCH] Signature --- .../kotlin/no/iktdev/eventi/models/Event.kt | 23 +++++++++++-------- .../kotlin/no/iktdev/eventi/models/Task.kt | 13 +++++++---- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/kotlin/no/iktdev/eventi/models/Event.kt b/src/main/kotlin/no/iktdev/eventi/models/Event.kt index a863636..9c8b0da 100644 --- a/src/main/kotlin/no/iktdev/eventi/models/Event.kt +++ b/src/main/kotlin/no/iktdev/eventi/models/Event.kt @@ -2,6 +2,7 @@ package no.iktdev.eventi.models import java.util.UUID +@Suppress("UNCHECKED_CAST") abstract class Event { var referenceId: UUID = UUID.randomUUID() protected set @@ -10,22 +11,24 @@ abstract class Event { var metadata: Metadata = Metadata() protected set - fun derivedOf(event: Event) = apply { - this.referenceId = event.referenceId - this.metadata = Metadata(derivedFromId = event.eventId) + protected open fun self(): T = this as T + + fun producedFrom(task: Task): Event = self().apply { + referenceId = task.referenceId + metadata = Metadata(derivedFromId = task.taskId) } - fun producedFrom(task: Task) = apply { - this.referenceId = task.referenceId - this.metadata = Metadata(derivedFromId = task.taskId) + fun derivedOf(event: Event) = self().apply { + referenceId = event.referenceId + metadata = Metadata(derivedFromId = event.eventId) } - fun newReferenceId() = apply { - this.referenceId = UUID.randomUUID() + fun newReferenceId() = self().apply { + referenceId = UUID.randomUUID() } - fun usingReferenceId(refId: UUID) = apply { - this.referenceId = refId + fun usingReferenceId(refId: UUID) = self().apply { + referenceId = refId } } diff --git a/src/main/kotlin/no/iktdev/eventi/models/Task.kt b/src/main/kotlin/no/iktdev/eventi/models/Task.kt index 2412a9a..3357c87 100644 --- a/src/main/kotlin/no/iktdev/eventi/models/Task.kt +++ b/src/main/kotlin/no/iktdev/eventi/models/Task.kt @@ -11,13 +11,16 @@ abstract class Task { var metadata: Metadata = Metadata() protected set - fun newReferenceId() = apply { - this.referenceId = UUID.randomUUID() + + protected open fun self(): T = this as T + + fun newReferenceId() = self().apply { + referenceId = UUID.randomUUID() } - fun derivedOf(event: Event) = apply { - this.referenceId = event.referenceId - this.metadata = Metadata(derivedFromId = event.eventId) + fun derivedOf(event: Event) = self().apply { + referenceId = event.referenceId + metadata = Metadata(derivedFromId = event.eventId) } }