Skip to content

Commit 5ccc229

Browse files
author
Denys Fakhritdinov
committed
follow code-review suggestion & use case class default values instead of
hand-crufted formatters
1 parent 0c0ce0b commit 5ccc229

2 files changed

Lines changed: 9 additions & 124 deletions

File tree

journal/src/main/scala/com/evolutiongaming/kafka/journal/ActionHeader.scala

Lines changed: 9 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -18,76 +18,10 @@ object ActionHeader {
1818

1919
implicit val formatOptActionHeader: OFormat[Option[ActionHeader]] = {
2020

21-
val appendFormat = {
22-
val format = Json.format[Append]
23-
val reads = format orElse new Reads[Append] {
24-
def reads(json: JsValue): JsResult[Append] = {
25-
26-
def metadata = {
27-
(json \ "metadata").validate[JsObject] match {
28-
case JsSuccess(a, _) => a.validate[HeaderMetadata]
29-
case _: JsError => HeaderMetadata.empty.pure[JsResult]
30-
}
31-
}
32-
33-
for {
34-
range <- (json \ "range").validate[SeqRange]
35-
origin <- (json \ "origin").validateOpt[Origin]
36-
version <- (json \ "version").validateOpt[Version]
37-
payloadType <- (json \ "payloadType").validate[PayloadType.BinaryOrJson]
38-
metadata <- metadata
39-
} yield {
40-
Append(range, origin, version.getOrElse(Version.obsolete), payloadType, metadata)
41-
}
42-
}
43-
}
44-
OFormat(reads, format)
45-
}
46-
val deleteFormat = {
47-
val format = Json.format[Delete]
48-
val reads = format orElse new Reads[Delete] {
49-
def reads(json: JsValue): JsResult[Delete] = {
50-
for {
51-
to <- (json \ "to").validate[SeqNr]
52-
origin <- (json \ "origin").validateOpt[Origin]
53-
version <- (json \ "version").validateOpt[Version]
54-
} yield {
55-
Delete(to.toDeleteTo, origin, version.getOrElse(Version.obsolete))
56-
}
57-
}
58-
}
59-
OFormat(reads, format)
60-
}
61-
val purgeFormat = {
62-
63-
val format = Json.format[Purge]
64-
val reads = format orElse new Reads[Purge] {
65-
def reads(json: JsValue): JsResult[Purge] = {
66-
for {
67-
origin <- (json \ "origin").validateOpt[Origin]
68-
version <- (json \ "version").validateOpt[Version]
69-
} yield {
70-
Purge(origin, version.getOrElse(Version.obsolete))
71-
}
72-
}
73-
}
74-
OFormat(reads, format)
75-
}
76-
val readFormat = {
77-
val format = Json.format[Mark]
78-
val reads = format orElse new Reads[Mark] {
79-
def reads(json: JsValue): JsResult[Mark] = {
80-
for {
81-
id <- (json \ "id").validate[String]
82-
origin <- (json \ "origin").validateOpt[Origin]
83-
version <- (json \ "version").validateOpt[Version]
84-
} yield {
85-
Mark(id, origin, version.getOrElse(Version.obsolete))
86-
}
87-
}
88-
}
89-
OFormat(reads, format)
90-
}
21+
val appendFormat = Json.using[Json.WithDefaultValues].format[Append]
22+
val deleteFormat = Json.using[Json.WithDefaultValues].format[Delete]
23+
val purgeFormat = Json.using[Json.WithDefaultValues].format[Purge]
24+
val readFormat = Json.using[Json.WithDefaultValues].format[Mark]
9125

9226
new OFormat[Option[ActionHeader]] {
9327

@@ -138,25 +72,25 @@ object ActionHeader {
13872
final case class Append(
13973
range: SeqRange,
14074
origin: Option[Origin],
141-
version: Version,
75+
version: Version = Version.obsolete,
14276
payloadType: PayloadType.BinaryOrJson,
143-
metadata: HeaderMetadata,
77+
metadata: HeaderMetadata = HeaderMetadata.empty,
14478
) extends AppendOrDelete
14579

14680
final case class Delete(
14781
to: DeleteTo,
14882
origin: Option[Origin],
149-
version: Version,
83+
version: Version = Version.obsolete,
15084
) extends AppendOrDelete
15185

15286
final case class Purge(
15387
origin: Option[Origin],
154-
version: Version,
88+
version: Version = Version.obsolete,
15589
) extends AppendOrDelete
15690

15791
final case class Mark(
15892
id: String,
15993
origin: Option[Origin],
160-
version: Version,
94+
version: Version = Version.obsolete,
16195
) extends ActionHeader
16296
}

notes.md

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)