mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
OPENIDE fix compile errors for 2025.3.2
(cherry picked from commit 9d93258eed)
This commit is contained in:
@@ -4,11 +4,9 @@
|
||||
// Any modifications are available on the same license terms as the original source code.
|
||||
package com.intellij.internal.statistic.eventLog.connection
|
||||
|
||||
import com.jetbrains.fus.reporting.FusHttpClient
|
||||
import com.jetbrains.fus.reporting.FusJsonSerializer
|
||||
import com.jetbrains.fus.reporting.configuration.ConfigurationClient
|
||||
import com.jetbrains.fus.reporting.configuration.RegionCode
|
||||
import com.jetbrains.fus.reporting.model.http.HttpClientBuilder
|
||||
import com.jetbrains.fus.reporting.model.http.HttpRequestBuilder
|
||||
import com.jetbrains.fus.reporting.model.serialization.Serializer
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class ConfigurationClientFactory {
|
||||
@@ -21,14 +19,6 @@ class ConfigurationClientFactory {
|
||||
* @param productVersion Product version
|
||||
* @param isTestConfiguration Set it to true to use the test configuration url,
|
||||
* otherwise set it false to use the production one.
|
||||
* @param httpClientBuilder FUS-client supports java http client com.jetbrains.fus.reporting.connection.JavaHttpClientBuilder,
|
||||
* You can configure it or use another http client [com.jetbrains.fus.reporting.model.http.HttpClientBuilder].
|
||||
* @param httpRequestBuilder FUS-client supports java http request com.jetbrains.fus.reporting.connection.JavaHttpRequestBuilder,
|
||||
* You can configure it or use another http request [com.jetbrains.fus.reporting.model.http.HttpRequestBuilder].
|
||||
* @param regionCode The region code for the downloading configuration,
|
||||
* configuration url depends on the region code.
|
||||
* Configuration template url for China region code is [com.jetbrains.fus.reporting.configuration.RegionCode.CN].
|
||||
* Configuration template url for all other regions is [com.jetbrains.fus.reporting.configuration.RegionCode.ALL].
|
||||
* @param cacheTimeoutMs The frequency of the downloading configuration, it is 10 minutes by default.
|
||||
* @param serializer FUS-client supports jackson serialization com.jetbrains.fus.reporting.serialization.FusJacksonSerializer,
|
||||
* kotlin serialization com.jetbrains.fus.reporting.serialization.FusKotlinSerializer.
|
||||
@@ -40,20 +30,16 @@ class ConfigurationClientFactory {
|
||||
productCode: String,
|
||||
productVersion: String,
|
||||
isTestConfiguration: Boolean,
|
||||
httpClientBuilder: HttpClientBuilder,
|
||||
httpRequestBuilder: HttpRequestBuilder,
|
||||
regionCode: RegionCode = RegionCode.ALL,
|
||||
httpClient: FusHttpClient,
|
||||
cacheTimeoutMs: Long = TimeUnit.MINUTES.toMillis(10),
|
||||
serializer: Serializer
|
||||
serializer: FusJsonSerializer
|
||||
): ConfigurationClient {
|
||||
return createConfigurationClient(
|
||||
recorderId,
|
||||
productCode,
|
||||
productVersion,
|
||||
isTestConfiguration,
|
||||
httpClientBuilder,
|
||||
httpRequestBuilder,
|
||||
regionCode,
|
||||
httpClient,
|
||||
cacheTimeoutMs,
|
||||
serializer
|
||||
)
|
||||
@@ -64,11 +50,9 @@ class ConfigurationClientFactory {
|
||||
productCode: String,
|
||||
productVersion: String,
|
||||
isTestConfiguration: Boolean,
|
||||
httpClientBuilder: HttpClientBuilder,
|
||||
httpRequestBuilder: HttpRequestBuilder,
|
||||
regionCode: RegionCode,
|
||||
httpClient: FusHttpClient,
|
||||
cacheTimeoutMs: Long,
|
||||
serializer: Serializer
|
||||
serializer: FusJsonSerializer
|
||||
): ConfigurationClient {
|
||||
val eventLogSettingsURLTemplate = "https://stats.openide.ru/storage/fus/config/v4/%s/%s.json"
|
||||
val configurationUrl: String =
|
||||
@@ -81,8 +65,7 @@ class ConfigurationClientFactory {
|
||||
configurationUrl,
|
||||
productCode,
|
||||
productVersion,
|
||||
httpClientBuilder.newClient(configurationUrl),
|
||||
httpRequestBuilder.newGetRequest(configurationUrl),
|
||||
httpClient,
|
||||
serializer,
|
||||
cacheTimeoutMs
|
||||
)
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
//
|
||||
// Modified by Nikita Iarychenko at 2025 as part of the OpenIDE project(https://openide.ru).
|
||||
// Any modifications are available on the same license terms as the original source code.
|
||||
package com.intellij.internal.statistic.eventLog.connection
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude
|
||||
@@ -13,12 +16,11 @@ import com.fasterxml.jackson.databind.json.JsonMapper
|
||||
import com.intellij.internal.statistic.eventLog.EventLogApplicationInfo
|
||||
import com.jetbrains.fus.reporting.FusJsonSerializer
|
||||
import com.jetbrains.fus.reporting.configuration.ConfigurationClient
|
||||
import com.jetbrains.fus.reporting.configuration.ConfigurationClientFactory
|
||||
import com.jetbrains.fus.reporting.configuration.RegionCode
|
||||
import com.jetbrains.fus.reporting.jvm.JvmHttpClient
|
||||
import com.jetbrains.fus.reporting.jvm.ProxyInfo
|
||||
import com.jetbrains.fus.reporting.model.serialization.SerializationException
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.annotations.VisibleForTesting
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
@@ -34,7 +36,8 @@ open class EventLogUploadSettingsClient(
|
||||
cacheTimeoutMs: Long = TimeUnit.MINUTES.toMillis(10)
|
||||
) : EventLogSettingsClient() {
|
||||
companion object {
|
||||
const val chinaRegion: String = "china" //com.intellij.ide.Region.CHINA
|
||||
@VisibleForTesting
|
||||
val chinaRegion: String = "china" //com.intellij.ide.Region.CHINA
|
||||
}
|
||||
override var configurationClient: ConfigurationClient = ConfigurationClientFactory.create(
|
||||
recorderId = recorderId,
|
||||
@@ -49,7 +52,6 @@ open class EventLogUploadSettingsClient(
|
||||
extraHeadersProvider = { applicationInfo.connectionSettings.provideExtraHeaders() },
|
||||
userAgent = applicationInfo.connectionSettings.provideUserAgent()
|
||||
),
|
||||
regionCode = if (applicationInfo.regionalCode == chinaRegion) RegionCode.CN else RegionCode.ALL,
|
||||
serializer = FusJacksonSerializer(),
|
||||
cacheTimeoutMs = cacheTimeoutMs
|
||||
)
|
||||
@@ -127,4 +129,4 @@ open class EventLogUploadSettingsClient(
|
||||
return CustomPrettyPrinter(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,26 +4,22 @@
|
||||
// Any modifications are available on the same license terms as the original source code.
|
||||
package com.intellij.internal.statistic.eventLog.connection
|
||||
|
||||
import com.jetbrains.fus.reporting.FusHttpClient
|
||||
import com.jetbrains.fus.reporting.FusJsonSerializer
|
||||
import com.jetbrains.fus.reporting.configuration.ConfigurationClient
|
||||
import com.jetbrains.fus.reporting.model.config.v4.Configuration
|
||||
import com.jetbrains.fus.reporting.model.config.v4.ConfigurationVersion
|
||||
import com.jetbrains.fus.reporting.model.exceptions.StatsResponseException
|
||||
import com.jetbrains.fus.reporting.model.http.HttpClient
|
||||
import com.jetbrains.fus.reporting.model.http.HttpRequest
|
||||
import com.jetbrains.fus.reporting.model.http.HttpResponse
|
||||
import com.jetbrains.fus.reporting.HttpResponse
|
||||
import com.jetbrains.fus.reporting.model.serialization.SerializationException
|
||||
import com.jetbrains.fus.reporting.model.serialization.Serializer
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
internal class RemoteConfigurationClient internal constructor(
|
||||
override val configurationUrl: String,
|
||||
override val productCode: String,
|
||||
private val productVersion: String,
|
||||
private val httpClient: HttpClient,
|
||||
private val httpRequest: HttpRequest,
|
||||
private val serializer: Serializer,
|
||||
private val httpClient: FusHttpClient,
|
||||
private val serializer: FusJsonSerializer,
|
||||
cacheTimeoutMs: Long
|
||||
) : ConfigurationClient() {
|
||||
private val cachedConfigurationVersion: StatisticsCachingSupplier<ConfigurationVersion?> =
|
||||
@@ -46,27 +42,23 @@ internal class RemoteConfigurationClient internal constructor(
|
||||
private fun loadConfiguration(): ConfigurationVersion? {
|
||||
val processor = object : ResponseProcessor<ConfigurationVersion?> {
|
||||
override fun onSucceed(response: HttpResponse): ConfigurationVersion? {
|
||||
val responseContent: InputStream? = response.read()
|
||||
if (responseContent != null) {
|
||||
val content = responseContent.bufferedReader(StandardCharsets.UTF_8).use { reader ->
|
||||
reader.readText()
|
||||
}
|
||||
val configuration = serializer.deserializeConfiguration(content)
|
||||
return configuration.findProductVersion(productVersion)
|
||||
}
|
||||
return null
|
||||
val content = response.body ?: return null
|
||||
val configuration = serializer.fromJson(content, Configuration::class.java)
|
||||
return configuration.findProductVersion(productVersion)
|
||||
}
|
||||
}
|
||||
val statsRequestResult = HttpClientProcessor.send(httpClient, httpRequest, processor)
|
||||
if (statsRequestResult.errorCode != -1)
|
||||
throw StatsResponseException(
|
||||
"Http response status code to get fus reporting " +
|
||||
"configuration: ${statsRequestResult.errorCode}. " +
|
||||
"Configuration url: $configurationUrl. " +
|
||||
"Product code: $productCode. " +
|
||||
"Product version: $productVersion."
|
||||
)
|
||||
return statsRequestResult.result
|
||||
val statsRequestResult = HttpClientProcessor.send(httpClient, configurationUrl, processor)
|
||||
|
||||
if (statsRequestResult.errorCode == -1) {
|
||||
return statsRequestResult.result
|
||||
}
|
||||
|
||||
throw StatsResponseException(
|
||||
"Http response status code to get fus reporting configuration: ${statsRequestResult.errorCode}. " +
|
||||
"Configuration url: $configurationUrl. " +
|
||||
"Product code: $productCode. " +
|
||||
"Product version: $productVersion."
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,8 +85,8 @@ internal object HttpClientProcessor {
|
||||
*
|
||||
*/
|
||||
@Throws(IOException::class, InterruptedException::class, SecurityException::class)
|
||||
fun <T> send(httpClient: HttpClient, httpRequest: HttpRequest, processor: ResponseProcessor<T>): RequestResult<T?> {
|
||||
val response = trySend(httpClient, httpRequest)
|
||||
fun <T> send(httpClient: FusHttpClient, url: String, processor: ResponseProcessor<T>): RequestResult<T?> {
|
||||
val response = trySend(httpClient, url)
|
||||
val code = response?.statusCode
|
||||
if (code == SUCCESS_CODE) {
|
||||
val result: T = processor.onSucceed(response)
|
||||
@@ -105,17 +97,26 @@ internal object HttpClientProcessor {
|
||||
}
|
||||
|
||||
@Throws(IOException::class, InterruptedException::class, SecurityException::class)
|
||||
private fun trySend(httpClient: HttpClient, httpRequest: HttpRequest): HttpResponse? {
|
||||
private fun trySend(httpClient: FusHttpClient, url: String): HttpResponse? {
|
||||
var retryCounter = 0
|
||||
|
||||
while (retryCounter < MAX_RETRIES) {
|
||||
val response = httpClient.send(httpRequest)
|
||||
retryCounter++
|
||||
if (CAN_RETRY_CODES.contains(response.statusCode) && (retryCounter != MAX_RETRIES - 1)) {
|
||||
Thread.sleep(RETRY_INTERVAL.toLong())
|
||||
} else {
|
||||
return response
|
||||
val response = try {
|
||||
httpClient.get(url)
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
}
|
||||
|
||||
retryCounter++
|
||||
|
||||
if ((response == null || response.statusCode in CAN_RETRY_CODES) && retryCounter != MAX_RETRIES - 1) {
|
||||
Thread.sleep(RETRY_INTERVAL.toLong())
|
||||
continue
|
||||
}
|
||||
|
||||
return response
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user