3
3
4
4
package software.aws.toolkits.jetbrains.services.lambda.execution.sam
5
5
6
+ import com.intellij.execution.ExecutionResult
6
7
import com.intellij.execution.configurations.RunProfile
7
8
import com.intellij.execution.configurations.RunProfileState
8
9
import com.intellij.execution.configurations.RunnerSettings
@@ -12,6 +13,9 @@ import com.intellij.execution.runners.AsyncProgramRunner
12
13
import com.intellij.execution.runners.ExecutionEnvironment
13
14
import com.intellij.execution.runners.RunContentBuilder
14
15
import com.intellij.execution.ui.RunContentDescriptor
16
+ import com.intellij.openapi.application.ModalityState
17
+ import com.intellij.openapi.application.ReadAction
18
+ import com.intellij.util.concurrency.AppExecutorUtil
15
19
import org.jetbrains.concurrency.AsyncPromise
16
20
import org.jetbrains.concurrency.Promise
17
21
import org.slf4j.event.Level
@@ -68,11 +72,14 @@ class SamInvokeRunner : AsyncProgramRunner<RunnerSettings>() {
68
72
69
73
override fun execute (environment : ExecutionEnvironment , state : RunProfileState ): Promise <RunContentDescriptor ?> {
70
74
val runPromise = AsyncPromise <RunContentDescriptor ?>()
71
- val runContentDescriptor = state.execute(environment.executor, this )?.let {
72
- RunContentBuilder (it, environment).showRunContent(environment.contentToReuse)
73
- }
74
-
75
- runPromise.setResult(runContentDescriptor)
75
+ ReadAction .nonBlocking<ExecutionResult > {
76
+ state.execute(environment.executor, this )
77
+ }.finishOnUiThread(ModalityState .any()) { executionResult ->
78
+ executionResult?.let {
79
+ val runContent = RunContentBuilder (it, environment).showRunContent(environment.contentToReuse)
80
+ runPromise.setResult(runContent)
81
+ }
82
+ }.submit(AppExecutorUtil .getAppExecutorService())
76
83
77
84
return runPromise
78
85
}
0 commit comments