From ab06924f5719fdb85256db6c67d003c00c29c2c7 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 13 Dec 2018 12:11:58 +0100 Subject: [PATCH] =?UTF-8?q?LazyRunConfigurationProducer=20=E2=80=94=20pyth?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../run/PythonRunConfigurationProducer.java | 12 ++++---- ...AbstractPythonTestConfigurationProducer.kt | 8 ++++-- .../jetbrains/python/testing/PyTestsShared.kt | 4 +-- .../testing/PythonTestConfigurationType.java | 1 + ...PythonTestLegacyConfigurationProducer.java | 24 ++++++---------- .../PythonDocTestConfigurationProducer.java | 10 ++++--- .../PythonNoseTestConfigurationProducer.java | 10 ++++--- .../PyTestConfigurationProducer.java | 12 ++++---- .../tox/PyToxConfigurationProducer.java | 28 ++++++------------- .../PythonUnitTestConfigurationProducer.java | 10 ++++--- 10 files changed, 58 insertions(+), 61 deletions(-) diff --git a/python/src/com/jetbrains/python/run/PythonRunConfigurationProducer.java b/python/src/com/jetbrains/python/run/PythonRunConfigurationProducer.java index dc50c0ff60f4..a5af4c342307 100644 --- a/python/src/com/jetbrains/python/run/PythonRunConfigurationProducer.java +++ b/python/src/com/jetbrains/python/run/PythonRunConfigurationProducer.java @@ -4,7 +4,8 @@ package com.jetbrains.python.run; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.actions.ConfigurationFromContext; -import com.intellij.execution.actions.RunConfigurationProducer; +import com.intellij.execution.actions.LazyRunConfigurationProducer; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.util.Ref; @@ -23,10 +24,11 @@ import java.io.File; /** * @author yole */ -public class PythonRunConfigurationProducer extends RunConfigurationProducer { - - public PythonRunConfigurationProducer() { - super(PythonConfigurationType.getInstance().getFactory()); +public final class PythonRunConfigurationProducer extends LazyRunConfigurationProducer { + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return PythonConfigurationType.getInstance().getFactory(); } @Override diff --git a/python/src/com/jetbrains/python/testing/AbstractPythonTestConfigurationProducer.kt b/python/src/com/jetbrains/python/testing/AbstractPythonTestConfigurationProducer.kt index 1b6a96e6f82e..8da09be86049 100644 --- a/python/src/com/jetbrains/python/testing/AbstractPythonTestConfigurationProducer.kt +++ b/python/src/com/jetbrains/python/testing/AbstractPythonTestConfigurationProducer.kt @@ -7,14 +7,18 @@ import com.intellij.execution.actions.ConfigurationContext import com.intellij.execution.actions.ConfigurationFromContext import com.intellij.execution.actions.RunConfigurationProducer import com.intellij.execution.configurations.ConfigurationFactory -import com.intellij.execution.configurations.ConfigurationType /** * Parent of all test configuration producers */ abstract class AbstractPythonTestConfigurationProducer> : RunConfigurationProducer { + constructor() : super(true) + + /** + * @deprecated Override [getConfigurationFactory]. + */ + @Deprecated("Override getConfigurationFactory") constructor(configurationFactory: ConfigurationFactory) : super(configurationFactory) - constructor(configurationType: ConfigurationType) : super(configurationType) /** * Configuration type this producer accepts/creates diff --git a/python/src/com/jetbrains/python/testing/PyTestsShared.kt b/python/src/com/jetbrains/python/testing/PyTestsShared.kt index 2f3127dd424f..235d3ed687fb 100644 --- a/python/src/com/jetbrains/python/testing/PyTestsShared.kt +++ b/python/src/com/jetbrains/python/testing/PyTestsShared.kt @@ -655,8 +655,8 @@ abstract class PyAbstractTestFactory : /** * Only one producer is registered with EP, but it uses factory configured by user to produce different configs */ -object PyTestsConfigurationProducer : AbstractPythonTestConfigurationProducer( - PythonTestConfigurationType.getInstance()) { +object PyTestsConfigurationProducer : AbstractPythonTestConfigurationProducer() { + override fun getConfigurationFactory() = PythonTestConfigurationType.getInstance().configurationFactories[0] override val configurationClass: Class = PyAbstractTestConfiguration::class.java diff --git a/python/src/com/jetbrains/python/testing/PythonTestConfigurationType.java b/python/src/com/jetbrains/python/testing/PythonTestConfigurationType.java index 0fd162164e4b..c4acb3b1ed1b 100644 --- a/python/src/com/jetbrains/python/testing/PythonTestConfigurationType.java +++ b/python/src/com/jetbrains/python/testing/PythonTestConfigurationType.java @@ -47,6 +47,7 @@ public final class PythonTestConfigurationType extends ConfigurationTypeBase { return super.getConfigurationFactories(); }); + @NotNull public static PythonTestConfigurationType getInstance() { return ConfigurationTypeUtil.findConfigurationType(PythonTestConfigurationType.class); } diff --git a/python/src/com/jetbrains/python/testing/PythonTestLegacyConfigurationProducer.java b/python/src/com/jetbrains/python/testing/PythonTestLegacyConfigurationProducer.java index 96b0755e6b06..28bfe026c01b 100644 --- a/python/src/com/jetbrains/python/testing/PythonTestLegacyConfigurationProducer.java +++ b/python/src/com/jetbrains/python/testing/PythonTestLegacyConfigurationProducer.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2014 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2018 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.jetbrains.python.testing; import com.google.common.collect.Sets; @@ -51,10 +37,16 @@ import java.util.stream.Collectors; abstract public class PythonTestLegacyConfigurationProducer> extends AbstractPythonTestConfigurationProducer> { - protected PythonTestLegacyConfigurationProducer(final ConfigurationFactory configurationFactory) { + /** + * @deprecated Override {@link #getConfigurationFactory} + */ + @Deprecated + protected PythonTestLegacyConfigurationProducer(ConfigurationFactory configurationFactory) { super(configurationFactory); } + protected PythonTestLegacyConfigurationProducer() { + } @NotNull @Override diff --git a/python/src/com/jetbrains/python/testing/doctest/PythonDocTestConfigurationProducer.java b/python/src/com/jetbrains/python/testing/doctest/PythonDocTestConfigurationProducer.java index e07343f4d49a..ba487cebb8e5 100644 --- a/python/src/com/jetbrains/python/testing/doctest/PythonDocTestConfigurationProducer.java +++ b/python/src/com/jetbrains/python/testing/doctest/PythonDocTestConfigurationProducer.java @@ -4,6 +4,7 @@ package com.jetbrains.python.testing.doctest; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationFromContext; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; @@ -23,10 +24,11 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -public class PythonDocTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { - - public PythonDocTestConfigurationProducer() { - super(PythonTestConfigurationType.getInstance().PY_DOCTEST_FACTORY); +public final class PythonDocTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return PythonTestConfigurationType.getInstance().PY_DOCTEST_FACTORY; } @Override diff --git a/python/src/com/jetbrains/python/testing/nosetestLegacy/PythonNoseTestConfigurationProducer.java b/python/src/com/jetbrains/python/testing/nosetestLegacy/PythonNoseTestConfigurationProducer.java index 678884877e53..c5c97d46e14e 100644 --- a/python/src/com/jetbrains/python/testing/nosetestLegacy/PythonNoseTestConfigurationProducer.java +++ b/python/src/com/jetbrains/python/testing/nosetestLegacy/PythonNoseTestConfigurationProducer.java @@ -2,6 +2,7 @@ package com.jetbrains.python.testing.nosetestLegacy; import com.intellij.execution.Location; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.projectRoots.Sdk; @@ -14,10 +15,11 @@ import com.jetbrains.python.testing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class PythonNoseTestConfigurationProducer extends - PythonTestLegacyConfigurationProducer { - public PythonNoseTestConfigurationProducer() { - super(PythonTestConfigurationType.getInstance().LEGACY_NOSETEST_FACTORY); +public final class PythonNoseTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return PythonTestConfigurationType.getInstance().LEGACY_NOSETEST_FACTORY; } @Override diff --git a/python/src/com/jetbrains/python/testing/pytestLegacy/PyTestConfigurationProducer.java b/python/src/com/jetbrains/python/testing/pytestLegacy/PyTestConfigurationProducer.java index 4d6fa39c5684..4c6316767aa0 100644 --- a/python/src/com/jetbrains/python/testing/pytestLegacy/PyTestConfigurationProducer.java +++ b/python/src/com/jetbrains/python/testing/pytestLegacy/PyTestConfigurationProducer.java @@ -1,9 +1,10 @@ -// Copyright 2000-2017 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. +// Copyright 2000-2018 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.jetbrains.python.testing.pytestLegacy; import com.google.common.collect.Lists; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.projectRoots.Sdk; @@ -33,10 +34,11 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.List; -public class PyTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { - - public PyTestConfigurationProducer() { - super(PythonTestConfigurationType.getInstance().LEGACY_PYTEST_FACTORY); +public final class PyTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return PythonTestConfigurationType.getInstance().LEGACY_PYTEST_FACTORY; } @Override diff --git a/python/src/com/jetbrains/python/testing/tox/PyToxConfigurationProducer.java b/python/src/com/jetbrains/python/testing/tox/PyToxConfigurationProducer.java index c4bc8226c24f..91e813f26ca5 100644 --- a/python/src/com/jetbrains/python/testing/tox/PyToxConfigurationProducer.java +++ b/python/src/com/jetbrains/python/testing/tox/PyToxConfigurationProducer.java @@ -1,37 +1,27 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2018 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.jetbrains.python.testing.tox; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.execution.actions.RunConfigurationProducer; +import com.intellij.execution.actions.LazyRunConfigurationProducer; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.openapi.util.Ref; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; /** * @author Ilya.Kazakevich */ -public final class PyToxConfigurationProducer extends RunConfigurationProducer { +public final class PyToxConfigurationProducer extends LazyRunConfigurationProducer { private static final String TOX_FILE_NAME = "tox.ini"; - public PyToxConfigurationProducer() { - super(PyToxConfigurationFactory.INSTANCE); + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return PyToxConfigurationFactory.INSTANCE; } @Override diff --git a/python/src/com/jetbrains/python/testing/unittestLegacy/PythonUnitTestConfigurationProducer.java b/python/src/com/jetbrains/python/testing/unittestLegacy/PythonUnitTestConfigurationProducer.java index 82e17605c3f2..a161cbcb5cd6 100644 --- a/python/src/com/jetbrains/python/testing/unittestLegacy/PythonUnitTestConfigurationProducer.java +++ b/python/src/com/jetbrains/python/testing/unittestLegacy/PythonUnitTestConfigurationProducer.java @@ -1,8 +1,8 @@ // Copyright 2000-2018 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.jetbrains.python.testing.unittestLegacy; import com.intellij.execution.Location; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.psi.PsiElement; @@ -18,9 +18,11 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -public class PythonUnitTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { - public PythonUnitTestConfigurationProducer() { - super(PythonTestConfigurationType.getInstance().LEGACY_UNITTEST_FACTORY); +public final class PythonUnitTestConfigurationProducer extends PythonTestLegacyConfigurationProducer { + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return PythonTestConfigurationType.getInstance().LEGACY_UNITTEST_FACTORY; } @Override