@@ -8,6 +8,7 @@ import com.typesafe.config.{Config, ConfigFactory, ConfigObject}
8
8
9
9
import java .time .{Period , Duration as JDuration }
10
10
import scala .concurrent .duration .*
11
+ import scala .jdk .javaapi .DurationConverters
11
12
12
13
trait HoconGenCodecs {
13
14
implicit def configCodec : GenCodec [Config ] = HoconGenCodecs .ConfigCodec
@@ -32,23 +33,23 @@ object HoconGenCodecs {
32
33
)
33
34
34
35
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),
37
38
)
38
39
39
- implicit val JavaDurationCodec : GenCodec [JDuration ] = GenCodec .nullable(
40
+ implicit final val JavaDurationCodec : GenCodec [JDuration ] = GenCodec .nullable(
40
41
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),
42
43
)
43
44
44
45
implicit final val PeriodCodec : GenCodec [Period ] = GenCodec .nullable(
45
46
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),
47
48
)
48
49
49
50
implicit final val SizeInBytesCodec : GenCodec [SizeInBytes ] = GenCodec .nonNull(
50
51
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),
52
53
)
53
54
54
55
implicit final val ClassKeyCodec : GenKeyCodec [Class [? ]] =
0 commit comments