summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java')
-rw-r--r--java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java52
1 files changed, 35 insertions, 17 deletions
diff --git a/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java
index 658ee6561e68..0c49938053f0 100644
--- a/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java
+++ b/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2012 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,11 +24,11 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
-import com.intellij.openapi.module.ModuleUtil;
-import com.intellij.openapi.roots.impl.ModifiableModelCommitter;
+import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.*;
-import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.roots.impl.ModifiableModelCommitter;
+import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowId;
@@ -37,6 +37,9 @@ import com.intellij.psi.*;
import com.intellij.psi.impl.PackagePrefixElementFinder;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiModificationTracker;
+import com.intellij.psi.util.PsiUtil;
+import com.intellij.psi.util.PsiUtilCore;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
import java.util.ArrayList;
@@ -46,22 +49,25 @@ import java.util.List;
* @author yole
*/
public class PsiPackageImplementationHelperImpl extends PsiPackageImplementationHelper {
+ @NotNull
@Override
- public GlobalSearchScope adjustAllScope(PsiPackage psiPackage, GlobalSearchScope globalSearchScope) {
+ public GlobalSearchScope adjustAllScope(@NotNull PsiPackage psiPackage, @NotNull GlobalSearchScope globalSearchScope) {
return NonClasspathClassFinder.addNonClasspathScope(psiPackage.getProject(), globalSearchScope);
}
+ @NotNull
@Override
- public VirtualFile[] occursInPackagePrefixes(PsiPackage psiPackage) {
+ public VirtualFile[] occursInPackagePrefixes(@NotNull PsiPackage psiPackage) {
List<VirtualFile> result = new ArrayList<VirtualFile>();
final Module[] modules = ModuleManager.getInstance(psiPackage.getProject()).getModules();
+ String qualifiedName = psiPackage.getQualifiedName();
for (final Module module : modules) {
for (final ContentEntry contentEntry : ModuleRootManager.getInstance(module).getContentEntries()) {
final List<SourceFolder> sourceFolders = contentEntry.getSourceFolders(JavaModuleSourceRootTypes.SOURCES);
for (final SourceFolder sourceFolder : sourceFolders) {
final String packagePrefix = sourceFolder.getPackagePrefix();
- if (packagePrefix.startsWith(psiPackage.getQualifiedName())) {
+ if (packagePrefix.startsWith(qualifiedName)) {
final VirtualFile file = sourceFolder.getFile();
if (file != null) {
result.add(file);
@@ -71,11 +77,11 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation
}
}
- return VfsUtil.toVirtualFileArray(result);
+ return VfsUtilCore.toVirtualFileArray(result);
}
@Override
- public void handleQualifiedNameChange(final PsiPackage psiPackage, final String newQualifiedName) {
+ public void handleQualifiedNameChange(@NotNull final PsiPackage psiPackage, @NotNull final String newQualifiedName) {
ApplicationManager.getApplication().assertWriteAccessAllowed();
final String oldQualifedName = psiPackage.getQualifiedName();
final boolean anyChanged = changePackagePrefixes(psiPackage, oldQualifedName, newQualifiedName);
@@ -94,7 +100,7 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation
}
}
- private static boolean changePackagePrefixes(PsiPackage psiPackage, final String oldQualifiedName, final String newQualifiedName) {
+ private static boolean changePackagePrefixes(@NotNull PsiPackage psiPackage, @NotNull String oldQualifiedName, @NotNull String newQualifiedName) {
final Module[] modules = ModuleManager.getInstance(psiPackage.getProject()).getModules();
List<ModifiableRootModel> modelsToCommit = new ArrayList<ModifiableRootModel>();
for (final Module module : modules) {
@@ -128,7 +134,7 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation
}
@Override
- public void navigate(final PsiPackage psiPackage, final boolean requestFocus) {
+ public void navigate(@NotNull final PsiPackage psiPackage, final boolean requestFocus) {
final Project project = psiPackage.getProject();
ToolWindow window = ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.PROJECT_VIEW);
window.activate(null);
@@ -143,7 +149,8 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation
});
}
- private static PsiDirectory[] suggestMostAppropriateDirectories(PsiPackage psiPackage) {
+ @NotNull
+ private static PsiDirectory[] suggestMostAppropriateDirectories(@NotNull PsiPackage psiPackage) {
final Project project = psiPackage.getProject();
PsiDirectory[] directories = null;
final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
@@ -151,10 +158,20 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation
final Document document = editor.getDocument();
final PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(document);
if (psiFile != null) {
- final Module module = ModuleUtil.findModuleForPsiElement(psiFile);
+ final Module module = ModuleUtilCore.findModuleForPsiElement(psiFile);
if (module != null) {
- directories = psiPackage.getDirectories(GlobalSearchScope.moduleWithDependenciesScope(module));
- } else {
+ final VirtualFile virtualFile = PsiUtilCore.getVirtualFile(psiFile);
+ final boolean isInTests =
+ virtualFile != null && ModuleRootManager.getInstance(module).getFileIndex().isInTestSourceContent(virtualFile);
+ if (isInTests) {
+ directories = psiPackage.getDirectories(GlobalSearchScope.moduleTestsWithDependentsScope(module));
+ }
+
+ if (directories == null || directories.length == 0) {
+ directories = psiPackage.getDirectories(GlobalSearchScope.moduleWithDependenciesScope(module));
+ }
+ }
+ else {
directories = psiPackage.getDirectories(GlobalSearchScope.notScope(GlobalSearchScope.projectScope(project)));
}
}
@@ -167,12 +184,13 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation
}
@Override
- public boolean packagePrefixExists(PsiPackage psiPackage) {
+ public boolean packagePrefixExists(@NotNull PsiPackage psiPackage) {
return PackagePrefixElementFinder.getInstance(psiPackage.getProject()).packagePrefixExists(psiPackage.getQualifiedName());
}
+ @NotNull
@Override
- public Object[] getDirectoryCachedValueDependencies(PsiPackage psiPackage) {
+ public Object[] getDirectoryCachedValueDependencies(@NotNull PsiPackage psiPackage) {
return new Object[] { PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT, ProjectRootManager.getInstance(psiPackage.getProject()) };
}
}