mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
simplify BaseProgramRunner - part 3
GitOrigin-RevId: 25b4d2bb8cfbabf5b32d0184ad538dfdc7cb450b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
30a3d2dcae
commit
e6c76011b3
@@ -147,9 +147,9 @@ public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDeb
|
||||
}
|
||||
|
||||
@Override
|
||||
public void patch(JavaParameters javaParameters, RunnerSettings settings, RunProfile runProfile, final boolean beforeExecution) throws ExecutionException {
|
||||
public void patch(JavaParameters javaParameters, RunnerSettings settings, RunProfile runProfile, boolean beforeExecution) throws ExecutionException {
|
||||
doPatch(javaParameters, settings, beforeExecution);
|
||||
runCustomPatchers(javaParameters, Executor.EXECUTOR_EXTENSION_NAME.findExtension(DefaultDebugExecutor.class), runProfile);
|
||||
runCustomPatchers(javaParameters, Executor.EXECUTOR_EXTENSION_NAME.findExtensionOrFail(DefaultDebugExecutor.class), runProfile);
|
||||
}
|
||||
|
||||
private static RemoteConnection doPatch(final JavaParameters javaParameters, final RunnerSettings settings, boolean beforeExecution)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="intellij.java" />
|
||||
<orderEntry type="module" module-name="intellij.java.resources" />
|
||||
<orderEntry type="library" name="kotlin-stdlib-jdk8" level="project" />
|
||||
</component>
|
||||
<component name="copyright">
|
||||
<Base>
|
||||
|
||||
+26
-27
@@ -1,35 +1,34 @@
|
||||
// Copyright 2000-2019 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.execution.runners;
|
||||
package com.intellij.execution.runners
|
||||
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.configurations.JavaParameters;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.configurations.RunProfileState;
|
||||
import com.intellij.execution.configurations.RunnerSettings;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.concurrency.Promise;
|
||||
import org.jetbrains.concurrency.Promises;
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.execution.Executor
|
||||
import com.intellij.execution.configurations.JavaParameters
|
||||
import com.intellij.execution.configurations.RunProfile
|
||||
import com.intellij.execution.configurations.RunProfileState
|
||||
import com.intellij.execution.configurations.RunnerSettings
|
||||
import com.intellij.execution.ui.RunContentDescriptor
|
||||
import org.jetbrains.concurrency.resolvedPromise
|
||||
|
||||
public abstract class JavaPatchableProgramRunner<Settings extends RunnerSettings> extends AsyncProgramRunner<Settings> {
|
||||
public abstract void patch(JavaParameters javaParameters, RunnerSettings settings, RunProfile runProfile, final boolean beforeExecution)
|
||||
throws ExecutionException;
|
||||
|
||||
protected static void runCustomPatchers(JavaParameters javaParameters, Executor executor, RunProfile runProfile) {
|
||||
if (runProfile != null) {
|
||||
JavaProgramPatcher.EP_NAME.forEachExtensionSafe(patcher -> {
|
||||
patcher.patchJavaParameters(executor, runProfile, javaParameters);
|
||||
});
|
||||
// due to backward compatibility, we cannot get rid of GenericProgramRunner inheritance
|
||||
abstract class JavaPatchableProgramRunner<Settings : RunnerSettings> : GenericProgramRunner<Settings>() {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
protected fun runCustomPatchers(javaParameters: JavaParameters, executor: Executor, runProfile: RunProfile) {
|
||||
JavaProgramPatcher.EP_NAME.forEachExtensionSafe {
|
||||
it.patchJavaParameters(executor, runProfile, javaParameters)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected final Promise<RunContentDescriptor> execute(@NotNull ExecutionEnvironment environment, @NotNull RunProfileState state)
|
||||
throws ExecutionException {
|
||||
return Promises.resolvedPromise(doExecute(state, environment));
|
||||
@Throws(ExecutionException::class)
|
||||
abstract fun patch(javaParameters: JavaParameters?, settings: RunnerSettings?, runProfile: RunProfile?, beforeExecution: Boolean)
|
||||
|
||||
@Throws(ExecutionException::class)
|
||||
final override fun execute(environment: ExecutionEnvironment, callback: ProgramRunner.Callback?, state: RunProfileState) {
|
||||
startRunProfile(environment, state, callback, { resolvedPromise(doExecute(state, environment)) })
|
||||
}
|
||||
|
||||
protected abstract RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException;
|
||||
}
|
||||
@Throws(ExecutionException::class)
|
||||
abstract override fun doExecute(state: RunProfileState, environment: ExecutionEnvironment): RunContentDescriptor?
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
package com.intellij.execution.runners
|
||||
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.execution.RunManager.Companion.getInstance
|
||||
import com.intellij.execution.RunManager
|
||||
import com.intellij.execution.configurations.RunProfileState
|
||||
import com.intellij.execution.configurations.RunnerSettings
|
||||
|
||||
@@ -10,10 +10,15 @@ abstract class BaseProgramRunner<Settings : RunnerSettings?> : ProgramRunner<Set
|
||||
@Throws(ExecutionException::class)
|
||||
override fun execute(environment: ExecutionEnvironment, callback: ProgramRunner.Callback?) {
|
||||
val state = environment.state ?: return
|
||||
getInstance(environment.project).refreshUsagesList(environment.runProfile)
|
||||
RunManager.getInstance(environment.project).refreshUsagesList(environment.runProfile)
|
||||
execute(environment, callback, state)
|
||||
}
|
||||
|
||||
@Throws(ExecutionException::class)
|
||||
protected abstract fun execute(environment: ExecutionEnvironment, callback: ProgramRunner.Callback?, state: RunProfileState)
|
||||
|
||||
// prevent overriding
|
||||
final override fun execute(environment: ExecutionEnvironment) {
|
||||
execute(environment, null)
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,13 @@ package com.intellij.execution.runners
|
||||
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.execution.ExecutionManager
|
||||
import com.intellij.execution.RunManager
|
||||
import com.intellij.execution.RunProfileStarter
|
||||
import com.intellij.execution.configurations.RunProfileState
|
||||
import com.intellij.execution.configurations.RunnerSettings
|
||||
import com.intellij.execution.ui.RunContentDescriptor
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.concurrency.Promise
|
||||
import org.jetbrains.concurrency.resolvedPromise
|
||||
|
||||
@@ -35,8 +37,11 @@ abstract class GenericProgramRunner<Settings : RunnerSettings> : BaseProgramRunn
|
||||
}
|
||||
}
|
||||
|
||||
abstract class AsyncProgramRunner<Settings : RunnerSettings> : BaseProgramRunner<Settings>() {
|
||||
final override fun execute(environment: ExecutionEnvironment, callback: ProgramRunner.Callback?, state: RunProfileState) {
|
||||
abstract class AsyncProgramRunner<Settings : RunnerSettings> : ProgramRunner<Settings> {
|
||||
@Throws(ExecutionException::class)
|
||||
final override fun execute(environment: ExecutionEnvironment, callback: ProgramRunner.Callback?) {
|
||||
val state = environment.state ?: return
|
||||
RunManager.getInstance(environment.project).refreshUsagesList(environment.runProfile)
|
||||
startRunProfile(environment, state, callback) {
|
||||
execute(environment, state)
|
||||
}
|
||||
@@ -44,9 +49,18 @@ abstract class AsyncProgramRunner<Settings : RunnerSettings> : BaseProgramRunner
|
||||
|
||||
@Throws(ExecutionException::class)
|
||||
protected abstract fun execute(environment: ExecutionEnvironment, state: RunProfileState): Promise<RunContentDescriptor?>
|
||||
|
||||
// prevent overriding
|
||||
final override fun execute(environment: ExecutionEnvironment) {
|
||||
execute(environment, null)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun startRunProfile(environment: ExecutionEnvironment, state: RunProfileState, callback: ProgramRunner.Callback?, starter: () -> Promise<RunContentDescriptor?>) {
|
||||
/**
|
||||
* Internal usage only. Maybe removed or changed in any moment. No backward compatibility.
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
fun startRunProfile(environment: ExecutionEnvironment, state: RunProfileState, callback: ProgramRunner.Callback?, starter: () -> Promise<RunContentDescriptor?>) {
|
||||
ExecutionManager.getInstance(environment.project).startRunProfile(object : RunProfileStarter() {
|
||||
override fun executeAsync(state: RunProfileState, environment: ExecutionEnvironment): Promise<RunContentDescriptor> {
|
||||
// errors are handled by com.intellij.execution.ExecutionManager.startRunProfile
|
||||
|
||||
@@ -89,9 +89,7 @@ public interface ProgramRunner<Settings extends RunnerSettings> {
|
||||
return null;
|
||||
}
|
||||
|
||||
default void execute(@NotNull ExecutionEnvironment environment) throws ExecutionException {
|
||||
execute(environment, null);
|
||||
}
|
||||
void execute(@NotNull ExecutionEnvironment environment) throws ExecutionException;
|
||||
|
||||
void execute(@NotNull ExecutionEnvironment environment, @Nullable Callback callback) throws ExecutionException;
|
||||
}
|
||||
Reference in New Issue
Block a user