update copyright
[fedora-idea.git] / plugins / testng / src / com / theoryinpractice / testng / configuration / TestNGSuiteConfigurationProducer.java
blob7edeeffb3c22955baf74613d891eafdbca87bd06
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * User: anna
19 * Date: 23-May-2007
21 package com.theoryinpractice.testng.configuration;
23 import com.intellij.execution.Location;
24 import com.intellij.execution.RunnerAndConfigurationSettings;
25 import com.intellij.execution.RunConfigurationExtension;
26 import com.intellij.execution.actions.ConfigurationContext;
27 import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
28 import com.intellij.openapi.module.Module;
29 import com.intellij.openapi.project.Project;
30 import com.intellij.openapi.vfs.VirtualFile;
31 import com.intellij.psi.PsiElement;
32 import com.intellij.psi.PsiFile;
33 import com.theoryinpractice.testng.model.TestType;
34 import com.theoryinpractice.testng.util.TestNGUtil;
35 import org.jetbrains.annotations.Nullable;
37 public class TestNGSuiteConfigurationProducer extends TestNGConfigurationProducer{
38 private PsiElement myPsiElement = null;
41 public PsiElement getSourceElement() {
42 return myPsiElement;
45 @Nullable
46 protected RunnerAndConfigurationSettingsImpl createConfigurationByElement(Location location, ConfigurationContext context) {
47 final PsiElement element = location.getPsiElement();
48 final PsiFile containingFile = element.getContainingFile();
49 if (containingFile == null) return null;
50 final VirtualFile virtualFile = containingFile.getVirtualFile();
51 if (virtualFile == null) return null;
52 if (!TestNGUtil.isTestngXML(virtualFile)) return null;
53 myPsiElement = containingFile;
54 final Project project = location.getProject();
55 RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context);
56 final TestNGConfiguration configuration = (TestNGConfiguration)settings.getConfiguration();
57 setupConfigurationModule(context, configuration);
58 final Module originalModule = configuration.getConfigurationModule().getModule();
59 configuration.getPersistantData().SUITE_NAME = virtualFile.getPath();
60 configuration.getPersistantData().TEST_OBJECT = TestType.SUITE.getType();
61 configuration.restoreOriginalModule(originalModule);
62 settings.setName(configuration.getName());
63 copyStepsBeforeRun(project, configuration);
64 RunConfigurationExtension.patchCreatedConfiguration(configuration);
65 return (RunnerAndConfigurationSettingsImpl)settings;
68 public int compareTo(Object o) {
69 return PREFERED;