Skip to content

Commit 13cab18

Browse files
committed
rename client -> currentClient
1 parent 95b7b9a commit 13cab18

23 files changed

+84
-57
lines changed

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/UTBotStartupActivity.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package org.utbot.cpp.clion.plugin
22

33
import com.intellij.ide.util.RunOnceUtil
4-
import com.intellij.openapi.components.service
54
import com.intellij.openapi.project.Project
65
import com.intellij.openapi.startup.StartupActivity
76
import org.utbot.cpp.clion.plugin.client.Client
8-
import org.utbot.cpp.clion.plugin.settings.UTBotPluginSpecificSettings
97
import org.utbot.cpp.clion.plugin.settings.pluginSettings
108
import org.utbot.cpp.clion.plugin.settings.settings
119
import org.utbot.cpp.clion.plugin.ui.wizard.UTBotWizard
12-
import org.utbot.cpp.clion.plugin.utils.getClient
10+
import org.utbot.cpp.clion.plugin.utils.getCurrentClient
1311
import org.utbot.cpp.clion.plugin.utils.invokeOnEdt
1412

1513
class UTBotStartupActivity : StartupActivity {
1614
override fun runActivity(project: Project) {
1715

18-
project.getClient()
16+
project.getCurrentClient()
1917
guessPathsOnFirstProjectOpen(project)
2018
showWizardOnFirstProjectOpen(project)
2119
}

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateBuildDir.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.utbot.cpp.clion.plugin.client.requests.CreateBuildDirRequest
77

88
class AskServerToGenerateBuildDir : AnAction(UTBot.message("projectConfigure.generate.buildDir")) {
99

10-
override fun actionPerformed(e: AnActionEvent) = CreateBuildDirRequest(e).execute()
10+
override fun actionPerformed(e: AnActionEvent) = CreateBuildDirRequest(e).executeUsingCurrentClient()
1111

1212
override fun update(e: AnActionEvent) {
1313
e.presentation.isEnabledAndVisible = e.project != null

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateJsonForProjectConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.utbot.cpp.clion.plugin.client.requests.GenerateJsonFilesRequest
77

88
class AskServerToGenerateJsonForProjectConfiguration : AnAction(UTBot.message("projectConfigure.generate.json")) {
99

10-
override fun actionPerformed(e: AnActionEvent) = GenerateJsonFilesRequest(e).execute()
10+
override fun actionPerformed(e: AnActionEvent) = GenerateJsonFilesRequest(e).executeUsingCurrentClient()
1111

1212
override fun update(e: AnActionEvent) {
1313
e.presentation.isEnabledAndVisible = e.project != null

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ConfigureProjectAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.utbot.cpp.clion.plugin.utils.activeProject
88

99
class ConfigureProjectAction : AnAction(UTBot.message("projectConfigure.configure")) {
1010

11-
override fun actionPerformed(e: AnActionEvent) = CheckProjectConfigurationRequest(e.activeProject()).execute()
11+
override fun actionPerformed(e: AnActionEvent) = CheckProjectConfigurationRequest(e.activeProject()).executeUsingCurrentClient()
1212

1313
override fun update(e: AnActionEvent) {
1414
e.presentation.isEnabledAndVisible = e.project != null

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ReconfigureProjectAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class ReconfigureProjectAction: AnAction(UTBot.message("projectConfigure.reconfi
1515
CheckProjectConfigurationRequest(
1616
getProjectConfigGrpcRequest(project, Testgen.ConfigMode.ALL),
1717
project,
18-
).execute()
18+
).executeUsingCurrentClient()
1919
}
2020

2121
override fun update(e: AnActionEvent) {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/BaseGenerateTestsAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ package org.utbot.cpp.clion.plugin.actions.generate
22

33
import com.intellij.openapi.actionSystem.AnAction
44
import com.intellij.openapi.actionSystem.AnActionEvent
5-
import org.utbot.cpp.clion.plugin.utils.client
5+
import org.utbot.cpp.clion.plugin.utils.currentClient
66

77
abstract class BaseGenerateTestsAction : AnAction() {
88

99
override fun update(e: AnActionEvent) {
1010
val isDefined: Boolean = isDefined(e)
1111

1212
e.presentation.isVisible = isDefined
13-
e.presentation.isEnabled = isDefined && e.client.isServerAvailable()
13+
e.presentation.isEnabled = isDefined && e.currentClient.isServerAvailable()
1414
}
1515

1616
/**

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class GenerateForAssertionAction : BaseGenerateTestsAction() {
1111
AssertionRequest(
1212
getAssertionGrpcRequest(e),
1313
e.activeProject(),
14-
).execute()
14+
).executeUsingCurrentClient()
1515

1616
override fun isDefined(e: AnActionEvent): Boolean {
1717
val project = e.project

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForClassAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class GenerateForClassAction : BaseGenerateTestsAction() {
1212
ClassRequest(
1313
getClassGrpcRequest(e),
1414
e.activeProject(),
15-
).execute()
15+
).executeUsingCurrentClient()
1616

1717
override fun isDefined(e: AnActionEvent): Boolean {
1818
val project = e.project

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class GenerateForFileAction : BaseGenerateTestsAction() {
1212
FileRequest(
1313
getFileGrpcRequest(e),
1414
e.activeProject(),
15-
).execute()
15+
).executeUsingCurrentClient()
1616

1717
// action is available only if the selected file ends in .cpp, .hpp, .c or .h
1818
override fun isDefined(e: AnActionEvent): Boolean {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFolderAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class GenerateForFolderAction : BaseGenerateTestsAction() {
1111
FolderRequest(
1212
getFolderGrpcRequest(e),
1313
e.activeProject()
14-
).execute()
14+
).executeUsingCurrentClient()
1515

1616
override fun isDefined(e: AnActionEvent): Boolean {
1717
val project = e.project

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFunctionAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class GenerateForFunctionAction : BaseGenerateTestsAction() {
1212
FunctionRequest(
1313
getFunctionGrpcRequest(e),
1414
e.activeProject()
15-
).execute()
15+
).executeUsingCurrentClient()
1616

1717
override fun isDefined(e: AnActionEvent): Boolean {
1818
val project = e.project

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class GenerateForLineAction : BaseGenerateTestsAction() {
1111
LineRequest(
1212
getLineGrpcRequest(e),
1313
e.activeProject(),
14-
).execute()
14+
).executeUsingCurrentClient()
1515

1616
override fun isDefined(e: AnActionEvent): Boolean {
1717
val project = e.project

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.utbot.cpp.clion.plugin.grpc.getPredicateGrpcRequest
1414
import org.utbot.cpp.clion.plugin.client.requests.FunctionReturnTypeRequest
1515
import org.utbot.cpp.clion.plugin.client.requests.PredicateRequest
1616
import org.utbot.cpp.clion.plugin.utils.activeProject
17-
import org.utbot.cpp.clion.plugin.utils.client
17+
import org.utbot.cpp.clion.plugin.utils.currentClient
1818
import org.utbot.cpp.clion.plugin.utils.notifyError
1919
import testsgen.Util.ValidationType
2020
import java.awt.Dimension
@@ -48,7 +48,7 @@ class GenerateForPredicateAction : BaseGenerateTestsAction() {
4848
getPredicateGrpcRequest(e, comparisonOperator, validationType, valueToCompare),
4949
e.activeProject()
5050
).apply {
51-
e.client.executeRequest(this)
51+
e.currentClient.executeRequestIfNotDisposed(this)
5252
}
5353

5454
// ask for comparison operator to use in predicate
@@ -111,7 +111,7 @@ class GenerateForPredicateAction : BaseGenerateTestsAction() {
111111
}
112112
}
113113
}.apply {
114-
e.client.executeRequest(this)
114+
e.currentClient.executeRequestIfNotDisposed(this)
115115
}
116116
}
117117

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import com.intellij.openapi.actionSystem.AnActionEvent
44
import org.utbot.cpp.clion.plugin.grpc.getProjectGrpcRequest
55
import org.utbot.cpp.clion.plugin.client.requests.ProjectRequest
66
import org.utbot.cpp.clion.plugin.utils.activeProject
7-
import org.utbot.cpp.clion.plugin.utils.client
7+
import org.utbot.cpp.clion.plugin.utils.currentClient
88

99
class GenerateForProjectAction : BaseGenerateTestsAction() {
1010
override fun actionPerformed(e: AnActionEvent) {
1111
ProjectRequest(
1212
getProjectGrpcRequest(e),
1313
e.activeProject(),
1414
).apply {
15-
e.client.executeRequest(this)
15+
e.currentClient.executeRequestIfNotDisposed(this)
1616
}
1717
}
1818

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class GenerateForSnippetAction : BaseGenerateTestsAction() {
1111
SnippetRequest(
1212
getSnippetGrpcRequest(e),
1313
e.activeProject(),
14-
).execute()
14+
).executeUsingCurrentClient()
1515
}
1616

1717
override fun isDefined(e: AnActionEvent): Boolean {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/RunWithCoverageAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class RunWithCoverageAction(val element: PsiElement) : BaseGenerateTestsAction()
2323
RunWithCoverageRequest(
2424
getCoverageAndResultsGrpcRequest(project, filePath, suiteName, testedMethodName),
2525
project,
26-
).execute()
26+
).executeUsingCurrentClient()
2727
}
2828

2929
override fun isDefined(e: AnActionEvent): Boolean {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/Client.kt

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import kotlinx.coroutines.isActive
1515
import kotlinx.coroutines.launch
1616
import kotlinx.coroutines.runBlocking
1717
import kotlinx.coroutines.withTimeout
18+
import org.jetbrains.annotations.TestOnly
1819
import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest
1920
import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest
2021
import org.utbot.cpp.clion.plugin.listeners.ConnectionStatus
@@ -39,6 +40,8 @@ class Client(
3940
private val messageBus = project.messageBus
4041
private var newClient = true
4142
private val logger = project.logger
43+
var isDisposed = false
44+
private set
4245

4346
/*
4447
* need to provide handler explicitly, otherwise the exception is thrown:
@@ -64,7 +67,16 @@ class Client(
6467
startPeriodicHeartBeat()
6568
}
6669

67-
fun executeRequest(request: Request) {
70+
fun executeRequestIfNotDisposed(request: Request) {
71+
if (isDisposed) {
72+
// if client is disposed, then connection settings were changed, and requests issued to this client
73+
// are no longer relevant, so we don't execute them
74+
return
75+
}
76+
executeRequestImpl(request)
77+
}
78+
79+
private fun executeRequestImpl(request: Request) {
6880
requestsCS.launch {
6981
try {
7082
request.execute(stub, coroutineContext[Job])
@@ -74,12 +86,12 @@ class Client(
7486
}
7587
}
7688

77-
fun configureProject() {
89+
private fun configureProject() {
7890
CheckProjectConfigurationRequest(
7991
getProjectConfigGrpcRequest(project, Testgen.ConfigMode.CHECK),
8092
project,
8193
).also {
82-
executeRequest(it)
94+
this.executeRequestIfNotDisposed(it)
8395
}
8496
}
8597

@@ -168,14 +180,15 @@ class Client(
168180
override fun dispose() {
169181
logger.trace { "Disposing client!" }
170182
// when project is closed, cancel all running coroutines
171-
// cancelAllRequestsAndWaitForCancellation()
172183
requestsCS.cancel()
173184
servicesCS.cancel()
174185
// release resources associated with grpc
175186
close()
176187
logger.trace { "Finished disposing client!" }
177188
}
178189

190+
// should be used only in tests
191+
@TestOnly
179192
fun waitForServerRequestsToFinish(timeout: Long = SERVER_TIMEOUT) {
180193
runBlocking {
181194
withTimeout(timeout) {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/handlers/ProjectConfigurationHandler.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import kotlinx.coroutines.flow.Flow
66
import org.utbot.cpp.clion.plugin.UTBot
77
import org.utbot.cpp.clion.plugin.actions.AskServerToGenerateBuildDir
88
import org.utbot.cpp.clion.plugin.actions.AskServerToGenerateJsonForProjectConfiguration
9+
import org.utbot.cpp.clion.plugin.client.Client
10+
import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest
11+
import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest
912
import org.utbot.cpp.clion.plugin.settings.settings
10-
import org.utbot.cpp.clion.plugin.utils.getClient
1113
import org.utbot.cpp.clion.plugin.utils.logger
1214
import org.utbot.cpp.clion.plugin.utils.notifyError
1315
import org.utbot.cpp.clion.plugin.utils.notifyInfo
@@ -71,16 +73,24 @@ class CheckProjectConfigurationHandler(
7173
}
7274

7375
class CreateBuildDirHandler(
74-
project: Project,
76+
val client: Client,
7577
grpcStream: Flow<Testgen.ProjectConfigResponse>,
7678
progressName: String,
7779
cancellationJob: Job
78-
) : ProjectConfigResponseHandler(project, grpcStream, progressName, cancellationJob) {
80+
) : ProjectConfigResponseHandler(client.project, grpcStream, progressName, cancellationJob) {
7981
override fun handle(response: Testgen.ProjectConfigResponse) {
8082
when (response.type) {
8183
Testgen.ProjectConfigStatus.IS_OK -> {
8284
notifyInfo("Build directory was created!", project)
83-
project.getClient().configureProject()
85+
86+
CheckProjectConfigurationRequest(
87+
getProjectConfigGrpcRequest(project, Testgen.ConfigMode.CHECK),
88+
project,
89+
).also {
90+
if (!client.isDisposed) {
91+
client.executeRequestIfNotDisposed(it)
92+
}
93+
}
8494
}
8595
Testgen.ProjectConfigStatus.BUILD_DIR_CREATION_FAILED -> {
8696
notifyInfo("Failed to create build directory! ${response.message}", project)

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/BaseRequest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import kotlinx.coroutines.flow.Flow
66
import org.utbot.cpp.clion.plugin.actions.FocusAction
77
import org.utbot.cpp.clion.plugin.client.Request
88
import org.utbot.cpp.clion.plugin.client.handlers.TestsStreamHandler
9-
import org.utbot.cpp.clion.plugin.utils.getClient
9+
import org.utbot.cpp.clion.plugin.utils.getCurrentClient
1010
import org.utbot.cpp.clion.plugin.utils.getLongestCommonPathFromRoot
1111
import org.utbot.cpp.clion.plugin.utils.isHeader
1212
import org.utbot.cpp.clion.plugin.utils.logger
@@ -30,8 +30,8 @@ abstract class BaseRequest<X, Y>(val request: X, val project: Project) : Request
3030

3131
abstract suspend fun Y.handle(cancellationJob: Job?)
3232

33-
fun execute() {
34-
project.getClient().executeRequest(this)
33+
fun executeUsingCurrentClient() {
34+
project.getCurrentClient().executeRequestIfNotDisposed(this)
3535
}
3636

3737
open fun logRequest() {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CreateBuildFolderRequest.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
11
package org.utbot.cpp.clion.plugin.client.requests
22

33
import com.intellij.openapi.actionSystem.AnActionEvent
4-
import com.intellij.openapi.project.Project
54
import kotlinx.coroutines.Job
65
import kotlinx.coroutines.flow.Flow
76
import org.utbot.cpp.clion.plugin.UTBot
7+
import org.utbot.cpp.clion.plugin.client.Client
88
import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest
99
import org.utbot.cpp.clion.plugin.client.handlers.CreateBuildDirHandler
10+
import org.utbot.cpp.clion.plugin.utils.getCurrentClient
1011
import testsgen.Testgen
1112
import testsgen.TestsGenServiceGrpcKt
1213

1314
class CreateBuildDirRequest(
14-
project: Project,
15+
val client: Client,
1516
request: Testgen.ProjectConfigRequest,
16-
): BaseRequest<Testgen.ProjectConfigRequest, Flow<Testgen.ProjectConfigResponse>>(request, project) {
17+
) : BaseRequest<Testgen.ProjectConfigRequest, Flow<Testgen.ProjectConfigResponse>>(request, client.project) {
1718
override val logMessage: String = "Sending request to check project configuration."
1819

19-
constructor(e: AnActionEvent): this(e.project!!, getProjectConfigGrpcRequest(e.project!!, Testgen.ConfigMode.CREATE_BUILD_DIR))
20+
constructor(e: AnActionEvent) : this(
21+
e.project?.getCurrentClient() ?: error("project is null for event: $e"),
22+
getProjectConfigGrpcRequest(e.project!!, Testgen.ConfigMode.CREATE_BUILD_DIR)
23+
)
2024

2125
override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow<Testgen.ProjectConfigResponse> {
2226
return this.configureProject(request)
@@ -25,7 +29,7 @@ class CreateBuildDirRequest(
2529
override suspend fun Flow<Testgen.ProjectConfigResponse>.handle(cancellationJob: Job?) {
2630
if (cancellationJob?.isActive == true) {
2731
CreateBuildDirHandler(
28-
project,
32+
client,
2933
this,
3034
UTBot.message("requests.buildDir.description.progress"),
3135
cancellationJob

0 commit comments

Comments
 (0)