From dbecfeab3682ede91ee523aa7618799f6680e751 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 13 Dec 2018 11:45:41 +0100 Subject: [PATCH] =?UTF-8?q?LazyRunConfigurationProducer=20=E2=80=94=20juni?= =?UTF-8?q?t=20and=20company?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tractApplicationConfigurationProducer.java | 10 +++--- .../ApplicationConfigurationProducer.java | 25 +++++-------- .../JavaScratchConfigurationProducer.java | 7 ++-- .../scratch/JavaScratchConfigurationType.java | 35 +++++++++---------- .../AbstractInClassConfigurationProducer.java | 7 +++- ...AbstractJavaTestConfigurationProducer.java | 5 --- ...ractPatternBasedConfigurationProducer.java | 27 ++++++-------- .../junit/TestClassConfigurationProducer.java | 26 ++++++-------- .../TestInClassConfigurationProducer.java | 10 ++++-- .../TestMethodConfigurationProducer.java | 24 ++++--------- .../TestNGInClassConfigurationProducer.java | 10 +++--- 11 files changed, 82 insertions(+), 104 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/AbstractApplicationConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/application/AbstractApplicationConfigurationProducer.java index 4f644128e388..8b34e58790b3 100644 --- a/java/execution/impl/src/com/intellij/execution/application/AbstractApplicationConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/application/AbstractApplicationConfigurationProducer.java @@ -5,7 +5,6 @@ import com.intellij.codeInsight.TestFrameworks; import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.ConfigurationUtil; import com.intellij.execution.junit.JavaRunConfigurationProducerBase; import com.intellij.openapi.module.Module; @@ -20,11 +19,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public abstract class AbstractApplicationConfigurationProducer extends JavaRunConfigurationProducerBase { - public AbstractApplicationConfigurationProducer(@NotNull ConfigurationType configurationType) { - super(configurationType); + public AbstractApplicationConfigurationProducer() { + super(); } - // backward compatibility + /** + * @deprecated Override {@link #getConfigurationFactory()}. + */ + @Deprecated public AbstractApplicationConfigurationProducer(@NotNull ApplicationConfigurationType configurationType) { super(configurationType); } diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java index 6ac44307a751..b4e5866ea697 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java @@ -1,22 +1,13 @@ -/* - * 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.intellij.execution.application; +import com.intellij.execution.configurations.ConfigurationFactory; +import org.jetbrains.annotations.NotNull; + public class ApplicationConfigurationProducer extends AbstractApplicationConfigurationProducer { - public ApplicationConfigurationProducer() { - super(ApplicationConfigurationType.getInstance()); + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return ApplicationConfigurationType.getInstance().getConfigurationFactories()[0]; } } diff --git a/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationProducer.java index 5d9527dfdbed..fab30217bd14 100644 --- a/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationProducer.java @@ -7,6 +7,7 @@ import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.actions.ConfigurationFromContext; import com.intellij.execution.application.AbstractApplicationConfigurationProducer; import com.intellij.execution.application.ApplicationConfigurationType; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.ide.scratch.ScratchFileType; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.util.Comparing; @@ -21,8 +22,10 @@ import org.jetbrains.annotations.NotNull; * @author Eugene Zhuravlev */ public class JavaScratchConfigurationProducer extends AbstractApplicationConfigurationProducer { - public JavaScratchConfigurationProducer() { - super(JavaScratchConfigurationType.getInstance()); + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return JavaScratchConfigurationType.getInstance(); } @Override diff --git a/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java b/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java index a1d31545385c..149fe598c0cc 100644 --- a/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java +++ b/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java @@ -1,10 +1,9 @@ // 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.intellij.execution.scratch; -import com.intellij.execution.configurations.ConfigurationFactory; -import com.intellij.execution.configurations.ConfigurationTypeBase; import com.intellij.execution.configurations.ConfigurationTypeUtil; import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.configurations.SimpleConfigurationType; import com.intellij.icons.AllIcons; import com.intellij.openapi.components.BaseState; import com.intellij.openapi.project.Project; @@ -15,27 +14,26 @@ import org.jetbrains.annotations.NotNull; /** * @author Eugene Zhuravlev */ -public final class JavaScratchConfigurationType extends ConfigurationTypeBase { +public final class JavaScratchConfigurationType extends SimpleConfigurationType { public JavaScratchConfigurationType() { super("Java Scratch", "Java Scratch", "Configuration for java scratch files", NotNullLazyValue.createValue(() -> LayeredIcon.create(AllIcons.RunConfigurations.Application, AllIcons.Actions.Scratch))); - addFactory(new ConfigurationFactory(this) { - @Override - public boolean isApplicable(@NotNull Project project) { - return false; - } + } - @NotNull - @Override - public RunConfiguration createTemplateConfiguration(@NotNull Project project) { - return new JavaScratchConfiguration("", project, this); - } + @Override + public boolean isApplicable(@NotNull Project project) { + return false; + } - @Override - public Class getOptionsClass() { - return JavaScratchConfigurationOptions.class; - } - }); + @NotNull + @Override + public RunConfiguration createTemplateConfiguration(@NotNull Project project) { + return new JavaScratchConfiguration("", project, this); + } + + @Override + public Class getOptionsClass() { + return JavaScratchConfigurationOptions.class; } @Override @@ -43,7 +41,6 @@ public final class JavaScratchConfigurationType extends ConfigurationTypeBase { return "reference.dialogs.rundebug.Java Scratch"; } - /** */ @NotNull public static JavaScratchConfigurationType getInstance() { return ConfigurationTypeUtil.findConfigurationType(JavaScratchConfigurationType.class); diff --git a/java/execution/impl/src/com/intellij/execution/testframework/AbstractInClassConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/testframework/AbstractInClassConfigurationProducer.java index 52fcda029c89..4fd2a20a5ab2 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/AbstractInClassConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/AbstractInClassConfigurationProducer.java @@ -1,5 +1,4 @@ // 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.intellij.execution.testframework; import com.intellij.execution.JavaTestConfigurationBase; @@ -27,10 +26,16 @@ import java.util.List; public abstract class AbstractInClassConfigurationProducer extends AbstractJavaTestConfigurationProducer { private static final Logger LOG = Logger.getInstance(AbstractInClassConfigurationProducer.class); + /** + * @deprecated Override {@link #getConfigurationFactory()}. + */ + @Deprecated protected AbstractInClassConfigurationProducer(ConfigurationType configurationType) { super(configurationType); } + protected AbstractInClassConfigurationProducer() { + } @Override public void onFirstRun(@NotNull final ConfigurationFromContext configuration, diff --git a/java/execution/impl/src/com/intellij/execution/testframework/AbstractJavaTestConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/testframework/AbstractJavaTestConfigurationProducer.java index 7bbc65cd42c4..cf4a4805700e 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/AbstractJavaTestConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/AbstractJavaTestConfigurationProducer.java @@ -4,7 +4,6 @@ package com.intellij.execution.testframework; import com.intellij.codeInsight.TestFrameworks; import com.intellij.execution.*; import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.execution.configurations.RunConfiguration; @@ -34,10 +33,6 @@ import org.jetbrains.annotations.Contract; import java.util.*; public abstract class AbstractJavaTestConfigurationProducer extends JavaRunConfigurationProducerBase { - protected AbstractJavaTestConfigurationProducer(ConfigurationFactory configurationFactory) { - super(configurationFactory); - } - /** * @deprecated Override {@link #getConfigurationFactory()}. */ diff --git a/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java index 81bf7fb37200..11af421fcfa8 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2017 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.intellij.execution.testframework; import com.intellij.execution.JavaTestConfigurationBase; @@ -30,10 +16,19 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; -public abstract class AbstractPatternBasedConfigurationProducer extends AbstractJavaTestConfigurationProducer implements Cloneable{ +public abstract class AbstractPatternBasedConfigurationProducer extends AbstractJavaTestConfigurationProducer implements Cloneable { + /** + * @deprecated Override {@link #getConfigurationFactory()}. + */ + @Deprecated public AbstractPatternBasedConfigurationProducer(ConfigurationType configurationType) { super(configurationType); } + + protected AbstractPatternBasedConfigurationProducer() { + super(); + } + public boolean isConfiguredFromContext(ConfigurationContext context, Set patterns) { final LinkedHashSet classes = new LinkedHashSet<>(); final DataContext dataContext = context.getDataContext(); diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java index 8797e781d28c..dcf666d2fc17 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java @@ -1,30 +1,24 @@ -/* - * Copyright 2000-2017 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.intellij.execution.junit; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.testframework.AbstractInClassConfigurationProducer; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; +import org.jetbrains.annotations.NotNull; //to be deleted in 2018 @Deprecated public class TestClassConfigurationProducer extends AbstractInClassConfigurationProducer { public TestClassConfigurationProducer() { - super(JUnitConfigurationType.getInstance()); + super(); + } + + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return JUnitConfigurationType.getInstance().getConfigurationFactories()[0]; } @SuppressWarnings("RedundantMethodOverride") // binary compatibility diff --git a/plugins/junit/src/com/intellij/execution/junit/TestInClassConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/TestInClassConfigurationProducer.java index eebe4ec289ab..efbdbe128b55 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestInClassConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestInClassConfigurationProducer.java @@ -3,6 +3,7 @@ package com.intellij.execution.junit; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.actions.ConfigurationFromContext; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.testframework.AbstractInClassConfigurationProducer; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; @@ -38,9 +39,12 @@ public final class TestInClassConfigurationProducer extends JUnitConfigurationPr return myDelegate.isApplicableTestType(type, context); } - private static class JUnitInClassConfigurationProducerDelegate - extends AbstractInClassConfigurationProducer { - JUnitInClassConfigurationProducerDelegate() {super(JUnitConfigurationType.getInstance());} + private static class JUnitInClassConfigurationProducerDelegate extends AbstractInClassConfigurationProducer { + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return JUnitConfigurationType.getInstance().getConfigurationFactories()[0]; + } @Override protected boolean isApplicableTestType(String type, ConfigurationContext context) { diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java index 94e62eebe9d3..1a7dc52f3512 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java @@ -1,30 +1,20 @@ -/* - * 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.intellij.execution.junit; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.testframework.AbstractInClassConfigurationProducer; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; +import org.jetbrains.annotations.NotNull; //to be delete in 2018 @Deprecated public class TestMethodConfigurationProducer extends AbstractInClassConfigurationProducer { - public TestMethodConfigurationProducer() { - super(JUnitConfigurationType.getInstance()); + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return JUnitConfigurationType.getInstance().getConfigurationFactories()[0]; } @SuppressWarnings("RedundantMethodOverride") // binary compatibility diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java index 561e4684a173..43bf83912304 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java @@ -3,7 +3,7 @@ package com.theoryinpractice.testng.configuration; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.actions.ConfigurationFromContext; -import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.testframework.AbstractInClassConfigurationProducer; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; @@ -11,7 +11,7 @@ import com.theoryinpractice.testng.model.TestType; import org.jetbrains.annotations.NotNull; public class TestNGInClassConfigurationProducer extends TestNGConfigurationProducer { - private final TestNGInClassConfigurationProducerDelegate myDelegate = new TestNGInClassConfigurationProducerDelegate(TestNGConfigurationType.getInstance()); + private final TestNGInClassConfigurationProducerDelegate myDelegate = new TestNGInClassConfigurationProducerDelegate(); @Override public void onFirstRun(@NotNull ConfigurationFromContext configuration, @@ -33,8 +33,10 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu } private static class TestNGInClassConfigurationProducerDelegate extends AbstractInClassConfigurationProducer { - protected TestNGInClassConfigurationProducerDelegate(ConfigurationType configurationType) { - super(configurationType); + @NotNull + @Override + public ConfigurationFactory getConfigurationFactory() { + return TestNGConfigurationType.getInstance(); } @Override