From 2b4964b077c17b944eaf4ece033eddd4676d137f Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 21 Mar 2012 17:51:47 +0100 Subject: [PATCH] EA-32892 - NPE: MoveClassesOrPackagesProcessor.performRefactoring (cherry picked from commit 6215822) --- .../MoveClassesOrPackagesProcessor.java | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java index da8f923bd552..95b96eea9818 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java @@ -27,10 +27,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PackageScope; import com.intellij.psi.search.searches.ReferencesSearch; -import com.intellij.psi.util.MethodSignatureUtil; -import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; -import com.intellij.psi.util.PsiUtilBase; +import com.intellij.psi.util.*; import com.intellij.refactoring.BaseRefactoringProcessor; import com.intellij.refactoring.MoveDestination; import com.intellij.refactoring.PackageWrapper; @@ -68,16 +65,15 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { private boolean mySearchInNonJavaFiles; private final PackageWrapper myTargetPackage; private final MoveCallback myMoveCallback; - protected final MoveDestination myMoveDestination; + protected @NotNull final MoveDestination myMoveDestination; protected NonCodeUsageInfo[] myNonCodeUsages; - public MoveClassesOrPackagesProcessor( - Project project, - PsiElement[] elements, - final MoveDestination moveDestination, - boolean searchInComments, - boolean searchInNonJavaFiles, - MoveCallback moveCallback) { + public MoveClassesOrPackagesProcessor(Project project, + PsiElement[] elements, + @NotNull final MoveDestination moveDestination, + boolean searchInComments, + boolean searchInNonJavaFiles, + MoveCallback moveCallback) { super(project); final Set toMove = new LinkedHashSet(); for (PsiElement element : elements) { @@ -87,7 +83,7 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { toMove.add(element); } } - myElementsToMove = PsiUtilBase.toPsiElementArray(toMove); + myElementsToMove = PsiUtilCore.toPsiElementArray(toMove); Arrays.sort(myElementsToMove, new Comparator() { @Override public int compare(PsiElement o1, PsiElement o2) { @@ -451,7 +447,8 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { if (allClasses.containsKey(psiClass)) { continue; } - final PsiClass[] classes = ((PsiClassOwner)element.getContainingFile()).getClasses(); + final PsiClassOwner containingFile = (PsiClassOwner)element.getContainingFile(); + final PsiClass[] classes = containingFile.getClasses(); boolean all = true; for (PsiClass aClass : classes) { if (ArrayUtil.find(myElementsToMove, aClass) == -1) { @@ -464,14 +461,14 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { } } } - Map oldToNewElementsMapping = new HashMap(); + final Map oldToNewElementsMapping = new HashMap(); for (int idx = 0; idx < myElementsToMove.length; idx++) { PsiElement element = myElementsToMove[idx]; final RefactoringElementListener elementListener = getTransaction().getElementListener(element); if (element instanceof PsiPackage) { final PsiDirectory[] directories = ((PsiPackage)element).getDirectories(); - final PsiPackage newElement = - MoveClassesOrPackagesUtil.doMovePackage((PsiPackage)element, myMoveDestination); + final PsiPackage newElement = MoveClassesOrPackagesUtil.doMovePackage((PsiPackage)element, myMoveDestination); + LOG.assertTrue(newElement != null); oldToNewElementsMapping.put(element, newElement); int i = 0; final PsiDirectory[] newDirectories = newElement.getDirectories();