From c02ca05a5e509fd17b212b837bc31fc0887db23f Mon Sep 17 00:00:00 2001 From: Sergey Patrikeev Date: Mon, 8 Jun 2020 14:14:37 +0300 Subject: [PATCH] Index diagnostic: use system tyme zone for times in the diagnostic reports. GitOrigin-RevId: ca77484bd2d7b40f02aa8b9c18871b522a8e9a96 --- .../indexing/diagnostic/dto/JsonConverter.kt | 23 +++++++------------ .../indexing/diagnostic/dto/JsonDateTime.kt | 23 +++++++++++++++++++ .../dto/JsonIndexDiagnosticAppInfo.kt | 15 ++++-------- .../dto/JsonProjectIndexingHistoryTimes.kt | 16 ++++++------- 4 files changed, 44 insertions(+), 33 deletions(-) create mode 100644 platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonDateTime.kt diff --git a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonConverter.kt b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonConverter.kt index d859d2f79e46..25069c75ef35 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonConverter.kt +++ b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonConverter.kt @@ -2,9 +2,7 @@ package com.intellij.util.indexing.diagnostic.dto import com.intellij.util.indexing.diagnostic.* -import com.intellij.util.text.DateFormatUtil import java.time.Duration -import java.time.Instant fun TimeNano.toMillis(): TimeMillis = this / 1_000_000 @@ -12,8 +10,6 @@ fun TimeNano.toMillis(): TimeMillis = this / 1_000_000 // Can be used to skip int value from JSON if it is equal to 0 (to not pollute the JSON report). typealias PositiveInt = Int? -typealias PresentableTime = String - fun Int.toPositiveInt() = takeIf { it > 0 } fun FileProviderIndexStatistics.toJson(): JsonFileProviderIndexStatistics { @@ -71,23 +67,20 @@ private fun FileProviderIndexStatistics.aggregateStatsPerIndexer(): List() { + override fun serialize(value: JsonDateTime, gen: JsonGenerator, serializers: SerializerProvider?) { + gen.writeString(value.presentableDateTime()) + } + } + + fun presentableDateTime(): String = + ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()).format(DateTimeFormatter.RFC_1123_DATE_TIME) +} \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonIndexDiagnosticAppInfo.kt b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonIndexDiagnosticAppInfo.kt index 18d5dc55bc9a..580f8ec6f32f 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonIndexDiagnosticAppInfo.kt +++ b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonIndexDiagnosticAppInfo.kt @@ -3,15 +3,13 @@ package com.intellij.util.indexing.diagnostic.dto import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.util.SystemInfo -import java.time.ZoneId -import java.time.ZonedDateTime -import java.time.format.DateTimeFormatter +import java.time.Instant data class JsonIndexDiagnosticAppInfo( val build: String, - val buildDate: String, + val buildDate: JsonDateTime, val productCode: String, - val generated: String, + val generated: JsonDateTime, val os: String, val runtime: String ) { @@ -20,12 +18,9 @@ data class JsonIndexDiagnosticAppInfo( val appInfo = ApplicationInfo.getInstance() return JsonIndexDiagnosticAppInfo( build = appInfo.build.asStringWithoutProductCode(), - buildDate = ZonedDateTime.ofInstant( - appInfo.buildDate.toInstant(), ZoneId.systemDefault() - ).format(DateTimeFormatter.RFC_1123_DATE_TIME), + buildDate = JsonDateTime(appInfo.buildDate.toInstant()), productCode = appInfo.build.productCode, - generated = ZonedDateTime.now().format( - DateTimeFormatter.RFC_1123_DATE_TIME), + generated = JsonDateTime(Instant.now()), os = SystemInfo.getOsNameAndVersion(), runtime = SystemInfo.JAVA_VENDOR + " " + SystemInfo.JAVA_VERSION + " " + SystemInfo.JAVA_RUNTIME_VERSION ) diff --git a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonProjectIndexingHistoryTimes.kt b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonProjectIndexingHistoryTimes.kt index 08a07fa3e957..66d8aee088fe 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonProjectIndexingHistoryTimes.kt +++ b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/dto/JsonProjectIndexingHistoryTimes.kt @@ -8,12 +8,12 @@ data class JsonProjectIndexingHistoryTimes( val pushPropertiesTime: JsonDuration, val indexExtensionsTime: JsonDuration, - val indexingStart: PresentableTime, - val indexingEnd: PresentableTime, - val pushPropertiesStart: PresentableTime, - val pushPropertiesEnd: PresentableTime, - val indexExtensionsStart: PresentableTime, - val indexExtensionsEnd: PresentableTime, - val scanFilesStart: PresentableTime, - val scanFilesEnd: PresentableTime + val pushPropertiesStart: JsonDateTime, + val pushPropertiesEnd: JsonDateTime, + val scanFilesStart: JsonDateTime, + val scanFilesEnd: JsonDateTime, + val indexExtensionsStart: JsonDateTime, + val indexExtensionsEnd: JsonDateTime, + val indexingStart: JsonDateTime, + val indexingEnd: JsonDateTime ) \ No newline at end of file