From 0ec37123533259202a2ff13d3b5a14280690671e Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 9 Jan 2015 16:37:19 +0100 Subject: [PATCH] RunnerRegistry as service --- .../intellij/execution/RunnerRegistry.java | 15 +++-- .../RunnerAndConfigurationSettingsImpl.java | 2 +- .../execution/impl/RunnerRegistryImpl.java | 63 +++---------------- .../src/META-INF/PlatformExtensions.xml | 4 ++ .../src/componentSets/Execution.xml | 4 -- 5 files changed, 21 insertions(+), 67 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/RunnerRegistry.java b/platform/lang-api/src/com/intellij/execution/RunnerRegistry.java index fec7223b1721..98cce8b39266 100644 --- a/platform/lang-api/src/com/intellij/execution/RunnerRegistry.java +++ b/platform/lang-api/src/com/intellij/execution/RunnerRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,21 +17,24 @@ package com.intellij.execution; import com.intellij.execution.configurations.RunProfile; import com.intellij.execution.runners.ProgramRunner; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.components.ApplicationComponent; +import com.intellij.openapi.components.ServiceManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public abstract class RunnerRegistry implements ApplicationComponent { +public abstract class RunnerRegistry { public static RunnerRegistry getInstance() { - return ApplicationManager.getApplication().getComponent(RunnerRegistry.class); + return ServiceManager.getService(RunnerRegistry.class); } - public abstract boolean hasRunner(@NotNull final String executorId, @NotNull final RunProfile settings); + @SuppressWarnings("unused") + @Deprecated + public abstract boolean hasRunner(@NotNull String executorId, @NotNull RunProfile settings); @Nullable public abstract ProgramRunner getRunner(@NotNull String executorId, @Nullable RunProfile settings); + @SuppressWarnings("unused") + @Deprecated public abstract ProgramRunner[] getRegisteredRunners(); @Nullable diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java index 00dba9124fe8..63c3472b43b1 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java @@ -140,7 +140,7 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C private ProgramRunner findRunner(final String runnerId) { List runnersById - = ContainerUtil.filter(RunnerRegistry.getInstance().getRegisteredRunners(), new Condition() { + = ContainerUtil.filter(ProgramRunner.PROGRAM_RUNNER_EP.getExtensions(), new Condition() { @Override public boolean value(ProgramRunner runner) { diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunnerRegistryImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunnerRegistryImpl.java index cefeaf958f0d..6c536155dbfd 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunnerRegistryImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunnerRegistryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,41 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.execution.impl; import com.intellij.execution.RunnerRegistry; import com.intellij.execution.configurations.RunProfile; import com.intellij.execution.runners.ProgramRunner; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.Comparing; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; - - // TODO[spLeaner]: eliminate public class RunnerRegistryImpl extends RunnerRegistry { - private final List myRunnersOrder = new ArrayList(); - @Override - @NotNull - public String getComponentName() { - return "RunnerRegistryImpl"; - } - - @Override - public boolean hasRunner(@NotNull final String executorId, @NotNull final RunProfile settings) { - final ProgramRunner[] runners = getRegisteredRunners(); - for (final ProgramRunner runner : runners) { - if (runner.canRun(executorId, settings)) { - return true; - } - } - - return false; + public boolean hasRunner(@NotNull String executorId, @NotNull RunProfile settings) { + return getRunner(executorId, settings) != null; } @Override @@ -56,55 +35,27 @@ public class RunnerRegistryImpl extends RunnerRegistry { return null; } - for (ProgramRunner runner : getRegisteredRunners()) { + for (ProgramRunner runner : ProgramRunner.PROGRAM_RUNNER_EP.getExtensions()) { if (runner.canRun(executorId, settings)) { return runner; } } - return null; } @Override - public void initComponent() { - final ProgramRunner[] runners = Extensions.getExtensions(ProgramRunner.PROGRAM_RUNNER_EP); - for (ProgramRunner runner : runners) { - registerRunner(runner); - } - } - - @Override - public synchronized void disposeComponent() { - while (myRunnersOrder.size() > 0) { - final ProgramRunner runner = myRunnersOrder.get(myRunnersOrder.size() - 1); - unregisterRunner(runner); - } - } - - public synchronized void registerRunner(final ProgramRunner runner) { - if (myRunnersOrder.contains(runner)) return; - myRunnersOrder.add(runner); - } - - public synchronized void unregisterRunner(final ProgramRunner runner) { - myRunnersOrder.remove(runner); - } - - @Override - public synchronized ProgramRunner[] getRegisteredRunners() { - return myRunnersOrder.toArray(new ProgramRunner[myRunnersOrder.size()]); + public ProgramRunner[] getRegisteredRunners() { + return ProgramRunner.PROGRAM_RUNNER_EP.getExtensions(); } @Override @Nullable public ProgramRunner findRunnerById(String id) { - ProgramRunner[] registeredRunners = getRegisteredRunners(); - for (ProgramRunner registeredRunner : registeredRunners) { + for (ProgramRunner registeredRunner : ProgramRunner.PROGRAM_RUNNER_EP.getExtensions()) { if (Comparing.equal(id, registeredRunner.getRunnerId())) { return registeredRunner; } } return null; } - } diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index c40d2ed178f0..edf5f07ff7a3 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -161,6 +161,10 @@ + + + com.intellij.execution.ExecutorRegistry com.intellij.execution.ExecutorRegistryImpl - - com.intellij.execution.RunnerRegistry - com.intellij.execution.impl.RunnerRegistryImpl -