@@ -8,6 +8,7 @@ import com.typesafe.config.{Config, ConfigFactory, ConfigObject}
88
99import java .time .{Period , Duration as JDuration }
1010import scala .concurrent .duration .*
11+ import scala .jdk .javaapi .DurationConverters
1112
1213trait 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 [? ]] =
0 commit comments