From f14c67c7b6cd34676b7e1971dc250ab13df97de4 Mon Sep 17 00:00:00 2001 From: Dmitriy Voronin Date: Thu, 14 Jan 2021 01:27:39 +0300 Subject: [PATCH] bump version --- .../android/elastic/HttpElasticClient.kt | 21 +++++++------------ .../kotlin/com/avito/time/StubTimeProvider.kt | 6 ++++++ .../com/avito/time/TimeMachineProvider.kt | 6 ++++++ .../com/avito/time/DefaultTimeProvider.kt | 16 ++++++++++++++ .../kotlin/com/avito/time/TimeProvider.kt | 6 ++++++ subprojects/gradle.properties | 2 +- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/subprojects/common/elastic/src/main/kotlin/com/avito/android/elastic/HttpElasticClient.kt b/subprojects/common/elastic/src/main/kotlin/com/avito/android/elastic/HttpElasticClient.kt index 3ee63c63fd..95035504da 100644 --- a/subprojects/common/elastic/src/main/kotlin/com/avito/android/elastic/HttpElasticClient.kt +++ b/subprojects/common/elastic/src/main/kotlin/com/avito/android/elastic/HttpElasticClient.kt @@ -7,11 +7,6 @@ import retrofit2.Call import retrofit2.Callback import retrofit2.Response import java.net.URL -import java.time.LocalDateTime -import java.time.ZoneId -import java.time.ZonedDateTime -import java.time.format.DateTimeFormatter -import java.time.format.DateTimeFormatter.ISO_DATE /** * @param endpoints list of elastic endpoints to send logs @@ -32,9 +27,9 @@ internal class HttpElasticClient( private val elasticApi = elasticServiceFactory.createApiService(endpoints) - private val timezone = ZoneId.of("Europe/Moscow") + private val timestampFormatter = timeProvider.formatter("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSZ") - private val timestampFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSZ") + private val isoDate = timeProvider.formatter("yyyy-MM-dd") override fun sendMessage( level: String, @@ -43,25 +38,25 @@ internal class HttpElasticClient( throwable: Throwable? ) { try { - val nowWithTimeZone = ZonedDateTime.ofInstant(timeProvider.now().toInstant(), timezone) - val nowWithoutTimeZone = LocalDateTime.ofInstant(timeProvider.now().toInstant(), timezone) + val nowWithTimeZone = timeProvider.now() val params = mutableMapOf( - "@timestamp" to nowWithTimeZone.format(timestampFormatter), + "@timestamp" to timestampFormatter.format(nowWithTimeZone), "level" to level, "build_id" to buildId, "message" to message ) - if (!throwable?.message.isNullOrBlank()) { - params["error_message"] = throwable?.message + val errorMessage = throwable?.message + if (!errorMessage.isNullOrBlank()) { + params["error_message"] = errorMessage } params.putAll(metadata) elasticApi.log( indexPattern = indexPattern, - date = nowWithoutTimeZone.format(ISO_DATE), + date = isoDate.format(nowWithTimeZone), params = params ).enqueue( object : Callback { diff --git a/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/StubTimeProvider.kt b/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/StubTimeProvider.kt index 2e64c9d6ba..39dbcb99a4 100644 --- a/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/StubTimeProvider.kt +++ b/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/StubTimeProvider.kt @@ -1,11 +1,15 @@ package com.avito.time +import java.text.DateFormat import java.util.Date +import java.util.TimeZone class StubTimeProvider : TimeProvider { private val timeProvider = DefaultTimeProvider() + override val timeZone: TimeZone = timeProvider.timeZone + lateinit var now: Date override fun isSameDay(date1: Date, date2: Date): Boolean = timeProvider.isSameDay(date1, date2) @@ -17,4 +21,6 @@ class StubTimeProvider : TimeProvider { override fun now(): Date = now override fun toDate(seconds: Long): Date = timeProvider.toDate(seconds) + + override fun formatter(pattern: String): DateFormat = timeProvider.formatter(pattern) } diff --git a/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/TimeMachineProvider.kt b/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/TimeMachineProvider.kt index 062a1046de..4bfb4630ce 100644 --- a/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/TimeMachineProvider.kt +++ b/subprojects/common/time-test-fixtures/src/main/kotlin/com/avito/time/TimeMachineProvider.kt @@ -1,6 +1,8 @@ package com.avito.time +import java.text.DateFormat import java.util.Date +import java.util.TimeZone import java.util.concurrent.TimeUnit /** @@ -12,6 +14,8 @@ class TimeMachineProvider : TimeProvider { private val defaultTimeProvider = DefaultTimeProvider() + override val timeZone: TimeZone = defaultTimeProvider.timeZone + fun moveForwardOn(time: Long, unit: TimeUnit = TimeUnit.MILLISECONDS) { timeShift += unit.toMillis(time) } @@ -29,4 +33,6 @@ class TimeMachineProvider : TimeProvider { override fun now() = defaultTimeProvider.toDate(nowInSeconds()) override fun toDate(seconds: Long) = defaultTimeProvider.toDate(seconds) + + override fun formatter(pattern: String): DateFormat = defaultTimeProvider.formatter(pattern) } diff --git a/subprojects/common/time/src/main/kotlin/com/avito/time/DefaultTimeProvider.kt b/subprojects/common/time/src/main/kotlin/com/avito/time/DefaultTimeProvider.kt index 606ec26831..d713a75f2c 100644 --- a/subprojects/common/time/src/main/kotlin/com/avito/time/DefaultTimeProvider.kt +++ b/subprojects/common/time/src/main/kotlin/com/avito/time/DefaultTimeProvider.kt @@ -1,11 +1,21 @@ package com.avito.time +import java.text.DateFormat +import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date +import java.util.Locale +import java.util.TimeZone import java.util.concurrent.TimeUnit +/** + * Used in android runtime < 26, so no java.time API yet + * consider using ThreeTenABP + */ class DefaultTimeProvider : TimeProvider { + override val timeZone: TimeZone = TimeZone.getTimeZone("Europe/Moscow") + override fun isSameDay(date1: Date, date2: Date): Boolean { return isSameDay( Calendar.getInstance().apply { time = date1 }, @@ -29,4 +39,10 @@ class DefaultTimeProvider : TimeProvider { cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR) } + + override fun formatter(pattern: String): DateFormat { + return SimpleDateFormat(pattern, Locale.getDefault()).apply { + timeZone = this@DefaultTimeProvider.timeZone + } + } } diff --git a/subprojects/common/time/src/main/kotlin/com/avito/time/TimeProvider.kt b/subprojects/common/time/src/main/kotlin/com/avito/time/TimeProvider.kt index 009492d777..360d56f851 100644 --- a/subprojects/common/time/src/main/kotlin/com/avito/time/TimeProvider.kt +++ b/subprojects/common/time/src/main/kotlin/com/avito/time/TimeProvider.kt @@ -1,9 +1,13 @@ package com.avito.time +import java.text.DateFormat import java.util.Date +import java.util.TimeZone interface TimeProvider { + val timeZone: TimeZone + fun isSameDay(date1: Date, date2: Date): Boolean fun nowInMillis(): Long @@ -13,4 +17,6 @@ interface TimeProvider { fun now(): Date fun toDate(seconds: Long): Date + + fun formatter(pattern: String): DateFormat } diff --git a/subprojects/gradle.properties b/subprojects/gradle.properties index a97d9b9e95..1bed6a4566 100644 --- a/subprojects/gradle.properties +++ b/subprojects/gradle.properties @@ -7,7 +7,7 @@ org.gradle.caching=true android.useAndroidX=true # The next version of all artifacts # Scheme: year. -projectVersion=2021.1.6 +projectVersion=2021.1.7 # TODO: MBS-9285 - https://github.com/gradle/gradle/issues/12660 systemProp.kotlinVersion=1.4.21 systemProp.androidGradlePluginVersion=4.1.1