LazyRunConfigurationProducer — junit and company

This commit is contained in:
Vladimir Krivosheev
2018-12-13 16:50:38 +01:00
parent 1034b51b3a
commit dbecfeab36
11 changed files with 82 additions and 104 deletions
@@ -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<T extends ApplicationConfiguration> extends JavaRunConfigurationProducerBase<T> {
public AbstractApplicationConfigurationProducer(@NotNull ConfigurationType configurationType) {
super(configurationType);
public AbstractApplicationConfigurationProducer() {
super();
}
// backward compatibility
/**
* @deprecated Override {@link #getConfigurationFactory()}.
*/
@Deprecated
public AbstractApplicationConfigurationProducer(@NotNull ApplicationConfigurationType configurationType) {
super(configurationType);
}
@@ -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<ApplicationConfiguration> {
public ApplicationConfigurationProducer() {
super(ApplicationConfigurationType.getInstance());
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return ApplicationConfigurationType.getInstance().getConfigurationFactories()[0];
}
}
@@ -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<JavaScratchConfiguration> {
public JavaScratchConfigurationProducer() {
super(JavaScratchConfigurationType.getInstance());
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return JavaScratchConfigurationType.getInstance();
}
@Override
@@ -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<? extends BaseState> getOptionsClass() {
return JavaScratchConfigurationOptions.class;
}
});
@NotNull
@Override
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
return new JavaScratchConfiguration("", project, this);
}
@Override
public Class<? extends BaseState> 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);
@@ -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<T extends JavaTestConfigurationBase> extends AbstractJavaTestConfigurationProducer<T> {
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,
@@ -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<T extends JavaTestConfigurationBase> extends JavaRunConfigurationProducerBase<T> {
protected AbstractJavaTestConfigurationProducer(ConfigurationFactory configurationFactory) {
super(configurationFactory);
}
/**
* @deprecated Override {@link #getConfigurationFactory()}.
*/
@@ -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<T extends JavaTestConfigurationBase> extends AbstractJavaTestConfigurationProducer<T> implements Cloneable{
public abstract class AbstractPatternBasedConfigurationProducer<T extends JavaTestConfigurationBase> extends AbstractJavaTestConfigurationProducer<T> implements Cloneable {
/**
* @deprecated Override {@link #getConfigurationFactory()}.
*/
@Deprecated
public AbstractPatternBasedConfigurationProducer(ConfigurationType configurationType) {
super(configurationType);
}
protected AbstractPatternBasedConfigurationProducer() {
super();
}
public boolean isConfiguredFromContext(ConfigurationContext context, Set<String> patterns) {
final LinkedHashSet<String> classes = new LinkedHashSet<>();
final DataContext dataContext = context.getDataContext();
@@ -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<JUnitConfiguration> {
public TestClassConfigurationProducer() {
super(JUnitConfigurationType.getInstance());
super();
}
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return JUnitConfigurationType.getInstance().getConfigurationFactories()[0];
}
@SuppressWarnings("RedundantMethodOverride") // binary compatibility
@@ -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<JUnitConfiguration> {
JUnitInClassConfigurationProducerDelegate() {super(JUnitConfigurationType.getInstance());}
private static class JUnitInClassConfigurationProducerDelegate extends AbstractInClassConfigurationProducer<JUnitConfiguration> {
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return JUnitConfigurationType.getInstance().getConfigurationFactories()[0];
}
@Override
protected boolean isApplicableTestType(String type, ConfigurationContext context) {
@@ -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<JUnitConfiguration> {
public TestMethodConfigurationProducer() {
super(JUnitConfigurationType.getInstance());
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return JUnitConfigurationType.getInstance().getConfigurationFactories()[0];
}
@SuppressWarnings("RedundantMethodOverride") // binary compatibility
@@ -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<TestNGConfiguration> {
protected TestNGInClassConfigurationProducerDelegate(ConfigurationType configurationType) {
super(configurationType);
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return TestNGConfigurationType.getInstance();
}
@Override