mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move: convert nested classes to the top level files even for multiple classes selected
EA-81558 - assert: PsiJavaDirectoryImpl.checkAdd
This commit is contained in:
+1
-1
@@ -98,7 +98,7 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan
|
||||
if (topLevelClass != null) {
|
||||
elements[i] = topLevelClass;
|
||||
final PsiFile containingFile = obtainContainingFile(topLevelClass, elements);
|
||||
if (containingFile != null && !adjustedElements.contains(containingFile)) {
|
||||
if (containingFile != null) {
|
||||
adjustedElements.add(containingFile);
|
||||
continue;
|
||||
}
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package t;
|
||||
class MyClass {
|
||||
public static class F1 {}
|
||||
public static class F2 {}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package s;
|
||||
class MyClass {
|
||||
public static class F1 {}
|
||||
public static class F2 {}
|
||||
}
|
||||
@@ -48,6 +48,10 @@ public class MoveClassAndFileTest extends RefactoringTestCase {
|
||||
doTest("leavePackageLocalClass", "t", "txt2move.txt", "s.MyClass");
|
||||
}
|
||||
|
||||
public void testNestedClassesInFile() throws Exception {
|
||||
doTest("nestedClassesInFile", "t", null, "s.MyClass.F1", "s.MyClass.F2");
|
||||
}
|
||||
|
||||
private void doTest(String testName, String newPackageName, String fileNameNearFirstClass, String... classNames) throws Exception {
|
||||
String root = JavaTestUtil.getJavaTestDataPath() + "/refactoring/moveClassAndFile/" + testName;
|
||||
|
||||
@@ -64,18 +68,20 @@ public class MoveClassAndFileTest extends RefactoringTestCase {
|
||||
}
|
||||
|
||||
private void performAction(String newPackageName, String fileName, String... classNames) {
|
||||
final PsiElement[] elements = new PsiElement[classNames.length + 1];
|
||||
final PsiElement[] elements = new PsiElement[classNames.length + (fileName != null ? 1 : 0)];
|
||||
for(int i = 0; i < classNames.length; i++){
|
||||
String className = classNames[i];
|
||||
elements[i] = myJavaFacade.findClass(className, GlobalSearchScope.projectScope(getProject()));
|
||||
assertNotNull("Class " + className + " not found", elements[i]);
|
||||
}
|
||||
elements[classNames.length] = elements[0].getContainingFile().getContainingDirectory().findFile(fileName);
|
||||
if (fileName != null) {
|
||||
elements[classNames.length] = elements[0].getContainingFile().getContainingDirectory().findFile(fileName);
|
||||
}
|
||||
|
||||
PsiPackage aPackage = JavaPsiFacade.getInstance(myPsiManager.getProject()).findPackage(newPackageName);
|
||||
assertNotNull("Package " + newPackageName + " not found", aPackage);
|
||||
final PsiDirectory[] dirs = aPackage.getDirectories();
|
||||
assertEquals(dirs.length, 1);
|
||||
assertEquals(1, dirs.length);
|
||||
|
||||
final JavaMoveFilesOrDirectoriesHandler handler = new JavaMoveFilesOrDirectoriesHandler();
|
||||
assertTrue(handler.canMove(elements, dirs[0]));
|
||||
|
||||
Reference in New Issue
Block a user