diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateStrategy.kt b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateStrategy.kt index 4945a0a316a0..f191f01e6232 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateStrategy.kt +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateStrategy.kt @@ -4,22 +4,26 @@ package com.intellij.openapi.updateSettings.impl import com.intellij.openapi.updateSettings.UpdateStrategyCustomization import com.intellij.openapi.util.BuildNumber import com.intellij.util.containers.MultiMap -import com.intellij.util.graph.GraphAlgorithms import com.intellij.util.graph.InboundSemiGraph +import com.intellij.util.graph.impl.ShortestPathFinder import org.jetbrains.annotations.ApiStatus -import java.util.* private val NUMBER = Regex("\\d+") -class UpdateStrategy(private val currentBuild: BuildNumber, private val product: Product?, private val settings: UpdateSettings) { +class UpdateStrategy(private val currentBuild: BuildNumber, + private val product: Product?, + private val settings: UpdateSettings, + private val customization: UpdateStrategyCustomization) { + + constructor(currentBuild: BuildNumber, product: Product?, settings: UpdateSettings) : + this(currentBuild, product, settings, UpdateStrategyCustomization.getInstance()) + @Deprecated("Please use `UpdateStrategy(BuildNumber, Product, UpdateSettings)` instead") @ApiStatus.ScheduledForRemoval(inVersion = "2022.2") @Suppress("DEPRECATION") constructor(currentBuild: BuildNumber, updates: UpdatesInfo, settings: UpdateSettings) : this(currentBuild, updates.product, settings) - private val customization = UpdateStrategyCustomization.getInstance() - enum class State { LOADED, CONNECTION_ERROR, NOTHING_LOADED } @@ -84,7 +88,7 @@ class UpdateStrategy(private val currentBuild: BuildNumber, private val product: override fun getNodes() = upgrades.keySet() + upgrades.values() override fun getIn(n: BuildNumber) = upgrades[n].iterator() } - val path = GraphAlgorithms.getInstance().findShortestPath(graph, from.withoutProductCode(), newBuild.number.withoutProductCode()) + val path = ShortestPathFinder(graph).findPath(from.withoutProductCode(), newBuild.number.withoutProductCode()) if (path == null || path.size <= 2) return null var total = 0 diff --git a/platform/platform-tests/testSrc/com/intellij/ide/updates/UpdateStrategyTest.kt b/platform/platform-tests/testSrc/com/intellij/ide/updates/UpdateStrategyTest.kt index 8faa1f1e39e4..d7d95333dc93 100644 --- a/platform/platform-tests/testSrc/com/intellij/ide/updates/UpdateStrategyTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/ide/updates/UpdateStrategyTest.kt @@ -1,16 +1,16 @@ // Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.updates +import com.intellij.openapi.updateSettings.UpdateStrategyCustomization import com.intellij.openapi.updateSettings.impl.* import com.intellij.openapi.util.BuildNumber import com.intellij.openapi.util.JDOMUtil -import com.intellij.testFramework.fixtures.BareTestFixtureTestCase import org.assertj.core.api.Assertions.assertThat import org.junit.Assert.* import org.junit.Test // unless stated otherwise, the behavior described in cases is true for 162+ -class UpdateStrategyTest : BareTestFixtureTestCase() { +class UpdateStrategyTest { @Test fun `channel contains no builds`() { val result = check("IU-145.258", ChannelStatus.RELEASE, """""") assertNull(result.newBuild) @@ -286,7 +286,8 @@ class UpdateStrategyTest : BareTestFixtureTestCase() { val settings = UpdateSettings() settings.selectedChannelStatus = selectedChannel settings.ignoredBuildNumbers += ignoredBuilds - val result = UpdateStrategy(BuildNumber.fromString(currentBuild)!!, product, settings).checkForUpdates() + val customization = UpdateStrategyCustomization() + val result = UpdateStrategy(BuildNumber.fromString(currentBuild)!!, product, settings, customization).checkForUpdates() assertEquals(UpdateStrategy.State.LOADED, result.state) return result }