mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
convert GenericProgramRunner to kotlin
This commit is contained in:
@@ -13,46 +13,60 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.execution.runners;
|
||||
package com.intellij.execution.runners
|
||||
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.ExecutionManager;
|
||||
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.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.execution.ExecutionManager
|
||||
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.concurrency.Promise
|
||||
|
||||
public abstract class GenericProgramRunner<Settings extends RunnerSettings> extends BaseProgramRunner<Settings> {
|
||||
@Override
|
||||
protected void execute(@NotNull ExecutionEnvironment environment, @Nullable final Callback callback, @NotNull RunProfileState state)
|
||||
throws ExecutionException {
|
||||
ExecutionManager.getInstance(environment.getProject()).startRunProfile(new RunProfileStarter() {
|
||||
@Override
|
||||
public RunContentDescriptor execute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
|
||||
return postProcess(environment, doExecute(state, environment), callback);
|
||||
}
|
||||
}, state, environment);
|
||||
abstract class GenericProgramRunner<Settings : RunnerSettings> : BaseProgramRunner<Settings>() {
|
||||
@Throws(ExecutionException::class)
|
||||
override fun execute(environment: ExecutionEnvironment, callback: ProgramRunner.Callback?, state: RunProfileState) {
|
||||
ExecutionManager.getInstance(environment.project).startRunProfile(runProfileStarter { state, environment ->
|
||||
BaseProgramRunner.postProcess(environment, doExecute(state, environment), callback)
|
||||
}, state, environment)
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
|
||||
//noinspection deprecation
|
||||
return doExecute(environment.getProject(), state, environment.getContentToReuse(), environment);
|
||||
@Throws(ExecutionException::class)
|
||||
protected open fun doExecute(state: RunProfileState, environment: ExecutionEnvironment): RunContentDescriptor? {
|
||||
@Suppress("DEPRECATION")
|
||||
return doExecute(environment.project, state, environment.contentToReuse, environment)
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
@SuppressWarnings({"unused", "DeprecatedIsStillUsed"})
|
||||
@Deprecated
|
||||
@Nullable
|
||||
protected RunContentDescriptor doExecute(@NotNull Project project,
|
||||
@NotNull RunProfileState state,
|
||||
@Nullable RunContentDescriptor contentToReuse,
|
||||
@NotNull ExecutionEnvironment environment) throws ExecutionException {
|
||||
throw new AbstractMethodError();
|
||||
|
||||
@Deprecated("")
|
||||
@Throws(ExecutionException::class)
|
||||
protected open fun doExecute(project: Project,
|
||||
state: RunProfileState,
|
||||
contentToReuse: RunContentDescriptor?,
|
||||
environment: ExecutionEnvironment): RunContentDescriptor? {
|
||||
throw AbstractMethodError()
|
||||
}
|
||||
}
|
||||
|
||||
inline fun runProfileStarter(crossinline starter: (state: RunProfileState, environment: ExecutionEnvironment) -> RunContentDescriptor?) = object : RunProfileStarter() {
|
||||
override fun execute(state: RunProfileState, env: ExecutionEnvironment) = starter(state, env)
|
||||
}
|
||||
|
||||
fun startRunProfile(environment: ExecutionEnvironment, state: RunProfileState, callback: ProgramRunner.Callback?, starter: RunProfileStarter?) {
|
||||
ExecutionManager.getInstance(environment.project).startRunProfile(object : RunProfileStarter() {
|
||||
override fun executeAsync(state: RunProfileState, environment: ExecutionEnvironment): Promise<RunContentDescriptor> {
|
||||
if (starter == null) {
|
||||
return Promise.resolve<RunContentDescriptor>(BaseProgramRunner.postProcess(environment, null, callback))
|
||||
}
|
||||
return starter.executeAsync(state, environment).then<RunContentDescriptor> { descriptor ->
|
||||
BaseProgramRunner.postProcess(environment, descriptor, callback)
|
||||
}
|
||||
}
|
||||
|
||||
@Throws(ExecutionException::class)
|
||||
override fun execute(state: RunProfileState, environment: ExecutionEnvironment): RunContentDescriptor? {
|
||||
return BaseProgramRunner.postProcess(environment, starter?.execute(state, environment), callback)
|
||||
}
|
||||
}, state, environment)
|
||||
}
|
||||
Reference in New Issue
Block a user