diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateClassOrPackageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateClassOrPackageFix.java index 5534f5fd6cc2..5b8baae9e1a1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateClassOrPackageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateClassOrPackageFix.java @@ -37,6 +37,7 @@ import com.intellij.psi.util.CreateClassUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import java.util.*; @@ -251,7 +252,8 @@ public class CreateClassOrPackageFix extends LocalQuickFixAndIntentionActionOnPs } } else { - for (VirtualFile root : ProjectRootManager.getInstance(psiManager.getProject()).getContentSourceRoots()) { + for (VirtualFile root : ProjectRootManager.getInstance(psiManager.getProject()).getModuleSourceRoots( + JavaModuleSourceRootTypes.SOURCES)) { PsiDirectory directory = psiManager.findDirectory(root); if (LOG.isDebugEnabled()) { LOG.debug("Root: " + root + ", directory: " + directory); diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateClassDialog.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateClassDialog.java index 2f4ff88fddf0..13f6e2ec1fb5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateClassDialog.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateClassDialog.java @@ -49,6 +49,7 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -207,7 +208,7 @@ public class CreateClassDialog extends DialogWrapper { gbConstraints.insets.top = 4; panel.add(myDestinationCB, gbConstraints); - final boolean isMultipleSourceRoots = ProjectRootManager.getInstance(myProject).getContentSourceRoots().length > 1; + final boolean isMultipleSourceRoots = ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() > 1; myDestinationCB.setVisible(isMultipleSourceRoots); label.setVisible(isMultipleSourceRoots); label.setLabelFor(myDestinationCB); diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java index f230d0baa577..76946c41e999 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java @@ -28,7 +28,6 @@ import com.intellij.psi.JavaDirectoryService; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiManager; import com.intellij.psi.PsiPackage; -import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import java.lang.reflect.InvocationTargetException; @@ -55,15 +54,12 @@ public class PackageViewProjectNode extends AbstractProjectNode { return modulesAndGroups(allModules.toArray(new Module[allModules.size()])); } else { - final List sourceRoots = new ArrayList(); final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(myProject); - ContainerUtil.addAll(sourceRoots, projectRootManager.getContentSourceRoots()); - final PsiManager psiManager = PsiManager.getInstance(myProject); final List children = new ArrayList(); final Set topLevelPackages = new HashSet(); - for (final VirtualFile root : sourceRoots) { + for (final VirtualFile root : projectRootManager.getContentSourceRoots()) { final PsiDirectory directory = psiManager.findDirectory(root); if (directory == null) { continue; diff --git a/java/java-impl/src/com/intellij/refactoring/copy/CopyClassDialog.java b/java/java-impl/src/com/intellij/refactoring/copy/CopyClassDialog.java index d803d5daecff..5460ee36e1f3 100644 --- a/java/java-impl/src/com/intellij/refactoring/copy/CopyClassDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/copy/CopyClassDialog.java @@ -38,6 +38,7 @@ import com.intellij.util.ui.FormBuilder; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import java.awt.*; @@ -114,7 +115,7 @@ class CopyClassDialog extends DialogWrapper{ } final JLabel label = new JLabel(RefactoringBundle.message("target.destination.folder")); - final boolean isMultipleSourceRoots = ProjectRootManager.getInstance(myProject).getContentSourceRoots().length > 1; + final boolean isMultipleSourceRoots = ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() > 1; myDestinationCB.setVisible(!myDoClone && isMultipleSourceRoots); label.setVisible(!myDoClone && isMultipleSourceRoots); label.setLabelFor(myDestinationCB); diff --git a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java index cceea3cf14b7..59349c39a2b0 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java @@ -36,6 +36,7 @@ import com.intellij.refactoring.util.classMembers.MemberInfo; import com.intellij.ui.EditorComboBox; import com.intellij.ui.components.JBLabel; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import java.awt.*; @@ -71,8 +72,8 @@ public abstract class JavaExtractSuperBaseDialog extends ExtractSuperBaseDialog< @Override protected JPanel createDestinationRootPanel() { - final VirtualFile[] sourceRoots = ProjectRootManager.getInstance(myProject).getContentSourceRoots(); - if (sourceRoots.length <= 1) return super.createDestinationRootPanel(); + final List sourceRoots = ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); + if (sourceRoots.size() <= 1) return super.createDestinationRootPanel(); final JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); final JBLabel label = new JBLabel(RefactoringBundle.message("target.destination.folder")); diff --git a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java index e31476970235..24dd3cff4ee5 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java @@ -42,6 +42,7 @@ import com.intellij.util.ui.FormBuilder; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -60,7 +61,6 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi private final JTextField classNameField; private final ReferenceEditorComboWithBrowseButton packageTextField; private final DestinationFolderComboBox myDestinationFolderComboBox; - private final JTextField sourceClassTextField = null; private JCheckBox myGenerateAccessorsCb; private final JavaVisibilityPanel myVisibilityPanel; private final JCheckBox extractAsEnum; @@ -252,7 +252,7 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi .addLabeledComponent(new JLabel(), extractAsEnum) .addLabeledComponent(RefactorJBundle.message("package.for.new.class.label"), packageTextField); - if (ProjectRootManager.getInstance(myProject).getContentSourceRoots().length > 1) { + if (ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() > 1) { builder.addLabeledComponent(RefactoringBundle.message("target.destination.folder"), myDestinationFolderComboBox); } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java index 8ce4f9fd3e0c..bb9379add0b1 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java @@ -34,12 +34,14 @@ import com.intellij.refactoring.MoveDestination; import com.intellij.refactoring.PackageWrapper; import com.intellij.ui.*; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; +import java.util.List; /** * User: anna @@ -49,7 +51,7 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton private static final String LEAVE_IN_SAME_SOURCE_ROOT = "Leave in same source root"; private static final DirectoryChooser.ItemWrapper NULL_WRAPPER = new DirectoryChooser.ItemWrapper(null, null); private PsiDirectory myInitialTargetDirectory; - private VirtualFile[] mySourceRoots; + private List mySourceRoots; public DestinationFolderComboBox() { super(new ComboBoxWithWidePopup()); @@ -79,7 +81,7 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton final PsiDirectory initialTargetDirectory, final Pass errorMessageUpdater, final EditorComboBox editorComboBox) { myInitialTargetDirectory = initialTargetDirectory; - mySourceRoots = ProjectRootManager.getInstance(project).getContentSourceRoots(); + mySourceRoots = ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); new ComboboxSpeedSearch(getComboBox()) { @Override protected String getElementText(Object element) { @@ -168,7 +170,7 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton VirtualFile selectedDestination = selectedPsiDirectory.getVirtualFile(); if (showChooserWhenDefault && myInitialTargetDirectory != null && Comparing.equal(selectedDestination, myInitialTargetDirectory.getVirtualFile()) && - mySourceRoots.length > 1) { + mySourceRoots.size() > 1) { selectedDestination = MoveClassesOrPackagesUtil.chooseSourceRoot(targetPackage, mySourceRoots, myInitialTargetDirectory); } if (selectedDestination == null) return null; @@ -197,7 +199,7 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton final VirtualFile initialTargetDirectorySourceRoot, final VirtualFile oldSelection, final ProjectFileIndex fileIndex, - final VirtualFile[] sourceRoots, + final List sourceRoots, final Project project, final boolean forceIncludeAll, final Pass updateErrorMessage) { diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/JavaMoveClassesOrPackagesHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/JavaMoveClassesOrPackagesHandler.java index 8322228ec52a..2bbeb9dff91a 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/JavaMoveClassesOrPackagesHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/JavaMoveClassesOrPackagesHandler.java @@ -44,6 +44,7 @@ import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.HashSet; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import java.awt.*; @@ -300,7 +301,7 @@ public class JavaMoveClassesOrPackagesHandler extends MoveHandlerDelegate { private static boolean canMoveOrRearrangePackages(PsiElement[] elements) { if (elements.length == 0) return false; final Project project = elements[0].getProject(); - if (ProjectRootManager.getInstance(project).getContentSourceRoots().length == 1) { + if (ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() == 1) { return false; } for (PsiElement element : elements) { diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java index e94e32ee460e..424eae716012 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java @@ -33,7 +33,6 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.refactoring.*; import com.intellij.refactoring.move.MoveCallback; @@ -55,11 +54,13 @@ import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.List; import java.util.Set; public class MoveClassesOrPackagesDialog extends RefactoringDialog { @@ -141,7 +142,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { private void updateControlsEnabled() { myClassPackageChooser.setEnabled(myToPackageRadioButton.isSelected()); myInnerClassChooser.setEnabled(myMakeInnerClassOfRadioButton.isSelected()); - UIUtil.setEnabled(myTargetPanel, isMoveToPackage() && getSourceRoots().length > 1 && !myTargetDirectoryFixed, true); + UIUtil.setEnabled(myTargetPanel, isMoveToPackage() && getSourceRoots().size() > 1 && !myTargetDirectoryFixed, true); validateButtons(); } @@ -162,8 +163,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { } protected JComponent createCenterPanel() { - final VirtualFile[] sourceRoots = getSourceRoots(); - boolean isDestinationVisible = sourceRoots.length > 1; + boolean isDestinationVisible = getSourceRoots().size() > 1; myDestinationFolderCB.setVisible(isDestinationVisible); myTargetDestinationLabel.setVisible(isDestinationVisible); return null; @@ -289,7 +289,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { setErrorText(s); } }, myHavePackages ? myWithBrowseButtonReference.getChildComponent() : myClassPackageChooser.getChildComponent()); - UIUtil.setEnabled(myTargetPanel, getSourceRoots().length > 0 && isMoveToPackage() && !isTargetDirectoryFixed, true); + UIUtil.setEnabled(myTargetPanel, !getSourceRoots().isEmpty() && isMoveToPackage() && !isTargetDirectoryFixed, true); validateButtons(); myHelpID = helpID; } @@ -505,7 +505,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { return ((DestinationFolderComboBox)myDestinationFolderCB).selectDirectory(targetPackage, mySuggestToMoveToAnotherRoot); } - private VirtualFile[] getSourceRoots() { - return ProjectRootManager.getInstance(myProject).getContentSourceRoots(); + private List getSourceRoots() { + return ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java index e55aba9953d2..2a5f6396a482 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java @@ -44,6 +44,7 @@ import com.intellij.usageView.UsageInfo; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import java.util.ArrayList; import java.util.Arrays; @@ -367,7 +368,7 @@ public class MoveClassesOrPackagesImpl { } private static List buildRearrangeTargetsList(final Project project, final PsiDirectory[] directories) { - final VirtualFile[] sourceRoots = ProjectRootManager.getInstance(project).getContentSourceRoots(); + final List sourceRoots = ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); List sourceRootDirectories = new ArrayList(); sourceRoots: for (final VirtualFile sourceRoot : sourceRoots) { diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java index c2cd0afaf958..2f3e93382199 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java @@ -40,6 +40,7 @@ import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.HashMap; import com.intellij.psi.util.FileTypeUtils; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import java.io.File; import java.util.*; @@ -283,12 +284,13 @@ public class MoveClassesOrPackagesUtil { directory = directories[0]; } else { - final VirtualFile[] contentSourceRoots = ProjectRootManager.getInstance(project).getContentSourceRoots(); - if (contentSourceRoots.length == 1 && (baseDirVirtualFile == null || fileIndex.isInTestSourceContent(contentSourceRoots[0]) == isBaseDirInTestSources)) { + final List contentSourceRoots = ProjectRootManager.getInstance(project).getModuleSourceRoots( + JavaModuleSourceRootTypes.SOURCES); + if (contentSourceRoots.size() == 1 && (baseDirVirtualFile == null || fileIndex.isInTestSourceContent(contentSourceRoots.get(0)) == isBaseDirInTestSources)) { directory = ApplicationManager.getApplication().runWriteAction(new Computable() { @Override public PsiDirectory compute() { - return RefactoringUtil.createPackageDirectoryInSourceRoot(packageWrapper, contentSourceRoots[0]); + return RefactoringUtil.createPackageDirectoryInSourceRoot(packageWrapper, contentSourceRoots.get(0)); } }); } @@ -307,7 +309,7 @@ public class MoveClassesOrPackagesUtil { } public static VirtualFile chooseSourceRoot(final PackageWrapper targetPackage, - final VirtualFile[] contentSourceRoots, + final List contentSourceRoots, final PsiDirectory initialDirectory) { Project project = targetPackage.getManager().getProject(); //ensure that there would be no duplicates: e.g. when one content root is subfolder of another root (configured via excluded roots) @@ -330,7 +332,7 @@ public class MoveClassesOrPackagesUtil { } public static void buildDirectoryList(PackageWrapper aPackage, - VirtualFile[] contentSourceRoots, + List contentSourceRoots, LinkedHashSet targetDirectories, Map relativePathsToCreate) { @@ -372,7 +374,7 @@ public class MoveClassesOrPackagesUtil { } } } - LOG.assertTrue(targetDirectories.size() <= contentSourceRoots.length); - LOG.assertTrue(relativePathsToCreate.size() <= contentSourceRoots.length); + LOG.assertTrue(targetDirectories.size() <= contentSourceRoots.size()); + LOG.assertTrue(relativePathsToCreate.size() <= contentSourceRoots.size()); } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java index 901cac555ffb..b10af008c89f 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java @@ -49,10 +49,12 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.List; import java.util.Map; import java.util.Set; @@ -196,10 +198,10 @@ public class MoveInnerDialog extends RefactoringDialog { final String targetName = myPackageNameField.getText(); if (!Comparing.equal(name, targetName)) { final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(myProject); - final VirtualFile[] contentSourceRoots = projectRootManager.getContentSourceRoots(); + final List contentSourceRoots = projectRootManager.getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); final PackageWrapper newPackage = new PackageWrapper(PsiManager.getInstance(myProject), targetName); final VirtualFile targetSourceRoot; - if (contentSourceRoots.length > 1) { + if (contentSourceRoots.size() > 1) { PsiDirectory initialDir = null; if (oldPackage != null) { final PsiDirectory[] directories = oldPackage.getDirectories(); @@ -215,7 +217,7 @@ public class MoveInnerDialog extends RefactoringDialog { targetSourceRoot = sourceRoot; } else { - targetSourceRoot = contentSourceRoots [0]; + targetSourceRoot = contentSourceRoots.get(0); } PsiDirectory dir = RefactoringUtil.findPackageDirectoryInSourceRoot(newPackage, targetSourceRoot); if (dir == null) { diff --git a/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java b/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java index 88f90ec27c1a..d34a3600d4dc 100644 --- a/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java +++ b/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java @@ -465,7 +465,7 @@ public class CreateTestDialog extends DialogWrapper { } else { PsiDirectory defaultDir = chooseDefaultDirectory(packageName); - result.setResult(MoveClassesOrPackagesUtil.chooseSourceRoot(targetPackage, roots.toArray(new VirtualFile[roots.size()]), defaultDir)); + result.setResult(MoveClassesOrPackagesUtil.chooseSourceRoot(targetPackage, roots, defaultDir)); } } }.execute().getResultObject(); diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/file/impl/JavaFileManagerBase.java b/java/java-indexing-impl/src/com/intellij/psi/impl/file/impl/JavaFileManagerBase.java index f3d7ac8bbe8c..1637d2b825a3 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/file/impl/JavaFileManagerBase.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/file/impl/JavaFileManagerBase.java @@ -41,6 +41,7 @@ import com.intellij.util.messages.MessageBusConnection; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import java.util.*; @@ -333,7 +334,7 @@ public abstract class JavaFileManagerBase implements JavaFileManager, Disposable if (myNontrivialPackagePrefixes == null) { Set names = new HashSet(); final ProjectRootManager rootManager = myProjectRootManager; - final VirtualFile[] sourceRoots = rootManager.getContentSourceRoots(); + final List sourceRoots = rootManager.getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); final ProjectFileIndex fileIndex = rootManager.getFileIndex(); for (final VirtualFile sourceRoot : sourceRoots) { final String packageName = fileIndex.getPackageNameByDirectory(sourceRoot); diff --git a/java/testFramework/src/com/intellij/compiler/CompilerTestUtil.java b/java/testFramework/src/com/intellij/compiler/CompilerTestUtil.java index a2d50b39048b..7164207797db 100644 --- a/java/testFramework/src/com/intellij/compiler/CompilerTestUtil.java +++ b/java/testFramework/src/com/intellij/compiler/CompilerTestUtil.java @@ -21,13 +21,13 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.SystemProperties; import org.jdom.Document; import org.jdom.Element; +import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions; import org.jetbrains.jps.model.serialization.JDomSerializationUtil; import org.jetbrains.jps.model.serialization.JpsGlobalLoader; import java.io.File; import java.io.IOException; -import java.util.Arrays; import java.util.List; /** @@ -48,7 +48,7 @@ public class CompilerTestUtil { public static void scanSourceRootsToRecompile(Project project) { // need this to emulate project opening - final List roots = Arrays.asList(ProjectRootManager.getInstance(project).getContentSourceRoots()); + final List roots = ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES); TranslatingCompilerFilesMonitor.getInstance().scanSourceContent(new TranslatingCompilerFilesMonitor.ProjectRef(project), roots, roots.size(), true); } diff --git a/platform/dvcs/testFramework/com/intellij/dvcs/test/MockProjectRootManager.java b/platform/dvcs/testFramework/com/intellij/dvcs/test/MockProjectRootManager.java index ddbb569b8459..726a7124b9e5 100644 --- a/platform/dvcs/testFramework/com/intellij/dvcs/test/MockProjectRootManager.java +++ b/platform/dvcs/testFramework/com/intellij/dvcs/test/MockProjectRootManager.java @@ -22,10 +22,12 @@ import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; /** * @@ -74,11 +76,18 @@ public class MockProjectRootManager extends ProjectRootManager { throw new UnsupportedOperationException(); } + @NotNull @Override public VirtualFile[] getContentSourceRoots() { throw new UnsupportedOperationException(); } + @NotNull + @Override + public List getModuleSourceRoots(@NotNull Set> rootTypes) { + throw new UnsupportedOperationException("'getContentSourceRoots' not implemented in " + getClass().getName()); + } + @Override public Sdk getProjectSdk() { throw new UnsupportedOperationException(); diff --git a/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectRootManager.java b/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectRootManager.java index 645b9e011e2d..8d1ef81ba057 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectRootManager.java +++ b/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectRootManager.java @@ -23,9 +23,11 @@ import com.intellij.openapi.util.ModificationTracker; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import java.util.Collection; import java.util.List; +import java.util.Set; /** * Allows to query and modify the list of root directories belonging to a project. @@ -95,8 +97,18 @@ public abstract class ProjectRootManager implements ModificationTracker { * * @return the list of content source roots. */ + @NotNull public abstract VirtualFile[] getContentSourceRoots(); + /** + * Returns the list of source roots from all modules which types belong to the specified set + * + * @param rootTypes types of source roots + * @return list of source roots + */ + @NotNull + public abstract List getModuleSourceRoots(@NotNull Set> rootTypes); + /** * Returns the instance of the JDK selected for the project. * diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java index 05761a55400d..f937c6dea073 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java @@ -46,6 +46,7 @@ import com.intellij.util.messages.MessageBusConnection; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import java.util.*; @@ -167,6 +168,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj return VfsUtilCore.toVirtualFileArray(result); } + @NotNull @Override public VirtualFile[] getContentSourceRoots() { final List result = new ArrayList(); @@ -177,6 +179,16 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj return VfsUtilCore.toVirtualFileArray(result); } + @NotNull + @Override + public List getModuleSourceRoots(@NotNull Set> rootTypes) { + List roots = new ArrayList(); + for (Module module : getModuleManager().getModules()) { + roots.addAll(ModuleRootManager.getInstance(module).getSourceRoots(rootTypes)); + } + return roots; + } + @NotNull @Override public OrderEnumerator orderEntries() {