Coverage Summary for Class: DateTimeAdapter (cloud.mindbox.mobile_sdk.models.operation.adapters)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| DateTimeAdapter |
100%
(3/3)
|
50%
(1/2)
|
100%
(4/4)
|
92.9%
(26/28)
|
| DateTimeAdapter$Companion |
|
| DateTimeAdapter$read$1$1 |
100%
(1/1)
|
66.7%
(4/6)
|
100%
(5/5)
|
89.2%
(33/37)
|
| DateTimeAdapter$write$1 |
100%
(1/1)
|
66.7%
(4/6)
|
100%
(4/4)
|
83.9%
(26/31)
|
| Total |
100%
(5/5)
|
64.3%
(9/14)
|
100%
(13/13)
|
88.5%
(85/96)
|
package cloud.mindbox.mobile_sdk.models.operation.adapters
import cloud.mindbox.mobile_sdk.models.operation.DateTime
import cloud.mindbox.mobile_sdk.utils.LoggingExceptionHandler
import com.google.gson.TypeAdapter
import com.google.gson.internal.bind.util.ISO8601Utils
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonToken
import com.google.gson.stream.JsonWriter
import java.text.ParsePosition
import java.text.SimpleDateFormat
import java.util.Locale
internal class DateTimeAdapter : TypeAdapter<DateTime>() {
private companion object {
private const val WRITE_DATA_FORMAT = "dd.MM.yyyy HH:mm:ss.FFF"
}
override fun write(out: JsonWriter?, value: DateTime?) {
LoggingExceptionHandler.runCatching {
if (value == null) {
out?.nullValue()
} else {
val formatter = SimpleDateFormat(WRITE_DATA_FORMAT, Locale.getDefault())
out?.value(formatter.format(value))
}
}
}
override fun read(`in`: JsonReader?): DateTime? = `in`?.let { reader ->
LoggingExceptionHandler.runCatching(defaultValue = null) {
if (reader.peek() === JsonToken.NULL) {
reader.nextNull()
return@runCatching null
}
reader.nextString()?.let { dateString ->
ISO8601Utils.parse(dateString, ParsePosition(0))?.time?.let(::DateTime)
}
}
}
}