Skip to content

Commit 31369b4

Browse files
committed
Improve SizeInBytes doc
1 parent b60fe6b commit 31369b4

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

hocon/src/main/scala/com/avsystem/commons/hocon/ConfigCompanion.scala

+7-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.typesafe.config.{Config, ConfigFactory, ConfigObject}
88

99
import java.time.{Period, Duration as JDuration}
1010
import scala.concurrent.duration.*
11+
import scala.jdk.javaapi.DurationConverters
1112

1213
trait HoconGenCodecs {
1314
implicit def configCodec: GenCodec[Config] = HoconGenCodecs.ConfigCodec
@@ -32,23 +33,23 @@ object HoconGenCodecs {
3233
)
3334

3435
implicit final val FiniteDurationCodec: GenCodec[FiniteDuration] = GenCodec.nullable(
35-
input => input.readCustom(DurationMarker).fold(input.readSimple().readLong())(_.toMillis).millis,
36-
(output, value) => output.writeSimple().writeLong(value.toMillis),
36+
input => input.readCustom(DurationMarker).map(DurationConverters.toScala).getOrElse(input.readSimple().readLong().millis),
37+
(output, value) => if (!output.writeCustom(DurationMarker, DurationConverters.toJava(value))) output.writeSimple().writeLong(value.toMillis),
3738
)
3839

39-
implicit val JavaDurationCodec: GenCodec[JDuration] = GenCodec.nullable(
40+
implicit final val JavaDurationCodec: GenCodec[JDuration] = GenCodec.nullable(
4041
input => input.readCustom(DurationMarker).getOrElse(JDuration.ofMillis(input.readSimple().readLong())),
41-
(output, value) => output.writeSimple().writeLong(value.toMillis),
42+
(output, value) => if (!output.writeCustom(DurationMarker, value)) output.writeSimple().writeLong(value.toMillis),
4243
)
4344

4445
implicit final val PeriodCodec: GenCodec[Period] = GenCodec.nullable(
4546
input => input.readCustom(PeriodMarker).getOrElse(Period.parse(input.readSimple().readString())),
46-
(output, value) => output.writeSimple().writeString(value.toString),
47+
(output, value) => if (!output.writeCustom(PeriodMarker, value)) output.writeSimple().writeString(value.toString),
4748
)
4849

4950
implicit final val SizeInBytesCodec: GenCodec[SizeInBytes] = GenCodec.nonNull(
5051
input => SizeInBytes(input.readCustom(SizeInBytesMarker).getOrElse(input.readSimple().readLong())),
51-
(output, value) => output.writeSimple().writeLong(value.bytes),
52+
(output, value) => if (!output.writeCustom(SizeInBytesMarker, value.bytes)) output.writeSimple().writeLong(value.bytes),
5253
)
5354

5455
implicit final val ClassKeyCodec: GenKeyCodec[Class[?]] =

hocon/src/main/scala/com/avsystem/commons/hocon/SizeInBytes.scala

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.avsystem.commons
22
package hocon
33

44
/**
5-
* Use this type in data deserialized from HOCON to in order to read size in bytes represented with
6-
* [[https://github.com/lightbend/config/blob/master/HOCON.md#size-in-bytes-format HOCON's nice representation]].
5+
* To read the size in bytes represented in [[https://github.com/lightbend/config/blob/master/HOCON.md#size-in-bytes-format HOCON format]],
6+
* use this type together with [[com.avsystem.commons.hocon.SizeInBytesMarker]] when deserializing data from HOCON.
7+
*
8+
* @see [[com.avsystem.commons.hocon.HoconGenCodecs.SizeInBytesCodec]]
79
*/
810
final case class SizeInBytes(bytes: Long)
911
object SizeInBytes {

0 commit comments

Comments
 (0)