added utility for common ModuleRootModel modifications

This commit is contained in:
nik
2012-06-18 10:33:53 +04:00
parent 5f277b6472
commit f4e5a9dd15
41 changed files with 571 additions and 589 deletions
@@ -16,14 +16,9 @@
package com.intellij.codeInsight.daemon.impl;
import com.intellij.ProjectTopics;
import com.intellij.icons.AllIcons;
import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.lang.Language;
import com.intellij.lang.StdLanguages;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileTypes.FileTypes;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
@@ -95,9 +90,7 @@ public class SetupSDKNotificationProvider implements EditorNotifications.Provide
public void run() {
final Module module = ModuleUtil.findModuleForPsiElement(file);
if (module != null) {
ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(module).getModifiableModel();
modifiableModel.inheritSdk();
modifiableModel.commit();
ModuleRootModificationUtil.setSdkInherited(module);
}
}
});
@@ -22,6 +22,7 @@ import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.impl.libraries.LibraryTypeServiceImpl;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.ui.OrderRoot;
@@ -61,8 +62,10 @@ public class CreateLibraryFromFilesDialog extends DialogWrapper {
myProject = project;
myRoots = roots;
final FormBuilder builder = LibraryNameAndLevelPanel.createFormBuilder();
myDefaultName = LibrariesContainerFactory.createContainer(project).suggestUniqueLibraryName(LibraryTypeServiceImpl.suggestLibraryName(roots));
myNameAndLevelPanel = new LibraryNameAndLevelPanel(builder, myDefaultName, Arrays.asList(LibrariesContainer.LibraryLevel.values()), LibrariesContainer.LibraryLevel.PROJECT);
myDefaultName =
LibrariesContainerFactory.createContainer(project).suggestUniqueLibraryName(LibraryTypeServiceImpl.suggestLibraryName(roots));
myNameAndLevelPanel = new LibraryNameAndLevelPanel(builder, myDefaultName, Arrays.asList(LibrariesContainer.LibraryLevel.values()),
LibrariesContainer.LibraryLevel.PROJECT);
myNameAndLevelPanel.setDefaultName(myDefaultName);
myModulesCombobox = new ModulesCombobox();
myModulesCombobox.fillModules(myProject);
@@ -141,9 +144,7 @@ public class CreateLibraryFromFilesDialog extends DialogWrapper {
else {
final Library library = LibrariesContainerFactory.createContainer(myProject).createLibrary(libraryName, level, myRoots);
if (module != null) {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
model.addLibraryEntry(library);
model.commit();
ModuleRootModificationUtil.addDependency(module, library);
}
}
}
@@ -158,7 +158,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
@Override
public void run() {
final LocateLibraryDialog dialog = new LocateLibraryDialog(currentModule, PathManager.getLibPath(), "annotations.jar",
QuickFixBundle.message("add.library.annotations.description"));
QuickFixBundle.message("add.library.annotations.description"));
dialog.show();
if (dialog.isOK()) {
new WriteCommandAction(project) {
@@ -212,12 +212,9 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
final Runnable doit = new Runnable() {
@Override
public void run() {
ModifiableRootModel model = ModuleRootManager.getInstance(currentModule).getModifiableModel();
final ModuleOrderEntry entry = model.addModuleOrderEntry(classModule);
if (ModuleRootManager.getInstance(currentModule).getFileIndex().isInTestSourceContent(classVFile)) {
entry.setScope(DependencyScope.TEST);
}
model.commit();
final boolean test = ModuleRootManager.getInstance(currentModule).getFileIndex().isInTestSourceContent(classVFile);
ModuleRootModificationUtil.addDependency(currentModule, classModule,
test ? DependencyScope.TEST : DependencyScope.COMPILE, false);
if (editor != null) {
final List<PsiClass> targetClasses = new ArrayList<PsiClass>();
for (PsiClass psiClass : classes) {
@@ -257,7 +254,8 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
if (entryForFile instanceof ExportableOrderEntry &&
((ExportableOrderEntry)entryForFile).getScope() == DependencyScope.TEST &&
!ModuleRootManager.getInstance(currentModule).getFileIndex().isInTestSourceContent(classVFile)) {
} else {
}
else {
continue;
}
}
@@ -361,9 +359,9 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
final Module classModule,
final Runnable doit) {
final String message = QuickFixBundle.message("orderEntry.fix.circular.dependency.warning", classModule.getName(),
circularModules.getFirst().getName(), circularModules.getSecond().getName());
circularModules.getFirst().getName(), circularModules.getSecond().getName());
if (ApplicationManager.getApplication().isUnitTestMode()) throw new RuntimeException(message);
ApplicationManager.getApplication().invokeLater(new Runnable(){
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
if (!project.isOpen()) return;
@@ -24,8 +24,7 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
import com.intellij.psi.CommonClassNames;
import com.intellij.psi.JavaPsiFacade;
@@ -34,15 +33,17 @@ import org.jetbrains.annotations.NotNull;
/**
* @author mike
* Date: Aug 20, 2002
* Date: Aug 20, 2002
*/
public class SetupJDKFix implements IntentionAction, HighPriorityAction {
private static final SetupJDKFix ourInstance = new SetupJDKFix();
public static SetupJDKFix getInstance() {
return ourInstance;
}
private SetupJDKFix() { }
private SetupJDKFix() {
}
@Override
@NotNull
@@ -70,9 +71,7 @@ public class SetupJDKFix implements IntentionAction, HighPriorityAction {
public void run() {
Module module = ModuleUtil.findModuleForPsiElement(file);
if (module != null) {
ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(module).getModifiableModel();
modifiableModel.inheritSdk();
modifiableModel.commit();
ModuleRootModificationUtil.setSdkInherited(module);
}
}
});
@@ -34,8 +34,7 @@ import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryUtil;
import com.intellij.openapi.ui.DialogWrapper;
@@ -79,6 +78,7 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
scope.accept(new PsiElementVisitor() {
private int myFileCount = 0;
final private Set<Module> processed = new HashSet<Module>();
@Override
public void visitFile(PsiFile file) {
myFileCount++;
@@ -94,7 +94,8 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
if (module != null && !processed.contains(module)) {
processed.add(module);
if (JavaPsiFacade.getInstance(project)
.findClass(NullableNotNullManager.getInstance(project).getDefaultNullable(), GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)) == null) {
.findClass(NullableNotNullManager.getInstance(project).getDefaultNullable(),
GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)) == null) {
modulesWithoutAnnotations.add(module);
}
if (PsiUtil.getLanguageLevel(file).compareTo(LanguageLevel.JDK_1_5) < 0) {
@@ -104,13 +105,17 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
}
});
}
}, "Check applicability...", true, project)) return;
}, "Check applicability...", true, project)) {
return;
}
if (!modulesWithLL.isEmpty()) {
Messages.showErrorDialog(project, "Infer Nullity Annotations requires the project language level be set to 1.5 or greater.", INFER_NULLITY_ANNOTATIONS);
Messages.showErrorDialog(project, "Infer Nullity Annotations requires the project language level be set to 1.5 or greater.",
INFER_NULLITY_ANNOTATIONS);
return;
}
if (!modulesWithoutAnnotations.isEmpty()) {
final Library annotationsLib = LibraryUtil.findLibraryByClass(NullableNotNullManager.getInstance(project).getDefaultNullable(), project);
final Library annotationsLib =
LibraryUtil.findLibraryByClass(NullableNotNullManager.getInstance(project).getDefaultNullable(), project);
if (annotationsLib != null) {
String message = "Module" + (modulesWithoutAnnotations.size() == 1 ? " " : "s ");
message += StringUtil.join(modulesWithoutAnnotations, new Function<Module, String>() {
@@ -120,25 +125,27 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
}
}, ", ");
message += (modulesWithoutAnnotations.size() == 1 ? " doesn't" : " don't");
message += " refer to the existing '" + annotationsLib.getName() + "' library with IDEA nullity annotations. Would you like to add the dependenc";
message += (modulesWithoutAnnotations.size() == 1 ? "y" : "ies")+ " now?";
if (Messages.showOkCancelDialog(project, message, INFER_NULLITY_ANNOTATIONS, Messages.getErrorIcon()) == DialogWrapper.OK_EXIT_CODE) {
message += " refer to the existing '" +
annotationsLib.getName() +
"' library with IDEA nullity annotations. Would you like to add the dependenc";
message += (modulesWithoutAnnotations.size() == 1 ? "y" : "ies") + " now?";
if (Messages.showOkCancelDialog(project, message, INFER_NULLITY_ANNOTATIONS, Messages.getErrorIcon()) ==
DialogWrapper.OK_EXIT_CODE) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
for (Module module : modulesWithoutAnnotations) {
final ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(module).getModifiableModel();
modifiableModel.addLibraryEntry(annotationsLib);
modifiableModel.commit();
ModuleRootModificationUtil.addDependency(module, annotationsLib);
}
}
});
}
} else if (Messages.showOkCancelDialog(project, "Infer Nullity Annotations requires that the nullity annotations" +
" be available in all your project sources.\n\nYou will need to add annotations.jar as a library. " +
"It is possible to configure custom jar in e.g. Constant Conditions & Exceptions inspection or use JetBrains annotations available in installation. " +
" The IDEA nullity annotations are freely usable and redistributable under the Apache 2.0 license. Would you like to do it now?",
INFER_NULLITY_ANNOTATIONS, Messages.getErrorIcon()) == DialogWrapper.OK_EXIT_CODE) {
}
else if (Messages.showOkCancelDialog(project, "Infer Nullity Annotations requires that the nullity annotations" +
" be available in all your project sources.\n\nYou will need to add annotations.jar as a library. " +
"It is possible to configure custom jar in e.g. Constant Conditions & Exceptions inspection or use JetBrains annotations available in installation. " +
" The IDEA nullity annotations are freely usable and redistributable under the Apache 2.0 license. Would you like to do it now?",
INFER_NULLITY_ANNOTATIONS, Messages.getErrorIcon()) == DialogWrapper.OK_EXIT_CODE) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
final LocateLibraryDialog dialog =
@@ -169,6 +176,7 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
public void run() {
scope.accept(new PsiElementVisitor() {
int myFileCount = 0;
@Override
public void visitFile(final PsiFile file) {
myFileCount++;
@@ -189,7 +197,9 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
}
});
}
}, INFER_NULLITY_ANNOTATIONS, true, project)) return;
}, INFER_NULLITY_ANNOTATIONS, true, project)) {
return;
}
final Runnable applyRunnable = new Runnable() {
@Override
@@ -4,7 +4,8 @@ import com.intellij.JavaTestUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase;
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase
import com.intellij.openapi.roots.ModuleRootModificationUtil;
@SuppressWarnings(["ALL"])
public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCase {
@@ -17,7 +18,7 @@ public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCa
public void testGetInstance() throws Throwable {
myFixture.configureFromExistingVirtualFile(
myFixture.copyFileToProject(BASE_PATH + "/foo/" + getTestName(false) + ".java", "foo/" + getTestName(false) + ".java"));
myFixture.copyFileToProject(BASE_PATH + "/foo/" + getTestName(false) + ".java", "foo/" + getTestName(false) + ".java"));
myFixture.complete(CompletionType.SMART);
myFixture.type('\n');
myFixture.checkResultByFile(BASE_PATH + "/foo/" + getTestName(false) + "-out.java");
@@ -83,8 +84,8 @@ public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCa
Module moduleA = PsiTestUtil.addModule(project, StdModuleTypes.JAVA, 'A', myFixture.tempDirFixture.findOrCreateDir("a"))
Module moduleB = PsiTestUtil.addModule(project, StdModuleTypes.JAVA, 'B', myFixture.tempDirFixture.findOrCreateDir("b"))
PsiTestUtil.addDependency(myModule, moduleB)
PsiTestUtil.addDependency(moduleB, moduleA)
ModuleRootModificationUtil.addDependency(myModule, moduleB)
ModuleRootModificationUtil.addDependency(moduleB, moduleA)
myFixture.addFileToProject('a/foo/Foo.java', 'package foo; public interface Foo {}')
myFixture.addFileToProject('b/bar/Bar.java', 'package bar; public class Bar { public static void accept(foo.Foo i) {} }')
@@ -93,5 +94,4 @@ public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCa
myFixture.type('\n')
checkResult()
}
}
@@ -3,7 +3,6 @@ package com.intellij.codeInsight.daemon;
import com.intellij.analysis.PackagesScopesProvider;
import com.intellij.application.options.colors.ColorAndFontOptions;
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
@@ -15,8 +14,7 @@ import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.packageDependencies.DependencyValidationManager;
@@ -48,38 +46,113 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
return JavaSdkImpl.getMockJdk14();
}
public void testPackageLocals() throws Exception { doTest(BASE_PATH+"/packageLocals/x/sub/UsingMain.java", BASE_PATH+"/packageLocals", false, false); }
public void testPackageLocalClassInTheMiddle() throws Exception { doTest(BASE_PATH+"/packageLocals/x/A.java", BASE_PATH+"/packageLocals", false, false); }
public void testPackageLocals() throws Exception {
doTest(BASE_PATH + "/packageLocals/x/sub/UsingMain.java", BASE_PATH + "/packageLocals", false, false);
}
public void testEffectiveAccessLevel() throws Exception { doTest(BASE_PATH+"/accessLevel/effectiveAccess/p2/p3.java", BASE_PATH+"/accessLevel", false, false); }
public void testSingleImportConflict() throws Exception { doTest(BASE_PATH+"/singleImport/d.java", BASE_PATH+"/singleImport", false, false); }
public void testPackageLocalClassInTheMiddle() throws Exception {
doTest(BASE_PATH + "/packageLocals/x/A.java", BASE_PATH + "/packageLocals", false, false);
}
public void testDuplicateTopLevelClass() throws Exception { doTest(BASE_PATH+"/duplicateClass/A.java", BASE_PATH+"/duplicateClass", false, false); }
public void testDuplicateTopLevelClass2() throws Exception { doTest(BASE_PATH+"/duplicateClass/java/lang/Runnable.java", BASE_PATH+"/duplicateClass", false, false); }
public void testEffectiveAccessLevel() throws Exception {
doTest(BASE_PATH + "/accessLevel/effectiveAccess/p2/p3.java", BASE_PATH + "/accessLevel", false, false);
}
public void testProtectedConstructorCall() throws Exception { doTest(BASE_PATH+"/protectedConstructor/p2/C2.java", BASE_PATH+"/protectedConstructor", false, false); }
public void testProtectedConstructorCallInSamePackage() throws Exception { doTest(BASE_PATH+"/protectedConstructor/samePackage/C2.java", BASE_PATH+"/protectedConstructor", false, false); }
public void testProtectedConstructorCallInInner() throws Exception { doTest(BASE_PATH+"/protectedConstructorInInner/p2/C2.java", BASE_PATH+"/protectedConstructorInInner", false, false); }
public void testArrayLengthAccessFromSubClass() throws Exception { doTest(BASE_PATH+"/arrayLength/p2/SubTest.java", BASE_PATH+"/arrayLength", false, false); }
public void testAccessibleMember() throws Exception { doTest(BASE_PATH+"/accessibleMember/com/red/C.java", BASE_PATH+"/accessibleMember", false, false); }
public void testOnDemandImportConflict() throws Exception { doTest(BASE_PATH+"/onDemandImportConflict/Outer.java", BASE_PATH+"/onDemandImportConflict", false, false); }
public void testPackageLocalOverride() throws Exception { doTest(BASE_PATH+"/packageLocalOverride/y/C.java", BASE_PATH+"/packageLocalOverride", false, false); }
public void testPackageLocalOverrideJustCheckThatPackageLocalMethodDoesNotGetOverridden() throws Exception { doTest(BASE_PATH+"/packageLocalOverride/y/B.java", BASE_PATH+"/packageLocalOverride", false, false); }
public void testProtectedAccessFromOtherPackage() throws Exception { doTest(BASE_PATH+"/protectedAccessFromOtherPackage/a/Main.java", BASE_PATH+"/protectedAccessFromOtherPackage", false, false); }
public void testProtectedFieldAccessFromOtherPackage() throws Exception { doTest(BASE_PATH+"/protectedAccessFromOtherPackage/a/A.java", BASE_PATH+"/protectedAccessFromOtherPackage", false, false); }
public void testPackageLocalClassInTheMiddle1() throws Exception { doTest(BASE_PATH+"/foreignPackageInBetween/a/A1.java", BASE_PATH+"/foreignPackageInBetween", false, false); }
public void testSingleImportConflict() throws Exception {
doTest(BASE_PATH + "/singleImport/d.java", BASE_PATH + "/singleImport", false, false);
}
public void testImportOnDemand() throws Exception { doTest(BASE_PATH+"/importOnDemand/y/Y.java", BASE_PATH+"/importOnDemand", false, false); }
public void testImportOnDemandVsSingle() throws Exception { doTest(BASE_PATH+"/importOnDemandVsSingle/y/Y.java", BASE_PATH+"/importOnDemandVsSingle", false, false); }
public void testImportSingleVsSamePackage() throws Exception { doTest(BASE_PATH+"/importSingleVsSamePackage/y/Y.java", BASE_PATH+"/importSingleVsSamePackage", false, false); }
public void testImportSingleVsInherited() throws Exception { doTest(BASE_PATH + "/importSingleVsInherited/Test.java", BASE_PATH + "/importSingleVsInherited", false, false); }
public void testImportOnDemandVsInherited() throws Exception { doTest(BASE_PATH + "/importOnDemandVsInherited/Test.java", BASE_PATH + "/importOnDemandVsInherited", false, false); }
public void testDuplicateTopLevelClass() throws Exception {
doTest(BASE_PATH + "/duplicateClass/A.java", BASE_PATH + "/duplicateClass", false, false);
}
public void testOverridePackageLocal() throws Exception { doTest(BASE_PATH+"/overridePackageLocal/x/y/Derived.java", BASE_PATH+"/overridePackageLocal", false, false); }
public void testAlreadyImportedClass() throws Exception { doTest(BASE_PATH+"/alreadyImportedClass/pack/AlreadyImportedClass.java", BASE_PATH+"/alreadyImportedClass", false, false); }
public void testImportDefaultPackage() throws Exception { doTest(BASE_PATH+"/importDefaultPackage/x/Usage.java", BASE_PATH+"/importDefaultPackage", false, false); }
public void testImportDefaultPackage2() throws Exception { doTest(BASE_PATH+"/importDefaultPackage/x/ImportOnDemandUsage.java", BASE_PATH+"/importDefaultPackage", false, false); }
public void testImportDefaultPackageInvalid() throws Exception { doTest(BASE_PATH+"/importDefaultPackage/x/InvalidUse.java", BASE_PATH+"/importDefaultPackage", false, false); }
public void testDuplicateTopLevelClass2() throws Exception {
doTest(BASE_PATH + "/duplicateClass/java/lang/Runnable.java", BASE_PATH + "/duplicateClass", false, false);
}
public void testProtectedConstructorCall() throws Exception {
doTest(BASE_PATH + "/protectedConstructor/p2/C2.java", BASE_PATH + "/protectedConstructor", false, false);
}
public void testProtectedConstructorCallInSamePackage() throws Exception {
doTest(BASE_PATH + "/protectedConstructor/samePackage/C2.java", BASE_PATH + "/protectedConstructor", false, false);
}
public void testProtectedConstructorCallInInner() throws Exception {
doTest(BASE_PATH + "/protectedConstructorInInner/p2/C2.java", BASE_PATH + "/protectedConstructorInInner", false, false);
}
public void testArrayLengthAccessFromSubClass() throws Exception {
doTest(BASE_PATH + "/arrayLength/p2/SubTest.java", BASE_PATH + "/arrayLength", false, false);
}
public void testAccessibleMember() throws Exception {
doTest(BASE_PATH + "/accessibleMember/com/red/C.java", BASE_PATH + "/accessibleMember", false, false);
}
public void testOnDemandImportConflict() throws Exception {
doTest(BASE_PATH + "/onDemandImportConflict/Outer.java", BASE_PATH + "/onDemandImportConflict", false, false);
}
public void testPackageLocalOverride() throws Exception {
doTest(BASE_PATH + "/packageLocalOverride/y/C.java", BASE_PATH + "/packageLocalOverride", false, false);
}
public void testPackageLocalOverrideJustCheckThatPackageLocalMethodDoesNotGetOverridden() throws Exception {
doTest(BASE_PATH + "/packageLocalOverride/y/B.java", BASE_PATH + "/packageLocalOverride", false, false);
}
public void testProtectedAccessFromOtherPackage() throws Exception {
doTest(BASE_PATH + "/protectedAccessFromOtherPackage/a/Main.java", BASE_PATH + "/protectedAccessFromOtherPackage", false, false);
}
public void testProtectedFieldAccessFromOtherPackage() throws Exception {
doTest(BASE_PATH + "/protectedAccessFromOtherPackage/a/A.java", BASE_PATH + "/protectedAccessFromOtherPackage", false, false);
}
public void testPackageLocalClassInTheMiddle1() throws Exception {
doTest(BASE_PATH + "/foreignPackageInBetween/a/A1.java", BASE_PATH + "/foreignPackageInBetween", false, false);
}
public void testImportOnDemand() throws Exception {
doTest(BASE_PATH + "/importOnDemand/y/Y.java", BASE_PATH + "/importOnDemand", false, false);
}
public void testImportOnDemandVsSingle() throws Exception {
doTest(BASE_PATH + "/importOnDemandVsSingle/y/Y.java", BASE_PATH + "/importOnDemandVsSingle", false, false);
}
public void testImportSingleVsSamePackage() throws Exception {
doTest(BASE_PATH + "/importSingleVsSamePackage/y/Y.java", BASE_PATH + "/importSingleVsSamePackage", false, false);
}
public void testImportSingleVsInherited() throws Exception {
doTest(BASE_PATH + "/importSingleVsInherited/Test.java", BASE_PATH + "/importSingleVsInherited", false, false);
}
public void testImportOnDemandVsInherited() throws Exception {
doTest(BASE_PATH + "/importOnDemandVsInherited/Test.java", BASE_PATH + "/importOnDemandVsInherited", false, false);
}
public void testOverridePackageLocal() throws Exception {
doTest(BASE_PATH + "/overridePackageLocal/x/y/Derived.java", BASE_PATH + "/overridePackageLocal", false, false);
}
public void testAlreadyImportedClass() throws Exception {
doTest(BASE_PATH + "/alreadyImportedClass/pack/AlreadyImportedClass.java", BASE_PATH + "/alreadyImportedClass", false, false);
}
public void testImportDefaultPackage() throws Exception {
doTest(BASE_PATH + "/importDefaultPackage/x/Usage.java", BASE_PATH + "/importDefaultPackage", false, false);
}
public void testImportDefaultPackage2() throws Exception {
doTest(BASE_PATH + "/importDefaultPackage/x/ImportOnDemandUsage.java", BASE_PATH + "/importDefaultPackage", false, false);
}
public void testImportDefaultPackageInvalid() throws Exception {
doTest(BASE_PATH + "/importDefaultPackage/x/InvalidUse.java", BASE_PATH + "/importDefaultPackage", false, false);
}
public void testScopeBased() throws Exception {
NamedScope xScope = new NamedScope("xxx", new PatternPackageSet("x..*", PatternPackageSet.SCOPE_SOURCE, null));
@@ -107,6 +180,7 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
scopeManager.removeAllSets();
}
}
public void testSharedScopeBased() throws Exception {
NamedScope xScope = new NamedScope("xxx", new PatternPackageSet("x..*", PatternPackageSet.SCOPE_ANY, null));
NamedScope utilScope = new NamedScope("util", new PatternPackageSet("java.util.*", PatternPackageSet.SCOPE_LIBRARY, null));
@@ -132,7 +206,7 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
scheme.setAttributes(projectKey, projectAttributes);
try {
testFile(BASE_PATH+"/scopeBased/x/Shared.java").projectRoot(BASE_PATH+"/scopeBased").checkSymbolNames().test();
testFile(BASE_PATH + "/scopeBased/x/Shared.java").projectRoot(BASE_PATH + "/scopeBased").checkSymbolNames().test();
}
finally {
scopeManager.removeAllSets();
@@ -146,20 +220,9 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
ModuleManager moduleManager = ModuleManager.getInstance(getProject());
final Module java4 = moduleManager.findModuleByName("java4");
Module java5 = moduleManager.findModuleByName("java5");
final ModuleRootManager rootManager4 = ModuleRootManager.getInstance(java4);
final ModuleRootManager rootManager5 = ModuleRootManager.getInstance(java5);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
final ModifiableRootModel rootModel4 = rootManager4.getModifiableModel();
rootModel4.setSdk(JavaSdkImpl.getMockJdk17("java 1.4"));
rootModel4.commit();
final ModifiableRootModel rootModel5 = rootManager5.getModifiableModel();
rootModel5.setSdk(JavaSdkImpl.getMockJdk17("java 1.5"));
rootModel5.addModuleOrderEntry(java4);
rootModel5.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(java4, JavaSdkImpl.getMockJdk17("java 1.4"));
ModuleRootModificationUtil.setModuleSdk(java5, JavaSdkImpl.getMockJdk17("java 1.5"));
ModuleRootModificationUtil.addDependency(java5, java4);
assert root != null;
configureByExistingFile(root.findFileByRelativePath("moduleJava5/com/Java5.java"));
@@ -12,6 +12,7 @@ import com.intellij.openapi.module.impl.ModuleManagerImpl;
import com.intellij.openapi.project.ex.ProjectManagerEx;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderEntry;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
@@ -32,7 +33,8 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
protected void setUpProject() throws Exception {
final String root = PathManagerEx.getTestDataPath() + BASE_PATH;
VirtualFile tempProjectRootDir = PsiTestUtil.createTestProjectStructure(getTestName(true), null, FileUtil.toSystemIndependentName(root), myFilesToDelete, false);
VirtualFile tempProjectRootDir =
PsiTestUtil.createTestProjectStructure(getTestName(true), null, FileUtil.toSystemIndependentName(root), myFilesToDelete, false);
VirtualFile projectFile = tempProjectRootDir.findChild("orderEntry.ipr");
@@ -57,7 +59,7 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
VirtualFile root = ModuleRootManager.getInstance(myModule).getContentRoots()[0].getParent();
VirtualFile virtualFile = root.findFileByRelativePath(fileName);
configureByExistingFile(virtualFile);
Pair<String,Boolean> pair = LightQuickFixTestCase.parseActionHint(getFile(), getFile().getText());
Pair<String, Boolean> pair = LightQuickFixTestCase.parseActionHint(getFile(), getFile().getText());
final String text = pair.getFirst();
final boolean actionShouldBeAvailable = pair.getSecond().booleanValue();
Collection<HighlightInfo> infosBefore = highlightErrors();
@@ -65,9 +67,9 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
if (action == null) {
if (actionShouldBeAvailable) {
fail("Action with text '" + text + "' is not available in test " + testFullPath+"." +
"\nAvailable actions are: "+LightQuickFixTestCase.getAvailableActions(getEditor(), getFile())
+"\nInfos are: "+infosBefore
fail("Action with text '" + text + "' is not available in test " + testFullPath + "." +
"\nAvailable actions are: " + LightQuickFixTestCase.getAvailableActions(getEditor(), getFile())
+ "\nInfos are: " + infosBefore
);
}
}
@@ -87,7 +89,7 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
if (afterAction != null) {
fail("Action '" + text + "' is still available after its invocation in test " + testFullPath);
}
assertEquals(infosBefore.size()-1, infosAfter.size());
assertEquals(infosBefore.size() - 1, infosAfter.size());
}
}
@@ -96,12 +98,18 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
return LightQuickFixTestCase.findActionWithText(actions, actionText);
}
public void testAddDependency() throws Exception { doTest("B/src/y/AddDependency.java"); }
public void testAddLibrary() throws Exception { doTest("B/src/y/AddLibrary.java"); }
public void testAddDependency() throws Exception {
doTest("B/src/y/AddDependency.java");
}
public void testAddLibrary() throws Exception {
doTest("B/src/y/AddLibrary.java");
}
public void testAddCircularDependency() throws Exception {
final Module a = ModuleManager.getInstance(getProject()).findModuleByName("A");
final Module b = ModuleManager.getInstance(getProject()).findModuleByName("B");
PsiTestUtil.addDependency(a, b);
ModuleRootModificationUtil.addDependency(a, b);
try {
doTest("B/src/y/AddDependency.java");
@@ -109,12 +117,13 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
}
catch (RuntimeException e) {
final String expected = "Adding dependency on module '" + a.getName() + "'" +
" will introduce circular dependency between modules '" + a.getName() + "' and '" +
b.getName() + "'.\n" + "Add dependency anyway?";
" will introduce circular dependency between modules '" + a.getName() + "' and '" +
b.getName() + "'.\n" + "Add dependency anyway?";
String message = e.getMessage();
assertEquals(expected, message);
}
}
public void testAddJunit() throws Exception {
doTest("A/src/x/DoTest.java");
}
@@ -7,11 +7,7 @@ package com.intellij.codeInspection;
import com.intellij.JavaTestUtil;
import com.intellij.codeInspection.ex.LocalInspectionToolWrapper;
import com.intellij.codeInspection.java15api.Java15APIUsageInspection;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.roots.ContentIterator;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.impl.FileIndexImplUtil;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.vfs.JarFileSystem;
@@ -22,6 +18,7 @@ import com.intellij.psi.*;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.javadoc.PsiDocTag;
import com.intellij.psi.javadoc.PsiDocTagValue;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.InspectionTestCase;
public class JavaAPIUsagesInspectionTest extends InspectionTestCase {
@@ -30,38 +27,18 @@ public class JavaAPIUsagesInspectionTest extends InspectionTestCase {
return JavaTestUtil.getJavaTestDataPath() + "/inspection";
}
private void doTest() throws Exception {
private void doTest() {
final Java15APIUsageInspection usageInspection = new Java15APIUsageInspection();
doTest("usage1.5/" + getTestName(true), new LocalInspectionToolWrapper(usageInspection), "java 1.5");
}
public void testConstructor() throws Exception {
final LanguageLevel[] languageLevel = {null};
try {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
ModifiableRootModel model = ModuleRootManager.getInstance(getModule()).getModifiableModel();
LanguageLevelModuleExtension extension = model.getModuleExtension(LanguageLevelModuleExtension.class);
languageLevel[0] = extension.getLanguageLevel();
extension.setLanguageLevel(LanguageLevel.JDK_1_4);
model.commit();
}
});
doTest();
}
finally {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
ModifiableRootModel model = ModuleRootManager.getInstance(getModule()).getModifiableModel();
LanguageLevelModuleExtension extension = model.getModuleExtension(LanguageLevelModuleExtension.class);
extension.setLanguageLevel(languageLevel[0]);
model.commit();
}
});
}
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_4, new Runnable() {
@Override
public void run() {
doTest();
}
});
}
public void testIgnored() throws Exception {
@@ -75,7 +52,7 @@ public class JavaAPIUsagesInspectionTest extends InspectionTestCase {
public boolean processFile(VirtualFile fileOrDir) {
final PsiFile file = PsiManager.getInstance(getProject()).findFile(fileOrDir);
if (file instanceof PsiJavaFile) {
file.accept(new JavaRecursiveElementVisitor(){
file.accept(new JavaRecursiveElementVisitor() {
@Override
public void visitElement(PsiElement element) {
super.visitElement(element);
@@ -19,16 +19,16 @@ import com.intellij.execution.CantRunException;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.DependencyScope;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.roots.ModuleRootManagerTestCase;
import com.intellij.testFramework.PsiTestUtil;
/**
* @author nik
*/
public class JavaParametersTest extends ModuleRootManagerTestCase {
public void testLibrary() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
assertClasspath(myModule, JavaParameters.JDK_AND_CLASSES_AND_TESTS,
getRtJar(), getJDomJar());
assertClasspath(myModule, JavaParameters.CLASSES_ONLY,
@@ -54,8 +54,8 @@ public class JavaParametersTest extends ModuleRootManagerTestCase {
}
public void testLibraryScope() throws Exception {
addLibraryDependency(myModule, createJDomLibrary(), DependencyScope.RUNTIME, false);
addLibraryDependency(myModule, createAsmLibrary(), DependencyScope.TEST, false);
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary(), DependencyScope.RUNTIME, false);
ModuleRootModificationUtil.addDependency(myModule, createAsmLibrary(), DependencyScope.TEST, false);
assertClasspath(myModule, JavaParameters.CLASSES_AND_TESTS,
getJDomJar(), getAsmJar());
@@ -64,7 +64,7 @@ public class JavaParametersTest extends ModuleRootManagerTestCase {
}
public void testProvidedScope() throws Exception {
addLibraryDependency(myModule, createJDomLibrary(), DependencyScope.PROVIDED, false);
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary(), DependencyScope.PROVIDED, false);
assertClasspath(myModule, JavaParameters.CLASSES_AND_TESTS, getJDomJar());
assertClasspath(myModule, JavaParameters.CLASSES_ONLY);
@@ -74,19 +74,19 @@ public class JavaParametersTest extends ModuleRootManagerTestCase {
final Module dep = createModule("dep");
final VirtualFile depOutput = setModuleOutput(dep, false);
final VirtualFile depTestOutput = setModuleOutput(dep, true);
addLibraryDependency(dep, createJDomLibrary());
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
assertClasspath(myModule, JavaParameters.CLASSES_ONLY,
depOutput, getJDomJar());
assertClasspath(myModule, JavaParameters.CLASSES_AND_TESTS,
depTestOutput, depOutput, getJDomJar());
}
public void testModuleDependencyScope() throws Exception {
final Module dep = createModule("dep");
addLibraryDependency(dep, createJDomLibrary());
PsiTestUtil.addDependency(myModule, dep, DependencyScope.TEST, true);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.TEST, true);
assertClasspath(myModule, JavaParameters.CLASSES_ONLY);
assertClasspath(myModule, JavaParameters.CLASSES_AND_TESTS,
@@ -4,6 +4,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable;
import com.intellij.openapi.roots.libraries.Library;
@@ -31,14 +32,7 @@ public class ProjectLibrariesTest extends IdeaTestCase {
return libraryTable.createLibrary("LIB");
}
});
final ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
rootModel.addLibraryEntry(lib);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
rootModel.commit();
}
});
ModuleRootModificationUtil.addDependency(myModule, lib);
final JavaPsiFacade manager = getJavaFacade();
assertNull(manager.findClass("pack.MyClass", GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(myModule)));
final File file = new File(PathManagerEx.getTestDataPath() + "/psi/repositoryUse/cls");
@@ -69,14 +63,7 @@ public class ProjectLibrariesTest extends IdeaTestCase {
return libraryTable.createLibrary("LIB");
}
});
final ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
rootModel.addLibraryEntry(lib);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
rootModel.commit();
}
});
ModuleRootModificationUtil.addDependency(myModule, lib);
final JavaPsiFacade manager = getJavaFacade();
assertNull(manager.findClass("pack.MyClass", GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(myModule)));
@@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
@@ -36,7 +37,7 @@ import com.intellij.testFramework.PsiTestUtil;
import java.io.File;
@PlatformTestCase.WrapInCommand
public class ClsRepositoryUseTest extends PsiTestCase{
public class ClsRepositoryUseTest extends PsiTestCase {
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.ClsRepositoryUseTest");
private static final String TEST_ROOT = PathManagerEx.getTestDataPath() + "/psi/repositoryUse/cls";
@@ -90,12 +91,12 @@ public class ClsRepositoryUseTest extends PsiTestCase{
new Runnable() {
@Override
public void run() {
try{
try {
VirtualFile vDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(classes);
assertNotNull(vDir);
addLibraryToRoots(vDir, OrderRootType.CLASSES);
}
catch(Exception e){
catch (Exception e) {
LOG.error(e);
}
}
@@ -131,10 +132,10 @@ public class ClsRepositoryUseTest extends PsiTestCase{
new Runnable() {
@Override
public void run() {
try{
try {
vFile.refresh(false, false);
}
catch(Exception e){
catch (Exception e) {
LOG.error(e);
}
}
@@ -167,7 +168,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
return vDir;
}
public void testGetClasses(){
public void testGetClasses() {
final VirtualFile rootFile = getRootFile();
final VirtualFile pack = rootFile.findChild("pack");
assert pack != null;
@@ -183,7 +184,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals(file, aClass.getParent());
}
public void testGetClassName(){
public void testGetClassName() {
final VirtualFile rootFile = getRootFile();
final VirtualFile pack = rootFile.findChild("pack");
assert pack != null;
@@ -199,7 +200,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals("MyClass", aClass.getName());
}
public void testGetClassQName(){
public void testGetClassQName() {
final VirtualFile rootFile = getRootFile();
final VirtualFile pack = rootFile.findChild("pack");
assert pack != null;
@@ -215,7 +216,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals("pack.MyClass", aClass.getQualifiedName());
}
public void testGetContainingFile(){
public void testGetContainingFile() {
final VirtualFile rootFile = getRootFile();
final VirtualFile pack = rootFile.findChild("pack");
assert pack != null;
@@ -231,7 +232,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals(file, aClass.getContainingFile());
}
public void testFindClass(){
public void testFindClass() {
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.ALL);
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
@@ -241,7 +242,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
getJavaFacade().setAssertOnFileLoadingFilter(VirtualFileFilter.NONE);
}
public void testIsInterface(){
public void testIsInterface() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -252,7 +253,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertTrue(elt.isValid());
}
public void testPackageName(){
public void testPackageName() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -260,7 +261,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals("pack", packageName);
}
public void testGetFields(){
public void testGetFields() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -269,7 +270,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals(aClass, fields[0].getParent());
}
public void testGetMethods(){
public void testGetMethods() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -278,7 +279,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals(aClass, methods[0].getParent());
}
public void testGetInnerClasses(){
public void testGetInnerClasses() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -310,21 +311,21 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals(modifierList.getParent(), method);
}
public void testGetFieldName(){
public void testGetFieldName() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
assertEquals("field1", aClass.getFields()[0].getName());
}
public void testGetMethodName(){
public void testGetMethodName() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
assertEquals("method1", aClass.getMethods()[0].getName());
}
public void testFindFieldByName(){
public void testFindFieldByName() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -332,7 +333,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertNotNull(field);
}
public void testIsDeprecated(){
public void testIsDeprecated() {
PsiClass aClass = myJavaFacade.findClass("pack.MyClass", GlobalSearchScope.allScope(myProject));
assert aClass != null;
checkValid(aClass);
@@ -403,7 +404,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
PsiField field = aClass.getFields()[1];
PsiType type = field.getType();
LOG.assertTrue(type instanceof PsiArrayType);
PsiType componentType = ((PsiArrayType) type).getComponentType();
PsiType componentType = ((PsiArrayType)type).getComponentType();
assertTrue(componentType.equalsToText(CommonClassNames.JAVA_LANG_OBJECT));
assertEquals("Object", componentType.getPresentableText());
@@ -421,7 +422,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertNull(PsiUtil.resolveClassInType(type1));
PsiField field2 = aClass.getFields()[1];
PsiType type2 = ((PsiArrayType) field2.getType()).getComponentType();
PsiType type2 = ((PsiArrayType)field2.getType()).getComponentType();
assertTrue(type2 instanceof PsiClassType);
assertTrue(type2.equalsToText(CommonClassNames.JAVA_LANG_OBJECT));
@@ -535,7 +536,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
PsiClass map = myJavaFacade.findClass("java.util.HashMap", RESOLVE_SCOPE);
assert map != null;
PsiMethod entrySet = map.findMethodsByName("entrySet", false)[0];
PsiClassType ret = (PsiClassType) entrySet.getReturnType();
PsiClassType ret = (PsiClassType)entrySet.getReturnType();
assert ret != null : entrySet;
final PsiClassType.ClassResolveResult setResolveResult = ret.resolveGenerics();
final PsiClass setResolveResultElement = setResolveResult.getElement();
@@ -560,20 +561,13 @@ public class ClsRepositoryUseTest extends PsiTestCase{
};
assertEquals(2, mapParams.length);
assertEquals("K", mapParams[0].getCanonicalText());
assertTrue(((PsiClassType) mapParams[0]).resolve() instanceof PsiTypeParameter);
assertTrue(((PsiClassType)mapParams[0]).resolve() instanceof PsiTypeParameter);
assertEquals("V", mapParams[1].getCanonicalText());
assertTrue(((PsiClassType) mapParams[1]).resolve() instanceof PsiTypeParameter);
assertTrue(((PsiClassType)mapParams[1]).resolve() instanceof PsiTypeParameter);
}
private void disableJdk() {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
final ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
rootModel.setSdk(null);
rootModel.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(myModule, null);
}
public void testGenericReturnType() throws Exception {
@@ -583,7 +577,7 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assert map != null;
final PsiElementFactory factory = myJavaFacade.getElementFactory();
final PsiClassType typeMapStringToInteger =
(PsiClassType) factory.createTypeFromText("java.util.Map <java.lang.String,java.lang.Integer>", null);
(PsiClassType)factory.createTypeFromText("java.util.Map <java.lang.String,java.lang.Integer>", null);
final PsiClassType.ClassResolveResult mapResolveResult = typeMapStringToInteger.resolveGenerics();
final PsiClass mapResolveResultElement = mapResolveResult.getElement();
assert mapResolveResultElement != null : typeMapStringToInteger;
@@ -595,7 +589,8 @@ public class ClsRepositoryUseTest extends PsiTestCase{
assertEquals("java.util.Set<? extends java.util.Map.Entry<K,V>>", entrySetReturnType.getCanonicalText());
final PsiSubstitutor substitutor = ((PsiClassType)entrySetReturnType).resolveGenerics().getSubstitutor();
assertEquals("E of java.util.Set -> ? extends java.util.Map.Entry<K,V>\n", substitutor.toString());
final PsiType typeSetOfEntriesOfStringAndInteger = factory.createTypeFromText("java.util.Set<? extends java.util.Map.Entry<java.lang.String,java.lang.Integer>>", null);
final PsiType typeSetOfEntriesOfStringAndInteger =
factory.createTypeFromText("java.util.Set<? extends java.util.Map.Entry<java.lang.String,java.lang.Integer>>", null);
final PsiType substitutedEntrySetReturnType = mapResolveResult.getSubstitutor().substitute(entrySetReturnType);
assertTrue(typeSetOfEntriesOfStringAndInteger.equals(substitutedEntrySetReturnType));
assertTrue(typeSetOfEntriesOfStringAndInteger.isAssignableFrom(substitutedEntrySetReturnType));
@@ -608,8 +603,8 @@ public class ClsRepositoryUseTest extends PsiTestCase{
"}";
PsiJavaFile file = (PsiJavaFile)PsiFileFactory.getInstance(getProject()).createFileFromText("Dummy.java", text);
PsiDeclarationStatement decl = (PsiDeclarationStatement) file.getClasses()[0].getInitializers()[0].getBody().getStatements()[0];
PsiVariable list = (PsiVariable) decl.getDeclaredElements()[0];
PsiDeclarationStatement decl = (PsiDeclarationStatement)file.getClasses()[0].getInitializers()[0].getBody().getStatements()[0];
PsiVariable list = (PsiVariable)decl.getDeclaredElements()[0];
final PsiExpression initializer = list.getInitializer();
assert initializer != null : list;
final PsiType type = initializer.getType();
@@ -5,6 +5,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
@@ -36,7 +37,8 @@ public class SCR14423Test extends PsiTestCase {
@Override
public void run() {
try {
VirtualFile rootVFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(root.getAbsolutePath().replace(File.separatorChar, '/'));
VirtualFile rootVFile =
LocalFileSystem.getInstance().refreshAndFindFileByPath(root.getAbsolutePath().replace(File.separatorChar, '/'));
myPrjDir1 = rootVFile.createChildDirectory(null, "prj1");
mySrcDir1 = myPrjDir1.createChildDirectory(null, "src1");
@@ -121,9 +123,7 @@ public class SCR14423Test extends PsiTestCase {
LocalFileSystem.getInstance().refresh(false);
ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
rootModel.setSdk(null);
rootModel.commit();
ModuleRootModificationUtil.setModuleSdk(myModule, null);
psiClass = myJavaFacade.findClass("p.A");
assertNotNull(psiClass);
@@ -20,6 +20,7 @@ import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
@@ -29,25 +30,25 @@ import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.ResolveTestCase;
public class ResolveClassTest extends ResolveTestCase {
public void testFQName() throws Exception{
public void testFQName() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
}
public void testVarInNew() throws Exception{
public void testVarInNew() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
}
public void testVarInNew1() throws Exception{
public void testVarInNew1() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
}
public void testPrivateInExtends() throws Exception{
public void testPrivateInExtends() throws Exception {
PsiReference ref = configure();
final JavaResolveResult result = ((PsiJavaReference)ref).advancedResolve(true);
PsiElement target = result.getElement();
@@ -55,13 +56,13 @@ public class ResolveClassTest extends ResolveTestCase {
assertFalse(result.isAccessible());
}
public void testQNew1() throws Exception{
public void testQNew1() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
}
public void testInnerPrivateMember1() throws Exception{
public void testInnerPrivateMember1() throws Exception {
PsiReference ref = configure();
final JavaResolveResult result = ((PsiJavaReference)ref).advancedResolve(true);
PsiElement target = result.getElement();
@@ -70,7 +71,7 @@ public class ResolveClassTest extends ResolveTestCase {
}
public void testQNew2() throws Exception{
public void testQNew2() throws Exception {
PsiJavaCodeReferenceElement ref = (PsiJavaCodeReferenceElement)configure();
PsiElement target = ref.advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
@@ -82,7 +83,7 @@ public class ResolveClassTest extends ResolveTestCase {
assertEquals(target, ((PsiAnonymousClass)parent).getBaseClassType().resolve());
}
public void testClassExtendsItsInner1() throws Exception{
public void testClassExtendsItsInner1() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
@@ -96,7 +97,7 @@ public class ResolveClassTest extends ResolveTestCase {
assertEquals("B.Foo", ((PsiClass)target1).getQualifiedName());
}
public void testClassExtendsItsInner2() throws Exception{
public void testClassExtendsItsInner2() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertNull(target); //[ven] this should not be resolved
@@ -104,26 +105,26 @@ public class ResolveClassTest extends ResolveTestCase {
assertEquals("TTT.Bar", ((PsiClass)target).getQualifiedName());*/
}
public void testSCR40332() throws Exception{
public void testSCR40332() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertNull(target);
}
public void testImportConflict1() throws Exception{
public void testImportConflict1() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target == null);
}
public void testImportConflict2() throws Exception{
public void testImportConflict2() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
assertEquals("java.util.Date", ((PsiClass)target).getQualifiedName());
}
public void testLocals1() throws Exception{
public void testLocals1() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
@@ -131,7 +132,7 @@ public class ResolveClassTest extends ResolveTestCase {
assertNull(((PsiClass)target).getQualifiedName());
}
public void testLocals2() throws Exception{
public void testLocals2() throws Exception {
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
@@ -155,14 +156,14 @@ public class ResolveClassTest extends ResolveTestCase {
assertTrue("Outer.Double".equals(((PsiClass)element).getQualifiedName()));
}
public void testTwoModules() throws Exception{
public void testTwoModules() throws Exception {
configureDependency();
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
assertTrue(target instanceof PsiClass);
}
public void testTwoModules2() throws Exception{
public void testTwoModules2() throws Exception {
configureDependency();
PsiReference ref = configure();
PsiElement target = ((PsiJavaReference)ref).advancedResolve(true).getElement();
@@ -220,7 +221,7 @@ public class ResolveClassTest extends ResolveTestCase {
PsiTestUtil.addSourceRoot(module, root.findChild("src"));
PsiTestUtil.addSourceRoot(module, root.findChild("test"), true);
PsiTestUtil.addDependency(getModule(), module);
ModuleRootModificationUtil.addDependency(getModule(), module);
}
});
}
@@ -33,6 +33,7 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.*;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.PlatformTestCase;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.util.containers.ContainerUtil;
import java.io.File;
@@ -120,15 +121,10 @@ public class DirectoryIndexImplTest extends IdeaTestCase {
// fill roots of module1
{
ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
rootModel.setSdk(null);
ContentEntry contentEntry1 = rootModel.addContentEntry(myModule1Dir);
contentEntry1.addSourceFolder(myTestSrc1, true);
contentEntry1.addSourceFolder(mySrcDir1, false);
rootModel.commit();
ModuleRootModificationUtil.setModuleSdk(myModule, null);
PsiTestUtil.addContentRoot(myModule, myModule1Dir);
PsiTestUtil.addSourceRoot(myModule, mySrcDir1);
PsiTestUtil.addSourceRoot(myModule, myTestSrc1, true);
}
ModuleManager moduleManager = ModuleManager.getInstance(myProject);
@@ -156,11 +152,8 @@ public class DirectoryIndexImplTest extends IdeaTestCase {
VirtualFile moduleFile = myModule3Dir.createChildData(null, "module3.iml");
myModule3 = moduleManager.newModule(moduleFile.getPath(), StdModuleTypes.JAVA.getId());
ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule3).getModifiableModel();
rootModel.addContentEntry(myModule3Dir);
rootModel.addModuleOrderEntry(myModule2); // module3 depends on module2
rootModel.commit();
PsiTestUtil.addContentRoot(myModule3, myModule3Dir);
ModuleRootModificationUtil.addDependency(myModule3, myModule2);
}
}
catch (IOException e) {
@@ -21,17 +21,13 @@ import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleOrderEntry;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.PsiTestUtil;
import java.io.File;
@@ -57,12 +53,9 @@ public class ExportingModulesTest extends IdeaTestCase {
configureModule(moduleB, testRoot, "B");
configureModule(moduleC, testRoot, "C");
final ModifiableRootModel rootModelB = ModuleRootManager.getInstance(moduleB).getModifiableModel();
final ModuleOrderEntry moduleBAentry = rootModelB.addModuleOrderEntry(moduleA);
moduleBAentry.setExported(true);
rootModelB.commit();
ModuleRootModificationUtil.addDependency(moduleB, moduleA, DependencyScope.COMPILE, true);
PsiTestUtil.addDependency(moduleC, moduleB);
ModuleRootModificationUtil.addDependency(moduleC, moduleB);
final PsiClass pCClass =
JavaPsiFacade.getInstance(myProject).findClass("p.C", GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(moduleC));
@@ -4,10 +4,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.roots.InheritedJdkOrderEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.RootPolicy;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
import com.intellij.testFramework.ModuleTestCase;
import junit.framework.Assert;
@@ -35,23 +32,14 @@ public class InheritedJdkTest extends ModuleTestCase {
public void run() {
final ProjectRootManagerEx rootManagerEx = ProjectRootManagerEx.getInstanceEx(myProject);
rootManagerEx.setProjectSdkName(jdk.getName());
final ModifiableRootModel rootModel = rootManager.getModifiableModel();
rootModel.inheritSdk();
rootModel.commit();
ModuleRootModificationUtil.setSdkInherited(myModule);
}
});
assertTrue("JDK is inherited after explicit inheritSdk()", rootManager.isSdkInherited());
assertEquals("Correct jdk inherited", jdk, rootManager.getSdk());
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
final ModifiableRootModel rootModel = rootManager.getModifiableModel();
rootModel.setSdk(null);
rootModel.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(myModule, null);
assertFalse("JDK is not inherited after setJdk(null)", rootManager.isSdkInherited());
assertNull("No JDK assigned", rootManager.getSdk());
@@ -63,14 +51,7 @@ public class InheritedJdkTest extends ModuleTestCase {
ProjectJdkTable.getInstance().addJdk(jdk1);
}
});
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
final ModifiableRootModel rootModel = rootManager.getModifiableModel();
rootModel.setSdk(jdk1);
rootModel.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(myModule, jdk1);
assertFalse("JDK is not inherited after setJdk(jdk1)", rootManager.isSdkInherited());
assertEquals("jdk1 is assigned", jdk1, rootManager.getSdk());
@@ -78,14 +59,7 @@ public class InheritedJdkTest extends ModuleTestCase {
public void test2() throws Exception {
final ModuleRootManager rootManager = ModuleRootManager.getInstance(myModule);
final ModifiableRootModel rootModel = rootManager.getModifiableModel();
rootModel.inheritSdk();
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
rootModel.commit();
}
});
ModuleRootModificationUtil.setSdkInherited(myModule);
assertTrue("JDK is inherited after inheritSdk()", rootManager.isSdkInherited());
assertNull("No JDK assigned", rootManager.getSdk());
@@ -118,12 +92,12 @@ public class InheritedJdkTest extends ModuleTestCase {
assertTrue(rootManager.isSdkInherited());
Assert.assertEquals("Correct non-existing JDK inherited", "jdk1",
rootManager.orderEntries().process(new RootPolicy<String>() {
@Override
public String visitInheritedJdkOrderEntry(InheritedJdkOrderEntry inheritedJdkOrderEntry, String s) {
return inheritedJdkOrderEntry.getJdkName();
}
}, null));
rootManager.orderEntries().process(new RootPolicy<String>() {
@Override
public String visitInheritedJdkOrderEntry(InheritedJdkOrderEntry inheritedJdkOrderEntry, String s) {
return inheritedJdkOrderEntry.getJdkName();
}
}, null));
assertNull("Non-existing JDK", rootManager.getSdk());
final Sdk jdk1 = JavaSdkImpl.getMockJdk17("jdk1");
@@ -91,23 +91,6 @@ public abstract class ModuleRootManagerTestCase extends ModuleTestCase {
return output;
}
protected void addLibraryDependency(Module module, Library dependency) {
addLibraryDependency(module, dependency, DependencyScope.COMPILE, false);
}
protected void addLibraryDependency(final Module module, final Library dependency, final DependencyScope scope, final boolean exported) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
final LibraryOrderEntry entry = model.addLibraryEntry(dependency);
entry.setScope(scope);
entry.setExported(exported);
model.commit();
}
});
}
protected Library createLibrary(final String name, final VirtualFile classesRoot) {
return createLibrary(name, classesRoot, null);
}
@@ -84,7 +84,7 @@ public class ModuleScopesTest extends ModuleTestCase {
VirtualFile rootB = myFixture.findOrCreateDir("b");
VirtualFile outB = myFixture.findOrCreateDir("out");
PsiTestUtil.addDependency(moduleA, moduleB, scope, false);
ModuleRootModificationUtil.addDependency(moduleA, moduleB, scope, false);
final ModifiableRootModel modelB = ModuleRootManager.getInstance(moduleB).getModifiableModel();
final ContentEntry contentEntry = modelB.addContentEntry(rootB);
@@ -176,7 +176,8 @@ public class ModuleScopesTest extends ModuleTestCase {
}
private static VirtualFile[] getProductionCompileClasspath(Module moduleA) {
return ModuleRootManager.getInstance(moduleA).orderEntries().productionOnly().compileOnly().recursively().exportedOnly().getClassesRoots();
return ModuleRootManager.getInstance(moduleA).orderEntries().productionOnly().compileOnly().recursively().exportedOnly()
.getClassesRoots();
}
private static VirtualFile[] getCompilationClasspath(Module m) {
@@ -1,12 +1,8 @@
package com.intellij.roots;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.DependencyScope;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.util.PathsList;
/**
@@ -15,7 +11,7 @@ import com.intellij.util.PathsList;
@SuppressWarnings({"deprecation"})
public class OrderEntriesTest extends ModuleRootManagerTestCase {
public void testLibrary() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
assertOrderFiles(OrderRootType.CLASSES, getRtJar(), getJDomJar());
assertOrderFiles(OrderRootType.SOURCES, getJDomSources());
assertOrderFiles(OrderRootType.CLASSES_AND_OUTPUT, getRtJar(), getJDomJar());
@@ -37,7 +33,7 @@ public class OrderEntriesTest extends ModuleRootManagerTestCase {
}
public void testLibraryScope() throws Exception {
addLibraryDependency(myModule, createJDomLibrary(), DependencyScope.TEST, false);
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary(), DependencyScope.TEST, false);
assertOrderFiles(OrderRootType.CLASSES, getRtJar(), getJDomJar());
assertOrderFiles(OrderRootType.SOURCES, getJDomSources());
@@ -52,8 +48,8 @@ public class OrderEntriesTest extends ModuleRootManagerTestCase {
final VirtualFile testRoot = addSourceRoot(dep, true);
final VirtualFile output = setModuleOutput(dep, false);
final VirtualFile testOutput = setModuleOutput(dep, true);
addLibraryDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
assertOrderFiles(OrderRootType.CLASSES, getRtJar(), getJDomJar());
assertOrderFiles(OrderRootType.SOURCES, srcRoot, testRoot, getJDomSources());
@@ -64,8 +60,8 @@ public class OrderEntriesTest extends ModuleRootManagerTestCase {
public void testModuleDependencyScope() throws Exception {
final Module dep = createModule("dep");
addLibraryDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
PsiTestUtil.addDependency(myModule, dep, DependencyScope.TEST, true);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.TEST, true);
assertOrderFiles(OrderRootType.CLASSES, getRtJar(), getJDomJar());
assertOrderFiles(OrderRootType.SOURCES, getJDomSources());
@@ -76,8 +72,8 @@ public class OrderEntriesTest extends ModuleRootManagerTestCase {
public void testNotExportedLibraryDependency() throws Exception {
final Module dep = createModule("dep");
addLibraryDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, false);
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
assertOrderFiles(OrderRootType.CLASSES, getRtJar());
assertOrderFiles(OrderRootType.SOURCES);
@@ -1,12 +1,8 @@
package com.intellij.roots;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.DependencyScope;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.roots.OrderRootsEnumerator;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.util.ArrayUtil;
import java.util.ArrayList;
@@ -22,7 +18,7 @@ import static com.intellij.openapi.roots.OrderEnumerator.orderEntries;
public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
public void testLibrary() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
assertClassRoots(orderEntries(myModule), getRtJar(), getJDomJar());
assertClassRoots(orderEntries(myModule).withoutSdk(), getJDomJar());
@@ -47,7 +43,7 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
}
public void testLibraryScope() throws Exception {
addLibraryDependency(myModule, createJDomLibrary(), DependencyScope.RUNTIME, false);
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary(), DependencyScope.RUNTIME, false);
assertClassRoots(orderEntries(myModule).withoutSdk(), getJDomJar());
assertClassRoots(orderEntries(myModule).withoutSdk().exportedOnly());
@@ -60,8 +56,8 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
final VirtualFile depTestRoot = addSourceRoot(dep, true);
final VirtualFile depOutput = setModuleOutput(dep, false);
final VirtualFile depTestOutput = setModuleOutput(dep, true);
addLibraryDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, true);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, true);
final VirtualFile srcRoot = addSourceRoot(myModule, false);
final VirtualFile testRoot = addSourceRoot(myModule, true);
@@ -93,8 +89,8 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
public void testModuleDependencyScope() throws Exception {
final Module dep = createModule("dep");
addLibraryDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
PsiTestUtil.addDependency(myModule, dep, DependencyScope.TEST, true);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, true);
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.TEST, true);
assertClassRoots(orderEntries(myModule).withoutSdk());
assertClassRoots(orderEntries(myModule).withoutSdk().recursively(), getJDomJar());
@@ -107,9 +103,9 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
public void testNotExportedLibrary() throws Exception {
final Module dep = createModule("dep");
addLibraryDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, false);
addLibraryDependency(myModule, createAsmLibrary(), DependencyScope.COMPILE, false);
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary(), DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(myModule, createAsmLibrary(), DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
assertClassRoots(orderEntries(myModule).withoutSdk(), getAsmJar());
assertClassRoots(orderEntries(myModule).withoutSdk().recursively(), getAsmJar(), getJDomJar());
@@ -130,7 +126,7 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
assertSame(roots, orderEntries(myModule).classes().usingCache().getRoots());
assertSame(rootsWithoutSdk, orderEntries(myModule).withoutSdk().classes().usingCache().getRoots());
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
assertRoots(orderEntries(myModule).classes().usingCache().getPathsList(), getRtJar(), getJDomJar());
assertRoots(orderEntries(myModule).withoutSdk().classes().usingCache().getPathsList(), getJDomJar());
@@ -146,13 +142,13 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
assertSame(urls, orderEntries(myModule).classes().usingCache().getUrls());
assertSame(sourceUrls, orderEntries(myModule).sources().usingCache().getUrls());
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
assertOrderedEquals(orderEntries(myModule).classes().usingCache().getUrls(), getRtJar().getUrl(), getJDomJar().getUrl());
assertOrderedEquals(orderEntries(myModule).sources().usingCache().getUrls(), getJDomSources().getUrl());
}
public void testProject() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
final VirtualFile srcRoot = addSourceRoot(myModule, false);
final VirtualFile testRoot = addSourceRoot(myModule, true);
@@ -164,7 +160,7 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase {
}
public void testModules() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
final VirtualFile srcRoot = addSourceRoot(myModule, false);
final VirtualFile testRoot = addSourceRoot(myModule, true);
@@ -16,12 +16,8 @@
package com.intellij.roots;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.DependencyScope;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.roots.ProjectClasspathTraversing;
import com.intellij.openapi.roots.ProjectRootsTraversing;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.util.PathsList;
/**
@@ -30,7 +26,7 @@ import com.intellij.util.PathsList;
@SuppressWarnings({"deprecation"})
public class ProjectClasspathTraversingTest extends ModuleRootManagerTestCase {
public void testLibrary() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
doTest(ProjectClasspathTraversing.FULL_CLASSPATH, getRtJar(), getJDomJar());
doTest(ProjectClasspathTraversing.FULL_CLASS_RECURSIVE_WO_JDK, getJDomJar());
@@ -38,7 +34,7 @@ public class ProjectClasspathTraversingTest extends ModuleRootManagerTestCase {
doTest(ProjectClasspathTraversing.FULL_CLASSPATH_WITHOUT_JDK_AND_TESTS, getJDomJar());
doTest(ProjectClasspathTraversing.FULL_CLASSPATH_WITHOUT_TESTS, getRtJar(), getJDomJar());
}
public void testModuleOutput() throws Exception {
addSourceRoot(myModule, false);
final VirtualFile output = setModuleOutput(myModule, false);
@@ -52,7 +48,7 @@ public class ProjectClasspathTraversingTest extends ModuleRootManagerTestCase {
}
public void testLibraryScope() throws Exception {
addLibraryDependency(myModule, createJDomLibrary(), DependencyScope.TEST, true);
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary(), DependencyScope.TEST, true);
doTest(ProjectClasspathTraversing.FULL_CLASSPATH, getRtJar(), getJDomJar());
doTest(ProjectClasspathTraversing.FULL_CLASS_RECURSIVE_WO_JDK, getJDomJar());
@@ -65,8 +61,8 @@ public class ProjectClasspathTraversingTest extends ModuleRootManagerTestCase {
final Module dep = createModule("dep");
final VirtualFile output = setModuleOutput(dep, false);
final VirtualFile testOutput = setModuleOutput(dep, true);
addLibraryDependency(dep, createJDomLibrary());
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
doTest(ProjectClasspathTraversing.FULL_CLASSPATH, getRtJar());
doTest(ProjectClasspathTraversing.FULL_CLASS_RECURSIVE_WO_JDK, testOutput, output, getJDomJar());
@@ -2,10 +2,10 @@ package com.intellij.roots;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.DependencyScope;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.roots.ProjectRootsTraversing;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.util.PathsList;
/**
@@ -15,7 +15,7 @@ import com.intellij.util.PathsList;
public class ProjectRootsTraversingTest extends ModuleRootManagerTestCase {
public void testLibrary() throws Exception {
addLibraryDependency(myModule, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary());
doTest(ProjectRootsTraversing.LIBRARIES_AND_JDK, getRtJar(), getJDomJar());
doTest(ProjectRootsTraversing.PROJECT_LIBRARIES, getJDomJar());
doTest(ProjectRootsTraversing.PROJECT_SOURCES);
@@ -43,8 +43,8 @@ public class ProjectRootsTraversingTest extends ModuleRootManagerTestCase {
setModuleOutput(dep, true);
addSourceRoot(dep, false);
addSourceRoot(dep, true);
addLibraryDependency(dep, createJDomLibrary());
PsiTestUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
ModuleRootModificationUtil.addDependency(dep, createJDomLibrary());
ModuleRootModificationUtil.addDependency(myModule, dep, DependencyScope.COMPILE, false);
doTest(ProjectRootsTraversing.PROJECT_LIBRARIES, getJDomJar());
doTest(ProjectRootsTraversing.PROJECT_SOURCES);
@@ -62,36 +62,38 @@ public abstract class InspectionTestCase extends PsiTestCase {
private VirtualFile ext_src;
public InspectionManagerEx getManager() {
return (InspectionManagerEx) InspectionManager.getInstance(myProject);
return (InspectionManagerEx)InspectionManager.getInstance(myProject);
}
public void doTest(@NonNls String folderName, LocalInspectionTool tool) throws Exception {
public void doTest(@NonNls String folderName, LocalInspectionTool tool) {
doTest(folderName, new LocalInspectionToolWrapper(tool));
}
public void doTest(@NonNls String folderName, GlobalInspectionTool tool) throws Exception {
public void doTest(@NonNls String folderName, GlobalInspectionTool tool) {
doTest(folderName, new GlobalInspectionToolWrapper(tool));
}
public void doTest(@NonNls String folderName, GlobalInspectionTool tool, boolean checkRange) throws Exception {
public void doTest(@NonNls String folderName, GlobalInspectionTool tool, boolean checkRange) {
doTest(folderName, new GlobalInspectionToolWrapper(tool), checkRange);
}
public void doTest(@NonNls String folderName, GlobalInspectionTool tool, boolean checkRange, boolean runDeadCodeFirst) throws Exception {
public void doTest(@NonNls String folderName, GlobalInspectionTool tool, boolean checkRange, boolean runDeadCodeFirst) {
doTest(folderName, new GlobalInspectionToolWrapper(tool), "java 1.4", checkRange, runDeadCodeFirst);
}
public void doTest(@NonNls String folderName, InspectionTool tool) throws Exception {
public void doTest(@NonNls String folderName, InspectionTool tool) {
doTest(folderName, tool, "java 1.4");
}
public void doTest(@NonNls String folderName, InspectionTool tool, final boolean checkRange) throws Exception {
public void doTest(@NonNls String folderName, InspectionTool tool, final boolean checkRange) {
doTest(folderName, tool, "java 1.4", checkRange);
}
public void doTest(@NonNls String folderName, InspectionTool tool, @NonNls final String jdkName) throws Exception {
public void doTest(@NonNls String folderName, InspectionTool tool, @NonNls final String jdkName) {
doTest(folderName, tool, jdkName, false);
}
public void doTest(@NonNls String folderName, InspectionTool tool, @NonNls final String jdkName, boolean checkRange) throws Exception {
public void doTest(@NonNls String folderName, InspectionTool tool, @NonNls final String jdkName, boolean checkRange) {
doTest(folderName, tool, jdkName, checkRange, false);
}
@@ -100,7 +102,7 @@ public abstract class InspectionTestCase extends PsiTestCase {
@NonNls final String jdkName,
boolean checkRange,
boolean runDeadCodeFirst,
InspectionTool... additional) throws Exception {
InspectionTool... additional) {
final String testDir = getTestDataPath() + "/" + folderName;
runTool(testDir, jdkName, runDeadCodeFirst, tool, additional);
@@ -122,17 +124,19 @@ public abstract class InspectionTestCase extends PsiTestCase {
public void run() {
try {
setupRootModel(testDir, sourceDir, jdkName);
} catch (Exception e) {
}
catch (Exception e) {
LOG.error(e);
}
}
});
AnalysisScope scope = createAnalysisScope(sourceDir[0].getParent());
InspectionManagerEx inspectionManager = (InspectionManagerEx) InspectionManager.getInstance(getProject());
InspectionManagerEx inspectionManager = (InspectionManagerEx)InspectionManager.getInstance(getProject());
InspectionTool[] tools = runDeadCodeFirst ? new InspectionTool[]{new UnusedDeclarationInspection(), tool} : new InspectionTool[]{tool};
tools = ArrayUtil.mergeArrays(tools, additional);
final GlobalInspectionContextImpl globalContext = CodeInsightTestFixtureImpl.createGlobalContextForTool(scope, getProject(), inspectionManager, tools);
final GlobalInspectionContextImpl globalContext =
CodeInsightTestFixtureImpl.createGlobalContextForTool(scope, getProject(), inspectionManager, tools);
InspectionTestUtil.runTool(tool, scope, globalContext, inspectionManager);
}
@@ -236,7 +240,6 @@ public abstract class InspectionTestCase extends PsiTestCase {
@Override
@NonNls
protected String getTestDataPath() {
return PathManagerEx.getTestDataPath()+"/inspection/";
return PathManagerEx.getTestDataPath() + "/inspection/";
}
}
@@ -30,8 +30,7 @@ import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.SdkType;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.popup.JBPopupFactory;
@@ -71,10 +70,10 @@ public class SdkConfigurationUtil {
if (SystemInfo.isMac) {
descriptor.putUserData(PathChooserDialog.NATIVE_MAC_CHOOSER_SHOW_HIDDEN_FILES, Boolean.TRUE);
}
String suggestedPath = sdkTypes [0].suggestHomePath();
String suggestedPath = sdkTypes[0].suggestHomePath();
VirtualFile suggestedDir = suggestedPath == null
? null
: LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(suggestedPath));
: LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(suggestedPath));
FileChooser.chooseFiles(descriptor, project, suggestedDir, new Consumer<List<VirtualFile>>() {
@Override
public void consume(List<VirtualFile> selectedFiles) {
@@ -90,7 +89,7 @@ public class SdkConfigurationUtil {
}
private static FileChooserDescriptor createCompositeDescriptor(final SdkType... sdkTypes) {
FileChooserDescriptor descriptor0 = sdkTypes [0].getHomeChooserDescriptor();
FileChooserDescriptor descriptor0 = sdkTypes[0].getHomeChooserDescriptor();
FileChooserDescriptor descriptor = new FileChooserDescriptor(descriptor0.isChooseFiles(), descriptor0.isChooseFolders(),
descriptor0.isChooseJars(), descriptor0.isChooseJarsAsFiles(),
descriptor0.isChooseJarContents(), descriptor0.isChooseMultiple()) {
@@ -105,8 +104,8 @@ public class SdkConfigurationUtil {
}
}
String message = files.length > 0 && files[0].isDirectory()
? ProjectBundle.message("sdk.configure.home.invalid.error", sdkTypes [0].getPresentableName())
: ProjectBundle.message("sdk.configure.home.file.invalid.error", sdkTypes [0].getPresentableName());
? ProjectBundle.message("sdk.configure.home.invalid.error", sdkTypes[0].getPresentableName())
: ProjectBundle.message("sdk.configure.home.file.invalid.error", sdkTypes[0].getPresentableName());
throw new Exception(message);
}
};
@@ -174,15 +173,15 @@ public class SdkConfigurationUtil {
ProjectRootManager.getInstance(project).setProjectSdk(sdk);
final Module[] modules = ModuleManager.getInstance(project).getModules();
if (modules.length > 0) {
final ModifiableRootModel model = ModuleRootManager.getInstance(modules[0]).getModifiableModel();
model.inheritSdk();
model.commit();
ModuleRootModificationUtil.setSdkInherited(modules[0]);
}
}
});
}
public static void configureDirectoryProjectSdk(final Project project, @Nullable Comparator<Sdk> preferredSdkComparator, final SdkType... sdkTypes) {
public static void configureDirectoryProjectSdk(final Project project,
@Nullable Comparator<Sdk> preferredSdkComparator,
final SdkType... sdkTypes) {
Sdk existingSdk = ProjectRootManager.getInstance(project).getProjectSdk();
if (existingSdk != null && ArrayUtil.contains(existingSdk.getSdkType(), sdkTypes)) {
return;
@@ -226,7 +225,8 @@ public class SdkConfigurationUtil {
/**
* Tries to create an SDK identified by path; if successful, add the SDK to the global SDK table.
* @param path identifies the SDK
*
* @param path identifies the SDK
* @param sdkType
* @return newly created SDK, or null.
*/
@@ -264,7 +264,7 @@ public class SdkConfigurationUtil {
return newSdkName;
}
public static void selectSdkHome(final SdkType sdkType, @NotNull final Consumer<String> consumer){
public static void selectSdkHome(final SdkType sdkType, @NotNull final Consumer<String> consumer) {
final FileChooserDescriptor descriptor = sdkType.getHomeChooserDescriptor();
FileChooser.chooseFiles(descriptor, null, getSuggestedSdkRoot(sdkType), new Consumer<List<VirtualFile>>() {
@Override
@@ -291,10 +291,10 @@ public class SdkConfigurationUtil {
}
public static void suggestAndAddSdk(@Nullable final Project project,
final Sdk[] existingSdks,
JComponent popupOwner,
final Consumer<Sdk> callback,
final SdkType... sdkTypes) {
final Sdk[] existingSdks,
JComponent popupOwner,
final Consumer<Sdk> callback,
final SdkType... sdkTypes) {
assert sdkTypes.length > 0;
final Map<String, SdkType> suggestedSdkHomes = new LinkedHashMap<String, SdkType>();
for (SdkType sdkType : sdkTypes) {
@@ -339,7 +339,7 @@ public class SdkConfigurationUtil {
}
else {
Sdk sdk = setupSdk(existingSdks, LocalFileSystem.getInstance().findFileByPath(selectedValue),
sdkType, false, null, null);
sdkType, false, null, null);
callback.consume(sdk);
}
return FINAL_CHOICE;
@@ -0,0 +1,73 @@
/*
* Copyright 2000-2012 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.
*/
package com.intellij.openapi.roots;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.libraries.Library;
import org.jetbrains.annotations.Nullable;
/**
* @author nik
*/
public class ModuleRootModificationUtil {
public static void addDependency(Module module, Library library) {
addDependency(module, library, DependencyScope.COMPILE, false);
}
public static void addDependency(Module module, Library library, final DependencyScope scope, final boolean exported) {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
final LibraryOrderEntry entry = model.addLibraryEntry(library);
entry.setExported(exported);
entry.setScope(scope);
doCommit(model);
}
public static void setModuleSdk(Module module, @Nullable Sdk sdk) {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
model.setSdk(sdk);
doCommit(model);
}
public static void setSdkInherited(Module module) {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
model.inheritSdk();
doCommit(model);
}
public static void addDependency(final Module from, final Module to) {
addDependency(from, to, DependencyScope.COMPILE, false);
}
public static void addDependency(final Module from, final Module to, final DependencyScope scope, final boolean exported) {
final ModifiableRootModel model = ModuleRootManager.getInstance(from).getModifiableModel();
final ModuleOrderEntry entry = model.addModuleOrderEntry(to);
entry.setScope(scope);
entry.setExported(exported);
doCommit(model);
}
private static void doCommit(final ModifiableRootModel model) {
new WriteAction() {
@Override
protected void run(Result result) throws Throwable {
model.commit();
}
}.execute();
}
}
@@ -26,8 +26,8 @@ import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.project.ex.ProjectManagerEx;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.io.FileUtil;
@@ -51,11 +51,12 @@ import java.util.List;
*/
public class ModuleAttachProcessor extends ProjectAttachProcessor {
private static final Logger LOG = Logger.getInstance(ModuleAttachProcessor.class);
@Override
public boolean attachToProject(Project project, File projectDir, @Nullable ProjectOpenedCallback callback) {
if (!projectDir.exists()) {
Project newProject = ((ProjectManagerEx) ProjectManager.getInstance()).newProject(projectDir.getParentFile().getName(), projectDir.getParent(), true, false);
Project newProject = ((ProjectManagerEx)ProjectManager.getInstance())
.newProject(projectDir.getParentFile().getName(), projectDir.getParent(), true, false);
if (newProject == null) {
return false;
}
@@ -72,7 +73,7 @@ public class ModuleAttachProcessor extends ProjectAttachProcessor {
}
final String[] files = projectDir.list();
if (files != null) {
for(String file: files) {
for (String file : files) {
if (FileUtil.getExtension(file).equals("iml")) {
VirtualFile imlFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(projectDir, file));
if (imlFile != null) {
@@ -82,7 +83,8 @@ public class ModuleAttachProcessor extends ProjectAttachProcessor {
}
}
}
int rc = Messages.showYesNoDialog(project, "The project at " + FileUtil.toSystemDependentName(projectDir.getPath()) +
int rc = Messages.showYesNoDialog(project, "The project at " +
FileUtil.toSystemDependentName(projectDir.getPath()) +
" uses a non-standard layout and cannot be attached to this project. Would you like to open it in a new window?",
"Open Project", Messages.getQuestionIcon());
@@ -147,15 +149,7 @@ public class ModuleAttachProcessor extends ProjectAttachProcessor {
private static Module addPrimaryModuleDependency(Project project, @NotNull Module newModule) {
final Module module = getPrimaryModule(project);
if (module != null && module != newModule) {
final ModifiableRootModel modifiableRootModel = ModuleRootManager.getInstance(module).getModifiableModel();
modifiableRootModel.addModuleOrderEntry(newModule);
AccessToken token = WriteAction.start();
try {
modifiableRootModel.commit();
}
finally {
token.finish();
}
ModuleRootModificationUtil.addDependency(module, newModule);
return module;
}
return null;
@@ -188,5 +182,4 @@ public class ModuleAttachProcessor extends ProjectAttachProcessor {
}
return result;
}
}
@@ -47,8 +47,7 @@ import com.intellij.openapi.project.ex.ProjectManagerEx;
import com.intellij.openapi.project.impl.ProjectManagerImpl;
import com.intellij.openapi.project.impl.TooManyProjectLeakedException;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.EmptyRunnable;
@@ -270,7 +269,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
}
protected File getIprFile() throws IOException {
File tempFile = FileUtil.createTempFile(getName()+"_", ProjectFileType.DOT_DEFAULT_EXTENSION);
File tempFile = FileUtil.createTempFile(getName() + "_", ProjectFileType.DOT_DEFAULT_EXTENSION);
myFilesToDelete.add(tempFile);
return tempFile;
}
@@ -499,7 +498,9 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
if (myProject != null) {
try {
PsiDocumentManager documentManager = myProject.getComponent(PsiDocumentManager.class, null);
if (documentManager != null) EditorFactory.getInstance().getEventMulticaster().removeDocumentListener((DocumentListener)documentManager);
if (documentManager != null) {
EditorFactory.getInstance().getEventMulticaster().removeDocumentListener((DocumentListener)documentManager);
}
}
catch (Exception ignored) {
@@ -560,15 +561,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
// ProjectJdkImpl jdk = ProjectJdkTable.getInstance().addJdk(defaultJdk);
Module[] modules = ModuleManager.getInstance(myProject).getModules();
for (Module module : modules) {
final ModuleRootManager rootManager = ModuleRootManager.getInstance(module);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
final ModifiableRootModel rootModel = rootManager.getModifiableModel();
rootModel.setSdk(jdk);
rootModel.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(module, jdk);
}
}
@@ -665,6 +658,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
}
*/
}
private static int LEAK_WALKS;
private static void waitForAllLaters() throws InterruptedException, InvocationTargetException {
@@ -775,7 +769,8 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface WrapInCommand {}
public @interface WrapInCommand {
}
protected static VirtualFile createChildData(@NotNull final VirtualFile dir, @NotNull @NonNls final String name) {
return new WriteAction<VirtualFile>() {
@@ -785,6 +780,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
}
}.execute().throwException().getResultObject();
}
protected static VirtualFile createChildDirectory(@NotNull final VirtualFile dir, @NotNull @NonNls final String name) {
return new WriteAction<VirtualFile>() {
@Override
@@ -793,6 +789,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
}
}.execute().throwException().getResultObject();
}
protected static void delete(@NotNull final VirtualFile file) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
@@ -806,6 +803,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
}
});
}
protected static void rename(@NotNull final VirtualFile vFile1, @NotNull final String newName) {
new WriteCommandAction.Simple(null) {
@Override
@@ -51,7 +51,8 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
@NonNls public class PsiTestUtil {
@NonNls
public class PsiTestUtil {
public static VirtualFile createTestProjectStructure(Project project,
Module module,
String rootPath,
@@ -80,18 +81,20 @@ import java.util.List;
final String rootPath,
final Collection<File> filesToDelete,
final boolean addProjectRoots) throws Exception {
return createTestProjectStructure("unitTest",module, rootPath, filesToDelete, addProjectRoots);
return createTestProjectStructure("unitTest", module, rootPath, filesToDelete, addProjectRoots);
}
public static VirtualFile createTestProjectStructure(String tempName,
final Module module,
final String rootPath,
final Collection<File> filesToDelete,
final boolean addProjectRoots) throws Exception {
File dir = FileUtil.createTempDirectory(tempName, null,false);
File dir = FileUtil.createTempDirectory(tempName, null, false);
filesToDelete.add(dir);
final VirtualFile vDir = LocalFileSystem.getInstance().refreshAndFindFileByPath(dir.getCanonicalPath().replace(File.separatorChar, '/'));
assert vDir.isDirectory(): vDir;
final VirtualFile vDir =
LocalFileSystem.getInstance().refreshAndFindFileByPath(dir.getCanonicalPath().replace(File.separatorChar, '/'));
assert vDir.isDirectory() : vDir;
final Exception[] exception = {null};
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@@ -256,7 +259,10 @@ import java.util.List;
commitModel(modifiableModel);
}
private static void addProjectLibrary(final Module module, final ModifiableRootModel model, final String libName, final VirtualFile... classesRoots) {
private static void addProjectLibrary(final Module module,
final ModifiableRootModel model,
final String libName,
final VirtualFile... classesRoots) {
new WriteCommandAction.Simple(module.getProject()) {
@Override
protected void run() throws Throwable {
@@ -277,7 +283,11 @@ import java.util.List;
}.execute().throwException();
}
public static void addLibrary(final Module module, final ModifiableRootModel model, final String libName, final String libPath, final String... jarArr) {
public static void addLibrary(final Module module,
final ModifiableRootModel model,
final String libName,
final String libPath,
final String... jarArr) {
List<VirtualFile> classesRoots = new ArrayList<VirtualFile>();
for (String jar : jarArr) {
if (!libPath.endsWith("/") && !jar.startsWith("/")) {
@@ -287,7 +297,8 @@ import java.util.List;
VirtualFile root;
if (path.endsWith(".jar")) {
root = JarFileSystem.getInstance().refreshAndFindFileByPath(path + "!/");
} else {
}
else {
root = LocalFileSystem.getInstance().refreshAndFindFileByPath(path);
}
assert root != null : "Library root folder not found: " + path + "!/";
@@ -303,7 +314,8 @@ import java.util.List;
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
final String parentUrl = VirtualFileManager.constructUrl(classRoots[0].endsWith(".jar!/") ? JarFileSystem.PROTOCOL : LocalFileSystem.PROTOCOL, libDir);
final String parentUrl =
VirtualFileManager.constructUrl(classRoots[0].endsWith(".jar!/") ? JarFileSystem.PROTOCOL : LocalFileSystem.PROTOCOL, libDir);
final Library library = model.getModuleLibraryTable().createLibrary(libName);
final Library.ModifiableModel libModifiableModel = library.getModifiableModel();
for (String classRoot : classRoots) {
@@ -336,21 +348,4 @@ import java.util.List;
}
}.execute().getResultObject();
}
public static void addDependency(final Module from, final Module to) {
addDependency(from, to, DependencyScope.COMPILE, false);
}
public static void addDependency(final Module from, final Module to, final DependencyScope scope, final boolean exported) {
new WriteCommandAction(from.getProject()) {
@Override
protected void run(Result result) throws Throwable {
final ModifiableRootModel model = ModuleRootManager.getInstance(from).getModifiableModel();
final ModuleOrderEntry entry = model.addModuleOrderEntry(to);
entry.setScope(scope);
entry.setExported(exported);
model.commit();
}
}.execute();
}
}
@@ -31,7 +31,7 @@ public abstract class IGInspectionTestCase extends InspectionTestCase {
}
@Override
public void doTest(@NonNls final String folderName, final LocalInspectionTool tool) throws Exception {
public void doTest(@NonNls final String folderName, final LocalInspectionTool tool) {
super.doTest(folderName, new LocalInspectionToolWrapper(tool), "java 1.5");
}
}
@@ -1,16 +1,15 @@
package org.jetbrains.android.importDependencies;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import org.jetbrains.android.util.AndroidBundle;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Eugene.Kudelevsky
*/
* @author Eugene.Kudelevsky
*/
class AddModuleDependencyTask extends ImportDependenciesTask {
private final ModuleProvider myModuleProvider;
private final ModuleProvider myDepModuleProvider;
@@ -31,14 +30,7 @@ class AddModuleDependencyTask extends ImportDependenciesTask {
final ModuleRootManager rootManager = ModuleRootManager.getInstance(module);
if (!rootManager.isDependsOn(depModule)) {
final ModifiableRootModel model = rootManager.getModifiableModel();
model.addModuleOrderEntry(depModule);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
model.commit();
}
});
ModuleRootModificationUtil.addDependency(module, depModule);
}
return null;
}
@@ -35,10 +35,7 @@ import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.*;
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
import com.intellij.openapi.roots.JavadocOrderRootType;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.libraries.ui.OrderRoot;
import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
import com.intellij.openapi.ui.Messages;
@@ -133,7 +130,8 @@ public class AndroidSdkUtils {
if (sdkPath != null) {
// todo: check if we should do it for new android platforms (api_level >= 15)
final VirtualFile annotationsJar = JarFileSystem.getInstance()
.findFileByPath(FileUtil.toSystemIndependentName(sdkPath) + AndroidCommonUtils.ANNOTATIONS_JAR_RELATIVE_PATH + JarFileSystem.JAR_SEPARATOR);
.findFileByPath(
FileUtil.toSystemIndependentName(sdkPath) + AndroidCommonUtils.ANNOTATIONS_JAR_RELATIVE_PATH + JarFileSystem.JAR_SEPARATOR);
if (annotationsJar != null) {
result.add(new OrderRoot(annotationsJar, OrderRootType.CLASSES));
}
@@ -289,23 +287,12 @@ public class AndroidSdkUtils {
private static boolean tryToSetAndroidPlatform(Module module, Sdk sdk) {
AndroidPlatform platform = AndroidPlatform.parse(sdk);
if (platform != null) {
setSdk(module, sdk);
ModuleRootModificationUtil.setModuleSdk(module, sdk);
return true;
}
return false;
}
private static void setSdk(Module module, Sdk sdk) {
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
model.setSdk(sdk);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
model.commit();
}
});
}
private static void setupPlatform(@NotNull Module module) {
if (tryToImportSdkFromPropertyFiles(module)) {
return;
@@ -359,7 +346,7 @@ public class AndroidSdkUtils {
final Sdk sdk = findSuitableAndroidSdk(targetHashString, sdkDir);
if (sdk != null) {
setSdk(module, sdk);
ModuleRootModificationUtil.setModuleSdk(module, sdk);
return true;
}
@@ -388,7 +375,7 @@ public class AndroidSdkUtils {
if (target != null) {
final Sdk androidSdk = createNewAndroidPlatform(target, sdkData.getLocation(), true);
if (androidSdk != null) {
setSdk(module, androidSdk);
ModuleRootModificationUtil.setModuleSdk(module, androidSdk);
return true;
}
}
@@ -26,8 +26,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkModificator;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.LocalFileSystem;
@@ -80,7 +79,8 @@ public abstract class AndroidTestCase extends UsefulTestCase {
public void setUp() throws Exception {
super.setUp();
final TestFixtureBuilder<IdeaProjectTestFixture> projectBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName());
final TestFixtureBuilder<IdeaProjectTestFixture> projectBuilder =
IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName());
myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(projectBuilder.getFixture());
final JavaModuleFixtureBuilder moduleFixtureBuilder = projectBuilder.addModule(JavaModuleFixtureBuilder.class);
tuneModule(moduleFixtureBuilder, myFixture.getTempDirPath());
@@ -144,14 +144,7 @@ public abstract class AndroidTestCase extends UsefulTestCase {
private static void addAndroidSdk(Module module, String sdkPath) {
Sdk androidSdk = createAndroidSdk(sdkPath);
final ModifiableRootModel moduleModel = ModuleRootManager.getInstance(module).getModifiableModel();
moduleModel.setSdk(androidSdk);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
moduleModel.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(module, androidSdk);
}
private static Sdk createAndroidSdk(String sdkPath) {
@@ -5,11 +5,11 @@ import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.codeInsight.navigation.actions.GotoDeclarationAction;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.UsefulTestCase;
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
import com.intellij.testFramework.fixtures.*;
@@ -48,7 +48,8 @@ public class AndroidLibraryProjectTest extends UsefulTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
final TestFixtureBuilder<IdeaProjectTestFixture> projectBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName());
final TestFixtureBuilder<IdeaProjectTestFixture> projectBuilder =
IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName());
myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(projectBuilder.getFixture());
myFixture.enableInspections(AndroidDomInspection.class);
@@ -81,8 +82,8 @@ public class AndroidLibraryProjectTest extends UsefulTestCase {
myLibFacet = AndroidTestCase.addAndroidFacet(myLibModule, getTestSdkPath());
myLibFacet.getConfiguration().LIBRARY_PROJECT = true;
PsiTestUtil.addDependency(myAppModule, myLibModule);
PsiTestUtil.addDependency(myLibModule, myLibGenModule);
ModuleRootModificationUtil.addDependency(myAppModule, myLibModule);
ModuleRootModificationUtil.addDependency(myLibModule, myLibGenModule);
}
private void createInitialStructure() {
@@ -23,13 +23,12 @@ package org.jetbrains.idea.eclipse;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.PluginPathManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.PsiTestUtil;
import junit.framework.Assert;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;
@@ -69,7 +68,6 @@ public abstract class Eclipse2ModulesTest extends IdeaTestCase {
}
protected void doTest(final String workspaceRoot, final String projectRoot) throws Exception {
final ModifiableRootModel model = ModuleRootManager.getInstance(getModule()).getModifiableModel();
final VirtualFile file =
ApplicationManager.getApplication().runWriteAction(
new Computable<VirtualFile>() {
@@ -78,22 +76,17 @@ public abstract class Eclipse2ModulesTest extends IdeaTestCase {
public VirtualFile compute() {
final VirtualFile baseDir = getProject().getBaseDir();
assert baseDir != null;
return LocalFileSystem.getInstance().refreshAndFindFileByPath(baseDir.getPath() + "/" + workspaceRoot + "/" + myDependantModulePath);
return LocalFileSystem.getInstance()
.refreshAndFindFileByPath(baseDir.getPath() + "/" + workspaceRoot + "/" + myDependantModulePath);
}
}
);
if (file != null) {
model.addContentEntry(file);
} else {
model.dispose();
PsiTestUtil.addContentRoot(getModule(), file);
}
else {
Assert.assertTrue("File not found", false);
}
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run(){
model.commit();
}
});
}
public void setDependantModulePath(String dependantModulePath) {
@@ -89,7 +89,7 @@ public class MvcModuleStructureUtil {
sourceRoots.put(folder.getFile(), folder.isTestSource());
}
}
root.refresh(false, true);
final List<Consumer<ContentEntry>> actions = CollectionFactory.arrayList();
@@ -139,7 +139,9 @@ public class MvcModuleStructureUtil {
};
}
public static void removeSrcFolderFromRoots(final VirtualFile file, List<Consumer<ContentEntry>> actions, Map<VirtualFile, Boolean> sourceRoots) {
public static void removeSrcFolderFromRoots(final VirtualFile file,
List<Consumer<ContentEntry>> actions,
Map<VirtualFile, Boolean> sourceRoots) {
if (sourceRoots.containsKey(file)) {
actions.add(new Consumer<ContentEntry>() {
public void consume(ContentEntry contentEntry) {
@@ -198,7 +200,10 @@ public class MvcModuleStructureUtil {
return library.getModifiableModel();
}
public static void addSourceFolder(@NotNull VirtualFile root, @NotNull String relativePath, final boolean isTest, List<Consumer<ContentEntry>> actions,
public static void addSourceFolder(@NotNull VirtualFile root,
@NotNull String relativePath,
final boolean isTest,
List<Consumer<ContentEntry>> actions,
Map<VirtualFile, Boolean> sourceRoots) {
final VirtualFile src = root.findFileByRelativePath(relativePath);
if (src == null) {
@@ -412,7 +417,7 @@ public class MvcModuleStructureUtil {
public static List<Module> getAllModulesWithSupport(Project project, MvcFramework framework) {
List<Module> modules = new ArrayList<Module>();
for (Module module : ModuleManager.getInstance(project).getModules()){
for (Module module : ModuleManager.getInstance(project).getModules()) {
if (framework.hasSupport(module)) {
modules.add(module);
}
@@ -576,10 +581,7 @@ public class MvcModuleStructureUtil {
public static void ensureDependency(@NotNull Module from, @NotNull Module to, boolean exported) {
if (!from.equals(to) && !hasDependency(from, to)) {
final ModifiableRootModel fromModel = ModuleRootManager.getInstance(from).getModifiableModel();
ModuleOrderEntry entry = fromModel.addModuleOrderEntry(to);
entry.setExported(exported);
fromModel.commit();
ModuleRootModificationUtil.addDependency(from, to, DependencyScope.COMPILE, exported);
}
}
@@ -613,7 +615,8 @@ public class MvcModuleStructureUtil {
public static void copySdk(ModuleRootModel from, ModifiableRootModel to) {
if (from.isSdkInherited()) {
to.inheritSdk();
} else {
}
else {
to.setSdk(from.getSdk());
}
}
@@ -670,7 +673,7 @@ public class MvcModuleStructureUtil {
if (userLibraryTo == null) {
if (userLibraryFrom == null) return;
userLibraryTo = to.getModuleLibraryTable().createLibrary(framework.getUserLibraryName() + " (" +to.getModule().getName() + ')');
userLibraryTo = to.getModuleLibraryTable().createLibrary(framework.getUserLibraryName() + " (" + to.getModule().getName() + ')');
}
else {
OrderEntry[] orderEntries = to.getOrderEntries().clone();
@@ -812,7 +815,8 @@ public class MvcModuleStructureUtil {
for (VirtualFile virtualFile : map.keySet()) {
if (!globalAuxModules.containsKey(virtualFile)) {
Module appModule = map.get(virtualFile).iterator().next();
Module module = createAuxiliaryModule(appModule, generateUniqueModuleName(project, framework.getGlobalPluginsModuleName()), framework);
Module module =
createAuxiliaryModule(appModule, generateUniqueModuleName(project, framework.getGlobalPluginsModuleName()), framework);
globalAuxModules.put(virtualFile, module);
}
}
@@ -853,7 +857,8 @@ public class MvcModuleStructureUtil {
i++;
if (manager.findModuleByName(res) == null) return res;
} while (true);
}
while (true);
}
@Nullable
@@ -26,8 +26,9 @@ import com.intellij.openapi.module.Module
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiFile
import com.intellij.testFramework.PsiTestUtil
import junit.framework.AssertionFailedError
import com.intellij.openapi.roots.ModuleRootModificationUtil
/**
* @author peter
@@ -134,9 +135,9 @@ public abstract class GroovyCompilerTest extends GroovyCompilerTestCase {
public void testTransitiveJavaDependencyThroughGroovy() throws Throwable {
myFixture.addClass("public class IFoo { void foo() {} }").getContainingFile().getVirtualFile();
myFixture.addFileToProject("Foo.groovy", "class Foo {\n" +
" static IFoo f\n" +
" public int foo() { return 239; }\n" +
"}");
" static IFoo f\n" +
" public int foo() { return 239; }\n" +
"}");
final PsiFile bar = myFixture.addFileToProject("Bar.groovy", "class Bar extends Foo {" +
"public static void main(String[] args) { " +
" System.out.println(new Foo().foo());" +
@@ -216,11 +217,11 @@ public abstract class GroovyCompilerTest extends GroovyCompilerTestCase {
assertEmpty(make());
myFixture.addFileToProject("tests/Sub.groovy", "class Sub {\n" +
" Super xxx() {}\n" +
" static void main(String[] args) {" +
" println 'hello'" +
" }" +
"}");
" Super xxx() {}\n" +
" static void main(String[] args) {" +
" println 'hello'" +
" }" +
"}");
myFixture.addFileToProject("tests/Java.java", "public class Java {}");
assertEmpty(make());
assertOutput("Sub", "hello");
@@ -231,9 +232,9 @@ public abstract class GroovyCompilerTest extends GroovyCompilerTestCase {
myFixture.addFileToProject("src/com/Bar.groovy", "package com\n" +
"class Bar {}");
myFixture.addFileToProject("src/com/ToGenerateStubs.java", "package com;\n" +
"public class ToGenerateStubs {}");
"public class ToGenerateStubs {}");
myFixture.addFileToProject("tests/com/BarTest.groovy", "package com\n" +
"class BarTest extends Bar {}");
"class BarTest extends Bar {}");
assertEmpty(make());
}
@@ -307,8 +308,8 @@ public class Transf implements ASTTransformation {
Module dep1 = addModule('dependent1')
Module dep2 = addModule('dependent2')
PsiTestUtil.addDependency dep2, dep1
PsiTestUtil.addDependency myModule, dep2
ModuleRootModificationUtil.addDependency dep2, dep1
ModuleRootModificationUtil.addDependency myModule, dep2
addGroovyLibrary(dep1);
addGroovyLibrary(dep2);
@@ -335,7 +336,7 @@ class Foo {
}"""
def javaFile = myFixture.addFileToProject("AJava.java", "public class AJava extends Foo.Bar {}")
assertEmpty make()
touch(javaFile.virtualFile)
assertEmpty make()
}
@@ -516,7 +517,7 @@ class Indirect {
assertEmpty compileModule(myModule)
assertEmpty compileModule(myModule)
setFileText(used, 'class Used2 {}')
shouldFail { make() }
assert findClassFile('Used') == null
@@ -569,7 +570,7 @@ class Main {
public void "test module cycle"() {
def dep = addDependentModule()
PsiTestUtil.addDependency(myModule, dep)
ModuleRootModificationUtil.addDependency(myModule, dep)
addGroovyLibrary(dep)
myFixture.addFileToProject('Foo.groovy', 'class Foo extends Bar { static void main(String[] args) { println "Hello from Foo" } }')
@@ -734,7 +735,5 @@ string
}
}
}
}
}
@@ -99,9 +99,7 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
JavaAwareProjectJdkTableImpl jdkTable = JavaAwareProjectJdkTableImpl.getInstanceEx();
Sdk internalJdk = jdkTable.getInternalJdk();
jdkTable.addJdk(internalJdk);
final ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
modifiableModel.setSdk(internalJdk);
modifiableModel.commit();
ModuleRootModificationUtil.setModuleSdk(myModule, internalJdk);
}
}
}.execute();
@@ -166,7 +164,7 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
protected Module addDependentModule() {
Module module = addModule("dependent");
PsiTestUtil.addDependency(module, myModule);
ModuleRootModificationUtil.addDependency(module, myModule);
return module;
}
@@ -181,12 +179,8 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
moduleModel.commit();
final Module dep = ModuleManager.getInstance(getProject()).findModuleByName(moduleName);
final ModifiableRootModel model = ModuleRootManager.getInstance(dep).getModifiableModel();
final ContentEntry entry = model.addContentEntry(depRoot);
entry.addSourceFolder(depRoot, false);
model.setSdk(ModuleRootManager.getInstance(myModule).getSdk());
model.commit();
ModuleRootModificationUtil.setModuleSdk(dep, ModuleRootManager.getInstance(myModule).getSdk());
PsiTestUtil.addSourceRoot(dep, depRoot);
IdeaTestUtil.setModuleLanguageLevel(dep, LanguageLevelModuleExtension.getInstance(myModule).getLanguageLevel());
result.setResult(dep);
@@ -200,7 +194,8 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
if (useJps()) {
//noinspection ConstantConditions
touch(JavaPsiFacade.getInstance(getProject()).findClass(className).getContainingFile().getVirtualFile());
} else {
}
else {
//noinspection ConstantConditions
findClassFile(className).delete(this);
}
@@ -210,10 +205,13 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
}
}
@Nullable protected VirtualFile findClassFile(String className) {
@Nullable
protected VirtualFile findClassFile(String className) {
return findClassFile(className, myModule);
}
@Nullable protected VirtualFile findClassFile(String className, Module module) {
@Nullable
protected VirtualFile findClassFile(String className, Module module) {
//noinspection ConstantConditions
VirtualFile path = ModuleRootManager.getInstance(module).getModuleExtension(CompilerModuleExtension.class).getCompilerOutputPath();
path.getChildren();
@@ -344,7 +342,8 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
Module module,
final Class<? extends Executor> executorClass,
final ProcessListener listener, final ProgramRunner runner) throws ExecutionException {
final ApplicationConfiguration configuration = new ApplicationConfiguration("app", getProject(), ApplicationConfigurationType.getInstance());
final ApplicationConfiguration configuration =
new ApplicationConfiguration("app", getProject(), ApplicationConfigurationType.getInstance());
configuration.setModule(module);
configuration.setMainClassName(className);
final Executor executor = Executor.EXECUTOR_EXTENSION_NAME.findExtension(executorClass);
@@ -492,14 +492,7 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
protected Sdk setupJdkForModule(final String moduleName) {
final Sdk sdk = createJdk("Java 1.5");
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
final ModifiableRootModel m = ModuleRootManager.getInstance(getModule(moduleName)).getModifiableModel();
m.setSdk(sdk);
m.commit();
}
});
ModuleRootModificationUtil.setModuleSdk(getModule(moduleName), sdk);
return sdk;
}
@@ -524,7 +517,8 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
CompilerManagerImpl.testSetup();
List<VirtualFile> roots = Arrays.asList(ProjectRootManager.getInstance(myProject).getContentRoots());
TranslatingCompilerFilesMonitor.getInstance().scanSourceContent(new TranslatingCompilerFilesMonitor.ProjectRef(myProject), roots, roots.size(), true);
TranslatingCompilerFilesMonitor.getInstance()
.scanSourceContent(new TranslatingCompilerFilesMonitor.ProjectRef(myProject), roots, roots.size(), true);
final CompileScope scope = new ModuleCompileScope(myProject, modules.toArray(new Module[modules.size()]), false);
@@ -26,7 +26,6 @@ import com.intellij.openapi.roots.libraries.LibraryTable;
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PsiTestUtil;
import org.jetbrains.idea.maven.MavenCustomRepositoryHelper;
import org.jetbrains.idea.maven.MavenImportingTestCase;
import org.jetbrains.idea.maven.model.MavenId;
@@ -1507,7 +1506,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
final Module module = createModule("my-module");
PsiTestUtil.addDependency(getModule("m1"), module);
ModuleRootModificationUtil.addDependency(getModule("m1"), module);
assertModuleModuleDeps("m1", "m2", "my-module");
@@ -2055,9 +2054,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
Library lib = createProjectLibrary(libraryName);
ModifiableRootModel model = ModuleRootManager.getInstance(getModule(moduleName)).getModifiableModel();
model.addLibraryEntry(lib);
model.commit();
ModuleRootModificationUtil.addDependency(getModule(moduleName), lib);
}
});
}
@@ -2121,9 +2118,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
public void run() {
LibraryTable appTable = LibraryTablesRegistrar.getInstance().getLibraryTable();
Library lib = appTable.createLibrary("foo");
ModifiableRootModel model = ModuleRootManager.getInstance(getModule("project")).getModifiableModel();
model.addLibraryEntry(lib);
model.commit();
ModuleRootModificationUtil.addDependency(getModule("project"), lib);
appTable.removeLibrary(lib);
}
});
@@ -72,6 +72,7 @@ public final class InsertComponentProcessor extends EventProcessor {
private ComponentDropLocation myLastLocation;
private static final Map<String, RadComponentFactory> myComponentClassMap = new HashMap<String, RadComponentFactory>();
static {
myComponentClassMap.put(JScrollPane.class.getName(), new RadScrollPane.Factory());
myComponentClassMap.put(JPanel.class.getName(), new RadContainer.Factory());
@@ -158,11 +159,11 @@ public final class InsertComponentProcessor extends EventProcessor {
// Here is euristic. Chop first 'J' letter for standard Swing classes.
// Without 'J' bindings look better.
if(
if (
shortClassName.length() > 1 && Character.isUpperCase(shortClassName.charAt(1)) &&
componentClassName.startsWith("javax.swing.") &&
StringUtil.startsWithChar(shortClassName, 'J')
){
) {
shortClassName = shortClassName.substring(1);
}
shortClassName = StringUtil.decapitalize(shortClassName);
@@ -172,7 +173,7 @@ public final class InsertComponentProcessor extends EventProcessor {
public static String getUniqueBinding(RadRootContainer root, final String baseName) {
// Generate member name based on current code style
//noinspection ForLoopThatDoesntUseLoopVariable
for(int i = 0; true; i++){
for (int i = 0; true; i++) {
final String nameCandidate = baseName + (i + 1);
final String binding = JavaCodeStyleManager.getInstance(root.getProject()).propertyNameToVariableName(
nameCandidate,
@@ -187,6 +188,7 @@ public final class InsertComponentProcessor extends EventProcessor {
/**
* Tries to create binding for {@link #myInsertedComponent}
*
* @param editor
* @param insertedComponent
* @param forceBinding
@@ -210,9 +212,9 @@ public final class InsertComponentProcessor extends EventProcessor {
public static void createBindingField(final GuiEditor editor, final RadComponent insertedComponent) {
// Try to create field in the corresponding bound class
final String classToBind = editor.getRootContainer().getClassToBind();
if(classToBind != null){
if (classToBind != null) {
final PsiClass aClass = FormEditingUtil.findClassToBind(editor.getModule(), classToBind);
if(aClass != null && aClass.findFieldByName(insertedComponent.getBinding(), true) == null) {
if (aClass != null && aClass.findFieldByName(insertedComponent.getBinding(), true) == null) {
if (!CodeInsightUtilBase.preparePsiElementForWrite(aClass)) {
return;
}
@@ -233,7 +235,7 @@ public final class InsertComponentProcessor extends EventProcessor {
}
}
protected void processMouseEvent(final MouseEvent e){
protected void processMouseEvent(final MouseEvent e) {
if (e.getID() == MouseEvent.MOUSE_PRESSED) {
final ComponentItem componentItem = getComponentToInsert();
if (componentItem != null) {
@@ -302,8 +304,8 @@ public final class InsertComponentProcessor extends EventProcessor {
if (location.canDrop(dragObject)) {
CommandProcessor.getInstance().executeCommand(
myEditor.getProject(),
new Runnable(){
public void run(){
new Runnable() {
public void run() {
createBindingWhenDrop(myEditor, myInsertedComponent, forceBinding);
final RadComponent[] components = new RadComponent[]{myInsertedComponent};
@@ -331,7 +333,6 @@ public final class InsertComponentProcessor extends EventProcessor {
myEditor.refreshAndSave(false);
}
}, UIDesignerBundle.message("command.insert.component"), null);
}
myComponentToInsert = null;
@@ -351,10 +352,10 @@ public final class InsertComponentProcessor extends EventProcessor {
List<OrderEntry> entries = fileIndex.getOrderEntriesForFile(componentClass.getContainingFile().getVirtualFile());
if (entries.size() > 0) {
if (entries.get(0) instanceof ModuleSourceOrderEntry) {
if (!checkAddModuleDependency(item, (ModuleSourceOrderEntry) entries.get(0))) return false;
if (!checkAddModuleDependency(item, (ModuleSourceOrderEntry)entries.get(0))) return false;
}
else if (entries.get(0) instanceof LibraryOrderEntry) {
if (!checkAddLibraryDependency(item, (LibraryOrderEntry) entries.get(0))) return false;
if (!checkAddLibraryDependency(item, (LibraryOrderEntry)entries.get(0))) return false;
}
}
}
@@ -370,13 +371,7 @@ public final class InsertComponentProcessor extends EventProcessor {
Messages.getQuestionIcon());
if (rc == 2) return false;
if (rc == 0) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
final ModifiableRootModel model = ModuleRootManager.getInstance(myEditor.getModule()).getModifiableModel();
model.addModuleOrderEntry(ownerModule);
model.commit();
}
});
ModuleRootModificationUtil.addDependency(myEditor.getModule(), ownerModule);
}
return true;
}
@@ -384,7 +379,8 @@ public final class InsertComponentProcessor extends EventProcessor {
private boolean checkAddLibraryDependency(final ComponentItem item, final LibraryOrderEntry libraryOrderEntry) {
int rc = Messages.showYesNoCancelDialog(
myEditor,
UIDesignerBundle.message("add.library.dependency.prompt", item.getClassName(), libraryOrderEntry.getPresentableName(), myEditor.getModule().getName()),
UIDesignerBundle.message("add.library.dependency.prompt", item.getClassName(), libraryOrderEntry.getPresentableName(),
myEditor.getModule().getName()),
UIDesignerBundle.message("add.library.dependency.title"),
Messages.getQuestionIcon());
if (rc == 2) return false;
@@ -409,8 +405,8 @@ public final class InsertComponentProcessor extends EventProcessor {
final LibraryTable.ModifiableModel libraryTableModel = toModel.getModuleLibraryTable().getModifiableModel();
Library library = libraryTableModel.createLibrary(null);
final Library.ModifiableModel libraryModel = library.getModifiableModel();
for(OrderRootType rootType: OrderRootType.getAllTypes()) {
for(String url: fromLibrary.getUrls(rootType)) {
for (OrderRootType rootType : OrderRootType.getAllTypes()) {
for (String url : fromLibrary.getUrls(rootType)) {
libraryModel.addRoot(url, rootType);
}
}
@@ -426,7 +422,7 @@ public final class InsertComponentProcessor extends EventProcessor {
final String targetForm = FormEditingUtil.buildResourceName(myEditor.getPsiFile());
Utils.validateNestedFormLoop(formName, new PsiNestedFormLoader(myEditor.getModule()), targetForm);
}
catch(Exception ex) {
catch (Exception ex) {
Messages.showErrorDialog(myEditor, ex.getMessage(), CommonBundle.getErrorTitle());
return false;
}
@@ -437,7 +433,7 @@ public final class InsertComponentProcessor extends EventProcessor {
public static RadContainer createPanelComponent(GuiEditor editor) {
RadComponent c = createInsertedComponent(editor, Palette.getInstance(editor.getProject()).getPanelItem());
LOG.assertTrue(c != null);
return (RadContainer) c;
return (RadContainer)c;
}
@Nullable
@@ -447,7 +443,7 @@ public final class InsertComponentProcessor extends EventProcessor {
ComponentItemDialog dlg = new ComponentItemDialog(editor.getProject(), editor, newItem, true);
dlg.setTitle(title);
dlg.show();
if(!dlg.isOK()) {
if (!dlg.isOK()) {
return null;
}
@@ -479,9 +475,9 @@ public final class InsertComponentProcessor extends EventProcessor {
try {
result = new RadNestedForm(editor, formFileName, id);
}
catch(Exception ex) {
catch (Exception ex) {
String errorMessage = UIDesignerBundle.message("error.instantiating.nested.form", formFileName,
(ex.getMessage() != null ? ex.getMessage() : ex.toString()));
(ex.getMessage() != null ? ex.getMessage() : ex.toString()));
result = RadErrorComponent.create(
editor,
id,
@@ -502,9 +498,9 @@ public final class InsertComponentProcessor extends EventProcessor {
result = new RadAtomicComponent(editor, aClass, id);
}
}
catch(final UnsupportedClassVersionError ucve) {
catch (final UnsupportedClassVersionError ucve) {
result = RadErrorComponent.create(editor, id, item.getClassName(), null,
UIDesignerBundle.message("unsupported.component.class.version")
UIDesignerBundle.message("unsupported.component.class.version")
);
}
catch (final Exception exc) {
@@ -551,7 +547,7 @@ public final class InsertComponentProcessor extends EventProcessor {
@Nullable
public static RadComponentFactory getRadComponentFactory(Class componentClass) {
while(componentClass != null) {
while (componentClass != null) {
RadComponentFactory c = myComponentClassMap.get(componentClass.getName());
if (c != null) return c;
componentClass = componentClass.getSuperclass();
@@ -567,7 +563,7 @@ public final class InsertComponentProcessor extends EventProcessor {
final RadComponent component = myEditor.getRootContainer().getComponent(0);
if (component.getBinding() == null) {
if (component == myInsertedComponent ||
(component instanceof RadContainer && ((RadContainer) component).getComponentCount() == 1 &&
(component instanceof RadContainer && ((RadContainer)component).getComponentCount() == 1 &&
component == myInsertedComponent.getParent())) {
doCreateBindingWhenDrop(myEditor, component);
}
@@ -589,7 +585,8 @@ public final class InsertComponentProcessor extends EventProcessor {
return FormEditingUtil.getMoveNoDropCursor();
}
@Override public boolean needMousePressed() {
@Override
public boolean needMousePressed() {
return true;
}
}